def test_get_normal_data(self): '''計算外と内部移動を除く''' base_data = Data.get_month_data(2000, 1) data = Data.get_normal_data(base_data) expects = [ "給与", "コンビニ", "その他1", "必需品1", "必需品2", "現金収入", "銀行収入", "スーパー", "貯金", "電気代", "ガス代", "水道代", "立替分1", "立替分2" ] self._assert_list(data, expects)
def test_get_normal_data_empty(self): base_data = Data.get_month_data(1999, 1) data = Data.get_normal_data(base_data) self.assertEqual(data.count(), 0)
def test_get_normal_data_nothing(self): base_data = Data.get_month_data(2000, 4) data = Data.get_normal_data(base_data) self.assertEqual(data.count(), 0)
def get(self, request, *args, **kwargs): year = kwargs['year'] month_list = list(range(1, 13)) # 月ごとのデータ monthly_context = [] for i_month in month_list: tomonth_context = {} tomonth_context['label'] = i_month monthly_data = Data.get_month_data(year, i_month) monthly_normal_data = Data.get_normal_data(monthly_data) next_month_first = date(year, i_month, 1) + relativedelta(months=1) # 収支 td = Data.get_temp_and_deposit_sum(monthly_data) tomonth_context['income'] = Data.get_income_sum( monthly_normal_data) - td tomonth_context['outgo'] = Data.get_outgo_sum( monthly_normal_data) - td tomonth_context['balance'] = tomonth_context[ 'income'] - tomonth_context['outgo'] # 給与 tomonth_context['salary'] = Data.get_income_sum( Data.get_keyword_data(monthly_data, "給与")) # 生活費 tomonth_context['living_cost'] = Data.get_living_cost(monthly_data) # 食費 tomonth_context['food_cost'] = Data.get_food_costs(monthly_data) # 電気代 tomonth_context['electricity_cost'] = Data.get_outgo_sum( Data.get_keyword_data(monthly_data, "電気代")) # ガス代 tomonth_context['gus_cost'] = Data.get_outgo_sum( Data.get_keyword_data(monthly_data, "ガス代")) # 水道代 w = Data.get_outgo_sum(Data.get_keyword_data(monthly_data, "水道代")) / 2 if (w == 0): d = Data.get_month_data(next_month_first.year, next_month_first.month) w = Data.get_outgo_sum(Data.get_keyword_data(d, "水道代")) / 2 tomonth_context['water_cost'] = w tomonth_context['infra_cost'] = tomonth_context['electricity_cost'] + \ tomonth_context['gus_cost'] + tomonth_context['water_cost'] # 全収支 monthly_data_without_in_move = Data.filter_without_intra_move( monthly_data) t = Data.get_temp_sum(monthly_data) tomonth_context['all_income'] = Data.get_income_sum( monthly_data_without_in_move) - t tomonth_context['all_outgo'] = Data.get_outgo_sum( monthly_data_without_in_move) - t tomonth_context['all_balance'] = tomonth_context[ 'all_income'] - tomonth_context['all_outgo'] # 途中残高 last_day = next_month_first - timedelta(days=1) rd = Data.get_range_data(None, last_day) tomonth_context['period_balance'] = Data.get_income_sum( rd) - Data.get_outgo_sum(rd) monthly_context.append(tomonth_context) context = { 'app_name': settings.APP_NAME, 'username': request.user, 'year': year, 'monthly_context': monthly_context } return render(request, 'statistics.html', context)
def get(self, request, *args, **kwargs): # validation if "year" in request.GET and "month" in request.GET: year = request.GET.get("year") month = request.GET.get("month") if not is_valid_date(year, month): return HttpResponseBadRequest("parameter error") else: return HttpResponseBadRequest("parameter error") # 全データ all_data = Data.get_all_data() # 今月のデータ monthly_data = Data.get_month_data(int(year), int(month)) # 支払い方法リスト methods = Method.list() # 支払い方法ごとの残高 methods_iob = [] methods_monthly_iob = [] for m in methods: d = Data.get_method_data(all_data, m.pk) methods_iob.append( InOutBalance(m.name, None, None, Data.get_income_sum(d) - Data.get_outgo_sum(d))) i = Data.get_income_sum(Data.get_method_data(monthly_data, m.pk)) o = Data.get_outgo_sum(Data.get_method_data(monthly_data, m.pk)) methods_monthly_iob.append(InOutBalance(m.name, i, o, None)) # 立替と貯金 monthly_temp_and_deposit = Data.get_temp_and_deposit_sum(monthly_data) # 通常データ monthly_normal_data = Data.get_normal_data(monthly_data) # 今月の収入 monthly_income = Data.get_income_sum( monthly_normal_data) - monthly_temp_and_deposit # 今月の支出 monthly_outgo = Data.get_outgo_sum( monthly_normal_data) - monthly_temp_and_deposit # 生活費 living_cost = Data.get_living_cost(monthly_data) # 変動費 variable_cost = Data.get_variable_cost(monthly_data) # 生活費目標額 living_cost_mark = SeveralCosts.get_living_cost_mark() # 内部移動以外 monthly_data_without_inmove = Data.filter_without_intra_move( monthly_data) context = { 'total_balance': Data.get_income_sum(all_data) - Data.get_outgo_sum(all_data), 'methods_iob': methods_iob, 'monthly_income': monthly_income, 'monthly_outgo': monthly_outgo, 'monthly_inout': monthly_income - monthly_outgo, 'living_cost': living_cost, 'variable_cost': variable_cost, 'living_remain': living_cost_mark - living_cost, 'variable_remain': monthly_income - max(SeveralCosts.get_living_cost_mark(), living_cost) - variable_cost, 'monthly_all_income': Data.get_income_sum(monthly_data_without_inmove), 'monthly_all_outgo': Data.get_outgo_sum(monthly_data_without_inmove), 'methods_monthly_iob': methods_monthly_iob, } return render(request, '_balance_statistic_mini.html', context)