All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 1m26s
77 lines
2.0 KiB
TypeScript
77 lines
2.0 KiB
TypeScript
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);
|
||
});
|
||
|