From f77fae0e164a8841b875cd07ec276ce9498b2fb9 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Mon, 18 Jul 2022 22:39:21 +0700 Subject: [PATCH 01/11] Feat: add column supplier_name and product_price at get list history user --- src/transaction/transaction.service.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 48f2b1c..e02dd67 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -530,7 +530,6 @@ export class TransactionService { if (supplier.code != 'IRS') { const parsingResponse = hitSupplier.split(' '); - console.log const newHitSupplier = { success: hitSupplier.includes('diproses'), harga: parseInt( @@ -1570,7 +1569,8 @@ export class TransactionService { ) .leftJoin('transaction.product_price', 'product_price') .leftJoin('product_price.product', 'product') - .addSelect('transaction.amount', 'price') + .leftJoin('product.supplier', 'supplier') + .addSelect('transaction.amount', 'price') .addSelect('transaction.destination') .addSelect('transaction.seri_number', 'seri_number') .addSelect('transaction.supplier_trx_id', 'transaction_code') @@ -1579,8 +1579,10 @@ export class TransactionService { .addSelect('transaction.failed_reason', 'failed_reason') .addSelect('userData.name', 'buyer') .addSelect('product.name', 'name') - .addSelect('product.id', 'product_id') - .orderBy('transaction.created_at', 'DESC'); + .addSelect('product_price.price', 'product_price') + .addSelect('product.name', 'supplier_name') + .addSelect('supplier.name', 'supplier_name') + .orderBy('transaction.created_at', 'DESC'); if (startDate && endDate) { baseQuery.andWhere( From 67e79280b2ab06f4a1d880215d7b36535d4ab795 Mon Sep 17 00:00:00 2001 From: Fadli Date: Fri, 22 Jul 2022 03:16:52 +0700 Subject: [PATCH 02/11] - fix total modal in dashboard admin --- src/transaction/transaction.service.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index e02dd67..622ab38 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1884,15 +1884,24 @@ export class TransactionService { const data = await baseQuery .select('SUM(transactions.amount) as total_amount') - .addSelect('SUM(product_price.price) as total_modal') .addSelect('SUM(product_price.mark_up_price) as total_profit') .addSelect('COUNT(transactions.id) as total_transaction') .getRawOne(); + const dataCoa = this.coaRepository + .createQueryBuilder('coa') + .where( + `coa.type = '0'` + ); + + const coa = await dataCoa + .select('SUM(coa.amount) as total_modal') + .getRawOne(); + return { + total_modal: parseInt(coa.total_modal), total_amount: parseInt(data.total_amount), total_transaction: parseInt(data.total_transaction), - total_modal: parseInt(data.total_modal), total_profit: parseInt(data.total_profit), }; } From 43cd745d5ed6cec042ddaf0a39e67c46da9fbbd0 Mon Sep 17 00:00:00 2001 From: Fadli Date: Fri, 22 Jul 2022 04:13:39 +0700 Subject: [PATCH 03/11] - fix total modal in dashboard admin filter by partner id --- src/transaction/transaction.service.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 622ab38..11d7b87 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1890,8 +1890,9 @@ export class TransactionService { const dataCoa = this.coaRepository .createQueryBuilder('coa') + .innerJoin('user', 'user', 'coa.user = user.id') .where( - `coa.type = '0'` + `coa.type = '0' and user.partner_id is not NULL and user.is_active = true and is_rejected = false` ); const coa = await dataCoa From 73d033738aef816b0ef303f89b3cee363f2d13d0 Mon Sep 17 00:00:00 2001 From: Fadli Date: Fri, 22 Jul 2022 08:57:18 +0700 Subject: [PATCH 04/11] - revert total modal in dashboard --- src/transaction/transaction.service.ts | 31 +++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 11d7b87..5367dec 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1883,24 +1883,25 @@ export class TransactionService { ); const data = await baseQuery - .select('SUM(transactions.amount) as total_amount') - .addSelect('SUM(product_price.mark_up_price) as total_profit') - .addSelect('COUNT(transactions.id) as total_transaction') - .getRawOne(); - - const dataCoa = this.coaRepository - .createQueryBuilder('coa') - .innerJoin('user', 'user', 'coa.user = user.id') - .where( - `coa.type = '0' and user.partner_id is not NULL and user.is_active = true and is_rejected = false` - ); - - const coa = await dataCoa - .select('SUM(coa.amount) as total_modal') + .select('SUM(transactions.amount) as total_amount') + .addSelect('SUM(product_price.price) as total_modal') + .addSelect('SUM(product_price.mark_up_price) as total_profit') + .addSelect('COUNT(transactions.id) as total_transaction') .getRawOne(); + // const dataCoa = this.coaRepository + // .createQueryBuilder('coa') + // .innerJoin('user', 'user', 'coa.user = user.id') + // .where( + // `coa.type = '0' and user.partner_id is not NULL and user.is_active = true and is_rejected = false` + // ); + // + // const coa = await dataCoa + // .select('SUM(coa.amount) as total_modal') + // .getRawOne(); + return { - total_modal: parseInt(coa.total_modal), + total_modal: parseInt(data.total_modal), total_amount: parseInt(data.total_amount), total_transaction: parseInt(data.total_transaction), total_profit: parseInt(data.total_profit), From 929d06331ea2eb089b7d38af55ab5814686b9bf9 Mon Sep 17 00:00:00 2001 From: Fadli Date: Sat, 23 Jul 2022 01:04:05 +0700 Subject: [PATCH 05/11] - handle when product is not active cannot hit api transaction order --- src/transaction/transaction.service.ts | 261 +++++++++++++------------ 1 file changed, 139 insertions(+), 122 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 5367dec..4a2222e 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -299,140 +299,157 @@ export class TransactionService { orderTransactionDto: OrderTransactionDto, currentUser: any, ) { - const trxId = Array(6) - .fill(null) - .map(() => { - return Math.round(Math.random() * 16).toString(16); - }) - .join(''); - //GET USER - const userData = await this.userService.findByUsername( - currentUser.username, + const productData = await this.productService.findOne( + orderTransactionDto.productCode, + 'prepaid', ); - //GET PRODUCT - const product = await this.productService.findOne( - orderTransactionDto.productCode, - 'prepaid' - ); - - const product_price = await this.productHistoryPriceService.findOne( - product.id, - userData.partner?.id, - ); - - let supervisorData = []; - let profit = product_price.mark_up_price; - - //GET COA - const coaAccount = await this.coaService.findByUser( - userData.id, - coaType.WALLET, - ); - - const coaInventory = await this.coaService.findByName( - `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, - ); - - const coaCostOfSales = await this.coaService.findByName( - `${coaType[coaType.COST_OF_SALES]}-${product.supplier.code}`, - ); - - const coaSales = await this.coaService.findByName( - `${coaType[coaType.SALES]}-SYSTEM`, - ); - - const coaExpense = await this.coaService.findByName( - `${coaType[coaType.EXPENSE]}-SYSTEM`, - ); - - if (!userData.partner) { - //GET SALES - supervisorData = await this.calculateCommission( - supervisorData, - profit, - userData, - ); - profit = supervisorData - .map((item) => { - return item.credit; - }) - .reduce((prev, curr) => { - return prev + curr; - }, 0); - - supervisorData = supervisorData.concat([ - { - coa_id: coaExpense.id, - debit: profit, - }, - ]); - } - - if (coaAccount.amount < product_price.mark_up_price + product_price.price) { + if (productData.status == 'NOT ACTIVE') { throw new HttpException( - { - statusCode: HttpStatus.INTERNAL_SERVER_ERROR, - error: `Transaction Failed because saldo not enough`, - }, - HttpStatus.INTERNAL_SERVER_ERROR, + { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: `Transaction Failed because product is not active`, + }, + HttpStatus.INTERNAL_SERVER_ERROR, ); - } + } else { - try { - await this.connection.transaction(async (manager) => { - const transactionData = new Transactions(); + const trxId = Array(6) + .fill(null) + .map(() => { + return Math.round(Math.random() * 16).toString(16); + }) + .join(''); - transactionData.id = uuid.v4(); - transactionData.amount = - product_price.mark_up_price + product_price.price; - transactionData.user = userData.id; - transactionData.status = statusTransaction.SUCCESS; - transactionData.type = typeTransaction.ORDER; - transactionData.product_price = product_price; - transactionData.destination = orderTransactionDto.destination; - transactionData.partner_trx_id = orderTransactionDto.trx_id; - transactionData.supplier_trx_id = trxId; - await manager.insert(Transactions, transactionData); + //GET USER + const userData = await this.userService.findByUsername( + currentUser.username, + ); - await this.accountingTransaction({ - createTransaction: false, - transactionalEntityManager: manager, - transaction: transactionData, - amount: transactionData.amount, - journals: [ + //GET PRODUCT + const product = await this.productService.findOne( + orderTransactionDto.productCode, + 'prepaid' + ); + + const product_price = await this.productHistoryPriceService.findOne( + product.id, + userData.partner?.id, + ); + + let supervisorData = []; + let profit = product_price.mark_up_price; + + //GET COA + const coaAccount = await this.coaService.findByUser( + userData.id, + coaType.WALLET, + ); + + const coaInventory = await this.coaService.findByName( + `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, + ); + + const coaCostOfSales = await this.coaService.findByName( + `${coaType[coaType.COST_OF_SALES]}-${product.supplier.code}`, + ); + + const coaSales = await this.coaService.findByName( + `${coaType[coaType.SALES]}-SYSTEM`, + ); + + const coaExpense = await this.coaService.findByName( + `${coaType[coaType.EXPENSE]}-SYSTEM`, + ); + + if (!userData.partner) { + //GET SALES + supervisorData = await this.calculateCommission( + supervisorData, + profit, + userData, + ); + profit = supervisorData + .map((item) => { + return item.credit; + }) + .reduce((prev, curr) => { + return prev + curr; + }, 0); + + supervisorData = supervisorData.concat([ + { + coa_id: coaExpense.id, + debit: profit, + }, + ]); + } + + if (coaAccount.amount < product_price.mark_up_price + product_price.price) { + throw new HttpException( { - coa_id: coaInventory.id, - credit: product_price.price, + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: `Transaction Failed because saldo not enough`, }, - { - coa_id: coaCostOfSales.id, - debit: product_price.price, - }, - { - coa_id: coaAccount.id, - debit: product_price.mark_up_price + product_price.price, - }, - { - // eslint-disable-next-line camelcase - coa_id: coaSales.id, - credit: product_price.mark_up_price + product_price.price, - }, - ].concat(supervisorData), + HttpStatus.INTERNAL_SERVER_ERROR, + ); + } + + try { + await this.connection.transaction(async (manager) => { + const transactionData = new Transactions(); + + transactionData.id = uuid.v4(); + transactionData.amount = + product_price.mark_up_price + product_price.price; + transactionData.user = userData.id; + transactionData.status = statusTransaction.SUCCESS; + transactionData.type = typeTransaction.ORDER; + transactionData.product_price = product_price; + transactionData.destination = orderTransactionDto.destination; + transactionData.partner_trx_id = orderTransactionDto.trx_id; + transactionData.supplier_trx_id = trxId; + await manager.insert(Transactions, transactionData); + + await this.accountingTransaction({ + createTransaction: false, + transactionalEntityManager: manager, + transaction: transactionData, + amount: transactionData.amount, + journals: [ + { + coa_id: coaInventory.id, + credit: product_price.price, + }, + { + coa_id: coaCostOfSales.id, + debit: product_price.price, + }, + { + coa_id: coaAccount.id, + debit: product_price.mark_up_price + product_price.price, + }, + { + // eslint-disable-next-line camelcase + coa_id: coaSales.id, + credit: product_price.mark_up_price + product_price.price, + }, + ].concat(supervisorData), + }); }); - }); - } catch (e) { - throw e; - } + } catch (e) { + throw e; + } - return { - trx_id: trxId, - client_trx_id: orderTransactionDto.trx_id, - product: orderTransactionDto.productCode, - amount: product_price.mark_up_price + product_price.price, - status: statusTransaction[statusTransaction.SUCCESS], - }; + return { + trx_id: trxId, + client_trx_id: orderTransactionDto.trx_id, + product: orderTransactionDto.productCode, + amount: product_price.mark_up_price + product_price.price, + status: statusTransaction[statusTransaction.SUCCESS], + }; + } } async orderTransactionProd( From f8c9e4fcd0d5f70d7be117a172d12fd36079be06 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 3 Aug 2022 19:00:52 +0700 Subject: [PATCH 06/11] - added logs in ppob callback for metro --- src/transaction/ppob_callback.controller.ts | 25 +++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index d415de3..1cbb8e1 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -37,7 +37,8 @@ export class PpobCallbackController { @Get('/metro') async getMetro(@Req() request: FastifyRequest) { const response = request.query; - + console.log('statusapani', response['status']); + console.log('statusapani2', response.toString()); if (response['message'].toLowerCase().includes('cek tagihan')) { if (response['status'] != 20) { //TODO: UPDATE GAGAL @@ -79,16 +80,22 @@ export class PpobCallbackController { statusCode: HttpStatus.BAD_REQUEST, message: 'failed to proccess', }; + } else { + + //TODO: UPDATE BERHASIL + const updateTransaction = + await this.transactionService.callbackOrderSuccess( + response['refid'], + response, + ); + + return { + updateTransaction, + statusCode: HttpStatus.OK, + message: 'success', + }; } - - //TODO: UPDATE BERHASIL - const updateTransaction = - await this.transactionService.callbackOrderSuccess( - response['refid'], - response, - ); } - this.logger.log({ requestQuery: request.query, }); From 1ef47fc7e7654720bee2ccddaebaf2357b99e727 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 3 Aug 2022 19:25:08 +0700 Subject: [PATCH 07/11] - added logs in ppob callback for metro --- src/transaction/ppob_callback.controller.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index 1cbb8e1..983d833 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -37,8 +37,7 @@ export class PpobCallbackController { @Get('/metro') async getMetro(@Req() request: FastifyRequest) { const response = request.query; - console.log('statusapani', response['status']); - console.log('statusapani2', response.toString()); + if (response['message'].toLowerCase().includes('cek tagihan')) { if (response['status'] != 20) { //TODO: UPDATE GAGAL @@ -67,7 +66,10 @@ export class PpobCallbackController { ); // } else { + console.log('statusapani', response['status']); + console.log('statusapani2', response.toString()); if (response['status'].toString() != '20') { + console.log("masukkesiniga", "msk") //TODO: UPDATE GAGAL const updateTransaction = await this.transactionService.callbackOrderFailed( From c184fdddc548a1f50a82e2581e32136c3813c921 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 3 Aug 2022 22:07:47 +0700 Subject: [PATCH 08/11] Fix: error callback order failed --- src/transaction/transaction.service.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 4a2222e..5cc2a7e 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1185,12 +1185,12 @@ export class TransactionService { relations: ['product_price'], }); - const dataMsg = callback.msg; - const failedReason = dataMsg.split('.'); + // const dataMsg = callback.msg; + // const failedReason = dataMsg.split('.'); - dataTransaction.status = statusTransaction.FAILED; - dataTransaction.callback_json = callback; - dataTransaction.failed_reason = `${failedReason[0]}, ${failedReason[1]}`; + // dataTransaction.status = statusTransaction.FAILED; + // dataTransaction.callback_json = callback; + // dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; const userData = await this.userService.findExist(dataTransaction.user); @@ -1202,6 +1202,10 @@ export class TransactionService { product_price.product.id, ); + dataTransaction.status = statusTransaction.FAILED; + dataTransaction.callback_json = callback; + dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; + //GET COA const coaAccount = await this.coaService.findByUser( userData.id, From 245e8761441a55d9212245d7833eed3bca5d082f Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 3 Aug 2022 22:47:59 +0700 Subject: [PATCH 09/11] - handle when product is not active cannot hit api transaction order prod --- src/transaction/transaction.service.ts | 98 +++++++++++++++----------- 1 file changed, 57 insertions(+), 41 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 5cc2a7e..f73f551 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -456,44 +456,59 @@ export class TransactionService { orderTransactionDto: OrderTransactionDto, currentUser: any, ) { + + const productData = await this.productService.findOne( + orderTransactionDto.productCode, + 'prepaid', + ); + + if (productData.status == 'NOT ACTIVE') { + throw new HttpException( + { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: `Transaction Failed because product is not active`, + }, + HttpStatus.INTERNAL_SERVER_ERROR, + ); + } else { let status; const amount = 0; //GET USER DATA const userData = await this.userService.findByUsername( - currentUser.username, + currentUser.username, ); //GET PRODUCT AND PRICE const product = await this.productService.findOne( - orderTransactionDto.productCode, - 'prepaid', + orderTransactionDto.productCode, + 'prepaid', ); const supplier = await this.supplierService.findByCode( - product.supplier.code, + product.supplier.code, ); let product_price = await this.productHistoryPriceService.findOne( - product.id, - userData.partner?.id, + product.id, + userData.partner?.id, ); //GET COA const coaAccount = await this.coaService.findByUser( - userData.id, - coaType.WALLET, + userData.id, + coaType.WALLET, ); const coaInventory = await this.coaService.findByName( - `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, + `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, ); const coaCostOfSales = await this.coaService.findByName( - `${coaType[coaType.COST_OF_SALES]}-${product.supplier.code}`, + `${coaType[coaType.COST_OF_SALES]}-${product.supplier.code}`, ); const coaSales = await this.coaService.findByName( - `${coaType[coaType.SALES]}-SYSTEM`, + `${coaType[coaType.SALES]}-SYSTEM`, ); if (orderTransactionDto.bill_trx_id) { @@ -507,11 +522,11 @@ export class TransactionService { } catch (e) { if (e instanceof EntityNotFoundError) { throw new HttpException( - { - statusCode: HttpStatus.NOT_FOUND, - error: 'Bill not found', - }, - HttpStatus.NOT_FOUND, + { + statusCode: HttpStatus.NOT_FOUND, + error: 'Bill not found', + }, + HttpStatus.NOT_FOUND, ); } else { throw e; @@ -521,27 +536,27 @@ export class TransactionService { if (coaAccount.amount < product_price.mark_up_price + product_price.price) { throw new HttpException( - { - statusCode: HttpStatus.INTERNAL_SERVER_ERROR, - error: `Transaction Failed because saldo not enough`, - }, - HttpStatus.INTERNAL_SERVER_ERROR, + { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: `Transaction Failed because saldo not enough`, + }, + HttpStatus.INTERNAL_SERVER_ERROR, ); } //HIT API SUPPLIER const trxId = Array(6) - .fill(null) - .map(() => { - return Math.round(Math.random() * 16).toString(16); - }) - .join(''); + .fill(null) + .map(() => { + return Math.round(Math.random() * 16).toString(16); + }) + .join(''); let hitSupplier = await doTransaction( - orderTransactionDto.productCode, - orderTransactionDto.destination, - trxId, - supplier, + orderTransactionDto.productCode, + orderTransactionDto.destination, + trxId, + supplier, ); // let hitSupplier; @@ -550,12 +565,12 @@ export class TransactionService { const newHitSupplier = { success: hitSupplier.includes('diproses'), harga: parseInt( - parsingResponse[parsingResponse.length - 2].replace(/\./g,' '), + parsingResponse[parsingResponse.length - 2].replace(/\./g, ' '), ), msg: hitSupplier, }; hitSupplier = newHitSupplier; - if(orderTransactionDto.bill_trx_id !== null){ + if (orderTransactionDto.bill_trx_id !== null) { hitSupplier.harga = product_price.price; } } @@ -575,9 +590,9 @@ export class TransactionService { product_price.endDate = new Date(); costInventory = hitSupplier.harga; const listActivePrice = - await this.productHistoryPriceService.getAllActivePriceByProduct( - product.id, - ); + await this.productHistoryPriceService.getAllActivePriceByProduct( + product.id, + ); await this.productHistoryPriceService.updateEndDate(product.id); @@ -604,7 +619,7 @@ export class TransactionService { transactionData.id = uuid.v4(); transactionData.amount = - product_price.mark_up_price + product_price.price; + product_price.mark_up_price + product_price.price; transactionData.user = userData.id; transactionData.type = typeTransaction.ORDER; transactionData.product_price = product_price; @@ -618,11 +633,11 @@ export class TransactionService { status = statusTransaction[transactionData.status]; await this.transactionRepository.insert(transactionData); throw new HttpException( - { - statusCode: HttpStatus.INTERNAL_SERVER_ERROR, - error: hitSupplier.msg, - }, - HttpStatus.INTERNAL_SERVER_ERROR, + { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: hitSupplier.msg, + }, + HttpStatus.INTERNAL_SERVER_ERROR, ); } else { transactionData.status = statusTransaction.PENDING; @@ -669,6 +684,7 @@ export class TransactionService { status: status, }; } + } async orderTransactionBillProd( orderTransactionDto: OrderTransactionDto, From ee4314c66e05b1d7b5f907c4dc3ebf0a43630bd9 Mon Sep 17 00:00:00 2001 From: Fadli Date: Thu, 4 Aug 2022 18:06:08 +0700 Subject: [PATCH 10/11] - add auto update price when getting callback metro --- src/transaction/transaction.service.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index f73f551..0a22b2e 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -33,6 +33,8 @@ export class TransactionService { constructor( @InjectRepository(Transactions) private transactionRepository: Repository, + @InjectRepository(ProductHistoryPrice) + private productHistoryPriceRepository: Repository, @InjectRepository(TransactionJournal) private transactionJournalRepository: Repository, @InjectRepository(COA) @@ -1221,6 +1223,9 @@ export class TransactionService { dataTransaction.status = statusTransaction.FAILED; dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; + if (callback['price'] != dataTransaction.product_price.price) { + dataTransaction.product_price.price = callback['price'] + } //GET COA const coaAccount = await this.coaService.findByUser( @@ -1307,6 +1312,10 @@ export class TransactionService { } dataTransaction.callback_json = callback; + if (callback['price'] != dataTransaction.product_price.price) { + dataTransaction.product_price.price = callback['price'] + } + const userData = await this.userService.findExist(dataTransaction.user); let supervisorData = []; From 92b71ec274c30fcf20f206e9ca6e22681ba7a75b Mon Sep 17 00:00:00 2001 From: Fadli Date: Thu, 4 Aug 2022 18:43:44 +0700 Subject: [PATCH 11/11] - add auto update price when getting callback metro --- src/transaction/transaction.service.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 0a22b2e..bba3198 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -33,8 +33,6 @@ export class TransactionService { constructor( @InjectRepository(Transactions) private transactionRepository: Repository, - @InjectRepository(ProductHistoryPrice) - private productHistoryPriceRepository: Repository, @InjectRepository(TransactionJournal) private transactionJournalRepository: Repository, @InjectRepository(COA)