mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-20 23:00:34 +00:00
refactor: migrate to nestjs
This commit is contained in:
@@ -35,6 +35,8 @@ import { InvoiceGLEntriesSubscriber } from './subscribers/InvoiceGLEntriesSubscr
|
|||||||
import { SaleInvoiceGLEntries } from './ledger/InvoiceGLEntries';
|
import { SaleInvoiceGLEntries } from './ledger/InvoiceGLEntries';
|
||||||
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 SaleInvoiceWriteoffSubscriber from './subscribers/SaleInvoiceWriteoffSubscriber';
|
||||||
|
import { SaleInvoiceWriteoffGLStorage } from './commands/writeoff/SaleInvoiceWriteoffGLStorage';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -76,6 +78,8 @@ import { AccountsModule } from '../Accounts/Accounts.module';
|
|||||||
GetInvoicePaymentsService,
|
GetInvoicePaymentsService,
|
||||||
SaleInvoiceGLEntries,
|
SaleInvoiceGLEntries,
|
||||||
InvoiceGLEntriesSubscriber,
|
InvoiceGLEntriesSubscriber,
|
||||||
|
SaleInvoiceWriteoffGLStorage,
|
||||||
|
SaleInvoiceWriteoffSubscriber
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class SaleInvoicesModule {}
|
export class SaleInvoicesModule {}
|
||||||
|
|||||||
@@ -1,104 +0,0 @@
|
|||||||
// import { Service } from 'typedi';
|
|
||||||
// import { ISaleInvoice, AccountNormal, ILedgerEntry, ILedger } from '@/interfaces';
|
|
||||||
// import Ledger from '@/services/Accounting/Ledger';
|
|
||||||
|
|
||||||
// @Service()
|
|
||||||
// export class SaleInvoiceWriteoffGLEntries {
|
|
||||||
// /**
|
|
||||||
// * Retrieves the invoice write-off common GL entry.
|
|
||||||
// * @param {ISaleInvoice} saleInvoice
|
|
||||||
// */
|
|
||||||
// private getInvoiceWriteoffGLCommonEntry = (saleInvoice: ISaleInvoice) => {
|
|
||||||
// return {
|
|
||||||
// date: saleInvoice.invoiceDate,
|
|
||||||
|
|
||||||
// currencyCode: saleInvoice.currencyCode,
|
|
||||||
// exchangeRate: saleInvoice.exchangeRate,
|
|
||||||
|
|
||||||
// transactionId: saleInvoice.id,
|
|
||||||
// transactionType: 'InvoiceWriteOff',
|
|
||||||
// transactionNumber: saleInvoice.invoiceNo,
|
|
||||||
|
|
||||||
// referenceNo: saleInvoice.referenceNo,
|
|
||||||
// branchId: saleInvoice.branchId,
|
|
||||||
// };
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Retrieves the invoice write-off receiveable GL entry.
|
|
||||||
// * @param {number} ARAccountId
|
|
||||||
// * @param {ISaleInvoice} saleInvoice
|
|
||||||
// * @returns {ILedgerEntry}
|
|
||||||
// */
|
|
||||||
// private getInvoiceWriteoffGLReceivableEntry = (
|
|
||||||
// ARAccountId: number,
|
|
||||||
// saleInvoice: ISaleInvoice
|
|
||||||
// ): ILedgerEntry => {
|
|
||||||
// const commontEntry = this.getInvoiceWriteoffGLCommonEntry(saleInvoice);
|
|
||||||
|
|
||||||
// return {
|
|
||||||
// ...commontEntry,
|
|
||||||
// credit: saleInvoice.localWrittenoffAmount,
|
|
||||||
// accountId: ARAccountId,
|
|
||||||
// contactId: saleInvoice.customerId,
|
|
||||||
// debit: 0,
|
|
||||||
// index: 1,
|
|
||||||
// indexGroup: 300,
|
|
||||||
// accountNormal: saleInvoice.writtenoffExpenseAccount.accountNormal,
|
|
||||||
// };
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Retrieves the invoice write-off expense GL entry.
|
|
||||||
// * @param {ISaleInvoice} saleInvoice
|
|
||||||
// * @returns {ILedgerEntry}
|
|
||||||
// */
|
|
||||||
// private getInvoiceWriteoffGLExpenseEntry = (
|
|
||||||
// saleInvoice: ISaleInvoice
|
|
||||||
// ): ILedgerEntry => {
|
|
||||||
// const commontEntry = this.getInvoiceWriteoffGLCommonEntry(saleInvoice);
|
|
||||||
|
|
||||||
// return {
|
|
||||||
// ...commontEntry,
|
|
||||||
// debit: saleInvoice.localWrittenoffAmount,
|
|
||||||
// accountId: saleInvoice.writtenoffExpenseAccountId,
|
|
||||||
// credit: 0,
|
|
||||||
// index: 2,
|
|
||||||
// indexGroup: 300,
|
|
||||||
// accountNormal: AccountNormal.DEBIT,
|
|
||||||
// };
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Retrieves the invoice write-off GL entries.
|
|
||||||
// * @param {number} ARAccountId
|
|
||||||
// * @param {ISaleInvoice} saleInvoice
|
|
||||||
// * @returns {ILedgerEntry[]}
|
|
||||||
// */
|
|
||||||
// public getInvoiceWriteoffGLEntries = (
|
|
||||||
// ARAccountId: number,
|
|
||||||
// saleInvoice: ISaleInvoice
|
|
||||||
// ): ILedgerEntry[] => {
|
|
||||||
// const creditEntry = this.getInvoiceWriteoffGLExpenseEntry(saleInvoice);
|
|
||||||
// const debitEntry = this.getInvoiceWriteoffGLReceivableEntry(
|
|
||||||
// ARAccountId,
|
|
||||||
// saleInvoice
|
|
||||||
// );
|
|
||||||
// return [debitEntry, creditEntry];
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Retrieves the invoice write-off ledger.
|
|
||||||
// * @param {number} ARAccountId
|
|
||||||
// * @param {ISaleInvoice} saleInvoice
|
|
||||||
// * @returns {Ledger}
|
|
||||||
// */
|
|
||||||
// public getInvoiceWriteoffLedger = (
|
|
||||||
// ARAccountId: number,
|
|
||||||
// saleInvoice: ISaleInvoice
|
|
||||||
// ): ILedger => {
|
|
||||||
// const entries = this.getInvoiceWriteoffGLEntries(ARAccountId, saleInvoice);
|
|
||||||
|
|
||||||
// return new Ledger(entries);
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
// import { Knex } from 'knex';
|
|
||||||
// import LedgerStorageService from '@/services/Accounting/LedgerStorageService';
|
|
||||||
// import HasTenancyService from '@/services/Tenancy/TenancyService';
|
|
||||||
// import { Service, Inject } from 'typedi';
|
|
||||||
// import { SaleInvoiceWriteoffGLEntries } from './SaleInvoiceWriteoffGLEntries';
|
|
||||||
|
|
||||||
// @Service()
|
|
||||||
// export class SaleInvoiceWriteoffGLStorage {
|
|
||||||
// @Inject()
|
|
||||||
// private invoiceWriteoffLedger: SaleInvoiceWriteoffGLEntries;
|
|
||||||
|
|
||||||
// @Inject()
|
|
||||||
// private ledgerStorage: LedgerStorageService;
|
|
||||||
|
|
||||||
// @Inject()
|
|
||||||
// private tenancy: HasTenancyService;
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Writes the invoice write-off GL entries.
|
|
||||||
// * @param {number} tenantId
|
|
||||||
// * @param {number} saleInvoiceId
|
|
||||||
// * @param {Knex.Transaction} trx
|
|
||||||
// * @returns {Promise<void>}
|
|
||||||
// */
|
|
||||||
// public writeInvoiceWriteoffEntries = async (
|
|
||||||
// tenantId: number,
|
|
||||||
// saleInvoiceId: number,
|
|
||||||
// trx?: Knex.Transaction
|
|
||||||
// ) => {
|
|
||||||
// const { SaleInvoice } = this.tenancy.models(tenantId);
|
|
||||||
// const { accountRepository } = this.tenancy.repositories(tenantId);
|
|
||||||
|
|
||||||
// // Retrieves the sale invoice.
|
|
||||||
// const saleInvoice = await SaleInvoice.query(trx)
|
|
||||||
// .findById(saleInvoiceId)
|
|
||||||
// .withGraphFetched('writtenoffExpenseAccount');
|
|
||||||
|
|
||||||
// // Find or create the A/R account.
|
|
||||||
// const ARAccount = await accountRepository.findOrCreateAccountReceivable(
|
|
||||||
// saleInvoice.currencyCode,
|
|
||||||
// {},
|
|
||||||
// trx
|
|
||||||
// );
|
|
||||||
// // Retrieves the invoice write-off ledger.
|
|
||||||
// const ledger = this.invoiceWriteoffLedger.getInvoiceWriteoffLedger(
|
|
||||||
// ARAccount.id,
|
|
||||||
// saleInvoice
|
|
||||||
// );
|
|
||||||
// return this.ledgerStorage.commit(tenantId, ledger, trx);
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Rewrites the invoice write-off GL entries.
|
|
||||||
// * @param {number} tenantId
|
|
||||||
// * @param {number} saleInvoiceId
|
|
||||||
// * @param {Knex.Transactio} actiontrx
|
|
||||||
// * @returns {Promise<void>}
|
|
||||||
// */
|
|
||||||
// public rewriteInvoiceWriteoffEntries = async (
|
|
||||||
// tenantId: number,
|
|
||||||
// saleInvoiceId: number,
|
|
||||||
// trx?: Knex.Transaction
|
|
||||||
// ) => {
|
|
||||||
// await this.revertInvoiceWriteoffEntries(tenantId, saleInvoiceId, trx);
|
|
||||||
|
|
||||||
// await this.writeInvoiceWriteoffEntries(tenantId, saleInvoiceId, trx);
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Reverts the invoice write-off GL entries.
|
|
||||||
// * @param {number} tenantId
|
|
||||||
// * @param {number} saleInvoiceId
|
|
||||||
// * @param {Knex.Transaction} trx
|
|
||||||
// * @returns {Promise<void>}
|
|
||||||
// */
|
|
||||||
// public revertInvoiceWriteoffEntries = async (
|
|
||||||
// tenantId: number,
|
|
||||||
// saleInvoiceId: number,
|
|
||||||
// trx?: Knex.Transaction
|
|
||||||
// ) => {
|
|
||||||
// await this.ledgerStorage.deleteByReference(
|
|
||||||
// tenantId,
|
|
||||||
// saleInvoiceId,
|
|
||||||
// 'InvoiceWriteOff',
|
|
||||||
// trx
|
|
||||||
// );
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
import { SaleInvoice } from '../../models/SaleInvoice';
|
||||||
|
import { ILedger } from '@/modules/Ledger/types/Ledger.types';
|
||||||
|
import { ILedgerEntry } from '@/modules/Ledger/types/Ledger.types';
|
||||||
|
import { AccountNormal } from '@/interfaces/Account';
|
||||||
|
import { Ledger } from '@/modules/Ledger/Ledger';
|
||||||
|
|
||||||
|
export class SaleInvoiceWriteoffGL {
|
||||||
|
private saleInvoiceModel: SaleInvoice;
|
||||||
|
private ARAccountId: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the sale invoice model.
|
||||||
|
* @param {SaleInvoice} saleInvoiceModel -
|
||||||
|
*/
|
||||||
|
constructor(saleInvoiceModel: SaleInvoice) {
|
||||||
|
this.saleInvoiceModel = saleInvoiceModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the A/R account ID.
|
||||||
|
* @param {number} ARAccountId -
|
||||||
|
*/
|
||||||
|
setARAccountId(ARAccountId: number) {
|
||||||
|
this.ARAccountId = ARAccountId;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the invoice write-off common GL entry.
|
||||||
|
* @param {ISaleInvoice} saleInvoice
|
||||||
|
*/
|
||||||
|
private get invoiceWriteoffGLCommonEntry() {
|
||||||
|
return {
|
||||||
|
date: this.saleInvoiceModel.invoiceDate,
|
||||||
|
|
||||||
|
currencyCode: this.saleInvoiceModel.currencyCode,
|
||||||
|
exchangeRate: this.saleInvoiceModel.exchangeRate,
|
||||||
|
|
||||||
|
transactionId: this.saleInvoiceModel.id,
|
||||||
|
transactionType: 'InvoiceWriteOff',
|
||||||
|
transactionNumber: this.saleInvoiceModel.invoiceNo,
|
||||||
|
|
||||||
|
referenceNo: this.saleInvoiceModel.referenceNo,
|
||||||
|
branchId: this.saleInvoiceModel.branchId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the invoice write-off receiveable GL entry.
|
||||||
|
* @param {number} ARAccountId
|
||||||
|
* @param {ISaleInvoice} saleInvoice
|
||||||
|
* @returns {ILedgerEntry}
|
||||||
|
*/
|
||||||
|
private get invoiceWriteoffGLReceivableEntry(): ILedgerEntry {
|
||||||
|
const commontEntry = this.invoiceWriteoffGLCommonEntry;
|
||||||
|
|
||||||
|
return {
|
||||||
|
...commontEntry,
|
||||||
|
credit: this.saleInvoiceModel.localWrittenoffAmount,
|
||||||
|
accountId: this.ARAccountId,
|
||||||
|
contactId: this.saleInvoiceModel.customerId,
|
||||||
|
debit: 0,
|
||||||
|
index: 1,
|
||||||
|
indexGroup: 300,
|
||||||
|
accountNormal:
|
||||||
|
this.saleInvoiceModel.writtenoffExpenseAccount.accountNormal,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the invoice write-off expense GL entry.
|
||||||
|
* @param {ISaleInvoice} saleInvoice
|
||||||
|
* @returns {ILedgerEntry}
|
||||||
|
*/
|
||||||
|
private get invoiceWriteoffGLExpenseEntry(): ILedgerEntry {
|
||||||
|
const commontEntry = this.invoiceWriteoffGLCommonEntry;
|
||||||
|
|
||||||
|
return {
|
||||||
|
...commontEntry,
|
||||||
|
debit: this.saleInvoiceModel.writtenoffAmount,
|
||||||
|
accountId: this.saleInvoiceModel.writtenoffExpenseAccountId,
|
||||||
|
credit: 0,
|
||||||
|
index: 2,
|
||||||
|
indexGroup: 300,
|
||||||
|
accountNormal: AccountNormal.DEBIT,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the invoice write-off GL entries.
|
||||||
|
* @returns {ILedgerEntry[]}
|
||||||
|
*/
|
||||||
|
public getInvoiceWriteoffGLEntries(): ILedgerEntry[] {
|
||||||
|
const creditEntry = this.invoiceWriteoffGLExpenseEntry;
|
||||||
|
const debitEntry = this.invoiceWriteoffGLReceivableEntry;
|
||||||
|
|
||||||
|
return [debitEntry, creditEntry];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the invoice write-off ledger.
|
||||||
|
* @param {number} ARAccountId
|
||||||
|
* @param {ISaleInvoice} saleInvoice
|
||||||
|
* @returns {Ledger}
|
||||||
|
*/
|
||||||
|
public getInvoiceWriteoffLedger(): ILedger {
|
||||||
|
const entries = this.getInvoiceWriteoffGLEntries();
|
||||||
|
|
||||||
|
return new Ledger(entries);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
|
import { Knex } from 'knex';
|
||||||
|
import { Account } from '@/modules/Accounts/models/Account.model';
|
||||||
|
import { AccountRepository } from '@/modules/Accounts/repositories/Account.repository';
|
||||||
|
import { LedgerStorageService } from '@/modules/Ledger/LedgerStorage.service';
|
||||||
|
import { SaleInvoice } from '../../models/SaleInvoice';
|
||||||
|
import { SaleInvoiceWriteoffGL } from './SaleInvoiceWriteoffGL';
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class SaleInvoiceWriteoffGLStorage {
|
||||||
|
/**
|
||||||
|
* @param {LedgerStorageService} ledgerStorage - Ledger storage service.
|
||||||
|
* @param {AccountRepository} accountRepository - Account repository.
|
||||||
|
* @param {Account} accountModel - Account model.
|
||||||
|
* @param {SaleInvoice} saleInvoiceModel - Sale invoice model.
|
||||||
|
*/
|
||||||
|
constructor(
|
||||||
|
private readonly ledgerStorage: LedgerStorageService,
|
||||||
|
private readonly accountRepository: AccountRepository,
|
||||||
|
|
||||||
|
@Inject(Account.name) private readonly accountModel: typeof Account,
|
||||||
|
@Inject(SaleInvoice.name)
|
||||||
|
private readonly saleInvoiceModel: typeof SaleInvoice,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes the invoice write-off GL entries.
|
||||||
|
* @param {number} saleInvoiceId - Sale invoice id.
|
||||||
|
* @param {Knex.Transaction} trx - Knex transaction.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
public async writeInvoiceWriteoffEntries(
|
||||||
|
saleInvoiceId: number,
|
||||||
|
trx?: Knex.Transaction,
|
||||||
|
) {
|
||||||
|
// Retrieves the sale invoice.
|
||||||
|
const saleInvoice = await this.saleInvoiceModel
|
||||||
|
.query(trx)
|
||||||
|
.findById(saleInvoiceId)
|
||||||
|
.withGraphFetched('writtenoffExpenseAccount');
|
||||||
|
|
||||||
|
// Find or create the A/R account.
|
||||||
|
const ARAccount =
|
||||||
|
await this.accountRepository.findOrCreateAccountReceivable(
|
||||||
|
saleInvoice.currencyCode,
|
||||||
|
{},
|
||||||
|
trx,
|
||||||
|
);
|
||||||
|
const ledger = new SaleInvoiceWriteoffGL(saleInvoice)
|
||||||
|
.setARAccountId(ARAccount.id)
|
||||||
|
.getInvoiceWriteoffLedger();
|
||||||
|
|
||||||
|
return this.ledgerStorage.commit(ledger, trx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rewrites the invoice write-off GL entries.
|
||||||
|
* @param {number} saleInvoiceId - Sale invoice id.
|
||||||
|
* @param {Knex.Transaction} trx - Knex transaction.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
public async rewriteInvoiceWriteoffEntries(
|
||||||
|
saleInvoiceId: number,
|
||||||
|
trx?: Knex.Transaction,
|
||||||
|
) {
|
||||||
|
await this.revertInvoiceWriteoffEntries(saleInvoiceId, trx);
|
||||||
|
|
||||||
|
await this.writeInvoiceWriteoffEntries(saleInvoiceId, trx);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverts the invoice write-off GL entries.
|
||||||
|
* @param {number} saleInvoiceId - Sale invoice id.
|
||||||
|
* @param {Knex.Transaction} trx - Knex transaction.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
public revertInvoiceWriteoffEntries = async (
|
||||||
|
saleInvoiceId: number,
|
||||||
|
trx?: Knex.Transaction,
|
||||||
|
) => {
|
||||||
|
await this.ledgerStorage.deleteByReference(
|
||||||
|
saleInvoiceId,
|
||||||
|
'InvoiceWriteOff',
|
||||||
|
trx,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@ import { TaxRateTransaction } from '@/modules/TaxRates/models/TaxRateTransaction
|
|||||||
import { ItemEntry } from '@/modules/TransactionItemEntry/models/ItemEntry';
|
import { ItemEntry } from '@/modules/TransactionItemEntry/models/ItemEntry';
|
||||||
import { Document } from '@/modules/ChromiumlyTenancy/models/Document';
|
import { Document } from '@/modules/ChromiumlyTenancy/models/Document';
|
||||||
import { DiscountType } from '@/common/types/Discount';
|
import { DiscountType } from '@/common/types/Discount';
|
||||||
|
import { Account } from '@/modules/Accounts/models/Account.model';
|
||||||
|
|
||||||
export class SaleInvoice extends BaseModel {
|
export class SaleInvoice extends BaseModel {
|
||||||
public taxAmountWithheld: number;
|
public taxAmountWithheld: number;
|
||||||
@@ -51,9 +52,10 @@ export class SaleInvoice extends BaseModel {
|
|||||||
public branchId: number;
|
public branchId: number;
|
||||||
public warehouseId: number;
|
public warehouseId: number;
|
||||||
|
|
||||||
public taxes: TaxRateTransaction[];
|
public taxes!: TaxRateTransaction[];
|
||||||
public entries: ItemEntry[];
|
public entries!: ItemEntry[];
|
||||||
public attachments: Document[];
|
public attachments!: Document[];
|
||||||
|
public writtenoffExpenseAccount!: Account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Table name
|
* Table name
|
||||||
|
|||||||
@@ -1,58 +1,37 @@
|
|||||||
// import { Inject, Service } from 'typedi';
|
import { Injectable } from '@nestjs/common';
|
||||||
// import events from '@/subscribers/events';
|
import { OnEvent } from '@nestjs/event-emitter';
|
||||||
// import {
|
import {
|
||||||
// ISaleInvoiceWriteoffCreatePayload,
|
ISaleInvoiceWriteoffCreatePayload,
|
||||||
// ISaleInvoiceWrittenOffCanceledPayload,
|
ISaleInvoiceWrittenOffCanceledPayload,
|
||||||
// } from '@/interfaces';
|
} from '../SaleInvoice.types';
|
||||||
// import { SaleInvoiceWriteoffGLStorage } from './SaleInvoiceWriteoffGLStorage';
|
import { SaleInvoiceWriteoffGLStorage } from '../commands/writeoff/SaleInvoiceWriteoffGLStorage';
|
||||||
|
import { events } from '@/common/events/events';
|
||||||
|
|
||||||
// @Service()
|
@Injectable()
|
||||||
// export default class SaleInvoiceWriteoffSubscriber {
|
export default class SaleInvoiceWriteoffSubscriber {
|
||||||
// @Inject()
|
constructor(private readonly writeGLStorage: SaleInvoiceWriteoffGLStorage) {}
|
||||||
// writeGLStorage: SaleInvoiceWriteoffGLStorage;
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * Attaches events.
|
* Write the written-off sale invoice journal entries.
|
||||||
// */
|
* @param {ISaleInvoiceWriteoffCreatePayload}
|
||||||
// public attach(bus) {
|
*/
|
||||||
// bus.subscribe(
|
@OnEvent(events.saleInvoice.onWrittenoff)
|
||||||
// events.saleInvoice.onWrittenoff,
|
public async writeJournalEntriesOnceWriteoffCreate({
|
||||||
// this.writeJournalEntriesOnceWriteoffCreate
|
saleInvoice,
|
||||||
// );
|
trx,
|
||||||
// bus.subscribe(
|
}: ISaleInvoiceWriteoffCreatePayload) {
|
||||||
// events.saleInvoice.onWrittenoffCanceled,
|
await this.writeGLStorage.writeInvoiceWriteoffEntries(saleInvoice.id, trx);
|
||||||
// this.revertJournalEntriesOnce
|
}
|
||||||
// );
|
|
||||||
// }
|
|
||||||
// /**
|
|
||||||
// * Write the written-off sale invoice journal entries.
|
|
||||||
// * @param {ISaleInvoiceWriteoffCreatePayload}
|
|
||||||
// */
|
|
||||||
// private writeJournalEntriesOnceWriteoffCreate = async ({
|
|
||||||
// tenantId,
|
|
||||||
// saleInvoice,
|
|
||||||
// trx,
|
|
||||||
// }: ISaleInvoiceWriteoffCreatePayload) => {
|
|
||||||
// await this.writeGLStorage.writeInvoiceWriteoffEntries(
|
|
||||||
// tenantId,
|
|
||||||
// saleInvoice.id,
|
|
||||||
// trx
|
|
||||||
// );
|
|
||||||
// };
|
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * Reverts the written-of sale invoice jounral entries.
|
* Reverts the written-of sale invoice jounral entries.
|
||||||
// * @param {ISaleInvoiceWrittenOffCanceledPayload}
|
* @param {ISaleInvoiceWrittenOffCanceledPayload}
|
||||||
// */
|
*/
|
||||||
// private revertJournalEntriesOnce = async ({
|
@OnEvent(events.saleInvoice.onWrittenoffCanceled)
|
||||||
// tenantId,
|
public async revertJournalEntriesOnce({
|
||||||
// saleInvoice,
|
saleInvoice,
|
||||||
// trx,
|
trx,
|
||||||
// }: ISaleInvoiceWrittenOffCanceledPayload) => {
|
}: ISaleInvoiceWrittenOffCanceledPayload) {
|
||||||
// await this.writeGLStorage.revertInvoiceWriteoffEntries(
|
await this.writeGLStorage.revertInvoiceWriteoffEntries(saleInvoice.id, trx);
|
||||||
// tenantId,
|
}
|
||||||
// saleInvoice.id,
|
}
|
||||||
// trx
|
|
||||||
// );
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
|
|||||||
Reference in New Issue
Block a user