From c1b99958f44885d32e57871cd63557ff8e33f974 Mon Sep 17 00:00:00 2001 From: youngcw <calebyoung94@gmail.com> Date: Tue, 4 Jul 2023 06:35:23 -0700 Subject: [PATCH] Goals: Add option to percent goal to use available funds (#1254) --- packages/loot-core/src/server/budget/goaltemplates.ts | 11 ++++++++--- upcoming-release-notes/1254.md | 6 ++++++ 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 upcoming-release-notes/1254.md diff --git a/packages/loot-core/src/server/budget/goaltemplates.ts b/packages/loot-core/src/server/budget/goaltemplates.ts index fef46900f..e6d900a12 100644 --- a/packages/loot-core/src/server/budget/goaltemplates.ts +++ b/packages/loot-core/src/server/budget/goaltemplates.ts @@ -90,13 +90,14 @@ async function processTemplate(month, force) { // so the remainders don't get skiped if (remainder_found) lowestPriority = remainder_priority; + let sheetName = monthUtils.sheetForMonth(month); + let available_start = await getSheetValue(sheetName, `to-budget`); for (let priority = 0; priority <= lowestPriority; priority++) { // setup scaling for remainder let remainder_scale = 1; if (priority === lowestPriority) { - let sheetName = monthUtils.sheetForMonth(month); - let budgetAvailable = await getSheetValue(sheetName, `to-budget`); - remainder_scale = Math.round(budgetAvailable / remainder_weight_total); + let available_now = await getSheetValue(sheetName, `to-budget`); + remainder_scale = Math.round(available_now / remainder_weight_total); } for (let c = 0; c < categories.length; c++) { @@ -150,6 +151,7 @@ async function processTemplate(month, force) { month, priority, remainder_scale, + available_start, force, ); if (to_budget != null) { @@ -252,6 +254,7 @@ async function applyCategoryTemplate( month, priority, remainder_scale, + available_start, force, ) { let current_month = `${month}-01`; @@ -493,6 +496,8 @@ async function applyCategoryTemplate( let monthlyIncome = 0; if (template.category.toLowerCase() === 'all income') { monthlyIncome = await getSheetValue(sheetName, `total-income`); + } else if (template.category.toLowerCase() === 'available funds') { + monthlyIncome = available_start; } else { let income_category = (await db.getCategories()).find( c => diff --git a/upcoming-release-notes/1254.md b/upcoming-release-notes/1254.md new file mode 100644 index 000000000..084e6827e --- /dev/null +++ b/upcoming-release-notes/1254.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [youngcw] +--- + +Goals: Add 'available funds' option to the percentage goal -- GitLab