From b574d3a39d39b5c54b787dd61af6c912152c760a Mon Sep 17 00:00:00 2001 From: Aswin Ashar Abdullah Date: Mon, 15 Jul 2024 15:24:02 +0700 Subject: [PATCH] fix(refund) perbaikan data refund --- .../migrations/1721031712642-update-refund.ts | 14 ++++++++++++++ .../transaction/refund/data/models/refund.model.ts | 3 +++ .../refund/domain/entities/refund.entity.ts | 1 + .../usecases/managers/create-refund.manager.ts | 14 +++++++------- .../refund/infrastructure/dto/refund.dto.ts | 7 +++++++ .../managers/helpers/mapping-transaction.helper.ts | 1 + 6 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 src/database/migrations/1721031712642-update-refund.ts diff --git a/src/database/migrations/1721031712642-update-refund.ts b/src/database/migrations/1721031712642-update-refund.ts new file mode 100644 index 0000000..4bbd3c3 --- /dev/null +++ b/src/database/migrations/1721031712642-update-refund.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class UpdateRefund1721031712642 implements MigrationInterface { + name = 'UpdateRefund1721031712642' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "refunds" ADD "refund_sub_total" numeric`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "refunds" DROP COLUMN "refund_sub_total"`); + } + +} diff --git a/src/modules/transaction/refund/data/models/refund.model.ts b/src/modules/transaction/refund/data/models/refund.model.ts index ae222cf..4740870 100644 --- a/src/modules/transaction/refund/data/models/refund.model.ts +++ b/src/modules/transaction/refund/data/models/refund.model.ts @@ -27,6 +27,9 @@ export class RefundModel @Column('date', { name: 'refund_date', nullable: true }) refund_date: Date; + @Column('decimal', { name: 'refund_sub_total', nullable: true }) + refund_sub_total: number; + @Column('decimal', { name: 'refund_total', nullable: true }) refund_total: number; diff --git a/src/modules/transaction/refund/domain/entities/refund.entity.ts b/src/modules/transaction/refund/domain/entities/refund.entity.ts index 85c0420..c9bf720 100644 --- a/src/modules/transaction/refund/domain/entities/refund.entity.ts +++ b/src/modules/transaction/refund/domain/entities/refund.entity.ts @@ -6,6 +6,7 @@ export interface RefundEntity extends BaseStatusEntity { code: string; request_date: Date; refund_date: Date; + refund_sub_total: number; refund_total: number; bank_name: string; diff --git a/src/modules/transaction/refund/domain/usecases/managers/create-refund.manager.ts b/src/modules/transaction/refund/domain/usecases/managers/create-refund.manager.ts index e0f87ce..1ab2bdc 100644 --- a/src/modules/transaction/refund/domain/usecases/managers/create-refund.manager.ts +++ b/src/modules/transaction/refund/domain/usecases/managers/create-refund.manager.ts @@ -17,13 +17,13 @@ import { STATUS } from 'src/core/strings/constants/base.constants'; @Injectable() export class CreateRefundManager extends BaseCreateManager { async beforeProcess(): Promise { - // if (this.data.transaction?.status != STATUS.SETTLED) { - // throw new UnprocessableEntityException({ - // statusCode: HttpStatus.UNPROCESSABLE_ENTITY, - // message: `Failed! only transaction with status ${STATUS.SETTLED} can be refund`, - // error: 'Unprocessable Entity', - // }); - // } + if (this.data.transaction?.status != STATUS.SETTLED) { + throw new UnprocessableEntityException({ + statusCode: HttpStatus.UNPROCESSABLE_ENTITY, + message: `Failed! only transaction with status ${STATUS.SETTLED} can be refund`, + error: 'Unprocessable Entity', + }); + } return; } diff --git a/src/modules/transaction/refund/infrastructure/dto/refund.dto.ts b/src/modules/transaction/refund/infrastructure/dto/refund.dto.ts index 38164b0..86a3b70 100644 --- a/src/modules/transaction/refund/infrastructure/dto/refund.dto.ts +++ b/src/modules/transaction/refund/infrastructure/dto/refund.dto.ts @@ -15,6 +15,13 @@ export class RefundDto extends BaseStatusDto implements RefundEntity { @IsString() type: RefundType; + @ApiProperty({ + type: Number, + required: false, + example: 1750000, + }) + refund_sub_total: number; + @ApiProperty({ type: Number, example: 1750000, diff --git a/src/modules/transaction/transaction/domain/usecases/managers/helpers/mapping-transaction.helper.ts b/src/modules/transaction/transaction/domain/usecases/managers/helpers/mapping-transaction.helper.ts index 6fc3475..52fc47c 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/helpers/mapping-transaction.helper.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/helpers/mapping-transaction.helper.ts @@ -45,6 +45,7 @@ export function mappingTransaction(data) { name: itemData.item_category_name, }, }, + id: itemData.id, refund: itemData.refund, qty: itemData.qty, qty_remaining: itemData.qty_remaining,