147 lines
4.5 KiB
JavaScript
147 lines
4.5 KiB
JavaScript
const { Pool } = require('pg');
|
|
|
|
// Datenbankverbindung
|
|
const pool = new Pool({
|
|
host: process.env.DB_HOST || 'localhost',
|
|
port: process.env.DB_PORT || 5432,
|
|
database: process.env.DB_NAME || 'buchhaltung',
|
|
user: process.env.DB_USER || 'postgres',
|
|
password: process.env.DB_PASSWORD || 'postgres',
|
|
});
|
|
|
|
// Extrahierte Daten aus Excel
|
|
const nebenkostenData = [
|
|
// KrohnWelling - Zingelstr. 14
|
|
{
|
|
jahr: 2020,
|
|
wohnung: 'Zingelstr. 14',
|
|
mieter: 'Johanna Krohn / Tobias Welling',
|
|
versicherung: 16.73,
|
|
sonstiges: 3.56 + 6.67, // Grundsteuer + Niederschlagwasser
|
|
muell: 7.23,
|
|
heizkosten: null,
|
|
wasser: null,
|
|
nebenkosten: 16.73 + 3.56 + 6.67 + 7.23 // Summe
|
|
},
|
|
{
|
|
jahr: 2021,
|
|
wohnung: 'Zingelstr. 14',
|
|
mieter: 'Johanna Krohn / Tobias Welling',
|
|
versicherung: 203.70,
|
|
sonstiges: 41.89 + 78.59, // Grundsteuer + Niederschlagwasser
|
|
heizkosten: 75.29,
|
|
muell: 130.63,
|
|
wasser: null,
|
|
nebenkosten: 203.70 + 41.89 + 78.59 + 75.29 + 130.63
|
|
},
|
|
// Brandt - Zingelstr. 14
|
|
{
|
|
jahr: 2023,
|
|
wohnung: 'Zingelstr. 14',
|
|
mieter: 'Yvonne Brandt',
|
|
versicherung: 129.58,
|
|
sonstiges: 40.17 + 75.36, // Grundsteuer + Niederschlagwasser
|
|
heizkosten: 102.53,
|
|
muell: 153.85,
|
|
wasser: null,
|
|
nebenkosten: 129.58 + 40.17 + 75.36 + 102.53 + 153.85
|
|
},
|
|
{
|
|
jahr: 2024,
|
|
wohnung: 'Zingelstr. 14',
|
|
mieter: 'Yvonne Brandt',
|
|
versicherung: 115.41,
|
|
sonstiges: 59.84 + 112.27, // Grundsteuer + Niederschlagwasser
|
|
heizkosten: 175.76,
|
|
muell: 212.28,
|
|
wasser: null,
|
|
nebenkosten: 115.41 + 59.84 + 112.27 + 175.76 + 212.28
|
|
}
|
|
];
|
|
|
|
async function importNebenkosten() {
|
|
const client = await pool.connect();
|
|
|
|
try {
|
|
console.log('=== NEBENKOSTEN IMPORT ZINGELSTR. 14 ===\n');
|
|
|
|
// Prüfe vorhandene Einträge
|
|
const checkResult = await client.query('SELECT COUNT(*) FROM nebenkosten WHERE wohnung = $1', ['Zingelstr. 14']);
|
|
const existingCount = parseInt(checkResult.rows[0].count);
|
|
console.log(`Vorhandene Einträge für Zingelstr. 14: ${existingCount}`);
|
|
|
|
if (existingCount > 0) {
|
|
console.log('\nLösche vorhandene Einträge...');
|
|
await client.query('DELETE FROM nebenkosten WHERE wohnung = $1', ['Zingelstr. 14']);
|
|
console.log('✓ Alte Einträge gelöscht');
|
|
}
|
|
|
|
console.log('\n=== IMPORT STARTET ===\n');
|
|
|
|
const insertedRecords = [];
|
|
|
|
for (const data of nebenkostenData) {
|
|
const query = `
|
|
INSERT INTO nebenkosten
|
|
(jahr, wohnung, mieter, nebenkosten, heizkosten, wasser, muell, versicherung, sonstiges)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
|
RETURNING *
|
|
`;
|
|
|
|
const values = [
|
|
data.jahr,
|
|
data.wohnung,
|
|
data.mieter,
|
|
data.nebenkosten,
|
|
data.heizkosten,
|
|
data.wasser,
|
|
data.muell,
|
|
data.versicherung,
|
|
data.sonstiges
|
|
];
|
|
|
|
const result = await client.query(query, values);
|
|
insertedRecords.push(result.rows[0]);
|
|
|
|
console.log(`✓ ${data.jahr}: ${data.mieter} - ${data.nebenkosten.toFixed(2)} €`);
|
|
}
|
|
|
|
console.log('\n=== IMPORT ABGESCHLOSSEN ===');
|
|
console.log(`\n${insertedRecords.length} Datensätze importiert:`);
|
|
|
|
for (const record of insertedRecords) {
|
|
console.log(`\n Jahr: ${record.jahr}`);
|
|
console.log(` Mieter: ${record.mieter}`);
|
|
console.log(` Wohnung: ${record.wohnung}`);
|
|
console.log(` Gesamtkosten: ${record.nebenkosten} €`);
|
|
console.log(` - Versicherung: ${record.versicherung} €`);
|
|
console.log(` - Heizkosten: ${record.heizkosten || '-'} €`);
|
|
console.log(` - Wasser: ${record.wasser || '-'} €`);
|
|
console.log(` - Müll: ${record.muell} €`);
|
|
console.log(` - Sonstiges: ${record.sonstiges} €`);
|
|
}
|
|
|
|
// Verifiziere Import
|
|
const verifyResult = await client.query('SELECT * FROM nebenkosten WHERE wohnung = $1 ORDER BY jahr', ['Zingelstr. 14']);
|
|
console.log(`\n=== VERIFIZIERUNG ===`);
|
|
console.log(`In Datenbank gefunden: ${verifyResult.rows.length} Einträge`);
|
|
|
|
for (const row of verifyResult.rows) {
|
|
console.log(` - ${row.jahr}: ${row.mieter} (${row.nebenkosten} €)`);
|
|
}
|
|
|
|
} catch (error) {
|
|
console.error('❌ Fehler beim Import:', error.message);
|
|
throw error;
|
|
} finally {
|
|
client.release();
|
|
await pool.end();
|
|
}
|
|
}
|
|
|
|
// Führe Import aus
|
|
importNebenkosten().catch(err => {
|
|
console.error('Import fehlgeschlagen:', err);
|
|
process.exit(1);
|
|
});
|