diff --git a/src/modules/transaction/transaction/domain/usecases/handlers/settled-transaction.handler.ts b/src/modules/transaction/transaction/domain/usecases/handlers/settled-transaction.handler.ts index 87d5992..0f3a259 100644 --- a/src/modules/transaction/transaction/domain/usecases/handlers/settled-transaction.handler.ts +++ b/src/modules/transaction/transaction/domain/usecases/handlers/settled-transaction.handler.ts @@ -8,10 +8,6 @@ import { Equation, parse } from 'algebra.js'; import { STATUS } from 'src/core/strings/constants/base.constants'; import { TransactionDataService } from '../../../data/services/transaction-data.service'; import { TransactionModel } from '../../../data/models/transaction.model'; -import { - generateCodeDate, - generateRandom, -} from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper'; @EventsHandler(TransactionChangeStatusEvent) export class SettledTransactionHandler @@ -69,13 +65,8 @@ export class SettledTransactionHandler data.payment_total_net_profit ?? 0, ); - const month_year = generateCodeDate(); - const char = generateRandom(1); - const number = generateRandom(1, true); - Object.assign(data, { payment_total_dpp: dpp_value, - invoice_code: `${month_year}${char}${number}`, profit_share_formula: profit_formula.formula_string, sales_price_formula: sales_price.formula_string, taxes: tax_datas, diff --git a/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts index 6114ae5..b2da650 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/confirm-transaction.manager.ts @@ -12,6 +12,7 @@ import { import { TransactionModel } from '../../../data/models/transaction.model'; import { TransactionChangeStatusEvent } from '../../entities/event/transaction-change-status.event'; import { STATUS } from 'src/core/strings/constants/base.constants'; +import { generateInvoiceCodeHelper } from './helpers/generate-invoice-code.helper'; @Injectable() export class ConfirmTransactionManager extends BaseUpdateStatusManager { @@ -33,6 +34,7 @@ export class ConfirmTransactionManager extends BaseUpdateStatusManager { const freeTransaction = this.data.payment_total < 1; Object.assign(this.data, { + invoice_code: await generateInvoiceCodeHelper(this.dataService), status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING, }); return; diff --git a/src/modules/transaction/transaction/domain/usecases/managers/helpers/generate-invoice-code.helper.ts b/src/modules/transaction/transaction/domain/usecases/managers/helpers/generate-invoice-code.helper.ts new file mode 100644 index 0000000..8b25337 --- /dev/null +++ b/src/modules/transaction/transaction/domain/usecases/managers/helpers/generate-invoice-code.helper.ts @@ -0,0 +1,22 @@ +import { + generateCodeDate, + generateRandom, +} from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper'; +import { ILike } from 'typeorm'; + +export async function generateInvoiceCodeHelper(dataService) { + const month_year = generateCodeDate(); + const char = generateRandom(1); + const number = generateRandom(1, true); + + const invoice_code = await dataService.getOneByOptions({ + where: { + invoice_code: ILike(`%${month_year}%`), + }, + }); + + return `INV-${month_year}${char}${number}/${invoice_code + .count() + .toString() + .padStart(5, '0')}`; +}