fix: calculating child and parent balance

This commit is contained in:
Abdalhameed Ahmad
2025-09-09 20:31:48 +03:00
parent e1f50decfa
commit 039c95aa56
12 changed files with 83 additions and 26 deletions

View File

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