feat: add total balance calculation and display in account management; update account card to show calculated balance
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m26s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m26s
This commit is contained in:
76
scripts/fix-account-balances.ts
Normal file
76
scripts/fix-account-balances.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { prisma } from "../lib/prisma";
|
||||
|
||||
async function main() {
|
||||
const accountNumbers = process.argv.slice(2);
|
||||
|
||||
if (accountNumbers.length === 0) {
|
||||
console.error("Usage: tsx scripts/fix-account-balances.ts <accountNumber1> [accountNumber2] ...");
|
||||
console.error("Exemple: tsx scripts/fix-account-balances.ts 0748461N022 7555880857A");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
for (const accountNumber of accountNumbers) {
|
||||
console.log(`\n=== Correction du compte: ${accountNumber} ===\n`);
|
||||
|
||||
const account = await prisma.account.findFirst({
|
||||
where: {
|
||||
accountNumber: accountNumber,
|
||||
},
|
||||
include: {
|
||||
transactions: {
|
||||
select: {
|
||||
amount: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!account) {
|
||||
console.log(`❌ Compte non trouvé: ${accountNumber}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
console.log(`Compte trouvé:`);
|
||||
console.log(` ID: ${account.id}`);
|
||||
console.log(` Nom: ${account.name}`);
|
||||
console.log(` Bank ID: ${account.bankId}`);
|
||||
console.log(` Balance actuelle: ${account.balance}`);
|
||||
console.log(` Initial Balance: ${account.initialBalance}`);
|
||||
console.log(` Transactions: ${account.transactions.length}`);
|
||||
|
||||
// Recalculer le solde à partir des transactions
|
||||
const calculatedBalance = account.transactions.reduce(
|
||||
(sum, t) => sum + t.amount,
|
||||
0,
|
||||
);
|
||||
|
||||
console.log(` Balance calculée: ${calculatedBalance}`);
|
||||
|
||||
if (Math.abs(account.balance - calculatedBalance) > 0.01) {
|
||||
console.log(`\n⚠️ Différence détectée: ${Math.abs(account.balance - calculatedBalance).toFixed(2)}`);
|
||||
console.log(`Mise à jour du solde...`);
|
||||
|
||||
await prisma.account.update({
|
||||
where: {
|
||||
id: account.id,
|
||||
},
|
||||
data: {
|
||||
balance: calculatedBalance,
|
||||
},
|
||||
});
|
||||
|
||||
console.log(`✅ Solde corrigé: ${calculatedBalance}`);
|
||||
} else {
|
||||
console.log(`\n✅ Le solde est déjà correct.`);
|
||||
}
|
||||
}
|
||||
|
||||
await prisma.$disconnect();
|
||||
}
|
||||
|
||||
main()
|
||||
.catch((e) => {
|
||||
console.error("Erreur:", e);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user