mirror of
https://github.com/actualbudget/actual.git
synced 2026-07-15 14:43:36 -05:00
[Bug] [Budget templates]: "up to" template not handling category negative Spent #538
Closed
opened 2026-02-28 19:08:08 -06:00 by GiteaMirror
·
9 comments
No Branch/Tag Specified
master
tabedzki/feat/replacing-month-picker-with-day-picker
enforce-append-only-migrations-ci
delay-initial-sync-until-loaded
jfdoming/mobile-app-build
cross-version-sync-compat
claude/error-codes-worker-boundary-26i5uu
jfdoming/api-tokens-part-1
jfdoming/api-tokens-part-2
jfdoming/api-tokens-part-3
jfdoming/mobile-app-updates
api-browser-custom-data-dir
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
No Label
bug
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#538
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 @dugite-code on GitHub (Aug 2, 2023).
Verified issue does not already exist?
What happened?
-383.44and a balance-44.80with over1300to budget#template 300 up to 350Expected result: to have
300applied to category budgetActual result:
11.36applied to category budgetIt looks like the spent amount is taken as a positive and the balance subtracted to determine the amount to budget:
Additional details
What error did you receive?
No response
Where are you hosting Actual?
Docker
What browsers are you seeing the problem on?
Firefox
Operating System
Linux
@shall0pass commented on GitHub (Aug 2, 2023):
I'm unable to reproduce this issue. I created a fresh budget to test, added one account, added one payment transaction to the food category in the amount of 315, place a -40 in the budgeted field, and applied #template 300 up to 350. The result was 300 budgeted with a balance of -15. (-315+300).
Did I miss something?
@kyrias commented on GitHub (Aug 2, 2023):
#template 300 up to 350.Result: Food category has budgeted 11.36, spent -383.44, and balance -33.44.
@Kidglove57 commented on GitHub (Aug 2, 2023):
I can also reproduce this. I tried using the “overwrite” feature but it made no difference
@shall0pass commented on GitHub (Aug 2, 2023):
Ah ok. What's happening is that the template doesn't take into consideration any current month spending. If you didn't have the spent value, your category balance for the month would be 350 and you would have hit the limit for the category. Lines 717 and 718 of the goal templates file are where the calculation is being modified from 300 to 11 to max the category at 350 if someone wants to take a look.
Fix: line 717
else if(to_budget +balance >limit) {
to_budget = limit - balance;
}
I'm traveling today so I can't push this until tonight, maybe tomorrow. If someone else wants to check this and push 🎉
@youngcw commented on GitHub (Aug 2, 2023):
This seems to be acting as expected. Select few templates consider the spent value in their calculations. Any overspending should be taken care by clicking the the negative balance and then "cover overspending" to pull in funds from a different category. Other options to clean up the overspending are to get rid of the limit, increase the limit, or use the end of month cleanup.
@shall0pass commented on GitHub (Aug 2, 2023):
Here is the definition of this template from the documentation.
<html>The way I read this, is that it will budget 50 into the category until the category has a maximum amount of 300. Reading it that way, I agree with @youngcw that it is behaving as described. The difference in this bug report is that spending has already occurred when the template was run.
If we change your example slightly, and remove the spending. The template still would have budgeted 11.36 because your category would have been capped at 350 which was specified.
If you have read the description differently, I'm interested in hearing how you think it reads. Maybe we can make it more clear. I think you would be more satisfied with just
#template 300for this application, since you always want to budget 300 into the category. This will not place an upper limit on how much to save.@dugite-code commented on GitHub (Aug 2, 2023):
Right I see where it's going wrong here. But is it really expected? From my read it's up to 350 from when the template is applied and I would expect it would take spending into account. If you have spent the funds you no longer have up to 350 so it should be fine adding the entire 300 as the cap no longer applies, It's certainly not what I expect would happen.
I don't want to use the
#template 300because this category can vary quite a bit but when I do my budget I still want a maximum of 350 in that category. I always have some spending because I get payed in the middle of the month so I do my budget in the middle of the month.@shall0pass commented on GitHub (Aug 2, 2023):
Please try the PR https://github.com/actualbudget/actual/pull/1448 to see if this would resolve your issue. @youngcw , I'd really appreciate a review from you as well when you have time :)
@dugite-code commented on GitHub (Aug 3, 2023):
@shall0pass Yes, just tested on netlify and that resolves my issue.