Added support for Streamdeck Pedal and updated UI to better fit the Packed UI style
This commit is contained in:
96
pirp/tools/migrate_journal_entries.php
Normal file
96
pirp/tools/migrate_journal_entries.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
/**
|
||||
* Migrationstool: Erstellt nachträglich Journalbuchungen für alle bezahlten
|
||||
* Rechnungen und Ausgaben, die noch keinen Journaleintrag haben.
|
||||
*
|
||||
* Setzt außerdem payment_date für bestehende bezahlte Belege, falls noch nicht gesetzt.
|
||||
*
|
||||
* Ausführung: php tools/migrate_journal_entries.php
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/../src/config.php';
|
||||
require_once __DIR__ . '/../src/db.php';
|
||||
require_once __DIR__ . '/../src/invoice_functions.php';
|
||||
require_once __DIR__ . '/../src/journal_functions.php';
|
||||
require_once __DIR__ . '/../src/expense_functions.php';
|
||||
|
||||
echo "=== PIRP Journal-Migration ===\n\n";
|
||||
|
||||
$pdo = get_db();
|
||||
|
||||
// 1. payment_date für bezahlte Rechnungen setzen (Fallback: invoice_date)
|
||||
echo "1. Payment-Dates für Rechnungen setzen...\n";
|
||||
$stmt = $pdo->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";
|
||||
}
|
||||
Reference in New Issue
Block a user