From cfd36873ac4d05da2c8f57c9242dce452ffee242 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Fri, 5 Aug 2022 22:49:32 +0700 Subject: [PATCH 01/16] Feat: add column and function balance_remaining --- src/transaction/entities/transactions.entity.ts | 3 +++ src/transaction/transaction.service.ts | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/transaction/entities/transactions.entity.ts b/src/transaction/entities/transactions.entity.ts index fb1aed7..493992f 100644 --- a/src/transaction/entities/transactions.entity.ts +++ b/src/transaction/entities/transactions.entity.ts @@ -10,6 +10,9 @@ export class Transactions extends BaseModel { @Column() amount: number; + @Column() + balance_remaining: number; + @Column() status: statusTransaction; diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 793cb68..63dc436 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -627,6 +627,7 @@ export class TransactionService { transactionData.partner_trx_id = orderTransactionDto.trx_id; transactionData.supplier_trx_id = trxId; transactionData.check_bill = orderTransactionDto.bill_trx_id; + transactionData.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; if (!hitSupplier.success) { transactionData.status = statusTransaction.FAILED; @@ -1236,6 +1237,12 @@ export class TransactionService { coaType.WALLET, ); + dataTransaction.status = statusTransaction.FAILED; + dataTransaction.callback_json = callback; + dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; + dataTransaction.balance_remaining = coaAccount.amount + product_price.mark_up_price + product_price.price; + + const coaInventory = await this.coaService.findByName( `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, ); From 5ec93b43aa93e0906d0b94507b29fc2abbafd274 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Mon, 8 Aug 2022 12:26:06 +0700 Subject: [PATCH 02/16] Feat: add column balance_remaining at get list history-user --- 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 63dc436..ebf00dd 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1632,7 +1632,8 @@ export class TransactionService { .leftJoin('product.supplier', 'supplier') .addSelect('transaction.amount', 'price') .addSelect('transaction.destination') - .addSelect('transaction.seri_number', 'seri_number') + .addSelect('transaction.balance_remaining', 'balance_remaining') + .addSelect('transaction.seri_number', 'seri_number') .addSelect('transaction.supplier_trx_id', 'transaction_code') .addSelect('transaction.status', 'status') .addSelect('transaction.partner_trx_id', 'partner_transaction_code') From 3603da8977772d394e9e9a4677a047abacdc20c0 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Tue, 9 Aug 2022 20:31:47 +0700 Subject: [PATCH 03/16] Feat: add try catch at callback metro --- src/transaction/ppob_callback.controller.ts | 125 ++++++++++++-------- 1 file changed, 75 insertions(+), 50 deletions(-) diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index 983d833..e75846d 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -1,7 +1,15 @@ -import { Controller, Get, HttpStatus, Logger, Req } from '@nestjs/common'; +import { + Controller, + Get, + HttpException, + HttpStatus, + Logger, + Req, +} from '@nestjs/common'; import { TransactionService } from './transaction.service'; import { FastifyRequest } from 'fastify'; import { Public } from '../auth/public.decorator'; +import { EntityNotFoundError } from 'typeorm'; @Controller({ path: 'ppob_callback', @@ -20,15 +28,14 @@ export class PpobCallbackController { if (response['statuscode'] == 2) { //TODO: UPDATE GAGAL await this.transactionService.checkCallbackOrderFailed( - response['clientid'], - response, - ); + response['clientid'], + response, + ); } else { - //TODO: UPDATE BERHASIL await this.transactionService.checkCallbackOrderSuccess( - response['clientid'], - response, + response['clientid'], + response, ); } } @@ -36,60 +43,64 @@ export class PpobCallbackController { @Public() @Get('/metro') async getMetro(@Req() request: FastifyRequest) { - const response = request.query; + try { + const response = request.query; - if (response['message'].toLowerCase().includes('cek tagihan')) { - if (response['status'] != 20) { - //TODO: UPDATE GAGAL - await this.transactionService.updateBill( + if (response['message'].toLowerCase().includes('cek tagihan')) { + if (response['status'] != 20) { + //TODO: UPDATE GAGAL + await this.transactionService.updateBill( response['refid'], null, null, false, response['message'], - ); + ); - return { - statusCode: HttpStatus.OK, - message: 'success', - }; - } + return { + statusCode: HttpStatus.OK, + message: 'success', + }; + } - const splitMessage = response['message'].split('"'); - //TODO: UPDATE BERHASIL - await this.transactionService.updateBill( + const splitMessage = response['message'].split('"'); + + //TODO: UPDATE BERHASIL + await this.transactionService.updateBill( response['refid'], Number(splitMessage[21].replace(/^\D+/g, '')), Number(splitMessage[17].replace(/^\D+/g, '')), true, response['message'], - ); - // - } 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 = + ); + // + } 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( - response['refid'], - response, + response['refid'], + response, ); - return { - updateTransaction, - statusCode: HttpStatus.BAD_REQUEST, - message: 'failed to proccess', - }; - } else { + return { + updateTransaction, + statusCode: HttpStatus.BAD_REQUEST, + message: 'failed to proccess', + }; + } //TODO: UPDATE BERHASIL const updateTransaction = - await this.transactionService.callbackOrderSuccess( - response['refid'], - response, - ); + await this.transactionService.callbackOrderSuccess( + response['refid'], + response, + ); return { updateTransaction, @@ -97,14 +108,28 @@ export class PpobCallbackController { message: 'success', }; } - } - this.logger.log({ - requestQuery: request.query, - }); - return { - statusCode: HttpStatus.OK, - message: 'success', - }; + this.logger.log({ + requestQuery: request.query, + }); + + return { + statusCode: HttpStatus.OK, + message: 'success', + }; + } catch (e) { + if (e instanceof EntityNotFoundError) { + throw new HttpException( + { + statusCode: HttpStatus.NOT_FOUND, + error: 'Error callback', + message: e + }, + HttpStatus.NOT_FOUND, + ); + } else { + throw e; + } + } } } From eb18eb501bb91cd2d03bff1b9fe162abf6b0b6a2 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 03:22:26 +0700 Subject: [PATCH 04/16] - added logs for auto update price --- src/transaction/transaction.service.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index ebf00dd..c9c66e5 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1223,9 +1223,12 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; + console.log("inipricetable", dataTransaction.product_price.price) + console.log("inipricecallback", callback['price']) if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { + console.log("mskupdt", "msk") dataTransaction.product_price.price = callback['price'] } } From e0c52e55056fdee5800913cb8c41298362c2ed96 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 10 Aug 2022 11:22:58 +0700 Subject: [PATCH 05/16] Feat: add logs at callback failed --- src/transaction/ppob_callback.controller.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index e75846d..be25a30 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -82,8 +82,10 @@ export class PpobCallbackController { console.log('masukkesiniga', 'msk'); //TODO: UPDATE GAGAL + console.log('gagal') const updateTransaction = - await this.transactionService.callbackOrderFailed( + console.log('transaction failed') + await this.transactionService.callbackOrderFailed( response['refid'], response, ); @@ -96,6 +98,7 @@ export class PpobCallbackController { } //TODO: UPDATE BERHASIL + console.log('berhasil') const updateTransaction = await this.transactionService.callbackOrderSuccess( response['refid'], From 4298366e56887502750a602625e9e25e38f48c21 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 10 Aug 2022 14:05:12 +0700 Subject: [PATCH 06/16] Feat: add query productPriceRepository --- src/transaction/transaction.module.ts | 2 ++ src/transaction/transaction.service.ts | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/transaction/transaction.module.ts b/src/transaction/transaction.module.ts index 5e7c0ee..f797d0b 100644 --- a/src/transaction/transaction.module.ts +++ b/src/transaction/transaction.module.ts @@ -12,6 +12,7 @@ import { UsersModule } from 'src/users/users.module'; import { ConfigurableModule } from '../configurable/configurable.module'; import { CheckBillHistory } from './entities/check-bill-history.entity'; import { CallbackPartner } from './entities/callback-partner.entity'; +import {ProductHistoryPrice} from "../product/entities/product-history-price.entity"; @Module({ imports: [ @@ -21,6 +22,7 @@ import { CallbackPartner } from './entities/callback-partner.entity'; Transactions, CheckBillHistory, CallbackPartner, + ProductHistoryPrice, ]), ProductModule, ConfigurableModule, diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index c9c66e5..97c99e1 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -35,6 +35,8 @@ export class TransactionService { private transactionRepository: Repository, @InjectRepository(TransactionJournal) private transactionJournalRepository: Repository, + @InjectRepository(ProductHistoryPrice) + private productPriceRepository: Repository, @InjectRepository(COA) private coaRepository: Repository, @InjectRepository(CheckBillHistory) @@ -1202,6 +1204,12 @@ export class TransactionService { relations: ['product_price'], }); + const dataProductPrice = await this.productPriceRepository.findOne({ + where: { + id:dataTransaction.product_price + } + }); + // const dataMsg = callback.msg; // const failedReason = dataMsg.split('.'); @@ -1223,13 +1231,15 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; - console.log("inipricetable", dataTransaction.product_price.price) - console.log("inipricecallback", callback['price']) + // console.log("inipricetable", dataTransaction.product_price.price) + // console.log("inipricecallback", callback['price']) if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { + console.log("inipricetable", dataTransaction.product_price.price) + console.log("inipricecallback", callback['price']) console.log("mskupdt", "msk") - dataTransaction.product_price.price = callback['price'] + dataProductPrice.price = callback['price'] } } } From 2a6f0faae3f7a18bac437be7e0d513880593e1c0 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 10 Aug 2022 15:56:10 +0700 Subject: [PATCH 07/16] Fix: query productPriceRepository --- src/transaction/transaction.module.ts | 2 +- src/transaction/transaction.service.ts | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/transaction/transaction.module.ts b/src/transaction/transaction.module.ts index f797d0b..ff4b2f2 100644 --- a/src/transaction/transaction.module.ts +++ b/src/transaction/transaction.module.ts @@ -22,7 +22,7 @@ import {ProductHistoryPrice} from "../product/entities/product-history-price.ent Transactions, CheckBillHistory, CallbackPartner, - ProductHistoryPrice, + // ProductHistoryPrice, ]), ProductModule, ConfigurableModule, diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 97c99e1..f11399c 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -35,8 +35,8 @@ export class TransactionService { private transactionRepository: Repository, @InjectRepository(TransactionJournal) private transactionJournalRepository: Repository, - @InjectRepository(ProductHistoryPrice) - private productPriceRepository: Repository, + // @InjectRepository(ProductHistoryPrice) + // private productPriceRepository: Repository, @InjectRepository(COA) private coaRepository: Repository, @InjectRepository(CheckBillHistory) @@ -1204,11 +1204,11 @@ export class TransactionService { relations: ['product_price'], }); - const dataProductPrice = await this.productPriceRepository.findOne({ - where: { - id:dataTransaction.product_price - } - }); + // const dataProductPrice = await this.productPriceRepository.findOne({ + // where: { + // id:dataTransaction.product_price + // } + // }); // const dataMsg = callback.msg; // const failedReason = dataMsg.split('.'); @@ -1239,7 +1239,7 @@ export class TransactionService { console.log("inipricetable", dataTransaction.product_price.price) console.log("inipricecallback", callback['price']) console.log("mskupdt", "msk") - dataProductPrice.price = callback['price'] + dataTransaction.product_price.price = callback['price'] } } } From ff212020a19415ddbd3cf930ae770d838d8f01fe Mon Sep 17 00:00:00 2001 From: Hasta Ragil Saputra Date: Wed, 10 Aug 2022 17:46:01 +0700 Subject: [PATCH 08/16] fix: check partner url before calling the callback --- src/transaction/transaction.service.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index f11399c..6850d17 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1481,14 +1481,26 @@ export class TransactionService { coaType.WALLET, ); + if (!partnerData.callback_url) { + this.logger.error(`Call to partner failed, reason: no callback url`); + return false; + } + const url = `${partnerData.callback_url}?status=${status}&memberID=${partnerData.code}&trxid=${trxId}&harga=${harga}&product=${productCode}&dest=${destination}&seriNumber=${seriNumber}&message=${message}&saldo=${coaAccount.amount}`; const result = await this.callbackPartnerRepository.insert({ partner_trx_id: partnerId, trx_id: trxId, url: url, }); - const res = await axios.get(url); - return res; + + try { + const res = await axios.get(url); + + return res; + } catch (e) { + this.logger.error(`Call to partner failed, reason: ${e.message}`); + return false; + } } async rollbackJurnal(trxId: string[]) { From 576336661a5603f702853f6da38a30b6a336cc09 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 10 Aug 2022 21:21:48 +0700 Subject: [PATCH 09/16] Fix: query productPriceRepository --- src/transaction/transaction.module.ts | 2 +- src/transaction/transaction.service.ts | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/transaction/transaction.module.ts b/src/transaction/transaction.module.ts index ff4b2f2..f797d0b 100644 --- a/src/transaction/transaction.module.ts +++ b/src/transaction/transaction.module.ts @@ -22,7 +22,7 @@ import {ProductHistoryPrice} from "../product/entities/product-history-price.ent Transactions, CheckBillHistory, CallbackPartner, - // ProductHistoryPrice, + ProductHistoryPrice, ]), ProductModule, ConfigurableModule, diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 6850d17..a9ad053 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -35,8 +35,8 @@ export class TransactionService { private transactionRepository: Repository, @InjectRepository(TransactionJournal) private transactionJournalRepository: Repository, - // @InjectRepository(ProductHistoryPrice) - // private productPriceRepository: Repository, + @InjectRepository(ProductHistoryPrice) + private productPriceRepository: Repository, @InjectRepository(COA) private coaRepository: Repository, @InjectRepository(CheckBillHistory) @@ -1204,11 +1204,13 @@ export class TransactionService { relations: ['product_price'], }); - // const dataProductPrice = await this.productPriceRepository.findOne({ - // where: { - // id:dataTransaction.product_price - // } - // }); + console.log(dataTransaction.product_price, 'productPrice') + + const dataProductPrice = await this.productPriceRepository.findOne({ + where: { + id: dataTransaction.product_price, + } + }); // const dataMsg = callback.msg; // const failedReason = dataMsg.split('.'); @@ -1231,15 +1233,13 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; - // console.log("inipricetable", dataTransaction.product_price.price) - // console.log("inipricecallback", callback['price']) + console.log("inipricetable", dataTransaction.product_price.price) + console.log("inipricecallback", callback['price']) if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { - console.log("inipricetable", dataTransaction.product_price.price) - console.log("inipricecallback", callback['price']) console.log("mskupdt", "msk") - dataTransaction.product_price.price = callback['price'] + dataProductPrice.price = callback['price'] } } } From eec61277c2d109b94e06f16dec8cee437d8103da Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 22:30:17 +0700 Subject: [PATCH 10/16] - fix product price auto update getting from calback in metro - revert logs in ppob callback metro --- src/transaction/ppob_callback.controller.ts | 40 ++++++++++----------- src/transaction/transaction.service.ts | 12 ++----- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/src/transaction/ppob_callback.controller.ts b/src/transaction/ppob_callback.controller.ts index be25a30..99f3cc7 100644 --- a/src/transaction/ppob_callback.controller.ts +++ b/src/transaction/ppob_callback.controller.ts @@ -79,37 +79,33 @@ export class PpobCallbackController { console.log('statusapani2', response.toString()); if (response['status'].toString() != '20') { - console.log('masukkesiniga', 'msk'); - //TODO: UPDATE GAGAL - console.log('gagal') const updateTransaction = - console.log('transaction failed') - await this.transactionService.callbackOrderFailed( - response['refid'], - response, - ); + await this.transactionService.callbackOrderFailed( + response['refid'], + response, + ); return { updateTransaction, 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 - console.log('berhasil') - const updateTransaction = - await this.transactionService.callbackOrderSuccess( - response['refid'], - response, - ); - - return { - updateTransaction, - statusCode: HttpStatus.OK, - message: 'success', - }; } this.logger.log({ diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index a9ad053..17fd7da 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1204,14 +1204,6 @@ export class TransactionService { relations: ['product_price'], }); - console.log(dataTransaction.product_price, 'productPrice') - - const dataProductPrice = await this.productPriceRepository.findOne({ - where: { - id: dataTransaction.product_price, - } - }); - // const dataMsg = callback.msg; // const failedReason = dataMsg.split('.'); @@ -1239,7 +1231,7 @@ export class TransactionService { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { console.log("mskupdt", "msk") - dataProductPrice.price = callback['price'] + dataTransaction.product_price.price = callback['price'].toInt() } } } @@ -1338,7 +1330,7 @@ export class TransactionService { if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { - dataTransaction.product_price.price = callback['price'] + dataTransaction.product_price.price = callback['price'].toInt() } } } From 5078177b6ffe758afbc5d41629bfe6d7f27a9385 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 22:40:50 +0700 Subject: [PATCH 11/16] - fix product price auto update getting from calback in metro - revert logs in ppob callback metro --- src/transaction/transaction.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 17fd7da..d750fdd 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1231,7 +1231,7 @@ export class TransactionService { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { console.log("mskupdt", "msk") - dataTransaction.product_price.price = callback['price'].toInt() + dataTransaction.product_price.price = parseInt(callback['price']) } } } @@ -1330,7 +1330,7 @@ export class TransactionService { if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { - dataTransaction.product_price.price = callback['price'].toInt() + dataTransaction.product_price.price = parseInt(callback['price']) } } } From b60ff9ebdb21c91801e101ad97ed52d69d112aeb Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 23:04:49 +0700 Subject: [PATCH 12/16] - fix product price auto update getting from calback in metro - revert logs in ppob callback metro --- src/transaction/transaction.service.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index d750fdd..5c15528 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1225,16 +1225,16 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; - console.log("inipricetable", dataTransaction.product_price.price) - console.log("inipricecallback", callback['price']) - if(callback['message']) { - if (callback['message'].includes('METRO')) { - if (callback['price'] != dataTransaction.product_price.price) { - console.log("mskupdt", "msk") - dataTransaction.product_price.price = parseInt(callback['price']) - } - } - } + // console.log("inipricetable", dataTransaction.product_price.price) + // console.log("inipricecallback", callback['price']) + // if(callback['message']) { + // if (callback['message'].includes('METRO')) { + // if (callback['price'] != dataTransaction.product_price.price) { + // console.log("mskupdt", "msk") + // dataTransaction.product_price.price = parseInt(callback['price']) + // } + // } + // } //GET COA const coaAccount = await this.coaService.findByUser( @@ -1246,6 +1246,7 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; dataTransaction.balance_remaining = coaAccount.amount + product_price.mark_up_price + product_price.price; + dataTransaction.product_price.price = parseInt(callback['price']) const coaInventory = await this.coaService.findByName( From d251cadb0d9f016c53e7b3c9a6052bce5741eeb6 Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 23:12:31 +0700 Subject: [PATCH 13/16] - revert auto update price logs --- src/transaction/transaction.service.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 5c15528..3dbf8cf 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1225,16 +1225,16 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; - // console.log("inipricetable", dataTransaction.product_price.price) - // console.log("inipricecallback", callback['price']) - // if(callback['message']) { - // if (callback['message'].includes('METRO')) { - // if (callback['price'] != dataTransaction.product_price.price) { - // console.log("mskupdt", "msk") - // dataTransaction.product_price.price = parseInt(callback['price']) - // } - // } - // } + console.log("inipricetable", dataTransaction.product_price.price) + console.log("inipricecallback", callback['price']) + if(callback['message']) { + if (callback['message'].includes('METRO')) { + if (callback['price'] != dataTransaction.product_price.price) { + console.log("mskupdt", "msk") + dataTransaction.product_price.price = parseInt(callback['price']) + } + } + } //GET COA const coaAccount = await this.coaService.findByUser( @@ -1246,8 +1246,6 @@ export class TransactionService { dataTransaction.callback_json = callback; dataTransaction.failed_reason = `Trx ${product.code} ke ${dataTransaction.destination} gagal`; dataTransaction.balance_remaining = coaAccount.amount + product_price.mark_up_price + product_price.price; - dataTransaction.product_price.price = parseInt(callback['price']) - const coaInventory = await this.coaService.findByName( `${coaType[coaType.INVENTORY]}-${product.supplier.code}`, From 0b9df3006a16dbc9263e5f85cb225ab0be96131a Mon Sep 17 00:00:00 2001 From: Fadli Date: Wed, 10 Aug 2022 23:20:30 +0700 Subject: [PATCH 14/16] - fix auto update price and add new repository for product_history_price --- src/transaction/transaction.service.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 3dbf8cf..6685405 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -1204,6 +1204,12 @@ export class TransactionService { relations: ['product_price'], }); + const dataProductHistoryPrice = await this.productPriceRepository.findOne({ + where: { + id: dataTransaction.product_price.id, + }, + }); + // const dataMsg = callback.msg; // const failedReason = dataMsg.split('.'); @@ -1231,7 +1237,7 @@ export class TransactionService { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { console.log("mskupdt", "msk") - dataTransaction.product_price.price = parseInt(callback['price']) + dataProductHistoryPrice.price = parseInt(callback['price']) } } } @@ -1262,6 +1268,7 @@ export class TransactionService { try { await this.connection.transaction(async (manager) => { await manager.save(dataTransaction); + await manager.save(dataProductHistoryPrice); await this.accountingTransaction({ createTransaction: false, @@ -1315,6 +1322,12 @@ export class TransactionService { relations: ['product_price'], }); + const dataProductHistoryPrice = await this.productPriceRepository.findOne({ + where: { + id: dataTransaction.product_price.id, + }, + }); + dataTransaction.status = statusTransaction.SUCCESS; if(callback['sn']){ dataTransaction.seri_number = callback['sn']; @@ -1329,7 +1342,7 @@ export class TransactionService { if(callback['message']) { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { - dataTransaction.product_price.price = parseInt(callback['price']) + dataProductHistoryPrice.price = parseInt(callback['price']) } } } @@ -1379,6 +1392,7 @@ export class TransactionService { try { await this.connection.transaction(async (manager) => { await manager.save(dataTransaction); + await manager.save(dataProductHistoryPrice) await this.accountingTransaction({ createTransaction: false, From d2bd88c6ac05efe21320558aecbf2d3e18e8e2b9 Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Wed, 10 Aug 2022 23:52:06 +0700 Subject: [PATCH 15/16] Feat: add response mark_up_price at user history --- src/transaction/transaction.service.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 6685405..e823456 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -629,7 +629,7 @@ export class TransactionService { transactionData.partner_trx_id = orderTransactionDto.trx_id; transactionData.supplier_trx_id = trxId; transactionData.check_bill = orderTransactionDto.bill_trx_id; - transactionData.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; + transactionData.balance_remaining = coaAccount.amount; if (!hitSupplier.success) { transactionData.status = statusTransaction.FAILED; @@ -1237,7 +1237,7 @@ export class TransactionService { if (callback['message'].includes('METRO')) { if (callback['price'] != dataTransaction.product_price.price) { console.log("mskupdt", "msk") - dataProductHistoryPrice.price = parseInt(callback['price']) + dataTransaction.product_price.price = parseInt(callback['price']) } } } @@ -1349,12 +1349,19 @@ export class TransactionService { const userData = await this.userService.findExist(dataTransaction.user); + const coaAccount = await this.coaService.findByUser( + userData.id, + coaType.WALLET, + ); + let supervisorData = []; const product_price = await this.productHistoryPriceService.findById( dataTransaction.product_price.id, ); + let costInventory = product_price.price; + const product = await this.productService.findOneById( product_price.product.id, ); @@ -1366,6 +1373,8 @@ export class TransactionService { `${coaType[coaType.EXPENSE]}-SYSTEM`, ); + dataTransaction.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; + if (userData.partner == null) { //GET SALES supervisorData = await this.calculateCommission( @@ -1671,6 +1680,7 @@ export class TransactionService { .addSelect('userData.name', 'buyer') .addSelect('product.name', 'name') .addSelect('product_price.price', 'product_price') + .addSelect('product_price.mark_up_price', 'mark_up_price') .addSelect('product.name', 'supplier_name') .addSelect('supplier.name', 'supplier_name') .orderBy('transaction.created_at', 'DESC'); From c1c22560d58ff6b67764dee9633fa1be18d2aeef Mon Sep 17 00:00:00 2001 From: mfadiln2018 Date: Fri, 12 Aug 2022 21:36:15 +0700 Subject: [PATCH 16/16] Fix: balance remaining --- src/transaction/transaction.service.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index e823456..5271d07 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -629,7 +629,7 @@ export class TransactionService { transactionData.partner_trx_id = orderTransactionDto.trx_id; transactionData.supplier_trx_id = trxId; transactionData.check_bill = orderTransactionDto.bill_trx_id; - transactionData.balance_remaining = coaAccount.amount; + transactionData.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; if (!hitSupplier.success) { transactionData.status = statusTransaction.FAILED; @@ -1349,19 +1349,12 @@ export class TransactionService { const userData = await this.userService.findExist(dataTransaction.user); - const coaAccount = await this.coaService.findByUser( - userData.id, - coaType.WALLET, - ); - let supervisorData = []; const product_price = await this.productHistoryPriceService.findById( dataTransaction.product_price.id, ); - let costInventory = product_price.price; - const product = await this.productService.findOneById( product_price.product.id, ); @@ -1373,7 +1366,7 @@ export class TransactionService { `${coaType[coaType.EXPENSE]}-SYSTEM`, ); - dataTransaction.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; + // dataTransaction.balance_remaining = coaAccount.amount - product_price.mark_up_price - costInventory; if (userData.partner == null) { //GET SALES