Initial commit - Stand 26.04.2026
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
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);
|
||||
});
|
||||
Reference in New Issue
Block a user