All Versions
23
Latest Version
Avg Release Cycle
93 days
Latest Release
3 days ago

Changelog History
Page 1

  • v2.0.0.beta4

    January 25, 2020

    ➕ Added

    • ✅ Test against Rails 6.0, (#176).

    • 👌 Support for Ruby 2.7 (#180).

    🔄 Changed

    • 📇 Metadata stored by default in a json(b) column for new installs (#178).

    • ✂ Remove force: true from migration (#181).

    • 💎 Prevent using Ruby 2.2 via restrictions in Gemfile and Gemspec (#175).

  • v2.0.0.beta3

    November 14, 2019

    🛠 Fixed

    • Remove duplicate detail columns in double_entry_lines table migration, (#173).
  • v2.0.0.beta2

    January 27, 2019

    ✂ Removed

    If this module is in use in your project add the double_entry-reporting gem and checkout the changelog for more updates.

    If not in use, one can delete the double_entry_line_aggregates table using the following migration:

    ```ruby
    drop_table :double_entry_line_aggregates
    ```
    
  • v2.0.0.beta1

    December 31, 2018

    ➕ Added

    • ➕ Added contributor credits to README.

    • ➕ Added support for Ruby 2.3, 2.4, 2.5 and 2.6.

    • ➕ Added support for Rails 5.0, 5.1 and 5.2

    • 👌 Support passing an array of metadata values.

      DoubleEntry.transfer(
        Money.new(20_00),
        :from     => one_account,
        :to       => another_account,
        :code     => :a_business_code_for_this_type_of_transfer,
        :metadata => { :key1 => ['value 1', 'value 2'], :key2 => 'value 3' },
      )
      
    • 👍 Allow partner account to be specified for aggregates.

    • 👍 Allow filtering aggregates by multiple metadata key/value pairs.

    • Add index on the double_entry_line_checks table. This covers the query to obtain the last line check.

    Add this index to your database via a migration like:

    ```ruby
    def up
      add_index "double_entry_line_checks", ["created_at", "last_line_id"], :name => "line_checks_created_at_last_line_id_idx"
    end
    ```
    
    • 🌲 Log account balance cache errors to the database when performing the line check: DoubleEntry::Validation::LineCheck::perform!

    🔄 Changed

    • ✅ Replaced Machinist with Factory Bot in test suite.

    • Implement DoubleEntry::Transfer::Set and DoubleEntry::Account::Set with Hashes rather than Arrays for performance.

    • Reporting API now uses keyword arguments. Note these reporting classes are marked API private: their interface is not considered stable.

      • DoubleEntry::Reporting::aggregate
      • DoubleEntry::Reporting::aggregate_array
      • DoubleEntry::Reporting::Aggregate::new
      • DoubleEntry::Reporting::Aggregate::formatted_amount
      • DoubleEntry::Reporting::AggregateArray::new
      • DoubleEntry::Reporting::LineAggregateFilter::new
    • 0️⃣ Loosened database string column contstraints to the default (255 characters). Engineering teams can choose to apply this change, or apply their own column length constraints specific to their needs. (#152)

    • ✂ Removed default values for the length checks on code, account and scope (#152). These checks will now only be performed when configured with a value:

       DoubleEntry.configure do |config|
         config.code_max_length = 47
         config.account_identifier_max_length = 31
         config.scope_identifier_max_length = 23
       end
    
    • 👉 Use bigint for monetary values in the database to avoid integer overflow (#154). Apply changes via this migration:
       change_column :double_entry_account_balances, :balance, :bigint, null: false
    
       change_column :double_entry_line_aggregates, :amount, :bigint, null: false
    
       change_column :double_entry_lines, :amount, :bigint, null: false
       change_column :double_entry_lines, :balance, :bigint, null: false
    
    • 🚅 On Rails version 5.1 and above, use bigint for foreign key values in the database to avoid integer overflow (#154). Apply changes via this migration:
       change_column :double_entry_line_checks, :last_line_id, :bigint, null: false
    
       change_column :double_entry_line_metadata, :line_id, :bigint, null: false
    
       change_column :double_entry_lines, :partner_id, :bigint, null: true
       change_column :double_entry_lines, :detail_id, :bigint, null: true
    
    • 0️⃣ Line check validation no-longer performs corrections by default. The DoubleEntry::Validation::LineCheck::perform! method will only log validation failures in the database. To perform auto-correction pass the fixer option: LineCheck.perform!(fixer: DoubleEntry::Validation::AccountFixer.new)

    ✂ Removed

    • ✂ Removed support for Ruby 1.9, 2.0, 2.1 and 2.2.

    • ✂ Removed support for Rails 3.2, 4.0, and 4.1.

    • ✂ Removed unneeded development dependencies from Gemspec.

    • ✂ Removed spec and script files from gem package.

    • Removed the active_record_scope_identifier method for configuring scoped accounts.

      user_scope = accounts.active_record_scope_identifier(User)
      

    As a replacement, please define your own with a lambda:

    ```ruby
    user_scope = ->(user) do
      raise 'not a User' unless user.class.name == 'User'
      user.id
    end
    ```
    

    🛠 Fixed

    • 🛠 Fixed more Ruby warnings.

    • 👉 Use double_entry namespace when publishing to ActiveSupport::Notifications.

    • 🛠 Fixed problem of Rails version number not being set in migration template for apps using Rails 5 or higher.

  • v1.0.1

    January 06, 2018

    ✂ Removed

    • ✂ Removed Rubocop checks and build step.

    🛠 Fixed

    • 👉 Use Money#positive? and Money#negative? rather than comparing to zero. Resolves issues when dealing with multiple currencies.

    • 🛠 Fixed typo in jack_hammer documentation.

  • v1.0.0

    August 04, 2015

    ➕ Added

    • Record meta-data against transfers.

      DoubleEntry.transfer(
        Money.new(20_00),
        :from     => one_account,
        :to       => another_account,
        :code     => :a_business_code_for_this_type_of_transfer,
        :metadata => { :key1 => 'value 1', :key2 => 'value 2' },
      )
      

    This feature requires a new DB table. Please add a migration similar to:

    ```ruby
    class CreateDoubleEntryLineMetadata < ActiveRecord::Migration
      def self.up
        create_table "#{DoubleEntry.table_name_prefix}line_metadata", :force => true do |t|
          t.integer    "line_id",               :null => false
          t.string     "key",     :limit => 48, :null => false
          t.string     "value",   :limit => 64, :null => false
          t.timestamps                          :null => false
        end
    
        add_index "#{DoubleEntry.table_name_prefix}line_metadata",
                  ["line_id", "key", "value"],
                  :name => "lines_meta_line_id_key_value_idx"
      end
    
      def self.down
        drop_table "#{DoubleEntry.table_name_prefix}line_metadata"
      end
    end
    ```
    

    🔄 Changed

    • 🔒 Raise DoubleEntry::Locking::LockWaitTimeout for lock wait timeouts.

    🛠 Fixed

    • Ensure that a range is specified when performing an aggregate function over lines.
  • v0.10.3

    July 15, 2015

    ➕ Added

    • 🏗 Check code format with Rubocop as part of the CI build.

    🛠 Fixed

    • 🛠 More Rubocop code formatting issues fixed.
  • v0.10.2

    July 10, 2015

    🛠 Fixed

    • DoubleEntry::Reporting::AggregateArray correctly retreives previously calculated aggregates.
  • v0.10.1

    July 06, 2015

    ➕ Added

    • 🏗 Run CI build against Ruby 2.2.0.

    • ➕ Added Rubocop and resolved code formatting issues.

    🔄 Changed

    • ⬇️ Reduced permutations of DB, Ruby and Rails in CI build.

    • 🏗 Build status badge displayed in README reports on just the master branch.

    • ⚡️ Update RSpec configuration with latest recommended options.

    🛠 Fixed

    • ➕ Addressed Ruby warnings.

    • 🛠 Fixed circular arg reference.

  • v0.10.0

    January 09, 2015

    ➕ Added

    • Define accounts that can be negative only.

      DoubleEntry.configure do |config|
        config.define_accounts do |accounts|
          accounts.define(
            :identifier     => :my_account_that_never_goes_positive,
            :negative_only  => true
          )
        end
      end
      
    • 🏗 Run CI build against Rails 4.2