81 lines
2.2 KiB
JavaScript
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);
|