mirror of
https://github.com/actualbudget/actual.git
synced 2026-03-10 04:02:38 -05:00
[Bug]: Template by schedule incorrectly calculating budgeting amount #1616
Closed
opened 2026-02-28 19:48:49 -06:00 by GiteaMirror
·
3 comments
No Branch/Tag Specified
master
claude/fix-simplefin-batch-sync-O8LcD
matiss/modal-and-server-refactor
claude/fix-simplefin-ssrf-T31gX
claude/release-notes-validation-X7rvR
ai/custom-theme-dual-prefs
matiss/fix-6804
add-claude-github-actions-1772738270730
react-query-rules
react-query-useSchedules
matiss/separate-lint-format
dependabot/npm_and_yarn/ajv-6.14.0
cursor/sync-performance-notification-9899
react-query-prefs
matiss/chunked-sync-and-progress-ux
v26.2.1
copilot/sub-pr-6880
fix-react-query-clear-on-close-budget
copilot/sub-pr-6140
feat/auto-note
feat/scoped-bank-sync
cursor/desktop-transactions-react-table-1d0c
fix-exhaustive-deps-App
copilot/fix-find-replace-bug
release/v26.2.0-pre
matiss/browser-tests
mobile-fix-drag-and-drop-across-groups
budget-table-v2
PayeeAutocomplete2
pglite
bugfix/plugins/fix-plugins-sw
feat/plugins/plugins-core-package
prerelease
matiss/unicode-minus-fix
cursor/fix-actual-github-issue-6206-gemini-3-pro-preview-9c37
TransactionFormPage
cursor/implement-mortgage-and-loan-account-type-78ca
tests-update-fill-with-pressSequentially
mobile/link-modal
deps/25.11
cursor/fix-update-vrt-apply-ci-job-dispatch-b324
sync-server-plugins
cursor/propose-patch-for-github-issue-5680-2a18
fix/compiler-preserve-inner-dollar-escapes
cursor/analyze-actual-budget-issue-and-propose-fix-5b70
coderabbitai/docstrings/0c070e5
cursor/add-wip-prefix-and-comment-to-prs-d78d
jfdoming/08-21-auto-focus-on-navigate-in-all-browsers
show-totals-on-mobile-budget-banners
allow-child-transactions-make-transfer
mobile-calculator-keyboard
payee-geolocation
enhance/restore_scroll_position
dm-fix-second-click-on-mobile-new-transaction-2
scrollToLocationBudget
alert-autofix-38
tsconfig-composite
mobile-fix-uncategorized-transactions-on-tracking-budgets
server-budget-handlers
fix-sql-injection-in-cleanup-template
non-chrome-draggable-workaround
mobile-budget-page-swipe-navigation
ts-db-all
stable
dark-theme-with-brand-colors
fix-mobile-delete-group
ts-db-select
UnderKoen/reconcile-context-menu
master-before-server-merge
v25.2.1
ts-runQuery
rename-redux-hooks
UnderKoen/3557-persist-state-in-history
remove-redux-CLOSE_BUDGET
fix-exhaustive-deps-errors-FinancesApp
redux-toolkit-createSlice-backup
accounts-function-component
ts-useSplitsExpanded
loot-core-server-package
useTransactios-in-TransactionEdit
react-aria-input
move-redux-to-desktop-client
QueryState-type
fix-themes-applied-late
mobile-vrts
revert-3295-spendingCardFix
react-aria-button-4
split-payee-on-mobile
twk3/pin-apis-crdt
notes-tag-autocomplete
ts-LoadBackup
dnd-kit
package-upgrades
v26.3.0
v26.2.1
v26.2.0
v26.1.0
v25.12.0
v25.11.0
v25.10.0
v25.9.0
v25.8.0
v25.7.1
v25.7.0
v25.6.1
v25.6.0
v25.5.0
v25.4.0
v25.3.1
v25.3.0
v25.2.1
v25.2.0
v25.1.0
v24.12.0
v24.11.0
v24.10.1
v24.10.0
v24.9.0
v24.8.0
v24.7.0
v24.6.0
v24.5.0
v24.4.0
v24.3.0
v24.2.0
v24.1.0
v23.12.0
v23.11.0
v23.10.0
v23.9.0
v23.8.1
v23.8.0
v23.7.2
v23.7.1
v23.7.0
v23.6.0
v23.5.0
v23.4.2
v23.4.1
v23.4.0
v23.3.2
v23.3.0
v23.2.9
v23.2.5
v23.1.12
v22.12.9
Labels
Clear labels
AI generated
API
bank sync
budgeting
bug
can’t replicate
dependencies
docker
documentation
electron
experimental feature
feature
feedback
goal templates
good first issue
help wanted
importers
maintenance
needs info
needs testing
needs triage
needs votes
openid
payees
pull-request
regression
reports
responsive
rules
schedules
server
✨ merged
split transactions
tech debt
theme
transaction import
transaction reconciliation
transactions
translations
upstream
user interface
✅ approved
wontfix
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/actual#1616
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @sammichaels on GitHub (Nov 25, 2024).
Verified issue does not already exist?
What happened?
When using a schedule with two transactions per month and a template by schedule, the next month is incorrectly calculated.
Steps to reproduce (calculated on 11/24/24 and 11/25/24):
I've attached an example budget I created to reproduce the issue.
Where are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Safari
Operating System
Mac OSX
@sammichaels commented on GitHub (Nov 26, 2024):
The behavior appears to be in goalsSchedule.ts:
c25e3d4163/packages/loot-core/src/server/budget/goalsSchedule.ts (L227-L242)If the balance is less than the amount needed to schedule (
ifstatement on line 227 is evaluating to false), it is incorrectly subtractinglast_month_balancefrom the amount intotalPayMonthOf(settingto_Budgeton line 236). I think the issue is that it's not reserving the amount needed for upcoming transactions in previous months that have not yet happened.In my example above, $100 is added in November, but that transaction has not yet occurred. When December is calculated, it's not taking into consideration the 11/30 upcoming transaction and instead subtracting that balance ($200 total needed for 12/15 and 12/30, $100 already there, so only fund $100). The expected behavior would be $200 total needed for 12/15 and 12/30, $100 already there, $100 needed in upcoming transactions from previous months on 11/30, so fund $200.
@IsThisThingStillOn commented on GitHub (Aug 5, 2025):
I've noticed two things:
#1 If your scheduled amount is greater than the current balance of the category, it will budget like "up to". If your scheduled amount is less thant the current balance, it will budget the whole amount.
Edge case:
Balance: 20
Schedule: 19.99
Apply: 39.99 category balance
Balance: 20
Schedule: 20.01
Apply: 20.01 category balance
#2 If you use multiple schedules in one category that have different ending dates (i.e. different months), it will work almost as expected. But once you reach the month where items are due, it seems to regress towards half of the remaining money left to budget, towards the end.
Schedules:
4 schedules due in September with different lengths and amounts for a total of $158.99
1 schedule due in October, runs for 3 months with the amount of $42.99
1 schedule due in October, runs for 5 months with the amount of $37
With a category balance of $67.25 in July, I ran the template for August and it calculated: $69.45
If you'd done it manually you'd expected it to be: $71.30
That's just a little bit under but totally fine, since schedules don't have a start date and it needs to make an estimate.
Now come September (4 items are due). You still need to fund all six schedules, so it should be the same amount as in August. But it undershoots heavily and budgets: $56.11. After deducting the September purchases it will budget $27.67 in October. Remove the October purchase and for November it needs to budget $18.50 (while we actually could already have saved up $7.40 for each of the 4 months prior).
A change to smooth out the budgeted amount better:
a) Sum up the amount of all schedules
b) Deduct the current category balance
c) Sum up the remaining months of all schedules
d) Divide the remaining amount by the months and multiply by the items
With above example these would be the budgeted amounts:
Aug: $68.69
Sep: $68.69
Oct: $22.90
Nov: $11.45
@youngcw commented on GitHub (Nov 28, 2025):
I think this PR fixes the problem. Can you test it?
https://deploy-preview-6268.demo.actualbudget.org/