Abweichungen zw. Auftragspositionen und Anzahlungs- sowie Schlussrechnungen¶
Treten schwer erklärbare Abweichungen zwischen den Nettobeträgen von Anzahlungs- und Schlussrechnungen auf, so kann eine veränderte Zuordnung der Auftragspositionen in Anzahlungs- oder Schlussrechnungen dafür verantwortlich sein. Dies kann dazu führen, dass die Menge von Position A mit dem Einzelpreis von Position B zur Berechnung eines Rechnungsendbetrages herangezogen wird. Folgendes Statement würde diese Abweichungen anzeigen (Rechnungsnummern entsprechend anpassen):
SELECT
r.bz_be_bnr AS rbe_bnr,
r.bz_pos AS rbz_pos,
r.bz_auftg AS rbz_auftg,
r.bz_auftgpos AS rbz_auftgpos,
r.bz_fakt_uf1 AS rbz_fakt_uf1,
r.bz_tot AS rbz_netto,
trechnungen.*
FROM belzeil_grund AS r
LEFT JOIN LATERAL
(SELECT string_agg(t.bz_be_bnr || '~' || t.bz_pos, ';')::varchar AS trechnungen_nummer,
sum(bz_fakt_uf1) AS trechnungen_menge,
sum(bz_tot) AS trechnungen_wert
FROM belzeil_grund t JOIN belkopf ON t.bz_be_bnr = be_bnr
WHERE belzeil_add_auftg_pos(t.bz_auftg,t.bz_auftgpos) = belzeil_add_auftg_pos(r.bz_auftg,r.bz_auftgpos)
AND be_prof = 'T'
) AS trechnungen ON true
WHERE
bz_be_bnr = :nr
oder
SELECT
bz_be_bnr,
bz_auftg,
bz_pos,
bz_add_auftg_pos,
bz_fakt,
ag_pos,
ag_stk_uf1,
belzeil_add_auftg_pos(bz_auftg, bz_pos),
belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos AS FehlerZuordung,
--belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos AS FehlerZuordnung_cimRed,
bz_fakt <> ag_stk_uf1 AS FehlerMenge,
--bz_fakt <> ag_stk_uf1 AS FehlerMenge_cimRed
(belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos) OR (bz_fakt <> ag_stk_uf1) AS cimRed
FROM
belzeil_grund
LEFT JOIN auftg ON bz_auftg = ag_nr AND ag_pos = bz_pos
WHERE
-- bz_be_bnr = any(array['AR20-30902', 'RG20-33439'])
bz_be_bnr = any(array['RG20-33439'])
Eine Lösung besteht darin, die Zuordnungen manuell anzugleichen, ggf. unter Vergabe von Auftragsstrukturpositionen, um den Zustand vor der Änderung zu simulieren. Das sollte vorzugsweise der Kunde selbst tun. Aufgetreten in #15868 und #16207:
Alternativ kann die bestehende Anzahlungsrechnung storniert und neu erstellt werden.
Zur Vorbeugung derartiger Fälle bieten sich folgende Maßnahmen an:
- Auftragspositionen prinzipiell in Zehnerschritten vergeben, das lässt Platz für nachträglich eingefügte auftragspositionen, welche die bestehenden nicht zu verschieben brauchen.
- Man kann vorausschauend bei der Auftragsanlagen Dummypositionen an den Stellen anlegen, von denen man weiß, dasd diese später noch gefüllt werden.
Von [S] Jens A vor mehr als 3 Jahren aktualisiert · 8 Revisionen