diff --git a/frontend/src/routes/accounting/account.svelte b/frontend/src/routes/accounting/account.svelte index b30224f2..f0a360fd 100644 --- a/frontend/src/routes/accounting/account.svelte +++ b/frontend/src/routes/accounting/account.svelte @@ -13,6 +13,19 @@ let sums = {}; + function calcSums(){ + sums[0] = 0; + for (let user of Object.values(users)) sums[user.id] = 0; + for (let transaction of transactions) { + for (let user of Object.values(users)){ + if (user.id == transaction.destination.id) sums[user.id] += transaction.amount; + if (user.id == transaction.source.id) sums[user.id] -= transaction.amount; + } + if (!transaction.destination.id) sums[0] += transaction.amount; + if (!transaction.source.id) sums[0] -= transaction.amount; + } + } + async function load(){ let url = api(`accounting/${id}`); let res = await get(url); @@ -22,6 +35,7 @@ transactions = json.transactions; users = json.user_list; account = json.account; + calcSums(); } else error(res); } @@ -31,6 +45,11 @@ onMount(load); + + + {#if account}
{account.name} @@ -50,24 +69,20 @@ {transaction.date} {#each Object.entries(users) as [id,user]} - + {#if id == transaction.source.id} - {sums[id] = -transaction.amount + (sums[id]?sums[id]:0)} - {-transaction.amount} {account.currency} + {(-transaction.amount).toFixed(2)} {account.currency} {/if} {#if id == transaction.destination.id} - {sums[id] = transaction.amount + (sums[id]?sums[id]:0)} - {transaction.amount} {account.currency} + {(+transaction.amount).toFixed(2)} {account.currency} {/if} {/each} {#if !transaction.source.id} - {sums[0] = -transaction.amount + (sums[0]?sums[0]:0)} ← {transaction.source.value} {/if} {#if !transaction.destination.id} - {sums[0] = transaction.amount + (sums[0]?sums[0]:0)} → {transaction.destination.value} {/if} @@ -80,14 +95,14 @@ {t('sums')} {#each Object.entries(users) as [id,user]} - + {user.name}
- {sums[id]} {account.currency} + {sums[id].toFixed(2)} {account.currency} {/each} - +
- {sums[0]} {account.currency} + {sums[0].toFixed(2)} {account.currency}