/* Buchungsmaske: Restbetrag der Splitzeilen mitrechnen. * * Nur Komfort – die Maske kommt fertig vom Server. Ohne JavaScript bleibt alles * bedienbar: Die Splitsumme prüft ohnehin das Model. * * Kategorie und Gegenkonto stehen in einem Feld, deshalb gibt es hier nichts * mehr ein- und auszublenden; die Art bestimmt nur noch die Richtung. */ (function () { 'use strict'; const art = document.getElementById('art'); const maske = document.querySelector('.buchungsmaske'); if (!art || !maske || !window.FmBetrag) { return; } const summenfeld = document.getElementById('splitsumme'); const betragsfeld = document.getElementById('betrag'); function rechneSumme() { if (!summenfeld) { return; } // Der Buchungsbetrag wird positiv eingegeben; das Vorzeichen ergibt // sich aus der Art. Für den Vergleich zählt der Betrag mit Richtung. let ziel = window.FmBetrag.zahl(betragsfeld ? betragsfeld.value : '0'); if (art.value !== 'einnahme') { ziel = -ziel; } const stand = window.FmBetrag.splitsumme( Array.from(maske.querySelectorAll('.splitbetrag')), ziel ); summenfeld.textContent = stand.text; summenfeld.classList.toggle('negativ', stand.belegt && stand.rest !== 0); } art.addEventListener('change', rechneSumme); maske.addEventListener('input', function (ereignis) { if (ereignis.target.classList.contains('splitbetrag') || ereignis.target.id === 'betrag') { rechneSumme(); } }); rechneSumme(); })();