fix(SPG-657) Kode Pembayaran - ketika booking status waiting di confirm di rekonsiliasi, kode pembayaran tidak muncul

pull/40/head
Aswin Ashar Abdullah 2024-07-26 16:49:52 +07:00
parent 1f4bf80908
commit 76fa380f1e
6 changed files with 25 additions and 14 deletions

View File

@ -9,22 +9,20 @@ import { TransactionEntity } from 'src/modules/transaction/transaction/domain/en
import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model'; import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model';
import { STATUS } from 'src/core/strings/constants/base.constants'; import { STATUS } from 'src/core/strings/constants/base.constants';
import { TransactionChangeStatusEvent } from 'src/modules/transaction/transaction/domain/entities/event/transaction-change-status.event'; import { TransactionChangeStatusEvent } from 'src/modules/transaction/transaction/domain/entities/event/transaction-change-status.event';
import { generateInvoiceCodeHelper } from 'src/modules/transaction/transaction/domain/usecases/managers/helpers/generate-invoice-code.helper';
@Injectable() @Injectable()
export class BatchConfirmReconciliationManager extends BaseBatchUpdateStatusManager<TransactionEntity> { export class BatchConfirmReconciliationManager extends BaseBatchUpdateStatusManager<TransactionEntity> {
async validateData(data: TransactionEntity): Promise<void> { async validateData(data: TransactionEntity): Promise<void> {
const net_profit = data.reconciliation_mdr
? Number(this.data.payment_total) - Number(this.data.reconciliation_mdr)
: null;
Object.assign(data, { Object.assign(data, {
reconciliation_mdr: this.data.reconciliation_mdr ?? null,
reconciliation_confirm_by: this.user.name, reconciliation_confirm_by: this.user.name,
reconciliation_confirm_date: new Date().getTime(), reconciliation_confirm_date: new Date().getTime(),
status: STATUS.SETTLED, status: STATUS.SETTLED,
reconciliation_status: this.dataStatus, reconciliation_status: this.dataStatus,
payment_total_net_profit: net_profit, payment_code_reference: await generateInvoiceCodeHelper(
payment_date: this.data.payment_date, this.dataService,
'PMY',
),
}); });
return; return;
} }

View File

@ -8,6 +8,7 @@ import {
import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model'; import { TransactionModel } from 'src/modules/transaction/transaction/data/models/transaction.model';
import { TransactionChangeStatusEvent } from 'src/modules/transaction/transaction/domain/entities/event/transaction-change-status.event'; import { TransactionChangeStatusEvent } from 'src/modules/transaction/transaction/domain/entities/event/transaction-change-status.event';
import { TransactionEntity } from 'src/modules/transaction/transaction/domain/entities/transaction.entity'; import { TransactionEntity } from 'src/modules/transaction/transaction/domain/entities/transaction.entity';
import { generateInvoiceCodeHelper } from 'src/modules/transaction/transaction/domain/usecases/managers/helpers/generate-invoice-code.helper';
@Injectable() @Injectable()
export class ConfirmReconciliationManager extends BaseUpdateStatusManager<TransactionEntity> { export class ConfirmReconciliationManager extends BaseUpdateStatusManager<TransactionEntity> {
@ -25,6 +26,10 @@ export class ConfirmReconciliationManager extends BaseUpdateStatusManager<Transa
reconciliation_confirm_date: new Date().getTime(), reconciliation_confirm_date: new Date().getTime(),
status: STATUS.SETTLED, status: STATUS.SETTLED,
reconciliation_status: this.dataStatus, reconciliation_status: this.dataStatus,
payment_code_reference: await generateInvoiceCodeHelper(
this.dataService,
'PMY',
),
}); });
return; return;

View File

@ -49,7 +49,7 @@ export class BatchConfirmTransactionManager extends BaseBatchUpdateStatusManager
} }
Object.assign(data, { Object.assign(data, {
invoice_code: await generateInvoiceCodeHelper(this.dataService), invoice_code: await generateInvoiceCodeHelper(this.dataService, 'INV'),
status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING, status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING,
}); });
return; return;

View File

@ -59,7 +59,7 @@ export class ConfirmTransactionManager extends BaseUpdateStatusManager<Transacti
invoice_code: invoice_code:
this.data.payment_type == TransactionPaymentType.COUNTER this.data.payment_type == TransactionPaymentType.COUNTER
? null ? null
: await generateInvoiceCodeHelper(this.dataService), : await generateInvoiceCodeHelper(this.dataService, 'INV'),
status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING, status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING,
}); });
return; return;

View File

@ -4,19 +4,26 @@ import {
} from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper'; } from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper';
import { ILike } from 'typeorm'; import { ILike } from 'typeorm';
export async function generateInvoiceCodeHelper(dataService) { export async function generateInvoiceCodeHelper(dataService, code) {
const month_year = generateCodeDate(); const month_year = generateCodeDate();
const char = generateRandom(1); const char = generateRandom(1);
const number = generateRandom(1, true); const number = generateRandom(1, true);
let query: any = {
invoice_code: ILike(`%${month_year}%`),
};
if (code == 'PYM') {
query = {
payment_code_reference: ILike(`%${month_year}%`),
};
}
const invoice_code = await dataService.getManyByOptions({ const invoice_code = await dataService.getManyByOptions({
where: { where: query,
invoice_code: ILike(`%${month_year}%`),
},
}); });
const current_number = invoice_code.length + 1; const current_number = invoice_code.length + 1;
return `INV-${month_year}${char}${number}/${current_number return `${code}-${month_year}${char}${number}/${current_number
.toString() .toString()
.padStart(5, '0')}`; .padStart(5, '0')}`;
} }

View File

@ -61,6 +61,7 @@ export function mappingTransaction(data) {
season_period: season_period, season_period: season_period,
items: items, items: items,
payment_type_bank: payment_type_bank, payment_type_bank: payment_type_bank,
payment_code: data.payment_code_reference,
}); });
delete data.season_period_id; delete data.season_period_id;