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 { 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;
|
||||
|
||||
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 (
|
||||
old_data.status != current_data.data ||
|
||||
(event.data.op == OPERATION.DELETE && current_data.status != STATUS.DRAFT)
|
||||
) {
|
||||
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 (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)
|
||||
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;
|
||||
|
||||
await this.dataService.update(
|
||||
queryRunner,
|
||||
TransactionModel,
|
||||
{ id: current_data.transaction_id },
|
||||
{
|
||||
...data,
|
||||
status: status,
|
||||
},
|
||||
);
|
||||
else status = STATUS.PROCESS_REFUND;
|
||||
}
|
||||
|
||||
await this.dataService.update(
|
||||
queryRunner,
|
||||
TransactionModel,
|
||||
{ id: current_data.transaction_id },
|
||||
{
|
||||
...data,
|
||||
status: status,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue