Ejemplo n.º 1
0
 def test_post(self):
     self.client.force_login(User.objects.create_user(self.username))
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add_intra_move'), {
             'year': 2000,
             'month': 4,
             'day': 1,
             'item': '内部移動テスト',
             'price': 20000,
             'before_method': 2,
             'after_method': 3,
         })
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.content.decode(), '')
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count + 2)
     before = Data.get_all_data()[after_count - 2]
     self.assertEqual(before.date, date(2000, 4, 1))
     self.assertEqual(before.item, '内部移動テスト')
     self.assertEqual(before.price, 20000)
     self.assertEqual(before.direction.pk, 2)
     self.assertEqual(before.method.pk, 2)
     self.assertEqual(before.category.pk, 4)
     self.assertEqual(before.temp, False)
     self.assertEqual(before.checked, False)
     after = Data.get_all_data()[after_count - 1]
     self.assertEqual(after.date, date(2000, 4, 1))
     self.assertEqual(after.item, '内部移動テスト')
     self.assertEqual(after.price, 20000)
     self.assertEqual(after.direction.pk, 1)
     self.assertEqual(after.method.pk, 3)
     self.assertEqual(after.category.pk, 4)
     self.assertEqual(after.temp, False)
     self.assertEqual(after.checked, False)
Ejemplo n.º 2
0
    def get(self, request, *args, **kwargs):
        now = datetime.now()
        # 実際の現金残高
        actual_cash_balance = SeveralCosts.get_actual_cash_balance()
        # クレカ確認日
        credit_checked_date = CreditCheckedDate.get_all()
        # 生活費目標額
        living_cost_mark = SeveralCosts.get_living_cost_mark()

        context = {
            'app_name':
            settings.APP_NAME,
            'username':
            request.user,
            'cash_balance':
            Data.get_income_sum(Data.get_cash_data(Data.get_all_data())) -
            Data.get_outgo_sum(Data.get_cash_data(Data.get_all_data())),
            'year':
            now.year,
            'month':
            now.month,
            'day':
            now.day,
            'actual_cash_balance':
            actual_cash_balance,
            'credit_checked_date':
            credit_checked_date,
            'living_cost_mark':
            living_cost_mark,
        }
        return render(request, "tools.html", context)
Ejemplo n.º 3
0
 def test_get(self):
     self.client.force_login(User.objects.create_user(self.username))
     before_count = Data.get_all_data().count()
     response = self.client.get(reverse('moneybook:delete'), {'pk': 1})
     self.assertEqual(response.status_code, 405)
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 4
0
 def test_post_guest(self):
     before_count = Data.get_all_data().count()
     response = self.client.post(reverse('moneybook:delete'), {'pk': 1})
     self.assertEqual(response.status_code, 302)
     self.assertEqual(response.url, reverse('moneybook:login'))
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 5
0
 def test_post_guest(self):
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add_intra_move'), {
             'year': 2000,
             'month': 4,
             'day': 1,
             'item': '内部移動テスト',
             'price': 20000,
             'before_method': 2,
             'after_method': 3,
         })
     self.assertEqual(response.status_code, 403)
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 6
0
 def test_post_missing_item(self):
     self.client.force_login(User.objects.create_user(self.username))
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add_intra_move'), {
             'year': 2000,
             'month': 4,
             'day': 1,
             'price': 20000,
             'before_method': 2,
             'after_method': 3,
         })
     self.assertEqual(response.status_code, 400)
     self.assertEqual(response.content.decode(), '')
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 7
0
 def test_post_guest(self):
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add'), {
             'date': '2000-4-1',
             'item': 'テスト項目1',
             'price': 10000,
             'direction': 2,
             'method': 2,
             'category': 1,
             'temp': False,
             'checked': False
         })
     self.assertEqual(response.status_code, 403)
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 8
0
    def get(self, request, *args, **kwargs):
        now = datetime.now()
        # 全データ
        all_data = Data.get_all_data()
        # 現在銀行
        banks = BankBalance.get_all()
        # クレカ確認日
        credit_checked_date = CreditCheckedDate.get_all()
        today = date.today()
        for c in credit_checked_date:
            # 日付が過ぎていたらpriceを0にする
            if c.date <= today:
                c.price = 0

        # 銀行残高
        all_bank_data = Data.get_bank_data(all_data)
        checked_bank_data = Data.get_checked_data(all_bank_data)
        bank_written = Data.get_income_sum(
            checked_bank_data) - Data.get_outgo_sum(checked_bank_data)

        context = {
            'year': now.year,
            'banks': banks,
            'credit_checked_date': credit_checked_date,
            'bank_written': bank_written,
        }
        return render(request, "_several_checked_date.html", context)
Ejemplo n.º 9
0
    def get(self, request, *args, **kwargs):
        # 全データ
        all_data = Data.get_all_data()
        # 支払い方法リスト
        methods = Method.list()
        # 支払い方法ごとの残高
        methods_bd = []
        for m in methods:
            d = Data.get_method_data(all_data, m.pk)
            # 銀行はチェック済みだけ
            if m.pk == Method.get_bank().pk:
                d = Data.get_checked_data(d)
            methods_bd.append({
                'pk':
                m.pk,
                'name':
                m.name,
                'balance':
                Data.get_income_sum(d) - Data.get_outgo_sum(d),
                'year':
                CheckedDate.get(m.pk).date.year,
                'month':
                CheckedDate.get(m.pk).date.month,
                'day':
                CheckedDate.get(m.pk).date.day
            })

        return HttpResponse(json.dumps(methods_bd))
Ejemplo n.º 10
0
 def test_post_invalid(self):
     self.client.force_login(User.objects.create_user(self.username))
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add'), {
             'item': 'テスト項目1',
             'direction': 2,
             'method': 2,
             'category': 1,
             'temp': False,
             'checked': False
         })
     self.assertEqual(response.status_code, 400)
     self.assertEqual(response.content.decode(),
                      json.dumps({'ErrorList': ['date', 'price']}))
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count)
Ejemplo n.º 11
0
    def test_post_guest(self):
        self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5))
        unchecked_data = Data.get_unchecked_data(Data.get_all_data())
        expects = [
            '必需品1', 'スーパー', '計算外', '貯金', 'PayPayチャージ', '立替分1', '内部移動1', '内部移動2'
        ]
        self._assert_list(unchecked_data, expects)
        response = self.client.post(reverse('moneybook:checked_date'), {
            'year': 2001,
            'month': 2,
            'day': 20,
            'method': 2
        })
        self.assertEqual(response.status_code, 403)

        self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5))
        unchecked_data = Data.get_unchecked_data(Data.get_all_data())
        self._assert_list(unchecked_data, expects)
Ejemplo n.º 12
0
    def test_post_missing_method(self):
        self.client.force_login(User.objects.create_user(self.username))
        self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5))
        unchecked_data = Data.get_unchecked_data(Data.get_all_data())
        expects = [
            '必需品1', 'スーパー', '計算外', '貯金', 'PayPayチャージ', '立替分1', '内部移動1', '内部移動2'
        ]
        self._assert_list(unchecked_data, expects)

        response = self.client.post(reverse('moneybook:checked_date'), {
            'year': 2000,
            'month': 1,
            'day': 20
        })
        self.assertEqual(response.status_code, 400)
        self.assertEqual(CheckedDate.get(2).date, date(2000, 1, 5))
        unchecked_data = Data.get_unchecked_data(Data.get_all_data())
        self._assert_list(unchecked_data, expects)
Ejemplo n.º 13
0
 def get(self, request, *args, **kwargs):
     # 全データ
     all_data = Data.get_all_data()
     # 未承認トランザクション
     unchecked_data = Data.get_unchecked_data(all_data)
     context = {
         'unchecked_data': unchecked_data,
     }
     return render(request, "_unchecked_data.html", context)
Ejemplo n.º 14
0
 def test_post(self):
     self.client.force_login(User.objects.create_user(self.username))
     before_count = Data.get_all_data().count()
     response = self.client.post(
         reverse('moneybook:add'), {
             'date': '2000-4-1',
             'item': 'テスト項目1',
             'price': 10000,
             'direction': 2,
             'method': 2,
             'category': 1,
             'temp': False,
             'checked': False
         })
     self.assertEqual(response.status_code, 200)
     self.assertEqual(response.content.decode(), '')
     after_count = Data.get_all_data().count()
     self.assertEqual(after_count, before_count + 1)
Ejemplo n.º 15
0
    def post(self, request, *args, **kwargs):
        written_bank_data = Data.get_checked_data(
            Data.get_bank_data(Data.get_all_data()))
        bank_sum = 0
        bb = BankBalance.get_all()
        cc = CreditCheckedDate.get_all()

        # フォーマットチェック
        try:
            for b in bb:
                key = "bank-" + str(b.pk)
                if key in request.POST:
                    int(request.POST.get(key))

            for c in cc:
                key = "credit-" + str(c.pk)
                if key in request.POST:
                    int(request.POST.get(key))
        except ValueError:
            return HttpResponseBadRequest(
                json.dumps({"message": "invalid parameter"}))

        # 更新と計算
        for b in bb:
            key = "bank-" + str(b.pk)
            if key in request.POST:
                value = int(request.POST.get(key))
                BankBalance.set(b.pk, value)
            bank_sum += BankBalance.get_price(b.pk)

        for c in cc:
            key = "credit-" + str(c.pk)
            if key in request.POST:
                value = int(request.POST.get(key))
                CreditCheckedDate.set_price(c.pk, value)
            bank_sum -= CreditCheckedDate.get_price(c.pk)
        return HttpResponse(
            json.dumps({
                "balance":
                Data.get_income_sum(written_bank_data) -
                Data.get_outgo_sum(written_bank_data) - bank_sum
            }))
Ejemplo n.º 16
0
 def test_get_all_data(self):
     self.assertEqual(Data.get_all_data().count(), 23)
Ejemplo n.º 17
0
    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)