From ed5ca6556dfefe47fb707a1a4572746ca48bc4ee Mon Sep 17 00:00:00 2001 From: ilham Date: Sun, 12 Dec 2021 00:23:13 +0700 Subject: [PATCH] add: top up saldo supplier --- src/transaction/dto/add-saldo-supplier.dto.ts | 16 +++++---- src/transaction/transaction.controller.ts | 2 +- src/transaction/transaction.service.ts | 34 ++++++++++++++----- src/users/supplier.service.ts | 6 ++-- src/users/users.module.ts | 2 +- 5 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/transaction/dto/add-saldo-supplier.dto.ts b/src/transaction/dto/add-saldo-supplier.dto.ts index 6f27f52..8927ac7 100644 --- a/src/transaction/dto/add-saldo-supplier.dto.ts +++ b/src/transaction/dto/add-saldo-supplier.dto.ts @@ -1,12 +1,16 @@ import { IsNotEmpty, IsUUID } from 'class-validator'; -import { balanceType, coaType, statusTransaction, typeTransaction } from 'src/helper/enum-list'; +import { + balanceType, + coaType, + statusTransaction, + typeTransaction, +} from 'src/helper/enum-list'; import { EntityManager } from 'typeorm'; - export class AddSaldoSupplier { - @IsNotEmpty() - supplier?: string; + @IsNotEmpty() + supplier: string; - @IsNotEmpty() - amount?: number; + @IsNotEmpty() + amount: number; } diff --git a/src/transaction/transaction.controller.ts b/src/transaction/transaction.controller.ts index 1d60c85..9d95332 100644 --- a/src/transaction/transaction.controller.ts +++ b/src/transaction/transaction.controller.ts @@ -54,7 +54,7 @@ export class TransactionController { @Request() req, ) { return { - data: await this.transactionService.addIRSWallet( + data: await this.transactionService.addPartnerSaldo( addSaldoSupplier, req.user, ), diff --git a/src/transaction/transaction.service.ts b/src/transaction/transaction.service.ts index 17769fd..7772502 100644 --- a/src/transaction/transaction.service.ts +++ b/src/transaction/transaction.service.ts @@ -21,6 +21,7 @@ import * as irsService from '../helper/irs-service'; import { CreateJournalDto } from './dto/create-journal.dto'; import { UsersService } from 'src/users/users.service'; import { AddSaldoSupplier } from './dto/add-saldo-supplier.dto'; +import { SupplierService } from '../users/supplier.service'; interface JournalEntry { coa_id: string; @@ -40,17 +41,29 @@ export class TransactionService { private coaService: CoaService, private productService: ProductService, private userService: UsersService, + private supplierService: SupplierService, private connection: Connection, ) {} - async addIRSWallet(addSaldoSupplier: AddSaldoSupplier, currentUser: any) { + async addPartnerSaldo(addSaldoSupplier: AddSaldoSupplier, currentUser: any) { + const supplier = await this.supplierService.findByCode( + addSaldoSupplier.supplier, + ); // GET COA const coaBank = await this.coaService.findByName( `${coaType[coaType.BANK]}-SYSTEM`, ); const coaInventory = await this.coaService.findByName( - `${coaType[coaType.INVENTORY]}-${addSaldoSupplier.supplier}`, + `${coaType[coaType.INVENTORY]}-${supplier.code}`, + ); + + const coaBudget = await this.coaService.findByName( + `${coaType[coaType.BUDGET]}-${supplier.code}`, + ); + + const coaContraBudget = await this.coaService.findByName( + `${coaType[coaType.CONTRA_BUDGET]}-${supplier.code}`, ); //GET USER @@ -78,10 +91,18 @@ export class TransactionService { journals: [ { coa_id: coaBank.id, - debit: transactionData.amount, + credit: transactionData.amount, }, { coa_id: coaInventory.id, + debit: transactionData.amount, + }, + { + coa_id: coaBudget.id, + debit: transactionData.amount, + }, + { + coa_id: coaContraBudget.id, credit: transactionData.amount, }, ], @@ -429,15 +450,12 @@ export class TransactionService { ); let balance = new Decimal(coa.amount); - - if (coa.balanceType === balanceType.DEBIT) { + if (coa.balanceType == balanceType.DEBIT) { balance = balance.plus(debitSum.minus(creditSum)); - } else if (coa.balanceType === balanceType.CREDIT) { + } else if (coa.balanceType == balanceType.CREDIT) { balance = balance.plus(creditSum.minus(debitSum)); } - const diff = balance.minus(new Decimal(coa.amount)); - return createJournalDto.transactionalEntityManager .createQueryBuilder() .update(COA) diff --git a/src/users/supplier.service.ts b/src/users/supplier.service.ts index a5ccbcf..6f5278b 100644 --- a/src/users/supplier.service.ts +++ b/src/users/supplier.service.ts @@ -94,9 +94,11 @@ export class SupplierService { }); } - async findOne(id: string) { + async findByCode(code: string) { try { - return await this.supplierRepository.findOneOrFail(id); + return await this.supplierRepository.findOneOrFail({ + code: code, + }); } catch (e) { if (e instanceof EntityNotFoundError) { throw new HttpException( diff --git a/src/users/users.module.ts b/src/users/users.module.ts index 637a6ea..0cf442a 100644 --- a/src/users/users.module.ts +++ b/src/users/users.module.ts @@ -16,6 +16,6 @@ import { Supplier } from './entities/supplier.entity'; ], controllers: [UsersController], providers: [UsersService, SupplierService], - exports: [UsersService], + exports: [UsersService, SupplierService], }) export class UsersModule {}