diff --git a/CHANGELOG.md b/CHANGELOG.md index 944f9e8..f8b280d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/). ## [Unreleased] +### Changed + +- Regeln: Die Splittabellen zeigen die Spalte „Anteil“ ohne Prozentzeichen und darunter die + laufend berechnete Summe der Anteile + ### Fixed - Echtzeitüberweisung scheiterte an Banken, die nur das ISO-Format pain.001.001.09 führen; diff --git a/Changes.md b/Changes.md index c16df84..cb408b8 100644 --- a/Changes.md +++ b/Changes.md @@ -1,5 +1,12 @@ # Änderungen +## Regeln: Summe der Anteile in den Splittabellen (29.09.2026) + +- Die Spalte „Anteil %“ heißt in den Splittabellen der Regeln nur noch „Anteil“, da die + Anteile zueinander gelten und keine Prozentwerte sein müssen. +- Unter den Anteilen steht eine Summenzeile, die sich mit jeder Eingabe in derselben + Tabelle neu berechnet (`public/static/app.js`). + ## Zahlungsverkehr: Echtzeitüberweisung scheiterte am SEPA-Format der Bank (28.09.2026) Eine Echtzeitüberweisung schlug mit „Für Echtzeitüberweisungen nimmt die Bank nur diff --git a/public/static/app.js b/public/static/app.js index eb21996..17e6ade 100644 --- a/public/static/app.js +++ b/public/static/app.js @@ -376,3 +376,30 @@ } }; })(); + +// Summe der Anteile in den Splittabellen der Abgleichregeln (regelsplits.php). +// Sie wird beim Laden und bei jeder Eingabe in einem Anteilsfeld derselben +// Tabelle neu berechnet. +(function () { + 'use strict'; + + document.querySelectorAll('table[data-anteilssumme]').forEach(function (tabelle) { + const ausgabe = tabelle.querySelector('.anteilssumme'); + const felder = tabelle.querySelectorAll('input[name$="[prozent]"]'); + + const berechnen = function () { + let summe = 0; + felder.forEach(function (feld) { + const zahl = parseFloat(feld.value.trim().replace(',', '.')); + if (!isNaN(zahl)) { summe += zahl; } + }); + ausgabe.textContent = (Math.round(summe * 100) / 100).toLocaleString('de-DE', { + minimumFractionDigits: 2, + maximumFractionDigits: 2 + }); + }; + + felder.forEach(function (feld) { feld.addEventListener('input', berechnen); }); + berechnen(); + }); +})(); diff --git a/src/Views/banking/regelsplits.php b/src/Views/banking/regelsplits.php index 9ee11f9..e041967 100644 --- a/src/Views/banking/regelsplits.php +++ b/src/Views/banking/regelsplits.php @@ -23,10 +23,10 @@ for ($i = count($splitZeilen); $i < $anzahl; $i++) { $fuerFormular = $splitForm === '' ? '' : ' form="' . View::h($splitForm) . '"'; ?> - +
- + @@ -58,7 +58,7 @@ $fuerFormular = $splitForm === '' ? '' : ' form="' . View::h($splitForm) . '"'; name="split[][notiz]" value=""> - + + + + + +
KategorieKlasseNotizAnteil %KategorieKlasseNotizAnteil
+ name="split[][prozent]" value=""> @@ -66,6 +66,12 @@ $fuerFormular = $splitForm === '' ? '' : ' form="' . View::h($splitForm) . '"';
Summe