add distribute from admin to supervisor

This commit is contained in:
Ilham Dwi Pratama S 2021-12-09 03:40:12 +07:00
parent 1f44cf484c
commit e25f97ee9c
3 changed files with 57 additions and 11 deletions

View File

@ -39,14 +39,4 @@ export class TransactionJournal extends BaseModel {
},
)
coa: COA;
@ManyToOne(
() => {
return TransactionType;
},
(transType) => {
return transType.id;
},
)
transactionType: TransactionType;
}

View File

@ -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,

View File

@ -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(