Files
fintrack/scripts/fix-account-balances.ts
Julien Froidefond 376bc8f84e
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m26s
feat: add total balance calculation and display in account management; update account card to show calculated balance
2025-12-20 11:30:26 +01:00

77 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
});