fix(SPG-657) Kode Pembayaran - ketika booking status waiting di confirm di rekonsiliasi, kode pembayaran tidak muncul
parent
1f4bf80908
commit
76fa380f1e
|
@ -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 { STATUS } from 'src/core/strings/constants/base.constants';
|
||||
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()
|
||||
export class BatchConfirmReconciliationManager extends BaseBatchUpdateStatusManager<TransactionEntity> {
|
||||
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, {
|
||||
reconciliation_mdr: this.data.reconciliation_mdr ?? null,
|
||||
reconciliation_confirm_by: this.user.name,
|
||||
reconciliation_confirm_date: new Date().getTime(),
|
||||
status: STATUS.SETTLED,
|
||||
reconciliation_status: this.dataStatus,
|
||||
payment_total_net_profit: net_profit,
|
||||
payment_date: this.data.payment_date,
|
||||
payment_code_reference: await generateInvoiceCodeHelper(
|
||||
this.dataService,
|
||||
'PMY',
|
||||
),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import {
|
|||
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 { 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()
|
||||
export class ConfirmReconciliationManager extends BaseUpdateStatusManager<TransactionEntity> {
|
||||
|
@ -25,6 +26,10 @@ export class ConfirmReconciliationManager extends BaseUpdateStatusManager<Transa
|
|||
reconciliation_confirm_date: new Date().getTime(),
|
||||
status: STATUS.SETTLED,
|
||||
reconciliation_status: this.dataStatus,
|
||||
payment_code_reference: await generateInvoiceCodeHelper(
|
||||
this.dataService,
|
||||
'PMY',
|
||||
),
|
||||
});
|
||||
|
||||
return;
|
||||
|
|
|
@ -49,7 +49,7 @@ export class BatchConfirmTransactionManager extends BaseBatchUpdateStatusManager
|
|||
}
|
||||
|
||||
Object.assign(data, {
|
||||
invoice_code: await generateInvoiceCodeHelper(this.dataService),
|
||||
invoice_code: await generateInvoiceCodeHelper(this.dataService, 'INV'),
|
||||
status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING,
|
||||
});
|
||||
return;
|
||||
|
|
|
@ -59,7 +59,7 @@ export class ConfirmTransactionManager extends BaseUpdateStatusManager<Transacti
|
|||
invoice_code:
|
||||
this.data.payment_type == TransactionPaymentType.COUNTER
|
||||
? null
|
||||
: await generateInvoiceCodeHelper(this.dataService),
|
||||
: await generateInvoiceCodeHelper(this.dataService, 'INV'),
|
||||
status: freeTransaction ? STATUS.ACTIVE : STATUS.PENDING,
|
||||
});
|
||||
return;
|
||||
|
|
|
@ -4,19 +4,26 @@ import {
|
|||
} from 'src/modules/transaction/vip-code/domain/usecases/managers/helpers/generate-random.helper';
|
||||
import { ILike } from 'typeorm';
|
||||
|
||||
export async function generateInvoiceCodeHelper(dataService) {
|
||||
export async function generateInvoiceCodeHelper(dataService, code) {
|
||||
const month_year = generateCodeDate();
|
||||
const char = generateRandom(1);
|
||||
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({
|
||||
where: {
|
||||
invoice_code: ILike(`%${month_year}%`),
|
||||
},
|
||||
where: query,
|
||||
});
|
||||
const current_number = invoice_code.length + 1;
|
||||
|
||||
return `INV-${month_year}${char}${number}/${current_number
|
||||
return `${code}-${month_year}${char}${number}/${current_number
|
||||
.toString()
|
||||
.padStart(5, '0')}`;
|
||||
}
|
||||
|
|
|
@ -61,6 +61,7 @@ export function mappingTransaction(data) {
|
|||
season_period: season_period,
|
||||
items: items,
|
||||
payment_type_bank: payment_type_bank,
|
||||
payment_code: data.payment_code_reference,
|
||||
});
|
||||
|
||||
delete data.season_period_id;
|
||||
|
|
Loading…
Reference in New Issue