From 89d0895ff3365687a08788b65eb9fa866f34f719 Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 09:38:18 +0700 Subject: [PATCH 1/7] fix: order transaction --- src/transaction/dto/order-transaction.dto.ts | 2 ++ src/transaction/transaction.service.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/transaction/dto/order-transaction.dto.ts b/src/transaction/dto/order-transaction.dto.ts index 6975328..c492017 100644 --- a/src/transaction/dto/order-transaction.dto.ts +++ b/src/transaction/dto/order-transaction.dto.ts @@ -6,4 +6,6 @@ export class OrderTransactionDto { @IsNotEmpty() destination: string; + + trx_id: string; } diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 86e6e7b..b4e3c30 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -377,6 +377,7 @@ export class TransactionService { transactionData.type = typeTransaction.ORDER; transactionData.product_price = product_price; transactionData.destination = orderTransactionDto.destination; + transactionData.partner_trx_id = orderTransactionDto.trx_id; await manager.insert(Transactions, transactionData); await this.accountingTransaction({ @@ -458,6 +459,7 @@ export class TransactionService { 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; if (!hitSupplier.success) { From 1886ef160c6f39afc62c3b65529914a775fd5aad Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 09:44:15 +0700 Subject: [PATCH 2/7] fix: transaction for partner --- src/transaction/transaction.service.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index b4e3c30..be3a07a 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -292,6 +292,13 @@ 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, @@ -378,6 +385,7 @@ export class TransactionService { transactionData.product_price = product_price; transactionData.destination = orderTransactionDto.destination; transactionData.partner_trx_id = orderTransactionDto.trx_id; + transactionData.partner_trx_id = trxId; await manager.insert(Transactions, transactionData); await this.accountingTransaction({ @@ -410,7 +418,13 @@ export class TransactionService { throw e; } - return true; + 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( @@ -490,7 +504,13 @@ export class TransactionService { await this.productHistoryPriceService.create(newProductPrice); } - return hitSupplier; + return { + trx_id: trxId, + client_trx_id: orderTransactionDto.trx_id, + product: orderTransactionDto.productCode, + amount: transactionData.amount, + status: statusTransaction[transactionData.status], + }; } async createDepositReturn(currentUser, depositReturnDto: DepositReturnDto) { From faad1b6ba79a9976dd2e0b42050b1122dde3f65c Mon Sep 17 00:00:00 2001 From: ilham Date: Thu, 30 Dec 2021 22:54:45 +0700 Subject: [PATCH 3/7] fix: filter by supperior --- src/users/users.service.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/users/users.service.ts b/src/users/users.service.ts index 5ad94db..e5fcb5a 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -149,11 +149,11 @@ export class UsersService { }); } - if(type){ - if(type == 'partner'){ - baseQuery.where('user.partner_id is not null') + if (type) { + if (type == 'partner') { + baseQuery.where('user.partner_id is not null'); } else { - baseQuery.where('user.partner_id is null') + baseQuery.where('user.partner_id is null'); } } From d66e6eed93306bf76dc199c0a78d0d324e387168 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:11:33 +0700 Subject: [PATCH 4/7] fix: transaction --- src/transaction/transaction.controller.ts | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index 0518dee..ada8c68 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -197,6 +197,29 @@ export class TransactionController { }; } + @Get('history-user/:id') + async getHistoryTransactionUserByParam( + @Query('page') page: number, + @Query('pageSize') pageSize: number, + @Query('start') startDate: string, + @Query('end') endDate: string, + @Param('id', ParseUUIDPipe) id: string, + ) { + const data = await this.transactionService.transactionHistoryByUser( + page, + id, + startDate == 'null' ? null : startDate, + endDate == 'null' ? null : endDate, + pageSize, + ); + + return { + ...data, + statusCode: HttpStatus.OK, + message: 'success', + }; + } + @Put('deposit-return/confirmation/:id/:status') async confirmDepositReturn( @Param('id', ParseUUIDPipe) id: string, From a30a81cbb6d6338ad908948c4c1d2ffcda09c3aa Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 00:59:49 +0700 Subject: [PATCH 5/7] fix: transaction order product --- src/transaction/transaction.service.ts | 30 ++++++++++++++++++++++++-- src/users/users.service.ts | 11 ++++++---- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index be3a07a..3993474 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -10,7 +10,12 @@ import { CoaService } from './coa.service'; import * as uuid from 'uuid'; import { uniq } from 'lodash'; import { Decimal } from 'decimal.js'; -import { balanceType, coaType, statusTransaction, typeTransaction } from '../helper/enum-list'; +import { + balanceType, + coaType, + statusTransaction, + typeTransaction, +} from '../helper/enum-list'; import { ProductService } from '../product/product.service'; import { CreateJournalDto } from './dto/create-journal.dto'; import { UsersService } from 'src/users/users.service'; @@ -362,7 +367,10 @@ export class TransactionService { ]); } - if (coaAccount.amount <= product.price) { + if ( + coaAccount.amount <= + product_price.mark_up_price + product_price.price + ) { throw new HttpException( { statusCode: HttpStatus.INTERNAL_SERVER_ERROR, @@ -446,6 +454,24 @@ export class TransactionService { userData.partner?.id, ); + const coaAccount = await this.coaService.findByUser( + userData.id, + coaType.WALLET, + ); + + 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, + ); + } + //TODO HIT API SUPPLIER const trxId = Array(6) .fill(null) diff --git a/src/users/users.service.ts b/src/users/users.service.ts index e5fcb5a..ba2e965 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -310,9 +310,6 @@ export class UsersService { } async findOne(id: string) { - const coa = await this.coaService.findByUser(id, coaType.WALLET); - const coaProfit = await this.coaService.findByUser(id, coaType.PROFIT); - try { const userData = await this.usersRepository .createQueryBuilder('users') @@ -336,11 +333,17 @@ export class UsersService { 'userDetail.phone_number', ]) .getOne(); + const coa = await this.coaService.findByUser(id, coaType.WALLET); + let coaProfit; + if(userData.roles.id != 'e4dfb6a3-2338-464a-8fb8-5cbc089d4209'){ + coaProfit = await this.coaService.findByUser(id, coaType.PROFIT); + }; + return { ...userData, wallet: coa.amount, - profit: coaProfit.amount, + profit: coaProfit ? coaProfit.amount : coaProfit, }; } catch (e) { if (e instanceof EntityNotFoundError) { From 2dd659ca8ee3d6ce813750a7c4b67a10ea50919c Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 01:11:02 +0700 Subject: [PATCH 6/7] fix: history transaction --- src/transaction/entities/transactions.entity.ts | 5 +++++ src/transaction/transaction.service.ts | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/transaction/entities/transactions.entity.ts b/src/transaction/entities/transactions.entity.ts index a768cc5..a8b00c0 100644 --- a/src/transaction/entities/transactions.entity.ts +++ b/src/transaction/entities/transactions.entity.ts @@ -50,6 +50,11 @@ export class Transactions extends BaseModel { }) partner_trx_id: string; + @Column({ + nullable: true, + }) + seri_number: string; + @Column({ nullable: true, }) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 3993474..fb6b51f 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -393,7 +393,7 @@ export class TransactionService { transactionData.product_price = product_price; transactionData.destination = orderTransactionDto.destination; transactionData.partner_trx_id = orderTransactionDto.trx_id; - transactionData.partner_trx_id = trxId; + transactionData.supplier_trx_id = trxId; await manager.insert(Transactions, transactionData); await this.accountingTransaction({ @@ -709,7 +709,8 @@ export class TransactionService { relations: ['product_price'], }); - dataTransaction.status = statusTransaction.FAILED; + dataTransaction.status = statusTransaction.SUCCESS; + dataTransaction.seri_number = callback['sn']; dataTransaction.callback_json = callback; const userData = await this.userService.findExist(dataTransaction.user); @@ -899,6 +900,11 @@ export class TransactionService { .leftJoin('transaction.product_price', 'product_price') .leftJoin('product_price.product', 'product') .addSelect('transaction.amount', 'price') + .addSelect('transaction.destination') + .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') .addSelect('userData.name', 'buyer') .addSelect('product.name', 'name') .addSelect('product.id', 'product_id'); From de7f9c059b7f76ec86ebfbfd681d56ad3389c050 Mon Sep 17 00:00:00 2001 From: ilham Date: Fri, 31 Dec 2021 01:13:45 +0700 Subject: [PATCH 7/7] fix: transaction history --- src/transaction/transaction.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index fb6b51f..ae6b9e1 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -910,7 +910,7 @@ export class TransactionService { .addSelect('product.id', 'product_id'); if (startDate && endDate) { - baseQuery.where('transaction.created_at between :startDate and :enDate', { + baseQuery.andWhere('transaction.created_at between :startDate and :enDate', { startDate: new Date(startDate), enDate: new Date(endDate), });