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 [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); });