Only save available for last month and add overspent
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Jan Bader 2022-04-23 20:12:37 +00:00
parent 704a520993
commit 0817f18e33
2 changed files with 57 additions and 38 deletions

View File

@ -78,29 +78,54 @@ const budgeted = computed(() => accountStore.GetBudgeted(selected.value.Year, se
<template> <template>
<h1>Budget for {{ selected.Month + 1 }}/{{ selected.Year }}</h1> <h1>Budget for {{ selected.Month + 1 }}/{{ selected.Year }}</h1>
<span> <table class="inline-block">
Available last month: <tr>
<Currency <td>
:value="accountStore.GetIncomeAvailable(previous.Year, previous.Month)" Available last month:
/> </td>
</span><br> <td class="text-right">
<span>Available balance: <Currency :value="accountStore.Available-accountStore.OverspentLastMonth+budgeted.Assigned+budgeted.Deassigned" />
<Currency </td>
:value="accountStore.GetIncomeAvailable(selected.Year, selected.Month)" </tr>
/> <tr>
</span><br> <td>
<span>Budgeted this month: Overspent last month:
<Currency :value="budgeted.Assigned" /> - <Currency :value="-budgeted.Deassigned" /> = <Currency :value="budgeted.Assigned+budgeted.Deassigned" /> </td>
</span><br> <td class="text-right">
<span>Income: <Currency :value="accountStore.OverspentLastMonth" />
<Currency </td>
:value="budgeted.Income" </tr>
/> <Currency <tr>
:value="budgeted.Spent" <td>
/> = <Currency Budgeted this month:
:value="budgeted.Income + budgeted.Spent" </td>
/> <td class="text-right">
</span><br> <Currency :value="budgeted.Assigned+budgeted.Deassigned" />
</td>
<td class="text-sm pl-2">
= <Currency :value="budgeted.Assigned" /> - <Currency :value="-budgeted.Deassigned" />
</td>
</tr>
<tr class="font-bold">
<td class="py-2">
Available balance:
</td>
<td class="text-right">
<Currency :value="accountStore.Available" />
</td>
</tr>
<tr>
<td>
Activity:
</td>
<td class="text-right">
<Currency :value="budgeted.Income + budgeted.Spent" />
</td>
<td class="text-sm pl-2">
= <Currency :value="budgeted.Income" /> - <Currency :value="-1 * budgeted.Spent" />
</td>
</tr>
</table>
<div> <div>
<router-link <router-link
:to="'/budget/' + CurrentBudgetID + '/budgeting/' + previous.Year + '/' + previous.Month" :to="'/budget/' + CurrentBudgetID + '/budgeting/' + previous.Year + '/' + previous.Month"

View File

@ -9,7 +9,8 @@ interface State {
CurrentAccountID: string | null; CurrentAccountID: string | null;
Categories: Map<string, Category>; Categories: Map<string, Category>;
Months: Map<number, Map<number, Map<string, Category>>>; Months: Map<number, Map<number, Map<string, Category>>>;
Available: Map<number, Map<number, number>>; Available: number,
OverspentLastMonth: number,
Assignments: []; Assignments: [];
} }
@ -51,7 +52,8 @@ export const useAccountStore = defineStore("budget/account", {
Accounts: new Map<string, Account>(), Accounts: new Map<string, Account>(),
CurrentAccountID: null, CurrentAccountID: null,
Months: new Map<number, Map<number, Map<string, Category>>>(), Months: new Map<number, Map<number, Map<string, Category>>>(),
Available: new Map<number, Map<number, number>>(), Available: 0,
OverspentLastMonth: 0,
Categories: new Map<string, Category>(), Categories: new Map<string, Category>(),
Assignments: [], Assignments: [],
}), }),
@ -107,12 +109,6 @@ export const useAccountStore = defineStore("budget/account", {
}; };
}; };
}, },
GetIncomeAvailable(state) {
return (year: number, month: number) => {
const yearMapAv = this.Available.get(year);
return yearMapAv?.get(month);
};
},
CategoryGroupsForMonth(state) { CategoryGroupsForMonth(state) {
return (year: number, month: number) => { return (year: number, month: number) => {
const categories = this.AllCategoriesForMonth(year, month); const categories = this.AllCategoriesForMonth(year, month);
@ -215,7 +211,7 @@ export const useAccountStore = defineStore("budget/account", {
response.Categories.length <= 0 response.Categories.length <= 0
) )
return; return;
this.addCategoriesForMonth(year, month, response.Categories, response.AvailableBalance); this.addCategoriesForMonth(year, month, response.Categories, response.AvailableBalance, response.OverspentLastMonth);
}, },
async EditAccount( async EditAccount(
accountid: string, accountid: string,
@ -242,7 +238,8 @@ export const useAccountStore = defineStore("budget/account", {
year: number, year: number,
month: number, month: number,
categories: Category[], categories: Category[],
available: number available: number,
overspentLastMonth: number,
): void { ): void {
this.$patch((state) => { this.$patch((state) => {
const yearMap = const yearMap =
@ -257,11 +254,8 @@ export const useAccountStore = defineStore("budget/account", {
yearMap.set(month, monthMap); yearMap.set(month, monthMap);
state.Months.set(year, yearMap); state.Months.set(year, yearMap);
const yearMapAv = state.Available = available;
state.Available.get(year) || state.OverspentLastMonth = overspentLastMonth;
new Map<number, number>();
yearMapAv.set(month, available);
state.Available.set(year, yearMapAv);
}); });
}, },
logout() { logout() {