Projekt

Allgemein

Profil

Aktionen

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):

Hilfe dazu: https://redmine.prodat-sql.de/projects/prodat-v12-public/wiki/Abweichungen_zwischen_Schluss-_und_Anzahlungsrechnungen

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:

  1. Auftragspositionen prinzipiell in Zehnerschritten vergeben, das lässt Platz für nachträglich eingefügte auftragspositionen, welche die bestehenden nicht zu verschieben brauchen.
  2. 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 etwa 3 Jahren aktualisiert · 8 Revisionen