query("UPDATE invoices SET payment_date = invoice_date WHERE paid = TRUE AND payment_date IS NULL"); $count = $stmt->rowCount(); echo " $count Rechnungen aktualisiert.\n\n"; // 2. payment_date für bezahlte Ausgaben setzen (Fallback: expense_date) echo "2. Payment-Dates für Ausgaben setzen...\n"; $stmt = $pdo->query("UPDATE expenses SET payment_date = expense_date WHERE paid = TRUE AND payment_date IS NULL"); $count = $stmt->rowCount(); echo " $count Ausgaben aktualisiert.\n\n"; // 3. total_net für Ausgaben setzen (Fallback: amount, keine MwSt) echo "3. Netto-Beträge für Ausgaben setzen...\n"; $stmt = $pdo->query("UPDATE expenses SET total_net = amount, total_vat = 0 WHERE total_net IS NULL"); $count = $stmt->rowCount(); echo " $count Ausgaben aktualisiert.\n\n"; // 4. Bezahlte Rechnungen ohne Journaleintrag echo "4. Bezahlte Rechnungen ohne Journalbuchung...\n"; $stmt = $pdo->query("SELECT i.id, i.invoice_number, i.total_gross, i.payment_date, c.name AS customer_name FROM invoices i JOIN customers c ON c.id = i.customer_id LEFT JOIN journal_entries je ON je.invoice_id = i.id WHERE i.paid = TRUE AND je.id IS NULL ORDER BY i.invoice_date ASC"); $unbooked_invoices = $stmt->fetchAll(PDO::FETCH_ASSOC); $inv_ok = 0; $inv_err = 0; foreach ($unbooked_invoices as $inv) { try { $entry_id = create_journal_entry_from_invoice((int)$inv['id']); echo " OK: {$inv['invoice_number']} ({$inv['customer_name']}) -> Journal #{$entry_id}\n"; $inv_ok++; } catch (Exception $e) { echo " FEHLER: {$inv['invoice_number']}: {$e->getMessage()}\n"; $inv_err++; } } echo " Ergebnis: $inv_ok erstellt, $inv_err Fehler.\n\n"; // 5. Bezahlte Ausgaben ohne Journaleintrag echo "5. Bezahlte Ausgaben ohne Journalbuchung...\n"; $stmt = $pdo->query("SELECT e.id, e.description, e.amount, e.payment_date FROM expenses e LEFT JOIN journal_entries je ON je.expense_id = e.id WHERE e.paid = TRUE AND je.id IS NULL ORDER BY e.expense_date ASC"); $unbooked_expenses = $stmt->fetchAll(PDO::FETCH_ASSOC); $exp_ok = 0; $exp_err = 0; foreach ($unbooked_expenses as $exp) { try { $entry_id = create_journal_entry_from_expense((int)$exp['id']); echo " OK: \"{$exp['description']}\" ({$exp['amount']} EUR) -> Journal #{$entry_id}\n"; $exp_ok++; } catch (Exception $e) { echo " FEHLER: \"{$exp['description']}\": {$e->getMessage()}\n"; $exp_err++; } } echo " Ergebnis: $exp_ok erstellt, $exp_err Fehler.\n\n"; // Zusammenfassung echo "=== Zusammenfassung ===\n"; echo "Rechnungen: $inv_ok gebucht" . ($inv_err > 0 ? ", $inv_err Fehler" : '') . "\n"; echo "Ausgaben: $exp_ok gebucht" . ($exp_err > 0 ? ", $exp_err Fehler" : '') . "\n"; $total = $inv_ok + $exp_ok; if ($total === 0) { echo "\nKeine fehlenden Buchungen gefunden. Alles aktuell.\n"; } else { echo "\n$total Buchungen insgesamt erstellt.\n"; }