fix(SPG-729) pemesanan data seharusnya berstatus proses refund ketika data refund berstatus draft
parent
1ae7f4e097
commit
11171b2859
|
@ -4,49 +4,48 @@ import { TransactionDataService } from '../../../data/services/transaction-data.
|
||||||
import { OPERATION, STATUS } from 'src/core/strings/constants/base.constants';
|
import { OPERATION, STATUS } from 'src/core/strings/constants/base.constants';
|
||||||
import { TransactionModel } from '../../../data/models/transaction.model';
|
import { TransactionModel } from '../../../data/models/transaction.model';
|
||||||
import { RefundDeletedEvent } from 'src/modules/transaction/refund/domain/entities/event/refund-deleted.event';
|
import { RefundDeletedEvent } from 'src/modules/transaction/refund/domain/entities/event/refund-deleted.event';
|
||||||
|
import { RefundCreatedEvent } from 'src/modules/transaction/refund/domain/entities/event/refund-created.event';
|
||||||
|
|
||||||
@EventsHandler(RefundChangeStatusEvent, RefundDeletedEvent)
|
@EventsHandler(RefundChangeStatusEvent, RefundDeletedEvent, RefundCreatedEvent)
|
||||||
export class RefundUpdatedHandler
|
export class RefundUpdatedHandler
|
||||||
implements IEventHandler<RefundChangeStatusEvent>
|
implements IEventHandler<RefundChangeStatusEvent>
|
||||||
{
|
{
|
||||||
constructor(private dataService: TransactionDataService) {}
|
constructor(private dataService: TransactionDataService) {}
|
||||||
|
|
||||||
async handle(event: RefundChangeStatusEvent) {
|
async handle(event: RefundChangeStatusEvent) {
|
||||||
const old_data = event.data.old;
|
|
||||||
const current_data = event.data.data;
|
const current_data = event.data.data;
|
||||||
let status: STATUS;
|
let status: STATUS;
|
||||||
|
|
||||||
|
const queryRunner = this.dataService
|
||||||
|
.getRepository()
|
||||||
|
.manager.connection.createQueryRunner();
|
||||||
|
|
||||||
|
const data = new TransactionModel();
|
||||||
|
const if_full_refund =
|
||||||
|
Number(current_data.refund_total ?? 0) ==
|
||||||
|
Number(current_data.transaction?.payment_total);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
old_data.status != current_data.data ||
|
event.data.op == OPERATION.DELETE ||
|
||||||
(event.data.op == OPERATION.DELETE && current_data.status != STATUS.DRAFT)
|
current_data.status == STATUS.CANCEL
|
||||||
) {
|
)
|
||||||
const queryRunner = this.dataService
|
status = STATUS.SETTLED;
|
||||||
.getRepository()
|
else {
|
||||||
.manager.connection.createQueryRunner();
|
if (current_data.status == STATUS.REFUNDED && if_full_refund)
|
||||||
|
|
||||||
const data = new TransactionModel();
|
|
||||||
const if_full_refund =
|
|
||||||
Number(current_data.refund_total ?? 0) ==
|
|
||||||
Number(current_data.transaction?.payment_total);
|
|
||||||
|
|
||||||
if (event.data.op == OPERATION.DELETE) status = STATUS.SETTLED;
|
|
||||||
else if (current_data.status == STATUS.PENDING)
|
|
||||||
status = STATUS.PROCESS_REFUND;
|
|
||||||
else if (current_data.status == STATUS.REFUNDED && if_full_refund)
|
|
||||||
status = STATUS.REFUNDED;
|
status = STATUS.REFUNDED;
|
||||||
else if (current_data.status == STATUS.REFUNDED && !if_full_refund)
|
else if (current_data.status == STATUS.REFUNDED && !if_full_refund)
|
||||||
status = STATUS.PARTIAL_REFUND;
|
status = STATUS.PARTIAL_REFUND;
|
||||||
else if (current_data.status == STATUS.CANCEL) status = STATUS.SETTLED;
|
else status = STATUS.PROCESS_REFUND;
|
||||||
|
|
||||||
await this.dataService.update(
|
|
||||||
queryRunner,
|
|
||||||
TransactionModel,
|
|
||||||
{ id: current_data.transaction_id },
|
|
||||||
{
|
|
||||||
...data,
|
|
||||||
status: status,
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await this.dataService.update(
|
||||||
|
queryRunner,
|
||||||
|
TransactionModel,
|
||||||
|
{ id: current_data.transaction_id },
|
||||||
|
{
|
||||||
|
...data,
|
||||||
|
status: status,
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue