Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SafeBalance < ActiveRecord::Base
- include Money
- belongs_to :business_day
- DENOMINATIONS = {
- :pennies => 50,
- :nickels => 200,
- :dimes => 500,
- :quarters => 1000,
- :ones => 5000,
- :fives => 5000,
- :tens => 5000,
- :twenties => 0,
- :fifties => 0,
- :hundreds => 0
- }
- SAFECOUNTS = %w{count_pennies count_nickels count_dimes count_quarters count_ones count_fives count_tens count_twenties count_fifties count_hundreds}
- SAFECOUNTS.each do |f|
- define_method("count_#{f}=") {|amount| write_attribute f.to_sym, dollars_to_cents(amount)}
- end
- SIZES = %w(pennies nickels dimes quarters ones fives tens twenties fifties hundreds)
- SIZES.each do |f|
- define_method("register_#{f}_totals") {registers.collect(&f.to_sym).sum}
- define_method("new_#{f}") {send("end_#{f}") - send("begin_#{f}")}
- end
- DENOMINATIONS.keys.each do |f|
- define_method("#{f}_to_register") {business_day.additions.positive.collect(&f.to_sym).sum}
- define_method("#{f}_to_safe") {business_day.additions.negative.collect(&f.to_sym).sum}
- define_method("#{f}_deposits") {business_day.deposits.negative.collect(&f.to_sym).sum}
- define_method("#{f}_withdrawals") {business_day.deposits.positive.collect(&f.to_sym).sum}
- define_method("#{f}_pettycash_out") {business_day.pettycashes.negative.collect(&f.to_sym).sum}
- define_method("#{f}_pettycash_in") {business_day.pettycashes.positive.collect(&f.to_sym).sum}
- end
- DENOMINATIONS.each_pair do |f, k|
- define_method("end_#{f}") {send("begin_#{f}") - k - send("business_day.spent_#{f}") - send("business_day.safe_balance.#{f}_deposits") + send("business_day.register_new_#{f}") + send("business_day.safe_balance.#{f}_withdrawals") }
- end
- def previous_business_day
- self.business_day.previous_business_day
- end
- def difference(denomination)
- self.send("end_#{denomination}") - self.send("count_#{denomination}")
- end
- def registers
- @registers ||= business_day.registers
- end
- def pettycash
- @pettycash ||= business_day.pettycashes
- end
- def newcash
- registers.collect(&:newcash).sum
- end
- def begin_register
- registers.collect(&:begbal).sum
- end
- def money_to_register
- additions = business_day.positive_additions
- additions.collect(&:amount).sum
- end
- def money_to_safe
- additions = business_day.negative_additions
- additions.collect(&:amount).sum
- end
- def deposits
- deposits = business_day.deposits.find(:all, :conditions => 'amount < 0')
- deposits.collect(&:amount).sum
- end
- def withdrawals
- deposits = business_day.deposits.find(:all, :conditions => 'amount > 0')
- deposits.collect(&:amount).sum
- end
- def petty_cash
- pettycash.collect(&:amount).sum
- end
- def additions
- withdrawals.abs + newcash # + money_to_safe.abs
- end
- def subtractions
- petty_cash.abs + deposits.abs # + begin_register.abs + money_to_register.abs
- end
- def end_balance
- end_balance = begin_balance - subtractions + additions - (registers.carried_over.cash.count * 16750)
- end
- DENOMINATIONS.each_pair do |key, value|
- define_method("adj_begin_#{key}") {send("begin_#{key}") - (@business_day.registers.carried_over.cash.count * value)}
- define_method("adj_end_#{key}") {send("end_#{key}") - (@business_day.registers.carried_over.cash.count * value)}
- end
- end
Add Comment
Please, Sign In to add comment