From 12719e3049eae27bf0f2b2f4de94966430bd27a8 Mon Sep 17 00:00:00 2001 From: lelemm <lelemm@gmail.com> Date: Wed, 12 Jun 2024 11:50:39 -0300 Subject: [PATCH] FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average' (#2862) * FIX: For Report Budget, the income categories are negative when using 'Set budgets to 3 month average'. This fix solves this issue * added 2862.md * Ajustments for category menu not closing properly and fix to negative values for income category copy budget * fix lint * changed variable name without changing references after lint ajust * retrigger checks * smaller 2862.md --- .../budget/report/ReportComponents.tsx | 3 +++ .../loot-core/src/server/budget/actions.ts | 23 +++++++++++++++---- upcoming-release-notes/2862.md | 6 +++++ 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 upcoming-release-notes/2862.md diff --git a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx index a9f1d8c6f..eabfebb1e 100644 --- a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx +++ b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx @@ -228,6 +228,7 @@ export const CategoryMonth = memo(function CategoryMonth({ onBudgetAction?.(month, 'copy-single-last', { category: category.id, }); + setMenuOpen(false); }} onSetMonthsAverage={numberOfMonths => { if ( @@ -241,11 +242,13 @@ export const CategoryMonth = memo(function CategoryMonth({ onBudgetAction?.(month, `set-single-${numberOfMonths}-avg`, { category: category.id, }); + setMenuOpen(false); }} onApplyBudgetTemplate={() => { onBudgetAction?.(month, 'apply-single-category-template', { category: category.id, }); + setMenuOpen(false); }} /> </Popover> diff --git a/packages/loot-core/src/server/budget/actions.ts b/packages/loot-core/src/server/budget/actions.ts index 2b02a4527..ce388edd4 100644 --- a/packages/loot-core/src/server/budget/actions.ts +++ b/packages/loot-core/src/server/budget/actions.ts @@ -258,8 +258,13 @@ export async function set3MonthAvg({ 'sum-amount-' + cat.id, ); - const avg = Math.round((spent1 + spent2 + spent3) / 3); - setBudget({ category: cat.id, month, amount: -avg }); + let avg = Math.round((spent1 + spent2 + spent3) / 3); + + if (cat.is_income === 0) { + avg *= -1; + } + + setBudget({ category: cat.id, month, amount: avg }); } }); } @@ -273,6 +278,11 @@ export async function setNMonthAvg({ N: number; category: string; }): Promise<void> { + const categoryFromDb = await db.first( + 'SELECT is_income FROM v_categories WHERE id = ?', + [category], + ); + let prevMonth = monthUtils.prevMonth(month); let sumAmount = 0; for (let l = 0; l < N; l++) { @@ -283,8 +293,13 @@ export async function setNMonthAvg({ prevMonth = monthUtils.prevMonth(prevMonth); } await batchMessages(async () => { - const avg = Math.round(sumAmount / N); - setBudget({ category, month, amount: -avg }); + let avg = Math.round(sumAmount / N); + + if (categoryFromDb.is_income === 0) { + avg *= -1; + } + + setBudget({ category, month, amount: avg }); }); } diff --git a/upcoming-release-notes/2862.md b/upcoming-release-notes/2862.md new file mode 100644 index 000000000..b46539fce --- /dev/null +++ b/upcoming-release-notes/2862.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [lelemm] +--- + +For Report Budget, income categories were incorrectly showing as negative when using 'Set budgets to 3 month average'. -- GitLab