Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug(forecast); Forecasting code is not handling timezone properly. #1660

Open
elliotcourant opened this issue Jan 26, 2024 · 4 comments
Open
Assignees
Labels
api Related to or caused by the backend Go REST API. bug Something isn't working forecast Forecast functionality for predicting balances and future expenses
Milestone

Comments

@elliotcourant
Copy link
Member

Something about the transition from DT to ST is causing an issue where spending events are being duplicated with a 1 hour offset causing confusing results from the forecasting api.

@elliotcourant elliotcourant added bug Something isn't working api Related to or caused by the backend Go REST API. forecast Forecast functionality for predicting balances and future expenses labels Jan 26, 2024
@elliotcourant elliotcourant added this to the v1.0.0 milestone Jan 26, 2024
@elliotcourant elliotcourant self-assigned this Jan 26, 2024
@elliotcourant
Copy link
Member Author

Dumps of data:

Spending ID: 154 is duplicated. Others might be as well but that one can be used for a sample.

Spending Response

{
    "spendingId": 154,
    "bankAccountId": 1,
    "fundingScheduleId": 1,
    "spendingType": 0,
    "name": "[REDACTED]",
    "description": "Every month on the 26th",
    "targetAmount": 1609,
    "currentAmount": 0,
    "usedAmount": 0,
    "ruleset": "DTSTART:20230326T050000Z\nRRULE:FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=26",
    "lastSpentFrom": null,
    "lastRecurrence": "2024-01-26T06:00:00Z",
    "nextRecurrence": "2024-02-26T05:00:00Z",
    "nextContributionAmount": 804,
    "isBehind": false,
    "isPaused": false,
    "dateCreated": "2022-05-03T03:07:25Z"
}

Forecast Response

{
    "startingTime": "2024-01-26T18:53:40.444225417Z",
    "endingTime": "2024-02-26T18:53:40.444225417Z",
    "startingBalance": 307872,
    "endingBalance": 506105,
    "events": [
        {
            "date": "2024-01-28T06:00:00Z",
            "delta": -4000,
            "contribution": 0,
            "transaction": 4000,
            "balance": 303872,
            "spending": [
                {
                    "date": "2024-01-28T06:00:00Z",
                    "transactionAmount": 4000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 165
                }
            ],
            "funding": []
        },
        {
            "date": "2024-01-29T06:00:00Z",
            "delta": -999,
            "contribution": 0,
            "transaction": 999,
            "balance": 302873,
            "spending": [
                {
                    "date": "2024-01-29T06:00:00Z",
                    "transactionAmount": 999,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 182
                }
            ],
            "funding": []
        },
        {
            "date": "2024-01-30T06:00:00Z",
            "delta": -2000,
            "contribution": 0,
            "transaction": 2000,
            "balance": 300873,
            "spending": [
                {
                    "date": "2024-01-30T06:00:00Z",
                    "transactionAmount": 2000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 162
                }
            ],
            "funding": []
        },
        {
            "date": "2024-01-31T06:00:00Z",
            "delta": 316832,
            "contribution": 466832,
            "transaction": 150000,
            "balance": 617705,
            "spending": [
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 511,
                    "rollingAllocation": 8464,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 49
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 500,
                    "rollingAllocation": 1000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 50
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 336,
                    "rollingAllocation": 6327,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 53
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 10780,
                    "rollingAllocation": 67660,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 54
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 0,
                    "rollingAllocation": 1000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 64
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 7000,
                    "rollingAllocation": 7000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 65
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2000,
                    "rollingAllocation": 2000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 66
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 15499,
                    "rollingAllocation": 15499,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 74
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 11177,
                    "rollingAllocation": 12000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 75
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 537,
                    "rollingAllocation": 1073,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 79
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 85714,
                    "rollingAllocation": 85714,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 83
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 10487,
                    "rollingAllocation": 10487,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 84
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 805,
                    "rollingAllocation": 1610,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 102
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 500,
                    "rollingAllocation": 999,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 103
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 27313,
                    "rollingAllocation": 40000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 105
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2400,
                    "rollingAllocation": 2400,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 106
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 417,
                    "rollingAllocation": 1647,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 107
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 17097,
                    "rollingAllocation": 19202,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 109
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 929,
                    "rollingAllocation": 1900,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 111
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 375,
                    "rollingAllocation": 1073,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 112
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 500,
                    "rollingAllocation": 999,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 113
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 90000,
                    "rollingAllocation": 180000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 114
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 3977,
                    "rollingAllocation": 4089,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 120
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 1234,
                    "rollingAllocation": 1234,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 121
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 1200,
                    "rollingAllocation": 1200,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 130
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 450,
                    "rollingAllocation": 550,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 131
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2487,
                    "rollingAllocation": 4974,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 142
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 235,
                    "rollingAllocation": 4000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 144
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2800,
                    "rollingAllocation": 6300,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 145
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 99,
                    "rollingAllocation": 114,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 150
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 804,
                    "rollingAllocation": 804,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 154
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 253,
                    "rollingAllocation": 4972,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 155
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 500,
                    "rollingAllocation": 500,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 162
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2000,
                    "rollingAllocation": 2000,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 165
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 383,
                    "rollingAllocation": 5933,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 166
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 479,
                    "rollingAllocation": 4252,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 174
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 333,
                    "rollingAllocation": 333,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 182
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 150000,
                    "contributionAmount": 150000,
                    "rollingAllocation": 0,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 197
                },
                {
                    "date": "2024-01-31T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 14721,
                    "rollingAllocation": 48512,
                    "funding": [
                        {
                            "date": "2024-01-31T06:00:00Z",
                            "originalDate": "2024-01-31T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 206
                }
            ],
            "funding": [
                {
                    "date": "2024-01-31T06:00:00Z",
                    "originalDate": "2024-01-31T06:00:00Z",
                    "weekendAvoided": false,
                    "fundingScheduleId": 1
                }
            ]
        },
        {
            "date": "2024-02-01T06:00:00Z",
            "delta": -194610,
            "contribution": 0,
            "transaction": 194610,
            "balance": 423095,
            "spending": [
                {
                    "date": "2024-02-01T06:00:00Z",
                    "transactionAmount": 1000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 50
                },
                {
                    "date": "2024-02-01T06:00:00Z",
                    "transactionAmount": 12000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 75
                },
                {
                    "date": "2024-02-01T06:00:00Z",
                    "transactionAmount": 1610,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 102
                },
                {
                    "date": "2024-02-01T06:00:00Z",
                    "transactionAmount": 180000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 114
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-03T06:00:00Z",
            "delta": -4999,
            "contribution": 0,
            "transaction": 4999,
            "balance": 418096,
            "spending": [
                {
                    "date": "2024-02-03T06:00:00Z",
                    "transactionAmount": 999,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 103
                },
                {
                    "date": "2024-02-03T06:00:00Z",
                    "transactionAmount": 4000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 144
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-05T06:00:00Z",
            "delta": -2072,
            "contribution": 0,
            "transaction": 2072,
            "balance": 416024,
            "spending": [
                {
                    "date": "2024-02-05T06:00:00Z",
                    "transactionAmount": 1073,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 112
                },
                {
                    "date": "2024-02-05T06:00:00Z",
                    "transactionAmount": 999,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 113
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-06T06:00:00Z",
            "delta": -1900,
            "contribution": 0,
            "transaction": 1900,
            "balance": 414124,
            "spending": [
                {
                    "date": "2024-02-06T06:00:00Z",
                    "transactionAmount": 1900,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 111
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-07T06:00:00Z",
            "delta": -1073,
            "contribution": 0,
            "transaction": 1073,
            "balance": 413051,
            "spending": [
                {
                    "date": "2024-02-07T06:00:00Z",
                    "transactionAmount": 1073,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 79
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-08T06:00:00Z",
            "delta": -16699,
            "contribution": 0,
            "transaction": 16699,
            "balance": 396352,
            "spending": [
                {
                    "date": "2024-02-08T06:00:00Z",
                    "transactionAmount": 15499,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 74
                },
                {
                    "date": "2024-02-08T06:00:00Z",
                    "transactionAmount": 1200,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 130
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-09T06:00:00Z",
            "delta": -2400,
            "contribution": 0,
            "transaction": 2400,
            "balance": 393952,
            "spending": [
                {
                    "date": "2024-02-09T06:00:00Z",
                    "transactionAmount": 2400,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 106
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-10T06:00:00Z",
            "delta": -40000,
            "contribution": 0,
            "transaction": 40000,
            "balance": 353952,
            "spending": [
                {
                    "date": "2024-02-10T06:00:00Z",
                    "transactionAmount": 40000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 105
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-12T06:00:00Z",
            "delta": -2000,
            "contribution": 0,
            "transaction": 2000,
            "balance": 351952,
            "spending": [
                {
                    "date": "2024-02-12T06:00:00Z",
                    "transactionAmount": 2000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 66
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-13T06:00:00Z",
            "delta": -2000,
            "contribution": 0,
            "transaction": 2000,
            "balance": 349952,
            "spending": [
                {
                    "date": "2024-02-13T06:00:00Z",
                    "transactionAmount": 2000,
                    "contributionAmount": 0,
                    "rollingAllocation": -2000,
                    "funding": [],
                    "spendingId": 66
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-14T06:00:00Z",
            "delta": -6300,
            "contribution": 0,
            "transaction": 6300,
            "balance": 343652,
            "spending": [
                {
                    "date": "2024-02-14T06:00:00Z",
                    "transactionAmount": 6300,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 145
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-15T06:00:00Z",
            "delta": 273167,
            "contribution": 425635,
            "transaction": 152468,
            "balance": 616819,
            "spending": [
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 384,
                    "rollingAllocation": 8848,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 49
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 500,
                    "rollingAllocation": 500,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 50
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 224,
                    "rollingAllocation": 6551,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 53
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 8085,
                    "rollingAllocation": 75745,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 54
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 0,
                    "rollingAllocation": 1000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 64
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 7000,
                    "rollingAllocation": 14000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 65
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2000,
                    "rollingAllocation": 0,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 66
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 7749,
                    "rollingAllocation": 7749,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 74
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 6000,
                    "rollingAllocation": 6000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 75
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 536,
                    "rollingAllocation": 536,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 79
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 73469,
                    "rollingAllocation": 159183,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 83
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 9613,
                    "rollingAllocation": 20100,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 84
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 805,
                    "rollingAllocation": 805,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 102
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 499,
                    "rollingAllocation": 499,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 103
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 20000,
                    "rollingAllocation": 20000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 105
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 1200,
                    "rollingAllocation": 1200,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 106
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 397,
                    "rollingAllocation": 2044,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 107
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 17098,
                    "rollingAllocation": 36300,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 109
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 950,
                    "rollingAllocation": 950,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 111
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 536,
                    "rollingAllocation": 536,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 112
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 499,
                    "rollingAllocation": 499,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 113
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 90000,
                    "rollingAllocation": 90000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 114
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 3182,
                    "rollingAllocation": 7271,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 120
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 2468,
                    "contributionAmount": 1234,
                    "rollingAllocation": 0,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 121
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 600,
                    "rollingAllocation": 600,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 130
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 450,
                    "rollingAllocation": 1000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 131
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 1990,
                    "rollingAllocation": 6964,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 142
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 166,
                    "rollingAllocation": 166,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 144
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 1575,
                    "rollingAllocation": 1575,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 145
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 100,
                    "rollingAllocation": 214,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 150
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 805,
                    "rollingAllocation": 1609,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 154
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 202,
                    "rollingAllocation": 5174,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 155
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 375,
                    "rollingAllocation": 875,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 162
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 2000,
                    "rollingAllocation": 4000,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 165
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 340,
                    "rollingAllocation": 6273,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 166
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 442,
                    "rollingAllocation": 4694,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 174
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 222,
                    "rollingAllocation": 555,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 182
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 150000,
                    "contributionAmount": 150000,
                    "rollingAllocation": 0,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 197
                },
                {
                    "date": "2024-02-15T06:00:00Z",
                    "transactionAmount": 0,
                    "contributionAmount": 14408,
                    "rollingAllocation": 62920,
                    "funding": [
                        {
                            "date": "2024-02-15T06:00:00Z",
                            "originalDate": "2024-02-15T06:00:00Z",
                            "weekendAvoided": false,
                            "fundingScheduleId": 1
                        }
                    ],
                    "spendingId": 206
                }
            ],
            "funding": [
                {
                    "date": "2024-02-15T06:00:00Z",
                    "originalDate": "2024-02-15T06:00:00Z",
                    "weekendAvoided": false,
                    "fundingScheduleId": 1
                }
            ]
        },
        {
            "date": "2024-02-16T06:00:00Z",
            "delta": -2468,
            "contribution": 0,
            "transaction": 2468,
            "balance": 614351,
            "spending": [
                {
                    "date": "2024-02-16T06:00:00Z",
                    "transactionAmount": 2468,
                    "contributionAmount": 0,
                    "rollingAllocation": -2468,
                    "funding": [],
                    "spendingId": 121
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-17T06:00:00Z",
            "delta": -1000,
            "contribution": 0,
            "transaction": 1000,
            "balance": 613351,
            "spending": [
                {
                    "date": "2024-02-17T06:00:00Z",
                    "transactionAmount": 1000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 131
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-18T06:00:00Z",
            "delta": -15000,
            "contribution": 0,
            "transaction": 15000,
            "balance": 598351,
            "spending": [
                {
                    "date": "2024-02-18T06:00:00Z",
                    "transactionAmount": 14000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 65
                },
                {
                    "date": "2024-02-18T06:00:00Z",
                    "transactionAmount": 1000,
                    "contributionAmount": 0,
                    "rollingAllocation": -1000,
                    "funding": [],
                    "spendingId": 131
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-19T06:00:00Z",
            "delta": -50300,
            "contribution": 0,
            "transaction": 50300,
            "balance": 548051,
            "spending": [
                {
                    "date": "2024-02-19T06:00:00Z",
                    "transactionAmount": 14000,
                    "contributionAmount": 0,
                    "rollingAllocation": -14000,
                    "funding": [],
                    "spendingId": 65
                },
                {
                    "date": "2024-02-19T06:00:00Z",
                    "transactionAmount": 36300,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 109
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-20T06:00:00Z",
            "delta": -36300,
            "contribution": 0,
            "transaction": 36300,
            "balance": 511751,
            "spending": [
                {
                    "date": "2024-02-20T06:00:00Z",
                    "transactionAmount": 36300,
                    "contributionAmount": 0,
                    "rollingAllocation": -36300,
                    "funding": [],
                    "spendingId": 109
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-24T06:00:00Z",
            "delta": -1214,
            "contribution": 0,
            "transaction": 1214,
            "balance": 510537,
            "spending": [
                {
                    "date": "2024-02-24T06:00:00Z",
                    "transactionAmount": 1000,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 64
                },
                {
                    "date": "2024-02-24T06:00:00Z",
                    "transactionAmount": 214,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 150
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-25T06:00:00Z",
            "delta": -2823,
            "contribution": 0,
            "transaction": 2823,
            "balance": 507714,
            "spending": [
                {
                    "date": "2024-02-25T06:00:00Z",
                    "transactionAmount": 1000,
                    "contributionAmount": 0,
                    "rollingAllocation": -1000,
                    "funding": [],
                    "spendingId": 64
                },
                {
                    "date": "2024-02-25T06:00:00Z",
                    "transactionAmount": 214,
                    "contributionAmount": 0,
                    "rollingAllocation": -214,
                    "funding": [],
                    "spendingId": 150
                },
                {
                    "date": "2024-02-25T06:00:00Z",
                    "transactionAmount": 1609,
                    "contributionAmount": 0,
                    "rollingAllocation": 0,
                    "funding": [],
                    "spendingId": 154
                }
            ],
            "funding": []
        },
        {
            "date": "2024-02-26T06:00:00Z",
            "delta": -1609,
            "contribution": 0,
            "transaction": 1609,
            "balance": 506105,
            "spending": [
                {
                    "date": "2024-02-26T06:00:00Z",
                    "transactionAmount": 1609,
                    "contributionAmount": 0,
                    "rollingAllocation": -1609,
                    "funding": [],
                    "spendingId": 154
                }
            ],
            "funding": []
        }
    ]
}

@elliotcourant
Copy link
Member Author

The issue is definitely that the nextRecurrence date is in the wrong timezone.

@elliotcourant
Copy link
Member Author

This is a duplicate of #1583

@elliotcourant
Copy link
Member Author

I think ultimately this means the spending code that is special needs to be lifted out of the models and repository packages. There is code in each of those that dictates how spending is calculated and they are each a bit different.

Everything should be moved into the forecast package. Forecast should depend on models.

Models should not import forecast though. All code that needs to calculate the next thing needs to import the forecast package.

This should make the code more consistent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api Related to or caused by the backend Go REST API. bug Something isn't working forecast Forecast functionality for predicting balances and future expenses
Projects
None yet
Development

No branches or pull requests

1 participant