/** * 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);