diff --git a/src/Controllers/BookingController.php b/src/Controllers/BookingController.php index dd1f852..d3c8cbe 100644 --- a/src/Controllers/BookingController.php +++ b/src/Controllers/BookingController.php @@ -183,6 +183,13 @@ class BookingController } } + // Belegbetrag in Metadaten aktualisieren + $totalBrutto = Booking::sumBruttoForBeleg($belegId); + \Steuerkram\Database::execute( + 'UPDATE belege SET betrag_brutto = ?, updated_at = NOW() WHERE id = ?', + [$totalBrutto, $belegId] + ); + // Bankbuchung verknüpfen wenn aus Bank-Kontext $bankTxId = (int)($data['bank_tx_id'] ?? 0); if ($bankTxId > 0) { diff --git a/src/Models/Booking.php b/src/Models/Booking.php index df95c97..522beb1 100644 --- a/src/Models/Booking.php +++ b/src/Models/Booking.php @@ -407,6 +407,18 @@ class Booking return sprintf('BU-%s-%06d', $year, $next); } + /** Summiert betrag_brutto aller aktiven Hauptbuchungen eines Belegs. */ + public static function sumBruttoForBeleg(int $belegId): float + { + $row = Database::fetchOne( + 'SELECT COALESCE(SUM(betrag_brutto), 0) AS total + FROM bookings + WHERE beleg_id = ? AND is_reversal = 0 AND parent_booking_id IS NULL', + [$belegId] + ); + return round((float)($row['total'] ?? 0), 2); + } + public static function sumByYear(int $year): array { return Database::fetchAll(