mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-17 08:32:41 -05:00
[GH-ISSUE #3892] [Bug]: Template by schedule incorrectly calculating budgeting amount #8555
Closed
opened 2026-04-10 18:46:32 -05:00 by GiteaMirror
·
3 comments
No Branch/Tag Specified
master
cross-version-sync-stage2
claude/transaction-column-manager-cp0u0w
claude/verify-migration-guardrails-i82c8m
dependabot/npm_and_yarn/npm_and_yarn-cd62b4b37a
tabedzki/feat/replacing-month-picker-with-day-picker
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
cross-version-sync-compat
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
claude/budget-version-migration-compat-151jlr
claude/worker-error-serialization-9iqtl7
claude/react-table-library-research-afx83z
claude/issue-8401-regression-test-9nw9l3
jfdoming/mobile-app-foundation-part-1
jfdoming/mobile-app-scaffold
release
ai-fix-cleanup-def-8290
claude/relaxed-shannon-jusywa
claude/fervent-keller-s6f2fq
claude/determined-feynman-st1y9z
claude/wizardly-einstein-vi2wce
claude/sweet-albattani-7nseio
feat/bank-sync-per-budget-file
claude/affectionate-cannon-y0kc82
claude/dependabot-findings-m9pgmb
claude/mac-app-ios-publish-zjs1lz
claude/vigilant-tesla-aiiyos
depot-migrate-secrets-1781296330308
claude/quirky-cerf-v5qck7
claude/animation-removal-alternative-2etfh1
claude/netlify-preview-comments-consolidate-9XPYa
osc/7391-error-boundaries-reports
claude/pensive-dijkstra-7DYui
claude/server-app-version-mismatch-HTCGv
claude/pr-8027-review-feedback-mELuO
claude/zealous-wozniak-e5pO0
claude/intelligent-heisenberg-BSHJq
claude/translation-download-refactor-jFRsO
claude/mobile-performance-ideas-G9PAO
claude/github-issue-7988-5A5ly
blacksmith-migration-ff70d2d
claude/great-mayer-KRvOk
claude/react-native-ios-compilation-fcJh5
claude/serene-goldberg-58xv0
claude/kind-euler-LVG3K
release-automation/edge-nightly
7710-bundle-migrations
claude/fix-docker-build-error-WMfed
claude/llm-compatible-release-notes-t20Nr
7710-tests-tdd
cursor/transaction-table-rewrite-f077
claude/plan-ci-secure-context-OtEe1
claude/fix-issue-7667-DPXi3
cursor/resolve-pr-7449-ee11
claude/fix-typescript-build-error-JPtZ5
copilot/add-repository-configs-to-packages
worktree-compressed-drifting-ritchie
claude/api-consumer-verification-kfz1K
pr-7454
claude/fix-issue-7410-LLLQ4
revert-7281-generate-icons
react-query-useSchedules
copilot/sub-pr-6140
package-upgrades
v26.7.0
v26.6.0
v26.5.2
v26.5.1
v26.5.0
v26.4.0
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
tech-support
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#8555
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).
Original GitHub issue: https://github.com/actualbudget/actual/issues/3892
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/