diff --git a/packages/desktop-client/src/components/budget/report/ReportComponents.tsx b/packages/desktop-client/src/components/budget/report/ReportComponents.tsx index a9f1d8c6f0576a849b2b58e6bfe976f762c3960b..eabfebb1ea39edb5dc8d5f7e1af5c270c241ed90 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 2b02a4527c7ad618e8080db44a58df417355655a..ce388edd4b3260168c4d3c09647f3e623f438548 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 0000000000000000000000000000000000000000..b46539fceeffb79692e91e9f602018575c7d8994 --- /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'.