From e25f97ee9c6b0018161ce5248679488607a2ae02 Mon Sep 17 00:00:00 2001 From: Ilham Dwi Pratama S Date: Thu, 9 Dec 2021 03:40:12 +0700 Subject: [PATCH] add distribute from admin to supervisor --- .../entities/transaction-journal.entity.ts | 10 ---- src/transaction/transaction.controller.ts | 12 +++++ src/transaction/transaction.service.ts | 46 ++++++++++++++++++- 3 files changed, 57 insertions(+), 11 deletions(-) diff --git a/src/transaction/entities/transaction-journal.entity.ts b/src/transaction/entities/transaction-journal.entity.ts index 85a7e77..ad5ba0a 100644 --- a/src/transaction/entities/transaction-journal.entity.ts +++ b/src/transaction/entities/transaction-journal.entity.ts @@ -39,14 +39,4 @@ export class TransactionJournal extends BaseModel { }, ) coa: COA; - - @ManyToOne( - () => { - return TransactionType; - }, - (transType) => { - return transType.id; - }, - ) - transactionType: TransactionType; } diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index e0f5ccd..87aa3d7 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -27,6 +27,18 @@ export class TransactionController { return this.transactionService.distributeDeposit(createTransactionDto); } + @Post('distribute-admin') + distributeAdmin( + @Body() createTransactionDto: DistributeTransactionDto, + @Request() req + ) { + return { + data: this.transactionService.distributeFromAdmin(createTransactionDto,req.user), + statusCode: HttpStatus.CREATED, + message: 'success', + }; + } + @Post('add-saldo-supplier') async addSaldoSupplier( @Body() addSaldoSupplier: AddSaldoSupplier, diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 379d78a..b5590db 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -68,7 +68,7 @@ export class TransactionService { transactionData.amount = addSaldoSupplier.amount, transactionData.user = userData.id, transactionData.status = statusTransaction.SUCCESS, - transactionData.type = typeTransaction.DISTRIBUTION, + transactionData.type = typeTransaction.DEPOSIT_IRS, await manager.insert(Transactions, transactionData); @@ -91,6 +91,50 @@ export class TransactionService { return true; } + async distributeFromAdmin(distributeTransactionDto: DistributeTransactionDto,currentUser:any) { + // GET COA + const coaAR = await this.coaService.findByUser( + distributeTransactionDto.destination, + coaType.ACCOUNT_RECEIVABLE, + ); + const coaWallet = await this.coaService.findByUser( + distributeTransactionDto.destination, + coaType.WALLET, + ); + + //GET USER + const userData = await this.userService.findByUsername(currentUser.username); + + await this.connection.transaction(async (manager) => { + //INSERT TRANSACTION + let transactionData = new Transactions(); + transactionData.id = uuid.v4(); + transactionData.amount = distributeTransactionDto.amount, + transactionData.user = userData.id, + transactionData.status = statusTransaction.SUCCESS, + transactionData.type = typeTransaction.DISTRIBUTION, + + await manager.insert(Transactions, transactionData); + + await this.accountingTransaction({ + createTransaction: false, + transactionalEntityManager:manager, + transaction: transactionData, + amount: transactionData.amount, + journals: [{ + coa_id: coaAR.id, + debit: transactionData.amount + }, { + coa_id: coaWallet.id, + credit: transactionData.amount + }] + }); + + }); + + return true; + } + async distributeDeposit(distributeTransactionDto: DistributeTransactionDto) { // GET COA const coaSender = await this.coaService.findByUser(