diff --git a/src/modules/configuration/couch/domain/managers/booking.handler.ts b/src/modules/configuration/couch/domain/managers/booking.handler.ts index 4b64585..6380435 100644 --- a/src/modules/configuration/couch/domain/managers/booking.handler.ts +++ b/src/modules/configuration/couch/domain/managers/booking.handler.ts @@ -20,7 +20,7 @@ export class BookingDeletedEvent _id: event.data.id, ...event.data.data, }, - 'item', + 'booking', ); } } diff --git a/src/modules/transaction/reconciliation/domain/usecases/managers/batch-cancel-reconciliation.manager.ts b/src/modules/transaction/reconciliation/domain/usecases/managers/batch-cancel-reconciliation.manager.ts index d96942e..6133511 100644 --- a/src/modules/transaction/reconciliation/domain/usecases/managers/batch-cancel-reconciliation.manager.ts +++ b/src/modules/transaction/reconciliation/domain/usecases/managers/batch-cancel-reconciliation.manager.ts @@ -23,10 +23,13 @@ export class BatchCancelReconciliationManager extends BaseBatchUpdateStatusManag }, }); - if ([STATUS.SETTLED, STATUS.WAITING].includes(transaction.status)) { + if ( + ![STATUS.SETTLED, STATUS.WAITING].includes(transaction.status) && + !data.is_recap_transaction + ) { throw new UnprocessableEntityException({ statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Gagal! tidak bisa batalkan, karena status transaksi tidak settled`, + message: `Gagal! tidak bisa batalkan, karena status transaksi tidak settled atau waiting`, error: 'Unprocessable Entity', }); } diff --git a/src/modules/transaction/reconciliation/domain/usecases/managers/cancel-reconciliation.manager.ts b/src/modules/transaction/reconciliation/domain/usecases/managers/cancel-reconciliation.manager.ts index e187161..898f2b1 100644 --- a/src/modules/transaction/reconciliation/domain/usecases/managers/cancel-reconciliation.manager.ts +++ b/src/modules/transaction/reconciliation/domain/usecases/managers/cancel-reconciliation.manager.ts @@ -27,10 +27,13 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager parseFloat(recap.payment_total), @@ -89,9 +95,8 @@ export class RecapReconciliationManager extends BaseCustomManager { 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, + }, + ); } }