diff --git a/Changes.md b/Changes.md index 1f8259d..73b8508 100644 --- a/Changes.md +++ b/Changes.md @@ -2,6 +2,33 @@ --- +## 2026-05-15 – Feature: Dublettenprüfung beim Bank-Import + +- Nach dem Upload wird geprüft, welche Buchungen bereits in der DB vorhanden sind (Abgleich über Buchungstag, Wertstellung, Betrag, Buchungstext) +- Werden Dubletten gefunden, erscheint eine Prüfseite mit zwei Tabellen: erkannte Dubletten (per Checkbox auswählbar) und neue Buchungen (werden immer importiert) +- „Alle auswählen / abwählen"-Buttons + Gesamtzähler zeigen an, wie viele Buchungen importiert werden +- Erst nach Bestätigung wird importiert; ohne Auswahl wird der Import übersprungen +- Migration 052: UNIQUE-Constraint auf `bank_transactions` entfernt (UI-Prüfung ist die primäre Schutzschicht) +- `BankTransaction::findDuplicates()`: neue Methode mit Batch-Abfrage gegen die DB +- `BankController::doImport()`: gemeinsame Import-Logik extrahiert (wird von `upload()` und `uploadConfirm()` genutzt) + +--- + +## 2026-05-15 – Fix: Bank-Import-Duplikate verhindern + +- Migration 051: UNIQUE-Constraint `(buchungstag, wertstellung, wert, buchungstext(200))` auf `bank_transactions`; bestehende Duplikate wurden dabei bereinigt +- `BankController::upload()`: Import läuft jetzt in einer DB-Transaktion – bei Fehler wird alles zurückgerollt statt einen unvollständigen Batch zu hinterlassen +- `BankController::upload()`: Dateiname-Prüfung vor dem Import – erneuter Upload derselben Datei wird mit Fehlermeldung abgelehnt +- `BankTransaction::filenameExists()`: neue Hilfsmethode zur Duplikat-Prüfung anhand Dateiname + +--- + +## 2026-05-15 – Fix: Netto-Neuberechnung bei Kategorie-Wechsel in Bank-Buchungsmaske + +- IIFE-Wrapper für `updateAutoUst` in einen `DOMContentLoaded`-Listener verschoben, damit er erst nach der Funktionsdefinition (späteres ` diff --git a/src/Views/belege/detail.php b/src/Views/belege/detail.php index 64f943b..e96516b 100644 --- a/src/Views/belege/detail.php +++ b/src/Views/belege/detail.php @@ -295,6 +295,28 @@ $suppliers = $suppliers ?? []; + + + + +
+
+ Bankbuchung + + + + + + + = 0 ? '+' : '' ?> € + +
+
+
+ +
@@ -550,12 +572,15 @@ $suppliers = $suppliers ?? []; nettoInput.addEventListener('input', function () { manualNetto = true; }); ustSelect.addEventListener('change', recalcNetto); - // updateAutoUst setzt den USt-Satz per JS ohne change-Event → ummanteln - const _origAutoUst = window.updateAutoUst; - window.updateAutoUst = function () { - _origAutoUst.apply(this, arguments); - recalcNetto(); - }; + // updateAutoUst ist in einem späteren