diff --git a/src/Controllers/BelegController.php b/src/Controllers/BelegController.php index 809d885..35f6180 100644 --- a/src/Controllers/BelegController.php +++ b/src/Controllers/BelegController.php @@ -11,6 +11,7 @@ use Steuerkram\Models\Asset; use Steuerkram\Models\Supplier; use Steuerkram\View; use Steuerkram\Services\ImageCropService; +use Steuerkram\Models\BankTransaction; use Steuerkram\Services\KontierungsvorschlagService; class BelegController @@ -205,22 +206,60 @@ class BelegController $kiVorschlag = $beleg['ki_vorschlag'] !== null ? json_decode($beleg['ki_vorschlag'], true) : null; - // KI-Sektion anzeigen wenn Ergebnis vorhanden ODER LLM gerade verfügbar $kiSektion = $kiAktiv || $kiVorschlag !== null; + // Bank-Kontext: Vorausfüllen aus Bankbuchung + $bankTx = null; + $bankTxSupplier = ''; + $bankTxBrutto = 0.0; + $bankFormData = []; + + if (!empty($_GET['bank_tx'])) { + $bankTx = BankTransaction::find((int)$_GET['bank_tx']); + } + + if ($bankTx) { + // Auftraggeber extrahieren: "Auftraggeber: X Buchungstext" → X + if (preg_match('/Auftraggeber:\s*(.*?)(?:\s*Buchungstext|\s*$)/si', $bankTx['buchungstext'], $m)) { + $bankTxSupplier = trim($m[1]); + } + $bankTxBrutto = abs((float)$bankTx['wert']); + $netto = round($bankTxBrutto / 1.19, 2); + + $bankFormData = [ + 'buchungs_datum' => $bankTx['wertstellung'], + 'betrag_netto' => number_format($netto, 2, '.', ''), + 'zahlungs_kontonummer'=> '1200', + ]; + + // Lieferant am Beleg setzen, wenn noch keiner hinterlegt ist + if (empty($beleg['supplier_name']) && $bankTxSupplier !== '') { + $supplierId = \Steuerkram\Models\Supplier::findOrCreate($bankTxSupplier); + \Steuerkram\Database::execute( + 'UPDATE belege SET supplier_id=?, updated_at=NOW() WHERE id=?', + [$supplierId, (int)$params['id']] + ); + $beleg['supplier_name'] = $bankTxSupplier; + } + } + $view = new View(); $view->render('layout/base.php', [ 'pageTitle' => 'Beleg ' . $beleg['beleg_nr'], 'content' => $this->renderView('belege/detail', [ - 'beleg' => $beleg, - 'suppliers' => $suppliers, - 'bookings' => $bookings, - 'integrity' => $integrity, - 'accounts' => $accounts, - 'assets' => $assets, - 'kiAktiv' => $kiAktiv, - 'kiSektion' => $kiSektion, - 'kiVorschlag' => $kiVorschlag, + 'beleg' => $beleg, + 'suppliers' => $suppliers, + 'bookings' => $bookings, + 'integrity' => $integrity, + 'accounts' => $accounts, + 'assets' => $assets, + 'kiAktiv' => $kiAktiv, + 'kiSektion' => $kiSektion, + 'kiVorschlag' => $kiVorschlag, + 'bankTx' => $bankTx, + 'bankTxSupplier' => $bankTxSupplier, + 'bankTxBrutto' => $bankTxBrutto, + 'formData' => $bankFormData, ]), ]); } diff --git a/src/Controllers/BookingController.php b/src/Controllers/BookingController.php index 45fe8e4..7c30884 100644 --- a/src/Controllers/BookingController.php +++ b/src/Controllers/BookingController.php @@ -7,6 +7,7 @@ namespace Steuerkram\Controllers; use Steuerkram\Models\Booking; use Steuerkram\Models\Account; use Steuerkram\Models\Beleg; +use Steuerkram\Models\BankTransaction; use Steuerkram\Models\FiscalYear; use Steuerkram\Models\Setting; use Steuerkram\View; @@ -182,8 +183,16 @@ class BookingController } } + // Bankbuchung verknüpfen wenn aus Bank-Kontext + $bankTxId = (int)($data['bank_tx_id'] ?? 0); + if ($bankTxId > 0) { + BankTransaction::linkBeleg($bankTxId, $belegId); + } + if ($newAssetId !== null) { View::redirect("/assets/{$newAssetId}/edit", 'Buchung erfasst. Bitte Wirtschaftsgut-Details ergänzen.'); + } elseif ($bankTxId > 0) { + View::redirect('/bank', 'Buchung erfasst und Bankbuchung verknüpft.'); } else { View::redirect("/belege/{$belegId}", 'Buchung erfasst.'); } diff --git a/src/Views/bank/show.php b/src/Views/bank/show.php index 40aaaa4..b9d18cb 100644 --- a/src/Views/bank/show.php +++ b/src/Views/bank/show.php @@ -123,10 +123,8 @@ $vorschauHoehe = (int)($settings['beleg_vorschau_hoehe'] ?? 300); –' ?> -
- - -
+ Verknüpfen diff --git a/src/Views/belege/detail.php b/src/Views/belege/detail.php index 489a66e..6a64803 100644 --- a/src/Views/belege/detail.php +++ b/src/Views/belege/detail.php @@ -147,7 +147,7 @@ $suppliers = $suppliers ?? [];
@@ -295,8 +295,25 @@ $suppliers = $suppliers ?? [];
+ + +
+
+
+ Bankbuchung + + + + + + = 0 ? '+' : '' ?> € + +
+
+
+ -
@@ -336,6 +353,9 @@ $suppliers = $suppliers ?? [];
+ + +
@@ -508,6 +528,49 @@ $suppliers = $suppliers ?? [];
+ + + + +
Dieser Beleg ist gesperrt (GoBD). Keine weiteren Buchungen möglich.