From dea6cdd245b8a4caebc1ec6a2bb0e9dbd8163cb3 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 26 Oct 2020 16:36:22 +0200 Subject: [PATCH 1/2] fix: make sale invoices resource-able. --- server/src/models/Account.js | 1 - server/src/models/PaymentReceive.js | 4 ++++ server/src/models/SaleInvoice.js | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/src/models/Account.js b/server/src/models/Account.js index fe1ee777d..4bba025bc 100644 --- a/server/src/models/Account.js +++ b/server/src/models/Account.js @@ -8,7 +8,6 @@ import { } from 'lib/ViewRolesBuilder'; import { flatToNestedArray } from 'utils'; import DependencyGraph from 'lib/DependencyGraph'; -import TenantManagerSubscriber from 'subscribers/tenantManager'; export default class Account extends TenantModel { /** diff --git a/server/src/models/PaymentReceive.js b/server/src/models/PaymentReceive.js index ddf65f54e..9effadf09 100644 --- a/server/src/models/PaymentReceive.js +++ b/server/src/models/PaymentReceive.js @@ -16,6 +16,10 @@ export default class PaymentReceive extends TenantModel { return ['created_at', 'updated_at']; } + static get resourceable() { + return true; + } + /** * Relationship mapping. */ diff --git a/server/src/models/SaleInvoice.js b/server/src/models/SaleInvoice.js index d1a4c89a7..3b1262445 100644 --- a/server/src/models/SaleInvoice.js +++ b/server/src/models/SaleInvoice.js @@ -24,6 +24,10 @@ export default class SaleInvoice extends TenantModel { return ['created_at', 'updated_at']; } + static get resourceable() { + return true; + } + /** * Model modifiers. */ @@ -123,4 +127,17 @@ export default class SaleInvoice extends TenantModel { .where('id', invoiceId) [changeMethod]('payment_amount', Math.abs(amount)); } + + /** + * Model defined fields. + */ + static get fields() { + return { + created_at: { + label: 'Created at', + column: 'created_at', + columnType: 'date', + }, + }; + } } From 7558f68fa0c79f4fd1bbe8f7e7e6ccd836891f07 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 26 Oct 2020 16:45:49 +0200 Subject: [PATCH 2/2] fix: sale invoice relation with customer. --- server/src/api/controllers/Sales/SalesInvoices.ts | 4 ++-- server/src/models/SaleInvoice.js | 2 +- server/src/services/Sales/SalesInvoices.ts | 15 ++++++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/server/src/api/controllers/Sales/SalesInvoices.ts b/server/src/api/controllers/Sales/SalesInvoices.ts index df4fb1fa0..0f5e1dcf0 100644 --- a/server/src/api/controllers/Sales/SalesInvoices.ts +++ b/server/src/api/controllers/Sales/SalesInvoices.ts @@ -202,7 +202,7 @@ export default class SaleInvoicesController extends BaseController{ const { tenantId } = req; try { - const saleInvoice = await this.saleInvoiceService.getSaleInvoiceWithEntries( + const saleInvoice = await this.saleInvoiceService.getSaleInvoice( tenantId, saleInvoiceId, ); return res.status(200).send({ sale_invoice: saleInvoice }); @@ -255,7 +255,7 @@ export default class SaleInvoicesController extends BaseController{ const filter: ISalesInvoicesFilter = { filterRoles: [], sortOrder: 'asc', - columnSortBy: 'name', + columnSortBy: 'created_at', ...this.matchedQueryData(req), }; if (filter.stringifiedFilterRoles) { diff --git a/server/src/models/SaleInvoice.js b/server/src/models/SaleInvoice.js index 3b1262445..b8ab76fdc 100644 --- a/server/src/models/SaleInvoice.js +++ b/server/src/models/SaleInvoice.js @@ -85,7 +85,7 @@ export default class SaleInvoice extends TenantModel { to: 'contacts.id', }, filter(query) { - query.where('contact_type', 'Customer'); + query.where('contact_service', 'Customer'); } }, diff --git a/server/src/services/Sales/SalesInvoices.ts b/server/src/services/Sales/SalesInvoices.ts index 8af2f5ef4..7a7f3dba3 100644 --- a/server/src/services/Sales/SalesInvoices.ts +++ b/server/src/services/Sales/SalesInvoices.ts @@ -301,13 +301,18 @@ export default class SaleInvoicesService extends SalesInvoicesCost { * @async * @param {Number} saleInvoiceId */ - public async getSaleInvoiceWithEntries(tenantId: number, saleInvoiceId: number) { + public async getSaleInvoice(tenantId: number, saleInvoiceId: number): Promise { const { SaleInvoice } = this.tenancy.models(tenantId); - return SaleInvoice.query() - .where('id', saleInvoiceId) + + const saleInvoice = await SaleInvoice.query() + .findById(saleInvoiceId) .withGraphFetched('entries') - .withGraphFetched('customer') - .first(); + .withGraphFetched('customer'); + + if (!saleInvoice) { + throw new ServiceError(ERRORS.SALE_INVOICE_NOT_FOUND); + } + return saleInvoice; } /**