fix(SPG-729) pemesanan data seharusnya berstatus proses refund ketika data refund berstatus draft

pull/47/head
Aswin Ashar Abdullah 2024-08-01 17:01:39 +07:00
parent 1ae7f4e097
commit 11171b2859
1 changed files with 28 additions and 29 deletions

View File

@ -4,22 +4,18 @@ import { TransactionDataService } from '../../../data/services/transaction-data.
import { OPERATION, STATUS } from 'src/core/strings/constants/base.constants';
import { TransactionModel } from '../../../data/models/transaction.model';
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
implements IEventHandler<RefundChangeStatusEvent>
{
constructor(private dataService: TransactionDataService) {}
async handle(event: RefundChangeStatusEvent) {
const old_data = event.data.old;
const current_data = event.data.data;
let status: STATUS;
if (
old_data.status != current_data.data ||
(event.data.op == OPERATION.DELETE && current_data.status != STATUS.DRAFT)
) {
const queryRunner = this.dataService
.getRepository()
.manager.connection.createQueryRunner();
@ -29,14 +25,18 @@ export class RefundUpdatedHandler
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)
if (
event.data.op == OPERATION.DELETE ||
current_data.status == STATUS.CANCEL
)
status = STATUS.SETTLED;
else {
if (current_data.status == STATUS.REFUNDED && if_full_refund)
status = STATUS.REFUNDED;
else if (current_data.status == STATUS.REFUNDED && !if_full_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,
@ -48,5 +48,4 @@ export class RefundUpdatedHandler
},
);
}
}
}