diff --git a/packages/server/src/api/controllers/Purchases/VendorCredit.ts b/packages/server/src/api/controllers/Purchases/VendorCredit.ts index 3d28323087..79ae6741ba 100644 --- a/packages/server/src/api/controllers/Purchases/VendorCredit.ts +++ b/packages/server/src/api/controllers/Purchases/VendorCredit.ts @@ -320,20 +320,19 @@ export default class VendorCreditController extends BaseController { res: Response, next: NextFunction ) => { - const { id: billId } = req.params; + const { id: vendorCreditId } = req.params; const { tenantId, user } = req; const vendorCreditEditDTO: IVendorCreditEditDTO = this.matchedBodyData(req); try { await this.editVendorCreditService.editVendorCredit( tenantId, - billId, - vendorCreditEditDTO, - user + vendorCreditId, + vendorCreditEditDTO ); return res.status(200).send({ - id: billId, + id: vendorCreditId, message: 'The vendor credit has been edited successfully.', }); } catch (error) { diff --git a/packages/server/src/services/CreditNotes/EditCreditNote.ts b/packages/server/src/services/CreditNotes/EditCreditNote.ts index 074115c046..0e045227d3 100644 --- a/packages/server/src/services/CreditNotes/EditCreditNote.ts +++ b/packages/server/src/services/CreditNotes/EditCreditNote.ts @@ -80,7 +80,7 @@ export default class EditCreditNote extends BaseCreditNotes { } as ICreditNoteEditingPayload); // Saves the credit note graph to the storage. - const creditNote = await CreditNote.query(trx).upsertGraph({ + const creditNote = await CreditNote.query(trx).upsertGraphAndFetch({ id: creditNoteId, ...creditNoteModel, }); diff --git a/packages/server/src/services/Expenses/CRUD/EditExpense.ts b/packages/server/src/services/Expenses/CRUD/EditExpense.ts index 93b0acc629..e3aeb06ce7 100644 --- a/packages/server/src/services/Expenses/CRUD/EditExpense.ts +++ b/packages/server/src/services/Expenses/CRUD/EditExpense.ts @@ -136,7 +136,7 @@ export class EditExpense { } as IExpenseEventEditingPayload); // Upsert the expense object with expense entries. - const expense: IExpense = await Expense.query(trx).upsertGraph({ + const expense: IExpense = await Expense.query(trx).upsertGraphAndFetch({ id: expenseId, ...expenseObj, }); diff --git a/packages/server/src/services/Expenses/ExpenseGLEntriesStorage.ts b/packages/server/src/services/Expenses/ExpenseGLEntriesStorage.ts index 0821c3bd46..76b450c39d 100644 --- a/packages/server/src/services/Expenses/ExpenseGLEntriesStorage.ts +++ b/packages/server/src/services/Expenses/ExpenseGLEntriesStorage.ts @@ -1,7 +1,7 @@ import { Knex } from 'knex'; +import { Service, Inject } from 'typedi'; import LedgerStorageService from '@/services/Accounting/LedgerStorageService'; import HasTenancyService from '@/services/Tenancy/TenancyService'; -import { Service, Inject } from 'typedi'; import { ExpenseGLEntries } from './ExpenseGLEntries'; @Service() diff --git a/packages/server/src/services/Expenses/ExpenseGLEntriesSubscriber.ts b/packages/server/src/services/Expenses/ExpenseGLEntriesSubscriber.ts index 1a177876e3..4c69b7f048 100644 --- a/packages/server/src/services/Expenses/ExpenseGLEntriesSubscriber.ts +++ b/packages/server/src/services/Expenses/ExpenseGLEntriesSubscriber.ts @@ -70,10 +70,10 @@ export class ExpensesWriteGLSubscriber { authorizedUser, trx, }: IExpenseEventEditPayload) => { - // In case expense published, write journal entries. - if (expense.publishedAt) return; + // Cannot continue if the expense is not published. + if (!expense.publishedAt) return; - await this.expenseGLEntries.writeExpenseGLEntries( + await this.expenseGLEntries.rewriteExpenseGLEntries( tenantId, expense.id, trx diff --git a/packages/server/src/services/Purchases/VendorCredits/EditVendorCredit.ts b/packages/server/src/services/Purchases/VendorCredits/EditVendorCredit.ts index d76dd36900..a0ff0f421e 100644 --- a/packages/server/src/services/Purchases/VendorCredits/EditVendorCredit.ts +++ b/packages/server/src/services/Purchases/VendorCredits/EditVendorCredit.ts @@ -9,6 +9,7 @@ import UnitOfWork from '@/services/UnitOfWork'; import { EventPublisher } from '@/lib/EventPublisher/EventPublisher'; import ItemsEntriesService from '@/services/Items/ItemsEntriesService'; import events from '@/subscribers/events'; +import HasTenancyService from '@/services/Tenancy/TenancyService'; @Service() export default class EditVendorCredit extends BaseVendorCredit { @@ -21,6 +22,9 @@ export default class EditVendorCredit extends BaseVendorCredit { @Inject() private itemsEntriesService: ItemsEntriesService; + @Inject() + private tenancy: HasTenancyService; + /** * Deletes the given vendor credit. * @param {number} tenantId - Tenant id. @@ -31,7 +35,7 @@ export default class EditVendorCredit extends BaseVendorCredit { vendorCreditId: number, vendorCreditDTO: IVendorCreditEditDTO ) => { - const { VendorCredit } = this.tenancy.models(tenantId); + const { VendorCredit, Contact } = this.tenancy.models(tenantId); // Retrieve the vendor credit or throw not found service error. const oldVendorCredit = await this.getVendorCreditOrThrowError( diff --git a/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts b/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts index df440958f6..d354141e98 100644 --- a/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts +++ b/packages/server/src/services/Sales/Receipts/SaleReceiptGLEntries.ts @@ -32,7 +32,7 @@ export class SaleReceiptGLEntries { ): Promise => { const { SaleReceipt } = this.tenancy.models(tenantId); - const saleReceipt = await SaleReceipt.query() + const saleReceipt = await SaleReceipt.query(trx) .findById(saleReceiptId) .withGraphFetched('entries.item'); diff --git a/packages/webapp/src/hooks/query/bills.tsx b/packages/webapp/src/hooks/query/bills.tsx index 828621d891..1ec3ef0e12 100644 --- a/packages/webapp/src/hooks/query/bills.tsx +++ b/packages/webapp/src/hooks/query/bills.tsx @@ -32,6 +32,9 @@ const commonInvalidateQueries = (queryClient) => { // Invalidate financial reports. queryClient.invalidateQueries(t.FINANCIAL_REPORT); + // Invalidate the transactions by reference. + queryClient.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); + // Invalidate items associated bills transactions. queryClient.invalidateQueries(t.ITEMS_ASSOCIATED_WITH_BILLS); diff --git a/packages/webapp/src/hooks/query/creditNote.tsx b/packages/webapp/src/hooks/query/creditNote.tsx index 99cfd535d2..0fb31f8738 100644 --- a/packages/webapp/src/hooks/query/creditNote.tsx +++ b/packages/webapp/src/hooks/query/creditNote.tsx @@ -44,6 +44,9 @@ const commonInvalidateQueries = (queryClient) => { // Invalidate financial reports. queryClient.invalidateQueries(t.FINANCIAL_REPORT); + // Invalidate transactions by reference. + queryClient.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); + // Invalidate mutate base currency abilities. queryClient.invalidateQueries(t.ORGANIZATION_MUTATE_BASE_CURRENCY_ABILITIES); }; diff --git a/packages/webapp/src/hooks/query/invoices.tsx b/packages/webapp/src/hooks/query/invoices.tsx index 2adbf87e0e..886b04e7da 100644 --- a/packages/webapp/src/hooks/query/invoices.tsx +++ b/packages/webapp/src/hooks/query/invoices.tsx @@ -24,6 +24,9 @@ const commonInvalidateQueries = (queryClient) => { // Invalidate financial reports. queryClient.invalidateQueries(t.FINANCIAL_REPORT); + + // Invalidate transactions by reference. + queryClient.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); // Invalidate accounts. queryClient.invalidateQueries(t.ACCOUNTS); diff --git a/packages/webapp/src/hooks/query/paymentReceives.tsx b/packages/webapp/src/hooks/query/paymentReceives.tsx index 376993e197..5ed0118ee4 100644 --- a/packages/webapp/src/hooks/query/paymentReceives.tsx +++ b/packages/webapp/src/hooks/query/paymentReceives.tsx @@ -24,6 +24,9 @@ const commonInvalidateQueries = (client) => { // Invalidate financial reports. client.invalidateQueries(t.FINANCIAL_REPORT); + // Invalidate transactions by reference. + client.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); + // Invalidate customers. client.invalidateQueries(t.CUSTOMERS); client.invalidateQueries(t.CUSTOMER); diff --git a/packages/webapp/src/hooks/query/receipts.tsx b/packages/webapp/src/hooks/query/receipts.tsx index 7a6ae2ce93..fed4ad5afc 100644 --- a/packages/webapp/src/hooks/query/receipts.tsx +++ b/packages/webapp/src/hooks/query/receipts.tsx @@ -21,6 +21,9 @@ const commonInvalidateQueries = (queryClient) => { // Invalidate financial reports. queryClient.invalidateQueries(t.FINANCIAL_REPORT); + // Invalidate the transactions by reference. + queryClient.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); + // Invalidate the cashflow transactions. queryClient.invalidateQueries(t.CASH_FLOW_TRANSACTIONS); queryClient.invalidateQueries(t.CASHFLOW_ACCOUNT_TRANSACTIONS_INFINITY); diff --git a/packages/webapp/src/hooks/query/vendorCredit.tsx b/packages/webapp/src/hooks/query/vendorCredit.tsx index 48e4240990..0d21315435 100644 --- a/packages/webapp/src/hooks/query/vendorCredit.tsx +++ b/packages/webapp/src/hooks/query/vendorCredit.tsx @@ -43,6 +43,9 @@ const commonInvalidateQueries = (queryClient) => { // Invalidate financial reports. queryClient.invalidateQueries(t.FINANCIAL_REPORT); + // Invalidate the transactions by reference. + queryClient.invalidateQueries(t.TRANSACTIONS_BY_REFERENCE); + // Invalidate mutate base currency abilities. queryClient.invalidateQueries(t.ORGANIZATION_MUTATE_BASE_CURRENCY_ABILITIES); };