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 { 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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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')}`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue