mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 20:51:44 +00:00
fix: calculating child and parent balance
This commit is contained in:
@ -5,8 +5,8 @@ import {
|
||||
AccountTransactionWebhookRequest,
|
||||
CardTransactionWebhookRequest,
|
||||
} from '~/common/modules/neoleap/dtos/requests';
|
||||
import { Account } from '../entities/account.entity';
|
||||
import { Transaction } from '../entities/transaction.entity';
|
||||
import { CustomerType } from '../enums';
|
||||
import { TransactionRepository } from '../repositories/transaction.repository';
|
||||
import { AccountService } from './account.service';
|
||||
import { CardService } from './card.service';
|
||||
@ -31,7 +31,14 @@ export class TransactionService {
|
||||
const transaction = await this.transactionRepository.createCardTransaction(card, body);
|
||||
const total = new Decimal(body.transactionAmount).plus(body.billingAmount).plus(body.fees).plus(body.vatOnFees);
|
||||
|
||||
await this.accountService.decreaseAccountBalance(card.account.accountReference, total.toNumber());
|
||||
if (card.customerType === CustomerType.CHILD) {
|
||||
await Promise.all([
|
||||
this.accountService.decreaseAccountBalance(card.account.accountReference, total.toNumber()),
|
||||
this.accountService.decrementReservedBalance(card.account, total.toNumber()),
|
||||
]);
|
||||
} else {
|
||||
await this.accountService.decreaseAccountBalance(card.account.accountReference, total.toNumber());
|
||||
}
|
||||
|
||||
return transaction;
|
||||
}
|
||||
@ -58,11 +65,6 @@ export class TransactionService {
|
||||
return transaction;
|
||||
}
|
||||
|
||||
async calculateAvailableSpendingLimitForParent(account: Account): Promise<number> {
|
||||
const internalTransactionSum = await this.transactionRepository.findInternalTransactionTotal(account.id);
|
||||
return new Decimal(account.balance).minus(internalTransactionSum).toNumber();
|
||||
}
|
||||
|
||||
private async findExistingTransaction(transactionId: string, accountReference: string): Promise<Transaction | null> {
|
||||
const existingTransaction = await this.transactionRepository.findTransactionByReference(
|
||||
transactionId,
|
||||
|
||||
Reference in New Issue
Block a user