commit
971407612c
|
@ -20,7 +20,7 @@ export class BookingDeletedEvent
|
|||
_id: event.data.id,
|
||||
...event.data.data,
|
||||
},
|
||||
'item',
|
||||
'booking',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
});
|
||||
}
|
||||
|
|
|
@ -27,10 +27,13 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager<Transac
|
|||
},
|
||||
});
|
||||
|
||||
if ([STATUS.SETTLED, STATUS.WAITING].includes(transaction.status)) {
|
||||
if (
|
||||
![STATUS.SETTLED, STATUS.WAITING].includes(transaction.status) &&
|
||||
!this.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',
|
||||
});
|
||||
} else if (this.data.is_recap_transaction) {
|
||||
|
|
|
@ -48,6 +48,7 @@ export class IndexReconciliationManager extends BaseIndexManager<TransactionEnti
|
|||
`${this.tableName}.customer_name`,
|
||||
`${this.tableName}.creator_counter_no`,
|
||||
|
||||
`${this.tableName}.invoice_code`,
|
||||
`${this.tableName}.booking_date`,
|
||||
`${this.tableName}.payment_type`,
|
||||
`${this.tableName}.payment_type_method_id`,
|
||||
|
|
|
@ -72,16 +72,22 @@ export class RecapReconciliationManager extends BaseCustomManager<TransactionEnt
|
|||
const { creator_counter_no, payment_type, payment_type_method_id } =
|
||||
first_transaction;
|
||||
|
||||
const exist = await this.dataService.getOneByOptions({
|
||||
where: {
|
||||
let query = {
|
||||
is_recap_transaction: true,
|
||||
created_at: Between(this.startOfDay, this.endOfDay),
|
||||
creator_counter_no: creator_counter_no,
|
||||
payment_type: payment_type,
|
||||
payment_type_method_id: payment_type_method_id ?? EMPTY_UUID,
|
||||
},
|
||||
};
|
||||
|
||||
if (payment_type != 'cash')
|
||||
query['payment_type_method_id'] = payment_type_method_id ?? EMPTY_UUID;
|
||||
|
||||
const exist = await this.dataService.getOneByOptions({
|
||||
where: query,
|
||||
});
|
||||
|
||||
if (payment_type == 'cash') console.log(exist, 'das', query);
|
||||
|
||||
const new_recap = new TransactionModel();
|
||||
const total = _.sumBy(this.recapTransactions[recap], (recap) =>
|
||||
parseFloat(recap.payment_total),
|
||||
|
@ -89,9 +95,8 @@ export class RecapReconciliationManager extends BaseCustomManager<TransactionEnt
|
|||
|
||||
if (exist) {
|
||||
Object.assign(exist, {
|
||||
payment_total: Number(exist.payment_total) + total,
|
||||
payment_total_net_profit:
|
||||
Number(exist.payment_total_net_profit) + total,
|
||||
payment_total: total,
|
||||
payment_total_net_profit: total,
|
||||
editor_id: this.user.id,
|
||||
editor_name: this.user.name,
|
||||
updated_at: new Date().getTime(),
|
||||
|
|
|
@ -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,
|
||||
|
@ -49,4 +49,3 @@ export class RefundUpdatedHandler
|
|||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue