Exemple #1
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))
Exemple #2
0
    def get(self, request, *args, **kwargs):
        year = kwargs["year"]
        month = kwargs["month"]
        # validation
        if not is_valid_date(year, month):
            return redirect('moneybook:index')
        # 前後の日付
        to_month = datetime(int(year), int(month), 1)
        next_month = to_month + relativedelta(months=1)
        last_month = to_month - relativedelta(months=1)

        context = {
            'app_name': settings.APP_NAME,
            'username': request.user,
            'year': year,
            'month': month,
            'next_year': next_month.year,
            'next_month': next_month.month,
            'last_year': last_month.year,
            'last_month': last_month.month,
            'directions': Direction.list(),
            'methods': Method.list(),
            'unused_methods': Method.un_used_list(),
            'first_categories': Category.first_list(),
            'latter_categories': Category.latter_list(),
        }
        return render(request, 'index.html', context)
Exemple #3
0
    def post(self, request, *args, **kwargs):
        pk = kwargs["pk"]

        try:
            data = Data.get(pk)
        except:
            return HttpResponseBadRequest(
                json.dumps({"message": "Data does not exist"}))

        new_data = DataForm(request.POST)
        if new_data.is_valid():
            # データ更新
            data.date = request.POST.get("date")
            data.item = request.POST.get("item")
            data.price = request.POST.get("price")
            data.direction = Direction.get(request.POST.get("direction"))
            data.method = Method.get(request.POST.get("method"))
            data.category = Category.get(request.POST.get("category"))
            data.temp = request.POST.get("temp")
            data.checked = request.POST.get("checked")
            data.save()

            return HttpResponse()
        else:
            res_data = {}
            error_list = []
            for a in new_data.errors:
                error_list.append(a)
            res_data["ErrorList"] = error_list
            return HttpResponseBadRequest(json.dumps(res_data))
Exemple #4
0
    def get(self, request, *args, **kwargs):
        pk = kwargs["pk"]

        try:
            data = Data.get(pk)
        except:
            return redirect('moneybook:index')

        context = {
            'app_name': settings.APP_NAME,
            'username': request.user,
            'data': data,
            'directions': Direction.list(),
            'methods': Method.list(),
            'first_categories': Category.first_list(),
            'latter_categories': Category.latter_list(),
            'temps': {
                0: "No",
                1: "Yes"
            },
            'checkeds': {
                0: "No",
                1: "Yes"
            },
        }
        return render(request, "edit.html", context)
Exemple #5
0
 def get(self, request, *args, **kwargs):
     now = datetime.now()
     context = {
         'app_name': settings.APP_NAME,
         'username': request.user,
         'year': now.year,
         'month': now.month,
         'directions': Direction.list(),
         'methods': Method.list(),
         'chargeable_methods': Method.chargeable_list(),
         'first_categories': Category.first_list(),
         'latter_categories': Category.latter_list(),
         'temps': {
             0: "No",
             1: "Yes"
         },
         'paypay_pk': Method.get_paypay().pk,
         'bank_pk': Method.get_bank().pk,
         'traffic_cost_pk': Category.get_traffic_cost().pk,
         'deposit_pk': Category.get_deposit().pk,
         'income_pk': Category.get_income().pk,
     }
     return render(request, 'add.html', context)
Exemple #6
0
    def post(self, request, *args, **kwargs):
        form = IntraMoveForm(request.POST)
        if form.is_valid():
            try:
                out_data = Data()
                out_data.date = date(int(request.POST.get("year")),
                                     int(request.POST.get("month")),
                                     int(request.POST.get("day")))
                out_data.price = request.POST.get("price")
                out_data.direction = Direction.get(2)
                out_data.method = Method.get(request.POST.get("before_method"))
                out_data.category = Category.get_intra_move()
                out_data.temp = False
                out_data.item = request.POST.get('item')

                in_data = Data()
                in_data.date = date(int(request.POST.get("year")),
                                    int(request.POST.get("month")),
                                    int(request.POST.get("day")))
                in_data.price = request.POST.get("price")
                in_data.direction = Direction.get(1)
                in_data.method = Method.get(request.POST.get("after_method"))
                in_data.category = Category.get_intra_move()
                in_data.temp = False
                in_data.item = request.POST.get('item')

                # 保存
                out_data.save()
                in_data.save()

                # 成功レスポンス
                return HttpResponse()

            except:
                return HttpResponseBadRequest()
        else:
            return HttpResponseBadRequest()
Exemple #7
0
 def test_chargeable_list(self):
     ls = Method.chargeable_list()
     expects = ['Kyash', 'PayPay']
     self._assert_list(ls, expects)
Exemple #8
0
 def test_unused_list(self):
     ls = Method.un_used_list()
     expects = ['nanaco', 'Edy']
     self._assert_list(ls, expects)
Exemple #9
0
 def test_list(self):
     ls = Method.list()
     expects = ['銀行', '現金', 'Kyash', 'PayPay']
     self._assert_list(ls, expects)
Exemple #10
0
 def test_get(self):
     self.assertEqual(str(Method.get(1)), "現金")
     self.assertEqual(str(Method.get(4)), "nanaco")
Exemple #11
0
    def get(self, request, *args, **kwargs):
        context = {
            'app_name': settings.APP_NAME,
            'username': request.user,
            'directions': Direction.list(),
            'methods': Method.list(),
            'unused_methods': Method.un_used_list(),
            'first_categories': Category.first_list(),
            'latter_categories': Category.latter_list(),
            'temps': {
                0: "No",
                1: "Yes"
            },
            'checkeds': {
                0: "No",
                1: "Yes"
            },
        }

        # 入力値を維持するための変数
        query_context = {}
        query_list = [
            "start_year", "start_month", "start_day", "end_year", "end_month",
            "end_day", "item", "lower_price", "upper_price"
        ]
        for q in query_list:
            if q in request.GET:
                query_context[q] = request.GET.get(q)
        context.update(query_context)

        query_context = {}
        query_list = ["direction", "method", "category", "temp", "checked"]
        for q in query_list:
            if q in request.GET and request.GET.get(q) != '':
                query_context[q] = list(map(int, request.GET.getlist(q)))
        context.update(query_context)

        # 条件に沿うデータを検索
        if "is_query" in request.GET:
            # 日付
            start_date = None
            if "start_year" in request.GET and "start_month" in request.GET \
                    and "start_day" in request.GET:
                if request.GET.get("start_year") != "" \
                        and request.GET.get("start_month") != "" \
                        and request.GET.get("start_day") != "":
                    try:
                        date(int(request.GET.get("start_year")),
                             int(request.GET.get("start_month")),
                             int(request.GET.get("start_day")))
                        start_date = request.GET.get("start_year") + "-" + request.GET.get("start_month") + \
                            "-" + request.GET.get("start_day")
                    except:
                        start_date = None
            end_date = None
            if "end_year" in request.GET and "end_month" in request.GET and "end_day" in request.GET:
                if request.GET.get("end_year") != "" and request.GET.get(
                        "end_month") != "" and request.GET.get(
                            "end_day") != "":
                    try:
                        date(int(request.GET.get("end_year")),
                             int(request.GET.get("end_month")),
                             int(request.GET.get("end_day")))
                        end_date = request.GET.get(
                            "end_year") + "-" + request.GET.get(
                                "end_month") + "-" + request.GET.get("end_day")
                    except:
                        end_date = None
            data = Data.get_range_data(start_date, end_date)

            # 品目
            if "item" in request.GET:
                item = request.GET.get("item")
                if item != "":
                    data = Data.get_keyword_data(data, item)

            # 金額
            if "lower_price" in request.GET and request.GET.get(
                    "lower_price") != "":
                try:
                    data = Data.filter_price(
                        data, int(request.GET.get("lower_price")), None)
                except:
                    data = data
            if "upper_price" in request.GET and request.GET.get(
                    "upper_price") != "":
                try:
                    data = Data.filter_price(
                        data, None, int(request.GET.get("upper_price")))
                except:
                    data = data

            # 方向
            if "direction" in request.GET:
                try:
                    data = Data.filter_directions(data, context["direction"])
                except:
                    data = data
            # 支払い方法
            if "method" in request.GET:
                try:
                    data = Data.filter_methods(data, context["method"])
                except:
                    data = data
            # 分類
            if "category" in request.GET:
                try:
                    data = Data.filter_categories(data, context["category"])
                except:
                    data = data
            # 立替
            if "temp" in request.GET:
                try:
                    data = Data.filter_temps(data, context["temp"])
                except:
                    data = data
            # チェック済み
            if "checked" in request.GET:
                try:
                    data = Data.filter_checkeds(data, context["checked"])
                except:
                    data = data

            # 日付順にソート
            data = Data.sort_ascending(data)

            context.update({
                "show_data": data,
                "income_sum": Data.get_income_sum(data),
                "outgo_sum": Data.get_outgo_sum(data),
                "is_show": True,
            })
        else:
            context.update({"is_show": False})

        return render(request, 'search.html', context)
Exemple #12
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)