Beleg speichern — Validierung, Begleichung, Importabgleich
Die Speicherschritte: Betragsnormalisierung, Abgleich mit der Importzeile, Begleichungsgrenze, Journalnummer, gemeinsamer Einfügeweg, Rücklesen, dazu Barraten und Anfangssalden.
Das Speichern eines Belegs (finance/transaction.save) berechnet die Summe aus den Positionen und erfasst über den gemeinsamen Weg addTransaction(). Erfolg wird nur für einen zurückgelesenen Beleg gemeldet.
Speicherablauf
- Summe aus den Positionen (Tausendertrennzeichen normalisiert), auch auf der Währungsseite.
- Bei Start aus einer Bankimportzeile: Die Zeile existiert und ist noch nicht gebucht (
error_import_row_missing,error_import_row_booked), und die Positionen stimmen fillérgenau mit der Auszugszeile überein (rowAmountParts,importRowBalance; bei AbweichungCONFLICT, kein Speichern:error_import_row_balance,error_items_sum). - Der offene Saldo der beglichenen Rechnungen (HUF und Währung) darf nicht überschritten werden (
getInvoiceSettleRoom; nur Rechnungen im Bereich):error_settle_over_open,error_settle_over_open_dev,error_settle_over_total. - Journalnummer (
generateJournalNo),addTransaction(), Rücklesen (error_save_not_created). - Verknüpfung mit der Importzeile (
attachManualTransaction), Begleichungen (applySettlements). - Bei einer HUF-Barkasse eine Rundungsposition auf 5 Forint (
LABEL_CASH_ROUNDING).
Beim Bearbeiten: editTransaction() + applySettlements().
Weitere Endpunkte
| Endpunkt | Funktionsweise | Recht |
|---|---|---|
cashinstallment | Barrate auf eine Rechnung über addTransaction() (Betrag höchstens der offene), danach Neuberechnung des offenen Saldos | Core modify + edit + Bereich (Mandant der Rechnung und Unternehmen der Kasse) |
settlerate, fxrate | Kurs am Zahlungstag nach der Kursquelle des Mandanten und Vorschau der Kursdifferenz der Begleichung (fxSettlementPreview) | add oder edit + Bereich |
addlabel, removelabel | Label am Beleg | edit |
openingbalance, openingrate | Anfangssaldo-Beleg für ein Bankkonto mit Kurs (addTransaction); MNB-Kurs des Stichtags | Core-Recht; Bereich auf den Mandanten |
| Formularhilfen | invoiceautocomplete, cashregisters, companyaccounts, clientaccounts, journalpreview, companygroup, getDueDate, getTaxData | Core access oder Super-Admin; Unternehmensbereich, wo vorhanden |
Datenmodell
Die Tabellennamen tragen in der Datenbank das eigene Präfix der Installation: transaction, transaction_item, transaction_settlement, invoice (offener Saldo), transaction_import_row (über bank/bankimport), label_link, cashregister.
Bekannte Einschränkungen
save prüft nur Core modify, weder add noch edit. Die Schlüssel add und edit fehlen in den Seeds, daher ist canAction(add) für Nicht-Super-Admins falsch und die Schaltfläche für neue Belege erscheint nicht.