From c2b4b5ec30a44c4122fc5687ee863004e455df1d Mon Sep 17 00:00:00 2001 From: ilham Date: Tue, 28 Jun 2022 14:58:05 +0700 Subject: [PATCH] fix: rollback jurnal --- src/transaction/transaction.controller.ts | 11 +++++- src/transaction/transaction.service.ts | 46 +++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index 67ac85d..4f37830 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -132,10 +132,19 @@ export class TransactionController { }; } + @Get('rollback-jurnal/:trxId') + async rollbackJurnal(@Request() req, @Param('trxId') trxId: string) { + const data = await this.transactionService.rollbackJurnal(trxId); + return { + data, + statusCode: HttpStatus.OK, + message: 'success', + }; + } + @Get('resend-partner/success/:code') async resendSuccess(@Request() req, @Param('code') code: string) { const data = await this.transactionService.resendOrderToPartner(code, true); - return { data, statusCode: HttpStatus.OK, diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 1ecff78..b2fce8c 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1302,6 +1302,52 @@ export class TransactionService { return res; } + async rollbackJurnal(trxId: string) { + const dataTransaction = await this.transactionRepository.findOne({ + where: { + id: trxId, + }, + relations: ['product_price'], + }); + + const dataTransactionJurnal = await this.transactionJournalRepository.find({ + where: { + transaction_head: trxId, + }, + relations: ['coa'], + }); + + let dataRollbackJurnal = []; + + dataTransactionJurnal.map((it) => { + let data = { + coa_id: it.coa.id, + }; + + if (it.type == 0) { + data['credit'] = it.amount; + } else { + data['debit'] = it.amount; + } + + dataRollbackJurnal.push(data); + }); + + try { + await this.connection.transaction(async (manager) => { + await this.accountingTransaction({ + createTransaction: false, + transactionalEntityManager: manager, + transaction: dataTransaction, + amount: dataTransaction.amount, + journals: dataRollbackJurnal, + }); + }); + } catch (e) { + throw e; + } + } + async withdrawBenefit(user) { const userData = await this.userService.findExist(user);