forked from renoke/tramp
-
Notifications
You must be signed in to change notification settings - Fork 0
rails plugin of Martin's Fowler "Accounting Patterns"
License
knoguchi/tramp
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Tramp
=====
Tramp is a rails plugin of Martin's Fowler "Accounting Patterns". It includes Account, Event, Accounting Entry, Accounting Transaction and Posting Rule.
Example
=======
1. Exemple for monetary events. Monetary is a subclass of Tramp::Model::Event who is a subclass of ActiveRecord :
class MonetaryEvent < Tramp::Model::Event
attr_accessor :direct_orders
rule :monetary_posting_rule
end
The rule is implemented inside the class method "movement" with the rule method add_collection.
class MonetaryPostingRule < Tramp::Model::Rule
movement do |rule|
rule.collections<<('direct_orders')
end
end
2. Another exemple :
class AccountingEvent < ActiveRecord::Base
#attributes are amount, party_account, event_account
include Tramp::Event::InstanceMethods
extend Tramp::Event::ClassMethods
has_one :service_agreement
rule :accounting_posting_rule
end
class AccountingPostingRule < Tramp::Model::Rule
parameter :amount => "service_agreement.fixed_fee + amount * service_agreement.multiplier"
movement do |rule|
rule.entries<<({:account=> :party_account, :debit=> :amount})
rule.entries<<({:account=> :event_account, :credit=> :amount})
end
end
3. You can create also anonymous rule in event :
class EventWithAnonymousRule < Tramp::Model::Event
rule 'my_rule' do
movement do |rule|
rule.entries<<({:date=>Date.today, :account=>'t1', :debit =>:amount})
rule.entries<<({:date=>Date.today, :account=>'t2', :credit =>:amount})
end
end
end
Copyright (c) 2008 Renaud Kern, released under the MIT license
About
rails plugin of Martin's Fowler "Accounting Patterns"
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- Ruby 100.0%