Files
buchhaltung/fix_restschuld.js
2026-04-26 07:51:39 +02:00

81 lines
2.2 KiB
JavaScript

/**
* Restschuld für Niki korrigieren
*/
const http = require('http');
function apiCall(method, endpoint, data = null) {
return new Promise((resolve, reject) => {
const options = {
hostname: 'localhost',
port: 3001,
path: `/api${endpoint}`,
method: method,
headers: {
'Content-Type': 'application/json'
}
};
const req = http.request(options, (res) => {
let responseData = '';
res.on('data', (chunk) => responseData += chunk);
res.on('end', () => {
try {
const parsed = JSON.parse(responseData);
resolve(parsed);
} catch (e) {
resolve(responseData);
}
});
});
req.on('error', reject);
if (data) req.write(JSON.stringify(data));
req.end();
});
}
async function main() {
console.log('Korrigiere Restschuld für Niki...\n');
// Alle Kredite holen
const kredite = await apiCall('GET', '/kredite');
const nikiKredit = kredite.find(k => k.name?.toLowerCase().includes('niki'));
if (!nikiKredit) {
console.log('Kredit nicht gefunden');
return;
}
console.log(`Gefunden: ${nikiKredit.name} (${nikiKredit.id})`);
console.log(`Aktuelle Restschuld: ${nikiKredit.restschuld}`);
console.log(`Ursprungsschuld: ${nikiKredit.ursprungsschuld}`);
// Zahlungen holen
const zahlungen = await apiCall('GET', `/kredite/${nikiKredit.id}/zahlungen`);
const sumZahlungen = zahlungen
.filter(z => z.typ === 'zahlung')
.reduce((sum, z) => sum + parseFloat(z.betrag), 0);
const sumAuslagen = zahlungen
.filter(z => z.typ === 'auslage')
.reduce((sum, z) => sum + parseFloat(z.betrag), 0);
console.log(`\nSumme Zahlungen: ${sumZahlungen}`);
console.log(`Summe Auslagen: ${sumAuslagen}`);
// Korrekte Restschuld berechnen
const korrekteRestschuld = 7000 - sumZahlungen + Math.abs(sumAuslagen);
console.log(`\nBerechnete Restschuld: ${korrekteRestschuld}`);
// Patch via PUT
const updateResult = await apiCall('PUT', `/kredite/${nikiKredit.id}`, {
...nikiKredit,
restschuld: korrekteRestschuld
});
console.log(`\n✅ Restschuld korrigiert: ${updateResult.restschuld}`);
}
main().catch(console.error);