feat: save otp code when reject reconciliation

pull/149/head
Firman Ramdhani 2025-06-10 16:02:05 +07:00
parent 16df6945b7
commit 94fbec0c78
4 changed files with 31 additions and 3 deletions

View File

@ -15,6 +15,12 @@ import { TransactionEntity } from 'src/modules/transaction/transaction/domain/en
@Injectable() @Injectable()
export class CancelReconciliationManager extends BaseUpdateStatusManager<TransactionEntity> { export class CancelReconciliationManager extends BaseUpdateStatusManager<TransactionEntity> {
protected payloadBody: any;
setCustomBodyRequest(body) {
this.payloadBody = body;
}
getResult(): string { getResult(): string {
return `Success active data ${this.result.id}`; return `Success active data ${this.result.id}`;
} }
@ -50,6 +56,7 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager<Transac
async beforeProcess(): Promise<void> { async beforeProcess(): Promise<void> {
if (this.data.is_recap_transaction) { if (this.data.is_recap_transaction) {
Object.assign(this.data, { Object.assign(this.data, {
otp_code: this.payloadBody?.otp_code,
reconciliation_confirm_by: null, reconciliation_confirm_by: null,
reconciliation_confirm_date: null, reconciliation_confirm_date: null,
reconciliation_status: STATUS.PENDING, reconciliation_status: STATUS.PENDING,
@ -58,6 +65,7 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager<Transac
}); });
} else { } else {
Object.assign(this.data, { Object.assign(this.data, {
otp_code: this.payloadBody?.otp_code,
reconciliation_mdr: this.data.reconciliation_mdr ?? null, reconciliation_mdr: this.data.reconciliation_mdr ?? null,
reconciliation_confirm_by: this.user.name, reconciliation_confirm_by: this.user.name,
reconciliation_confirm_date: new Date().getTime(), reconciliation_confirm_date: new Date().getTime(),
@ -70,6 +78,7 @@ export class CancelReconciliationManager extends BaseUpdateStatusManager<Transac
: this.data.settlement_date, : this.data.settlement_date,
}); });
} }
return; return;
} }

View File

@ -58,9 +58,10 @@ export class ReconciliationDataOrchestrator {
return this.batchConfirmManager.getResult(); return this.batchConfirmManager.getResult();
} }
async cancel(dataId): Promise<string> { async cancel(dataId, body): Promise<string> {
this.cancelManager.setData(dataId, STATUS.REJECTED); this.cancelManager.setData(dataId, STATUS.REJECTED);
this.cancelManager.setService(this.serviceData, TABLE_NAME.TRANSACTION); this.cancelManager.setService(this.serviceData, TABLE_NAME.TRANSACTION);
this.cancelManager.setCustomBodyRequest(body);
await this.cancelManager.execute(); await this.cancelManager.execute();
return this.cancelManager.getResult(); return this.cancelManager.getResult();
} }

View File

@ -0,0 +1,14 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsString } from 'class-validator';
export class OtpVerifyDto {
@ApiProperty({
name: 'otp_code',
type: String,
required: true,
example: '2345',
})
@IsString()
@IsNotEmpty()
otp_code: string;
}

View File

@ -16,6 +16,7 @@ import { Public } from 'src/core/guards';
import { TransactionEntity } from '../../transaction/domain/entities/transaction.entity'; import { TransactionEntity } from '../../transaction/domain/entities/transaction.entity';
import { UpdateReconciliationDto } from './dto/reconciliation.dto'; import { UpdateReconciliationDto } from './dto/reconciliation.dto';
import { RecapReconciliationDto } from './dto/recap.dto'; import { RecapReconciliationDto } from './dto/recap.dto';
import { OtpVerifyDto } from './dto/cancel-top-dto';
@ApiTags(`${MODULE_NAME.RECONCILIATION.split('-').join(' ')} - data`) @ApiTags(`${MODULE_NAME.RECONCILIATION.split('-').join(' ')} - data`)
@Controller(`v1/${MODULE_NAME.RECONCILIATION}`) @Controller(`v1/${MODULE_NAME.RECONCILIATION}`)
@ -40,8 +41,11 @@ export class ReconciliationDataController {
} }
@Patch(':id/cancel') @Patch(':id/cancel')
async cancel(@Param('id') dataId: string): Promise<string> { async cancel(
return await this.orchestrator.cancel(dataId); @Param('id') dataId: string,
@Body() body: OtpVerifyDto,
): Promise<string> {
return await this.orchestrator.cancel(dataId, body);
} }
@Put('/batch-cancel') @Put('/batch-cancel')