fix: auto increment serial transactions

This commit is contained in:
Ahmed Bouhuolia
2025-11-02 21:08:28 +02:00
parent cca116f6bb
commit f64875404a
10 changed files with 95 additions and 34 deletions

View File

@@ -29,6 +29,7 @@ import { CreditNotesImportable } from './commands/CreditNotesImportable';
import { CreditNoteInventoryTransactionsSubscriber } from './subscribers/CreditNoteInventoryTransactionsSubscriber'; import { CreditNoteInventoryTransactionsSubscriber } from './subscribers/CreditNoteInventoryTransactionsSubscriber';
import { RefundSyncCreditNoteBalanceSubscriber } from './subscribers/RefundSyncCreditNoteBalanceSubscriber'; import { RefundSyncCreditNoteBalanceSubscriber } from './subscribers/RefundSyncCreditNoteBalanceSubscriber';
import { DeleteCustomerLinkedCreditSubscriber } from './subscribers/DeleteCustomerLinkedCreditSubscriber'; import { DeleteCustomerLinkedCreditSubscriber } from './subscribers/DeleteCustomerLinkedCreditSubscriber';
import { CreditNoteAutoSerialSubscriber } from './subscribers/CreditNoteAutoSerialSubscriber';
import { CreditNoteInventoryTransactions } from './commands/CreditNotesInventoryTransactions'; import { CreditNoteInventoryTransactions } from './commands/CreditNotesInventoryTransactions';
import { InventoryCostModule } from '../InventoryCost/InventoryCost.module'; import { InventoryCostModule } from '../InventoryCost/InventoryCost.module';
import { CreditNoteRefundsModule } from '../CreditNoteRefunds/CreditNoteRefunds.module'; import { CreditNoteRefundsModule } from '../CreditNoteRefunds/CreditNoteRefunds.module';
@@ -71,6 +72,7 @@ import { CreditNotesApplyInvoiceModule } from '../CreditNotesApplyInvoice/Credit
CreditNoteInventoryTransactionsSubscriber, CreditNoteInventoryTransactionsSubscriber,
RefundSyncCreditNoteBalanceSubscriber, RefundSyncCreditNoteBalanceSubscriber,
DeleteCustomerLinkedCreditSubscriber, DeleteCustomerLinkedCreditSubscriber,
CreditNoteAutoSerialSubscriber,
], ],
exports: [ exports: [
CreateCreditNoteService, CreateCreditNoteService,

View File

@@ -5,17 +5,17 @@ import { ICreditNoteCreatedPayload } from '../types/CreditNotes.types';
import { events } from '@/common/events/events'; import { events } from '@/common/events/events';
@Injectable() @Injectable()
export default class CreditNoteAutoSerialSubscriber { export class CreditNoteAutoSerialSubscriber {
constructor( constructor(
private readonly creditNoteIncrementService: CreditNoteAutoIncrementService, private readonly creditNoteIncrementService: CreditNoteAutoIncrementService,
) {} ) { }
/** /**
* Auto serial increment once credit note created. * Auto serial increment once credit note created.
* @param {ICreditNoteCreatedPayload} payload - * @param {ICreditNoteCreatedPayload} payload -
*/ */
@OnEvent(events.creditNote.onCreated) @OnEvent(events.creditNote.onCreated)
async autoSerialIncrementOnceCreated({}: ICreditNoteCreatedPayload) { async autoSerialIncrementOnceCreated({ }: ICreditNoteCreatedPayload) {
await this.creditNoteIncrementService.incrementSerialNumber(); await this.creditNoteIncrementService.incrementSerialNumber();
} }
} }

View File

@@ -39,6 +39,7 @@ import { SaleEstimatesExportable } from './SaleEstimatesExportable';
import { SaleEstimatesImportable } from './SaleEstimatesImportable'; import { SaleEstimatesImportable } from './SaleEstimatesImportable';
import { GetSaleEstimateMailStateService } from './queries/GetSaleEstimateMailState.service'; import { GetSaleEstimateMailStateService } from './queries/GetSaleEstimateMailState.service';
import { GetSaleEstimateMailTemplateService } from './queries/GetSaleEstimateMailTemplate.service'; import { GetSaleEstimateMailTemplateService } from './queries/GetSaleEstimateMailTemplate.service';
import { SaleEstimateAutoIncrementSubscriber } from './subscribers/SaleEstimateAutoIncrementSubscriber';
@Module({ @Module({
imports: [ imports: [
@@ -82,13 +83,14 @@ import { GetSaleEstimateMailTemplateService } from './queries/GetSaleEstimateMai
SaleEstimatesExportable, SaleEstimatesExportable,
SaleEstimatesImportable, SaleEstimatesImportable,
GetSaleEstimateMailStateService, GetSaleEstimateMailStateService,
GetSaleEstimateMailTemplateService GetSaleEstimateMailTemplateService,
SaleEstimateAutoIncrementSubscriber,
], ],
exports: [ exports: [
SaleEstimatesExportable, SaleEstimatesExportable,
SaleEstimatesImportable, SaleEstimatesImportable,
GetSaleEstimateMailStateService, GetSaleEstimateMailStateService,
GetSaleEstimateMailTemplateService GetSaleEstimateMailTemplateService,
] ],
}) })
export class SaleEstimatesModule {} export class SaleEstimatesModule { }

View File

@@ -0,0 +1,19 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { events } from '@/common/events/events';
import { SaleEstimateIncrement } from '../commands/SaleEstimateIncrement.service';
import { ISaleEstimateCreatedPayload } from '../types/SaleEstimates.types';
@Injectable()
export class SaleEstimateAutoIncrementSubscriber {
constructor(private readonly estimateIncrement: SaleEstimateIncrement) { }
/**
* Handles increment next number of estimate once be created.
* @param {ISaleEstimateCreatedPayload} payload -
*/
@OnEvent(events.saleEstimate.onCreated)
private async handleEstimateNextNumberIncrement({ }: ISaleEstimateCreatedPayload) {
await this.estimateIncrement.incrementNextEstimateNumber();
}
}

View File

@@ -52,6 +52,7 @@ import { InvoiceChangeStatusOnMailSentSubscriber } from './subscribers/InvoiceCh
import { InvoiceCostGLEntriesSubscriber } from './subscribers/InvoiceCostGLEntriesSubscriber'; import { InvoiceCostGLEntriesSubscriber } from './subscribers/InvoiceCostGLEntriesSubscriber';
import { InvoicePaymentGLRewriteSubscriber } from './subscribers/InvoicePaymentGLRewriteSubscriber'; import { InvoicePaymentGLRewriteSubscriber } from './subscribers/InvoicePaymentGLRewriteSubscriber';
import { SaleInvoiceWriteInventoryTransactionsSubscriber } from './subscribers/InvoiceWriteInventoryTransactions'; import { SaleInvoiceWriteInventoryTransactionsSubscriber } from './subscribers/InvoiceWriteInventoryTransactions';
import { SaleInvoiceAutoIncrementSubscriber } from './subscribers/SaleInvoiceAutoIncrementSubscriber';
import { SaleInvoiceCostGLEntries } from './SaleInvoiceCostGLEntries'; import { SaleInvoiceCostGLEntries } from './SaleInvoiceCostGLEntries';
import { InvoicePaymentsGLEntriesRewrite } from './InvoicePaymentsGLRewrite'; import { InvoicePaymentsGLEntriesRewrite } from './InvoicePaymentsGLRewrite';
import { PaymentsReceivedModule } from '../PaymentReceived/PaymentsReceived.module'; import { PaymentsReceivedModule } from '../PaymentReceived/PaymentsReceived.module';
@@ -120,6 +121,7 @@ import { PaymentLinksModule } from '../PaymentLinks/PaymentLinks.module';
InvoiceCostGLEntriesSubscriber, InvoiceCostGLEntriesSubscriber,
InvoicePaymentGLRewriteSubscriber, InvoicePaymentGLRewriteSubscriber,
SaleInvoiceWriteInventoryTransactionsSubscriber, SaleInvoiceWriteInventoryTransactionsSubscriber,
SaleInvoiceAutoIncrementSubscriber,
InvoicePaymentsGLEntriesRewrite, InvoicePaymentsGLEntriesRewrite,
SaleInvoicesCost, SaleInvoicesCost,
SaleInvoicesExportable, SaleInvoicesExportable,
@@ -133,4 +135,4 @@ import { PaymentLinksModule } from '../PaymentLinks/PaymentLinks.module';
SaleInvoicesImportable, SaleInvoicesImportable,
], ],
}) })
export class SaleInvoicesModule {} export class SaleInvoicesModule { }

View File

@@ -0,0 +1,19 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { events } from '@/common/events/events';
import { SaleInvoiceIncrement } from '../commands/SaleInvoiceIncrement.service';
import { ISaleInvoiceCreatedPayload } from '../SaleInvoice.types';
@Injectable()
export class SaleInvoiceAutoIncrementSubscriber {
constructor(private readonly invoiceIncrement: SaleInvoiceIncrement) { }
/**
* Handles increment next number of invoice once be created.
* @param {ISaleInvoiceCreatedPayload} payload -
*/
@OnEvent(events.saleInvoice.onCreated)
private async handleInvoiceNextNumberIncrement({ }: ISaleInvoiceCreatedPayload) {
await this.invoiceIncrement.incrementNextInvoiceNumber();
}
}

View File

@@ -39,6 +39,7 @@ import { SaleReceiptsExportable } from './commands/SaleReceiptsExportable';
import { SaleReceiptsImportable } from './commands/SaleReceiptsImportable'; import { SaleReceiptsImportable } from './commands/SaleReceiptsImportable';
import { GetSaleReceiptMailStateService } from './queries/GetSaleReceiptMailState.service'; import { GetSaleReceiptMailStateService } from './queries/GetSaleReceiptMailState.service';
import { GetSaleReceiptMailTemplateService } from './queries/GetSaleReceiptMailTemplate.service'; import { GetSaleReceiptMailTemplateService } from './queries/GetSaleReceiptMailTemplate.service';
import { SaleReceiptAutoIncrementSubscriber } from './subscribers/SaleReceiptAutoIncrementSubscriber';
@Module({ @Module({
controllers: [SaleReceiptsController], controllers: [SaleReceiptsController],
@@ -82,7 +83,8 @@ import { GetSaleReceiptMailTemplateService } from './queries/GetSaleReceiptMailT
SaleReceiptsExportable, SaleReceiptsExportable,
SaleReceiptsImportable, SaleReceiptsImportable,
GetSaleReceiptMailStateService, GetSaleReceiptMailStateService,
GetSaleReceiptMailTemplateService GetSaleReceiptMailTemplateService,
SaleReceiptAutoIncrementSubscriber,
], ],
}) })
export class SaleReceiptsModule { } export class SaleReceiptsModule { }

View File

@@ -0,0 +1,19 @@
import { Injectable } from '@nestjs/common';
import { OnEvent } from '@nestjs/event-emitter';
import { events } from '@/common/events/events';
import { SaleReceiptIncrement } from '../commands/SaleReceiptIncrement.service';
import { ISaleReceiptCreatedPayload } from '../types/SaleReceipts.types';
@Injectable()
export class SaleReceiptAutoIncrementSubscriber {
constructor(private readonly receiptIncrement: SaleReceiptIncrement) { }
/**
* Handles increment next number of receipt once be created.
* @param {ISaleReceiptCreatedPayload} payload -
*/
@OnEvent(events.saleReceipt.onCreated)
private async handleReceiptNextNumberIncrement({ }: ISaleReceiptCreatedPayload) {
await this.receiptIncrement.incrementNextReceiptNumber();
}
}

View File

@@ -21,6 +21,7 @@ import { VendorCreditGLEntries } from './commands/VendorCreditGLEntries';
import { LedgerModule } from '../Ledger/Ledger.module'; import { LedgerModule } from '../Ledger/Ledger.module';
import { AccountsModule } from '../Accounts/Accounts.module'; import { AccountsModule } from '../Accounts/Accounts.module';
import { VendorCreditInventoryTransactionsSubscriber } from './subscribers/VendorCreditInventoryTransactionsSusbcriber'; import { VendorCreditInventoryTransactionsSubscriber } from './subscribers/VendorCreditInventoryTransactionsSusbcriber';
import { VendorCreditAutoSerialSubscriber } from './subscribers/VendorCreditAutoSerialSubscriber';
import { VendorCreditInventoryTransactions } from './commands/VendorCreditInventoryTransactions'; import { VendorCreditInventoryTransactions } from './commands/VendorCreditInventoryTransactions';
import { GetVendorCreditsService } from './queries/GetVendorCredits.service'; import { GetVendorCreditsService } from './queries/GetVendorCredits.service';
import { DynamicListModule } from '../DynamicListing/DynamicList.module'; import { DynamicListModule } from '../DynamicListing/DynamicList.module';
@@ -57,6 +58,7 @@ import { VendorCreditsImportable } from './commands/VendorCreditsImportable';
VendorCreditGlEntriesSubscriber, VendorCreditGlEntriesSubscriber,
VendorCreditInventoryTransactions, VendorCreditInventoryTransactions,
VendorCreditInventoryTransactionsSubscriber, VendorCreditInventoryTransactionsSubscriber,
VendorCreditAutoSerialSubscriber,
VendorCreditsExportable, VendorCreditsExportable,
VendorCreditsImportable, VendorCreditsImportable,
], ],

View File

@@ -1,27 +1,21 @@
// import { Service, Inject } from 'typedi'; import { Injectable } from '@nestjs/common';
// import events from '@/subscribers/events'; import { OnEvent } from '@nestjs/event-emitter';
// import BaseVendorCredit from '../commands/VendorCreditDTOTransform.service'; import { events } from '@/common/events/events';
// import { IVendorCreditCreatedPayload } from '@/interfaces'; import { VendorCreditAutoIncrementService } from '../commands/VendorCreditAutoIncrement.service';
import { IVendorCreditCreatedPayload } from '../types/VendorCredit.types';
// @Service() @Injectable()
// export default class VendorCreditAutoSerialSubscriber { export class VendorCreditAutoSerialSubscriber {
// @Inject() constructor(
// vendorCreditService: BaseVendorCredit; private readonly vendorCreditIncrementService: VendorCreditAutoIncrementService,
) { }
// /** /**
// * Attaches events with handlers. * Auto serial increment once vendor credit created.
// */ * @param {IVendorCreditCreatedPayload} payload -
// public attach(bus) { */
// bus.subscribe(events.vendorCredit.onCreated, this.autoIncrementOnceCreated); @OnEvent(events.vendorCredit.onCreated)
// } async autoSerialIncrementOnceCreated({ }: IVendorCreditCreatedPayload) {
await this.vendorCreditIncrementService.incrementSerialNumber();
// /** }
// * Auto serial increment once the vendor credit created. }
// * @param {IVendorCreditCreatedPayload} payload
// */
// private autoIncrementOnceCreated = ({
// tenantId,
// }: IVendorCreditCreatedPayload) => {
// this.vendorCreditService.incrementSerialNumber(tenantId);
// };
// }