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

  1. Summe aus den Positionen (Tausendertrennzeichen normalisiert), auch auf der Währungsseite.
  2. 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 Abweichung CONFLICT, kein Speichern: error_import_row_balance, error_items_sum).
  3. 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.
  4. Journalnummer (generateJournalNo), addTransaction(), Rücklesen (error_save_not_created).
  5. Verknüpfung mit der Importzeile (attachManualTransaction), Begleichungen (applySettlements).
  6. Bei einer HUF-Barkasse eine Rundungsposition auf 5 Forint (LABEL_CASH_ROUNDING).

Beim Bearbeiten: editTransaction() + applySettlements().

Weitere Endpunkte

EndpunktFunktionsweiseRecht
cashinstallmentBarrate auf eine Rechnung über addTransaction() (Betrag höchstens der offene), danach Neuberechnung des offenen SaldosCore modify + edit + Bereich (Mandant der Rechnung und Unternehmen der Kasse)
settlerate, fxrateKurs am Zahlungstag nach der Kursquelle des Mandanten und Vorschau der Kursdifferenz der Begleichung (fxSettlementPreview)add oder edit + Bereich
addlabel, removelabelLabel am Belegedit
openingbalance, openingrateAnfangssaldo-Beleg für ein Bankkonto mit Kurs (addTransaction); MNB-Kurs des StichtagsCore-Recht; Bereich auf den Mandanten
Formularhilfeninvoiceautocomplete, cashregisters, companyaccounts, clientaccounts, journalpreview, companygroup, getDueDate, getTaxDataCore 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.