Class: Pacioli::Party
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Pacioli::Party
- Defined in:
- lib/pacioli/party.rb
Class Method Summary collapse
Instance Method Summary collapse
- #age_analysis_report ⇒ Object
- #balance ⇒ Object
- #balance_at(date = Time.now, t_id = nil) ⇒ Object
- #credits ⇒ Object
- #credits_before(date) ⇒ Object
- #debits ⇒ Object
- #debits_before(date) ⇒ Object
- #statement_between_dates(start_date, end_date = Time.now) ⇒ Object
- #with_name(party_name) ⇒ Object
- #with_source(partyable_object) ⇒ Object
Class Method Details
.for(party) ⇒ Object
7 8 9 |
# File 'lib/pacioli/party.rb', line 7 def self.for(party) Party.where(partyable_type: party.class.name, partyable_id: party.id).includes(:transactions).first || Party.create!(partyable_type: party.class.name, partyable_id: party.id, type: "Pacioli::Debtor") # By default creates a debtor end |
Instance Method Details
#age_analysis_report ⇒ Object
77 78 79 80 81 82 83 84 85 |
# File 'lib/pacioli/party.rb', line 77 def age_analysis_report [ {description: "Present", date: Date.today, balance: balance_at(Date.today), start_date: (Date.today - 30.days).strftime, end_date: Date.today.strftime}, {description: "30 Days", date: Date.today - 30.days, balance: balance_at(Date.today - 30.days), start_date: (Date.today - 60.days).strftime, end_date:(Date.today - 30.days).strftime}, {description: "60 Days", date: Date.today - 60.days, balance: balance_at(Date.today - 60.days), start_date: (Date.today - 90.days).strftime, end_date: (Date.today - 60.days).strftime}, {description: "90 Days", date: Date.today - 90.days, balance: balance_at(Date.today - 90.days), start_date: (Date.today - 120.days).strftime, end_date: (Date.today - 90.days).strftime}, {description: "120 Days", date: Date.today - 120.days, balance: balance_at(Date.today - 120.days), start_date: (Date.today - 150.days).strftime, end_date: (Date.today - 120.days).strftime} ] end |
#balance ⇒ Object
37 38 39 |
# File 'lib/pacioli/party.rb', line 37 def balance debits.sum(&:amount) - credits.sum(&:amount) end |
#balance_at(date = Time.now, t_id = nil) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/pacioli/party.rb', line 41 def balance_at(date=Time.now, t_id=nil) if t_id.nil? debits_before(date.end_of_day).sum(&:amount) - credits_before(date.end_of_day).sum(&:amount) else debits_before(date.end_of_day).sum(&:amount) - credits_before(date.end_of_day).sum(&:amount) end end |
#credits ⇒ Object
24 25 26 27 |
# File 'lib/pacioli/party.rb', line 24 def credits #transactions.where(type: 'Pacioli::Credit') transactions.select(&:credit?) end |
#credits_before(date) ⇒ Object
33 34 35 |
# File 'lib/pacioli/party.rb', line 33 def credits_before(date) credits.select {|credit| credit.dated < date} end |
#debits ⇒ Object
19 20 21 22 |
# File 'lib/pacioli/party.rb', line 19 def debits #transactions.where(type: 'Pacioli::Debit') transactions.select(&:debit?) end |
#debits_before(date) ⇒ Object
29 30 31 |
# File 'lib/pacioli/party.rb', line 29 def debits_before(date) debits.select {|debit| debit.dated < date} end |
#statement_between_dates(start_date, end_date = Time.now) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/pacioli/party.rb', line 49 def statement_between_dates(start_date, end_date=Time.now) start_date ||= (Date.today - 1.month).to_time temp_array = [] opening_balance = debits_before(start_date.beginning_of_day).sum(&:amount) - credits_before(start_date.beginning_of_day).sum(&:amount) temp_array << {description: "Opening Balance", date: start_date, credit_amount: "", debit_amount: "", balance: opening_balance} running_balance = opening_balance temp_array << transactions.between(start_date, end_date).map do |transaction| description = transaction.journal_entry.description if transaction.credit? running_balance -= transaction.amount {description: description, date: transaction.dated, credit_amount: transaction.amount, debit_amount: "", balance: running_balance, source_document_description: description} else running_balance += transaction.amount {description: description, date: transaction.dated, debit_amount: transaction.amount, credit_amount: "", balance: running_balance, source_document_description: description} end end temp_array << {description: "Closing Balance", date: end_date, credit_amount: "", debit_amount: "", balance: balance_at(end_date)} temp_array.flatten end |
#with_name(party_name) ⇒ Object
11 12 13 |
# File 'lib/pacioli/party.rb', line 11 def with_name(party_name) self.name = party_name end |
#with_source(partyable_object) ⇒ Object
15 16 17 |
# File 'lib/pacioli/party.rb', line 15 def with_source(partyable_object) self.partyable = partyable_object end |