From 3720df31d855dafadf2ca46f5d6c49484e3735a0 Mon Sep 17 00:00:00 2001 From: Firman Ramdhani <33869609+firmanramdhani@users.noreply.github.com> Date: Fri, 6 Sep 2024 17:57:51 +0700 Subject: [PATCH] feat: open guard cancel recap recon and add new logic for recap recon cancel handler and change logic recap handler --- .../batch-cancel-reconciliation.manager.ts | 17 ++++-- .../managers/cancel-reconciliation.manager.ts | 43 +++++++++------ .../managers/recap-reconciliation.manager.ts | 52 +++++++++++++++---- .../reconciliation-data.orchestrator.ts | 4 +- .../infrastructure/dto/recap.dto.ts | 8 +++ .../reconciliation-data.controller.ts | 5 +- 6 files changed, 98 insertions(+), 31 deletions(-) create mode 100644 src/modules/transaction/reconciliation/infrastructure/dto/recap.dto.ts 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 6133511..e102e9a 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 @@ -43,11 +43,20 @@ export class BatchCancelReconciliationManager extends BaseBatchUpdateStatusManag payment_date: this.data.payment_date, }); + // FIXME => VALIDATION GUARD CANCEL FOR RECONCILIATION FROM CASHIER if (data.is_recap_transaction) { - throw new UnprocessableEntityException({ - statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - message: `Gagagl! tidak dapat batalkan data rekap`, - error: 'Unprocessable Entity', + // throw new UnprocessableEntityException({ + // statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + // message: `Gagagl! tidak dapat batalkan data rekap`, + // error: 'Unprocessable Entity', + // }); + + Object.assign(this.data, { + reconciliation_confirm_by: null, + reconciliation_confirm_date: null, + reconciliation_status: STATUS.PENDING, + payment_code: null, + settlement_date: null, }); } 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 a5eb3f3..0782fa6 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 @@ -37,26 +37,39 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager VALIDATION GUARD CANCEL FOR RECONCILIATION FROM CASHIER + // throw new UnprocessableEntityException({ + // statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + // message: `Gagagl! tidak dapat batalkan data rekap`, + // error: 'Unprocessable Entity', + // }); } return; } async beforeProcess(): Promise { - Object.assign(this.data, { - reconciliation_mdr: this.data.reconciliation_mdr ?? null, - reconciliation_confirm_by: this.user.name, - reconciliation_confirm_date: new Date().getTime(), - status: this.dataStatus, - reconciliation_status: this.dataStatus, - payment_date: this.data.payment_date, - settlement_date: - this.dataStatus === STATUS.REJECTED ? null : this.data.settlement_date, - }); + if (this.data.is_recap_transaction) { + Object.assign(this.data, { + reconciliation_confirm_by: null, + reconciliation_confirm_date: null, + reconciliation_status: STATUS.PENDING, + payment_code: null, + settlement_date: null, + }); + } else { + Object.assign(this.data, { + reconciliation_mdr: this.data.reconciliation_mdr ?? null, + reconciliation_confirm_by: this.user.name, + reconciliation_confirm_date: new Date().getTime(), + status: this.dataStatus, + reconciliation_status: this.dataStatus, + payment_date: this.data.payment_date, + settlement_date: + this.dataStatus === STATUS.REJECTED + ? null + : this.data.settlement_date, + }); + } return; } diff --git a/src/modules/transaction/reconciliation/domain/usecases/managers/recap-reconciliation.manager.ts b/src/modules/transaction/reconciliation/domain/usecases/managers/recap-reconciliation.manager.ts index f8a1604..bb55e3d 100644 --- a/src/modules/transaction/reconciliation/domain/usecases/managers/recap-reconciliation.manager.ts +++ b/src/modules/transaction/reconciliation/domain/usecases/managers/recap-reconciliation.manager.ts @@ -8,12 +8,18 @@ import { Between, IsNull, MoreThan, Not } from 'typeorm'; import * as _ from 'lodash'; import * as moment from 'moment'; import { EMPTY_UUID, STATUS } from 'src/core/strings/constants/base.constants'; +import { RecapReconciliationDto } from '../../../infrastructure/dto/recap.dto'; @Injectable() export class RecapReconciliationManager extends BaseCustomManager { private recapTransactions = {}; - private startOfDay = moment().startOf('day').valueOf(); - private endOfDay = moment().endOf('day').valueOf(); + private bodyFilter: any; + private paymentDate: string; + + setBodyFilter(body: RecapReconciliationDto) { + this.bodyFilter = body; + this.paymentDate = body.payment_date; + } get entityTarget(): any { return TransactionModel; @@ -37,7 +43,7 @@ export class RecapReconciliationManager extends BaseCustomManager { const total_recap = Object.keys(this.recapTransactions); + for (const recap of total_recap) { const first_transaction = this.recapTransactions[recap][0]; + const { creator_counter_no, payment_type_counter, payment_type_method_id, + payment_date, } = first_transaction; const query = { is_recap_transaction: true, - created_at: Between(this.startOfDay, this.endOfDay), + payment_date: payment_date, creator_counter_no: creator_counter_no, payment_type: payment_type_counter, }; @@ -94,9 +107,30 @@ export class RecapReconciliationManager extends BaseCustomManager { - return await this.orchestrator.recap(); + async recap(@Body() body: RecapReconciliationDto): Promise { + return await this.orchestrator.recap(body); } @Put('/batch-confirm')