diff --git a/src/amounts.ts b/src/amounts.ts index ea8f828..e63443c 100644 --- a/src/amounts.ts +++ b/src/amounts.ts @@ -51,6 +51,7 @@ export class Balance { export function asCost(quantity: number, commodity: string): number { // Convert the amount to cost price in the reporting commodity + // NB: This function is rarely used - most conversions are performed in SQL via the transactions_with_quantity_ascost view if (commodity === db.metadata.reporting_commodity) { return quantity; diff --git a/src/db.ts b/src/db.ts index 7e6a08e..054c9d0 100644 --- a/src/db.ts +++ b/src/db.ts @@ -135,6 +135,7 @@ export function joinedToTransactions(joinedTransactionPostings: JoinedTransactio account: joinedTransactionPosting.account, quantity: joinedTransactionPosting.quantity, commodity: joinedTransactionPosting.commodity, + quantity_ascost: joinedTransactionPosting.quantity_ascost, running_balance: joinedTransactionPosting.running_balance }); } @@ -233,6 +234,7 @@ export interface Posting { account: string, quantity: number, commodity: string, + quantity_ascost?: number, running_balance?: number } @@ -245,6 +247,7 @@ export interface JoinedTransactionPosting { account: string, quantity: number, commodity: string, + quantity_ascost?: number, running_balance?: number } diff --git a/src/pages/BalanceAssertionsView.vue b/src/pages/BalanceAssertionsView.vue index 737fe95..793f5aa 100644 --- a/src/pages/BalanceAssertionsView.vue +++ b/src/pages/BalanceAssertionsView.vue @@ -66,7 +66,6 @@ import { ref } from 'vue'; - import { asCost } from '../amounts.ts'; import { db } from '../db.ts'; import { pp } from '../display.ts'; import { ReportingStage, ReportingWorkflow } from '../reporting.ts'; @@ -108,7 +107,7 @@ if (dayjs(transaction.dt) <= balanceAssertionDt) { for (const posting of transaction.postings) { if (posting.account === balanceAssertion.account) { - accountBalance += asCost(posting.quantity, posting.commodity); + accountBalance += posting.quantity_ascost!; } } } diff --git a/src/pages/EditTransactionView.vue b/src/pages/EditTransactionView.vue index 7c17281..ccc9776 100644 --- a/src/pages/EditTransactionView.vue +++ b/src/pages/EditTransactionView.vue @@ -46,11 +46,10 @@ const session = await db.load(); const joinedTransactionPostings: JoinedTransactionPosting[] = await session.select( - `SELECT transaction_id, dt, transactions.description AS transaction_description, postings.id, postings.description, account, quantity, commodity - FROM transactions - JOIN postings ON transactions.id = postings.transaction_id - WHERE transactions.id = $1 - ORDER BY postings.id`, + `SELECT transaction_id, dt, transaction_description, id, description, account, quantity, commodity + FROM joined_transactions + WHERE transaction_id = $1 + ORDER BY id`, [route.params.id] ); diff --git a/src/pages/GeneralLedgerView.vue b/src/pages/GeneralLedgerView.vue index 6b0d0e5..3c6cc1d 100644 --- a/src/pages/GeneralLedgerView.vue +++ b/src/pages/GeneralLedgerView.vue @@ -1,6 +1,6 @@