[PR #4778] [MERGED] Add ability to auto hold funds for future months #5581

Closed
opened 2026-02-28 21:14:47 -06:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/actualbudget/actual/pull/4778
Author: @youngcw
Created: 4/8/2025
Status: Merged
Merged: 6/5/2025
Merged by: @youngcw

Base: masterHead: youngcw/auto-hold


📝 Commits (10+)

📊 Changes

19 files changed (+474 additions, -34 deletions)

View changed files

📝 packages/desktop-client/src/components/Modals.tsx (+11 -0)
📝 packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx (+3 -3)
📝 packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx (+68 -12)
packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx (+64 -0)
📝 packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx (+2 -0)
📝 packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx (+25 -1)
📝 packages/desktop-client/src/components/budget/util.ts (+1 -1)
📝 packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx (+63 -8)
📝 packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx (+1 -0)
packages/desktop-client/src/components/modals/EnvelopeIncomeBalanceMenuModal.tsx (+139 -0)
📝 packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx (+8 -4)
📝 packages/desktop-client/src/components/spreadsheet/index.ts (+2 -0)
📝 packages/desktop-client/src/modals/modalsSlice.ts (+12 -2)
📝 packages/desktop-client/src/queries/queries.ts (+3 -1)
📝 packages/desktop-client/src/queries/queriesSlice.ts (+8 -0)
📝 packages/loot-core/src/server/budget/actions.ts (+17 -0)
📝 packages/loot-core/src/server/budget/app.ts (+5 -0)
📝 packages/loot-core/src/server/budget/envelope.ts (+36 -2)
upcoming-release-notes/4778.md (+6 -0)

📄 Description

To enable auto hold use the new button next to the income category amount.

The logic is as follows

If you don't enable any income carryover, nothing is different.
If you enable the autohold for an income category, any funds manually held will be reset.
Like the expense carryover, enabling autohold will enable it for the following 12 months (same goes for disabling).
In the to budget menu you can disable the auto hold which will remove the CURRENT MONTH'S autohold only.

Anyone is free to help get these last parts in
Still needed:

  • Be able to set the "carryover" for the income category
  • Unset the manual hold amount if a carryover value is set
  • If the hold amount is reset, unset the carryover for the categories in the current month
  • Automatically apply carryover to future months when it is set by the current month (same way that expense categories function)
  • Add enable/disable per category buttons to mobile
  • Move desktop button to be a menu when clicking the income total
  • Add carryover arrow to mobile
  • Fix carryover arrow location on desktop (cursor couldn't figure this one out)
  • Figure out how to gracefully swap between manual and auto holding (I think if manual hold is 0 use auto hold should work)
  • Test a bunch

resolves #1978


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/actualbudget/actual/pull/4778 **Author:** [@youngcw](https://github.com/youngcw) **Created:** 4/8/2025 **Status:** ✅ Merged **Merged:** 6/5/2025 **Merged by:** [@youngcw](https://github.com/youngcw) **Base:** `master` ← **Head:** `youngcw/auto-hold` --- ### 📝 Commits (10+) - [`04d60ff`](https://github.com/actualbudget/actual/commit/04d60ff966aa8352c60ac596c109947a60d312f4) add spreadsheet logic - [`c1352b7`](https://github.com/actualbudget/actual/commit/c1352b79b2916fbb58a2ef80af1343f62dffdfff) separate to own cell - [`f29167f`](https://github.com/actualbudget/actual/commit/f29167f0c3d1d88d0ef517a59c331466c464a18b) add selection cell - [`14fc280`](https://github.com/actualbudget/actual/commit/14fc280f1286660152cb09afbfbc98c966a74af2) fix selection - [`e27e189`](https://github.com/actualbudget/actual/commit/e27e1896d446c79130c48d154cc5b749141d92be) added button - [`b270799`](https://github.com/actualbudget/actual/commit/b270799252aa6cca5f202373d97e0dfd020d6f33) arrow - [`93f4ef2`](https://github.com/actualbudget/actual/commit/93f4ef244a2ac7f93969c38c7013b0d1e79d0032) switches between the two hold options gracefully - [`67c9200`](https://github.com/actualbudget/actual/commit/67c9200ad76004ae1f66d23ec7a8bc2aae46259f) reset manual hold on apply auto hold - [`9c6bc2f`](https://github.com/actualbudget/actual/commit/9c6bc2f456cea9106d2d58b89a5268f15a637b68) working? - [`d4ea81d`](https://github.com/actualbudget/actual/commit/d4ea81d2d0deacd4bf592ae8af9f11cd1674b366) fix ### 📊 Changes **19 files changed** (+474 additions, -34 deletions) <details> <summary>View changed files</summary> 📝 `packages/desktop-client/src/components/Modals.tsx` (+11 -0) 📝 `packages/desktop-client/src/components/budget/envelope/BalanceMenu.tsx` (+3 -3) 📝 `packages/desktop-client/src/components/budget/envelope/EnvelopeBudgetComponents.tsx` (+68 -12) ➕ `packages/desktop-client/src/components/budget/envelope/IncomeMenu.tsx` (+64 -0) 📝 `packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudget.tsx` (+2 -0) 📝 `packages/desktop-client/src/components/budget/envelope/budgetsummary/ToBudgetMenu.tsx` (+25 -1) 📝 `packages/desktop-client/src/components/budget/util.ts` (+1 -1) 📝 `packages/desktop-client/src/components/mobile/budget/IncomeCategoryListItem.tsx` (+63 -8) 📝 `packages/desktop-client/src/components/modals/EnvelopeBudgetSummaryModal.tsx` (+1 -0) ➕ `packages/desktop-client/src/components/modals/EnvelopeIncomeBalanceMenuModal.tsx` (+139 -0) 📝 `packages/desktop-client/src/components/modals/EnvelopeToBudgetMenuModal.tsx` (+8 -4) 📝 `packages/desktop-client/src/components/spreadsheet/index.ts` (+2 -0) 📝 `packages/desktop-client/src/modals/modalsSlice.ts` (+12 -2) 📝 `packages/desktop-client/src/queries/queries.ts` (+3 -1) 📝 `packages/desktop-client/src/queries/queriesSlice.ts` (+8 -0) 📝 `packages/loot-core/src/server/budget/actions.ts` (+17 -0) 📝 `packages/loot-core/src/server/budget/app.ts` (+5 -0) 📝 `packages/loot-core/src/server/budget/envelope.ts` (+36 -2) ➕ `upcoming-release-notes/4778.md` (+6 -0) </details> ### 📄 Description To enable auto hold use the new button next to the income category amount. The logic is as follows If you don't enable any income carryover, nothing is different. If you enable the autohold for an income category, any funds manually held will be reset. Like the expense carryover, enabling autohold will enable it for the following 12 months (same goes for disabling). In the to budget menu you can disable the auto hold which will remove the CURRENT MONTH'S autohold only. Anyone is free to help get these last parts in Still needed: - [x] Be able to set the "carryover" for the income category - [x] Unset the manual hold amount if a carryover value is set - [x] If the hold amount is reset, unset the carryover for the categories in the current month - [x] Automatically apply carryover to future months when it is set by the current month (same way that expense categories function) - [x] Add enable/disable per category buttons to mobile - [x] Move desktop button to be a menu when clicking the income total - [x] Add carryover arrow to mobile - [x] Fix carryover arrow location on desktop (cursor couldn't figure this one out) - [x] Figure out how to gracefully swap between manual and auto holding (I think if manual hold is 0 use auto hold should work) - [ ] Test a bunch resolves #1978 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-02-28 21:14:47 -06:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#5581