/** * Finale Verifikation des Niki Imports */ const http = require('http'); function apiCall(method, endpoint) { 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); req.end(); }); } async function main() { console.log('='.repeat(60)); console.log('FINALE VERIFIKATION: Niki Kredit'); console.log('='.repeat(60)); const kredite = await apiCall('GET', '/kredite'); const nikiKredit = kredite.find(k => k.name?.toLowerCase().includes('niki')); if (!nikiKredit) { console.log('❌ Kredit nicht gefunden!'); process.exit(1); } console.log('\n📊 Kredit Details:'); console.log(` ID: ${nikiKredit.id}`); console.log(` Name: ${nikiKredit.name}`); console.log(` Person: ${nikiKredit.person}`); console.log(` Richtung: ${nikiKredit.richtung || 'nicht gesetzt'}`); console.log(` Ursprungsschuld: ${parseFloat(nikiKredit.ursprungsschuld).toFixed(2)} €`); console.log(` Restschuld: ${parseFloat(nikiKredit.restschuld).toFixed(2)} €`); console.log(` Zinssatz: ${nikiKredit.zinssatz}%`); console.log(` Start: ${nikiKredit.start_datum}`); const zahlungen = await apiCall('GET', `/kredite/${nikiKredit.id}/zahlungen`); console.log(`\n💳 Zahlungen (${zahlungen.length} Stück):`); let sumZahlungen = 0; let sumAuslagen = 0; // Sortiere nach Datum const sorted = zahlungen.sort((a, b) => new Date(a.datum) - new Date(b.datum)); for (const z of sorted) { const betrag = parseFloat(z.betrag); const typ = z.typ || 'zahlung'; const datum = z.datum?.split('T')[0]; const sign = betrag >= 0 ? '+' : ''; console.log(` ${datum} | ${typ.padEnd(10)} | ${sign}${betrag.toFixed(2).padStart(8)} € | ${z.notizen || ''}`); if (typ === 'zahlung') sumZahlungen += betrag; if (typ === 'auslage') sumAuslagen += betrag; } console.log('\n📈 Summen:'); console.log(` Zahlungen: ${sumZahlungen.toFixed(2)} €`); console.log(` Auslagen: ${sumAuslagen.toFixed(2)} €`); console.log(` Netto: ${(sumZahlungen + sumAuslagen).toFixed(2)} €`); // Erwartete Werte const expectedZahlungen = 3400; const expectedAuslagen = -505; const expectedRestschuld = 4105; console.log('\n✅ Erwartete Werte:'); console.log(` Zahlungen: ${expectedZahlungen.toFixed(2)} €`); console.log(` Auslagen: ${expectedAuslagen.toFixed(2)} €`); console.log(` Restschuld: ${expectedRestschuld.toFixed(2)} €`); console.log('\n' + '='.repeat(60)); console.log('ERGEBNIS'); console.log('='.repeat(60)); const zahlungOk = Math.abs(sumZahlungen - expectedZahlungen) < 0.01; const auslageOk = Math.abs(sumAuslagen - expectedAuslagen) < 0.01; const restschuldOk = Math.abs(parseFloat(nikiKredit.restschuld) - expectedRestschuld) < 0.01; if (zahlungOk && auslageOk && restschuldOk) { console.log('✅ ALLE PRÜFUNGEN BESTANDEN!'); console.log(''); console.log('✅ Kredit "Niki Schulden" korrekt angelegt'); console.log('✅ Alle 9 Zahlungen importiert'); console.log('✅ Alle 4 Auslagen importiert'); console.log('✅ Restschuld korrekt: 4105.00 €'); console.log('✅ Verlauf ist vollständig'); console.log(''); console.log('🎉 Import kann als Template für Kerstin verwendet werden!'); } else { console.log('❌ FEHLER gefunden:'); if (!zahlungOk) console.log(` - Zahlungen: ${sumZahlungen} vs ${expectedZahlungen}`); if (!auslageOk) console.log(` - Auslagen: ${sumAuslagen} vs ${expectedAuslagen}`); if (!restschuldOk) console.log(` - Restschuld: ${nikiKredit.restschuld} vs ${expectedRestschuld}`); } console.log('='.repeat(60)); } main().catch(console.error);