8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'app/services/report/cash_flow/cash_flow.rb', line 8
def self.result_report(options = {})
bs_accounts = {}; var_acc = []; by_month_consolidated = [];
bs_accounts[:net_income] = [4999]
bs_accounts[:depreciation] = [9220,9225,9230,9235,9236,9240]
bs_accounts[:amortization] = [9245]
bs_accounts[:screapped_inventory] = [6235,6240]
bs_accounts[:return_bad_deb_reserve] = [5360,5355,9035,9040]
bs_accounts[:accounts_receivable] = [1210,1211,1215,1216]
bs_accounts[:inventory] = [1410,1411,1412,1415,1455,1460,1490]
bs_accounts[:prepaid_expenses_and_other] = [1510,1560,1610]
bs_accounts[:intercompany] = [1291,1292,1293,1294,1298]
bs_accounts[:other_receivable] = [1245,3320,3390]
bs_accounts[:vendor_prepayment] = [1246]
bs_accounts[:loans_to_employees] = [1265]
bs_accounts[:personal_income_tax_payments] = [4990]
bs_accounts[:security_deposit] = [1240,3310]
bs_accounts[:accounts_payable_trade] = [4110]
bs_accounts[:accounts_payable_customer] = [4202]
bs_accounts[:accrued_expenses] = [4120,4121,4122,4125,4126]
bs_accounts[:accrued_payroll] = [4410,4420,4421,4422,4423,4424,4425]
bs_accounts[:sales_tax] = [4150,4151,4155,4156,4160,4161]
bs_accounts[:corporate_income_tax] = [4175,4180,4185]
bs_accounts[:other_liabilities] = [4760]
bs_accounts[:automobile] = [2135]
bs_accounts[:office_equipment_or_other_equipment] = [2125,2145]
bs_accounts[:computer_equipment] = [2140]
bs_accounts[:furniture] = [2130]
bs_accounts[:computer_software] = [2310]
bs_accounts[:credit_line] = [4515]
bs_accounts[:short_term_sba_loan] = [4510,4725,4729]
bs_accounts[:short_term_capital_leases] = [4511,4715,4716,4719]
bs_accounts[:cash_beginning_of_period] = [1111,1121,1122,1123,1125,1130,1135,1140,1141]
bs_accounts.map{ |k,v| var_acc += v }
bs_data = balance_data(options[:years][0].to_i,options[:months][0].to_i,options[:company_ids][0].to_i,var_acc)
count = 0
bs_accounts.each do |detail_name,accounts|
count += 1
bb_value = 0
accounts.each do |acc|
bs_data.each do |r|
bb_value += r[:bb_value] if r[:account_number] == acc && acc < 4999
end
end
by_month_consolidated << {detail_number: count, name: detail_name.to_s, 0 => bb_value }
(1..12).each do |e|
monthly = 0
accounts.each do |acc|
bs_data.each do |r|
if acc >= 4999
monthly += r[:value] if r[:account_number] == acc && r[:month] == e
elsif acc < 4999
monthly += (r[:value] + r[:bb_value]) if r[:account_number] == acc && r[:month] <= e
end
end
by_month_consolidated.map{ |r| r[:detail_number] == count ? r[e] = monthly : r }
end
end
end
Result.new(success: true, year: options[:years][0].to_i, month: options[:months][0].to_i, company_id: options[:company_ids][0].to_i, by_month: by_month_consolidated)
end
|