From 24adcb0a3e017b26d9af9783505e2fdf2f535500 Mon Sep 17 00:00:00 2001 From: chenzheng06 Date: Mon, 15 May 2017 12:47:17 -0400 Subject: [PATCH 1/2] Create new test files for cash_balance_year. And need to fix cash_balance calculation --- .../test_financials/test_cash_balance.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/bpfin/tests/test_financials/test_cash_balance.py b/bpfin/tests/test_financials/test_cash_balance.py index fa1a08d..2f27f7b 100644 --- a/bpfin/tests/test_financials/test_cash_balance.py +++ b/bpfin/tests/test_financials/test_cash_balance.py @@ -2,6 +2,29 @@ from bpfin.financials.cash_balance import cash_balance from datetime import date +def test_cash_balance_year_gap(): + input_dictionary = { + date(2014, 11, 1): (500, False), + date(2014, 12, 1): (400, False), + date(2014, 3, 13): (600, False), + date(2016, 11, 11): (500, False), + date(2016, 12, 31): (400, True) + } + input_analysis_date = { + 'proforma_start': date(2012, 5, 3), + 'proforma_duration': 12 + } + output_cash_balance = { + 2012: 450, + 2013: 450, + 2014: 500, + 2015: 450, + 2016: 400 + } + result = cash_balance(input_analysis_date, input_dictionary) + assert result == output_cash_balance + + def test_cash_balance(): input_dictionary = { date(2014, 11, 1): (500, False), -- GitLab From 20301699a2aab715a752c4edd5906375513cbb62 Mon Sep 17 00:00:00 2001 From: Sarey Hamarneh Date: Tue, 16 May 2017 14:03:10 -0400 Subject: [PATCH 2/2] Liability refactor --- bpfin/financials/liability.py | 77 ++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/bpfin/financials/liability.py b/bpfin/financials/liability.py index 436893a..70cf1c6 100644 --- a/bpfin/financials/liability.py +++ b/bpfin/financials/liability.py @@ -78,45 +78,46 @@ def final_liability_dict(start_date, liability_dictionary, months): Return: dictionary: {(year,month):debt value} """ - final_dict = {} - pro_forma_calendar = liability_calendar(start_date, months) - debt_list = create_liability_dict(liability_dictionary) - for pro_date in pro_forma_calendar: - for debt_date_dict in debt_list: - for debt_date in debt_date_dict: - if pro_date.year == debt_date.year and pro_date.month == debt_date.month: - if (pro_date.year, pro_date.month, calendar.monthrange( - pro_date.year, - pro_date.month)[1]) not in final_dict: - final_dict[( - pro_date.year, pro_date.month, calendar.monthrange( - pro_date.year, pro_date.month)[1])] = [] - final_dict[(pro_date.year, - pro_date.month, - calendar.monthrange( - pro_date.year, - pro_date.month)[1] - )].append(debt_date_dict[debt_date]) - for pro_date in pro_forma_calendar: - if (pro_date.year, pro_date.month, calendar.monthrange( - pro_date.year, pro_date.month)[1]) not in final_dict: - final_dict[(pro_date.year, pro_date.month, calendar.monthrange( - pro_date.year, pro_date.month)[1])] = [0] + if liability_dictionary: + final_dict = {} + pro_forma_calendar = liability_calendar(start_date, months) + debt_list = create_liability_dict(liability_dictionary) + for pro_date in pro_forma_calendar: + for debt_date_dict in debt_list: + for debt_date in debt_date_dict: + if pro_date.year == debt_date.year and pro_date.month == debt_date.month: + if (pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, + pro_date.month)[1]) not in final_dict: + final_dict[( + pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1])] = [] + final_dict[(pro_date.year, + pro_date.month, + calendar.monthrange( + pro_date.year, + pro_date.month)[1] + )].append(debt_date_dict[debt_date]) + for pro_date in pro_forma_calendar: + if (pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1]) not in final_dict: + final_dict[(pro_date.year, pro_date.month, calendar.monthrange( + pro_date.year, pro_date.month)[1])] = [0] - for key, value in final_dict.items(): - final_dict[key] = sum(value) + for key, value in final_dict.items(): + final_dict[key] = sum(value) - real_dict = {} - for key, value in final_dict.items(): - real_dict[datetime(key[0], key[1], key[2])] = value + real_dict = {} + for key, value in final_dict.items(): + real_dict[datetime(key[0], key[1], key[2])] = value - annual_liability_dict = {} - for full_date, liability in real_dict.items(): - if full_date.year not in annual_liability_dict: - annual_liability_dict[full_date.year] = [] - annual_liability_dict[full_date.year].append(liability) - sum_dict = {} - for year, value in annual_liability_dict.items(): - sum_dict[year] = sum(value) + annual_liability_dict = {} + for full_date, liability in real_dict.items(): + if full_date.year not in annual_liability_dict: + annual_liability_dict[full_date.year] = [] + annual_liability_dict[full_date.year].append(liability) + sum_dict = {} + for year, value in annual_liability_dict.items(): + sum_dict[year] = sum(value) - return sum_dict + return sum_dict -- GitLab