From c3c8bd08be1896e7f8b75ceb454a787271bc1e50 Mon Sep 17 00:00:00 2001 From: Samuel Date: Tue, 11 Feb 2025 19:16:42 +0100 Subject: [PATCH] fix: `getTransactionsForInvoice` returning invoiced transactions (#457) Also changes the name to `getEligibleTransactions` since that describes the function better. --- src/controller/invoice-controller.ts | 2 +- src/service/invoice-service.ts | 19 ++++++------------- test/unit/service/invoice-service.ts | 2 +- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/controller/invoice-controller.ts b/src/controller/invoice-controller.ts index cc149ef48..13a41c964 100644 --- a/src/controller/invoice-controller.ts +++ b/src/controller/invoice-controller.ts @@ -519,7 +519,7 @@ export default class InvoiceController extends BaseController { } try { - const transactions = await new InvoiceService().getTransactionsForInvoice({ + const transactions = await new InvoiceService().getEligibleTransactions({ forId, fromDate, tillDate, diff --git a/src/service/invoice-service.ts b/src/service/invoice-service.ts index f5263b1db..3cd4e2f51 100644 --- a/src/service/invoice-service.ts +++ b/src/service/invoice-service.ts @@ -386,11 +386,10 @@ export default class InvoiceService extends WithManager { } /** - * Gets transactions for an invoice - * returns false if the transactions contain invoiced transactions + * Gets all uninvoiced transactions for a given user * @param params */ - public async getTransactionsForInvoice(params: InvoiceTransactionsRequest): Promise { + public async getEligibleTransactions(params: InvoiceTransactionsRequest): Promise { const { forId, fromDate, tillDate } = params; const transactionService = new TransactionService(this.manager); @@ -412,16 +411,10 @@ export default class InvoiceService extends WithManager { pointOfSale: true, }; - const transactions = await this.manager.find(Transaction, { where: { id: In(tIds) }, - relations }); - transactions.forEach((t) => { - t.subTransactions.forEach((tSub) => { - tSub.subTransactionRows.forEach((tSubRow) => { - if (tSubRow.invoice) return false; - }); - }); - }); - + const transactions = await this.manager.find(Transaction, { where: { id: In(tIds), + subTransactions: { subTransactionRows: { invoice: false } } }, + relations }); + const response: Promise[] = []; transactions.forEach((t) => response.push(transactionService.asTransactionResponse(t))); diff --git a/test/unit/service/invoice-service.ts b/test/unit/service/invoice-service.ts index 782211d4f..af8b57e35 100644 --- a/test/unit/service/invoice-service.ts +++ b/test/unit/service/invoice-service.ts @@ -249,7 +249,7 @@ describe('InvoiceService', () => { ); const total = transactionsAfterDate.total; - const transactions = await new InvoiceService().getTransactionsForInvoice({ + const transactions = await new InvoiceService().getEligibleTransactions({ forId: debtor.id, fromDate, });