Abweichungen zw Auftragspositionen und Anzahlungs sowie Schlussrechnungen » Historie » Version 8
  [S] Jens A, 24.02.2021 15:25 
  
| 1 | 4 | [X] Jens M | h2. Abweichungen zw. Auftragspositionen und Anzahlungs- sowie Schlussrechnungen  | 
|---|---|---|---|
| 2 | 1 | [S] Jens A | |
| 3 | 5 | [X] Jens M | 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):  | 
| 4 | 1 | [S] Jens A | |
| 5 | 6 | [S] Dominik G | Hilfe dazu: https://redmine.prodat-sql.de/projects/prodat-v12-public/wiki/Abweichungen_zwischen_Schluss-_und_Anzahlungsrechnungen  | 
| 6 | |||
| 7 | 1 | [S] Jens A | <pre><code class="sql">  | 
| 8 | 7 | [S] Jens A | SELECT  | 
| 9 | r.bz_be_bnr AS rbe_bnr,  | 
||
| 10 | r.bz_pos AS rbz_pos,  | 
||
| 11 | r.bz_auftg AS rbz_auftg,  | 
||
| 12 | r.bz_auftgpos AS rbz_auftgpos,  | 
||
| 13 | r.bz_fakt_uf1 AS rbz_fakt_uf1,  | 
||
| 14 | r.bz_tot AS rbz_netto,  | 
||
| 15 | trechnungen.*  | 
||
| 16 | FROM belzeil_grund AS r  | 
||
| 17 | LEFT JOIN LATERAL  | 
||
| 18 | (SELECT string_agg(t.bz_be_bnr || '~' || t.bz_pos, ';')::varchar AS trechnungen_nummer,  | 
||
| 19 | sum(bz_fakt_uf1) AS trechnungen_menge,  | 
||
| 20 | sum(bz_tot) AS trechnungen_wert  | 
||
| 21 | FROM belzeil_grund t JOIN belkopf ON t.bz_be_bnr = be_bnr  | 
||
| 22 | WHERE belzeil_add_auftg_pos(t.bz_auftg,t.bz_auftgpos) = belzeil_add_auftg_pos(r.bz_auftg,r.bz_auftgpos)  | 
||
| 23 | AND be_prof = 'T'  | 
||
| 24 | ) AS trechnungen ON true  | 
||
| 25 | WHERE  | 
||
| 26 | bz_be_bnr = :nr  | 
||
| 27 | </code></pre>  | 
||
| 28 | |||
| 29 | oder  | 
||
| 30 | |||
| 31 | <pre><code class="sql">  | 
||
| 32 | 1 | [S] Jens A | SELECT  | 
| 33 | bz_be_bnr,  | 
||
| 34 | bz_auftg,  | 
||
| 35 | bz_pos,  | 
||
| 36 | bz_add_auftg_pos,  | 
||
| 37 | bz_fakt,  | 
||
| 38 | ag_pos,  | 
||
| 39 | ag_stk_uf1,  | 
||
| 40 | belzeil_add_auftg_pos(bz_auftg, bz_pos),  | 
||
| 41 | belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos AS FehlerZuordung,  | 
||
| 42 | --belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos AS FehlerZuordnung_cimRed,  | 
||
| 43 | bz_fakt <> ag_stk_uf1 AS FehlerMenge,  | 
||
| 44 | --bz_fakt <> ag_stk_uf1 AS FehlerMenge_cimRed  | 
||
| 45 | (belzeil_add_auftg_pos(bz_auftg, bz_pos) <> bz_add_auftg_pos) OR (bz_fakt <> ag_stk_uf1) AS cimRed  | 
||
| 46 | FROM  | 
||
| 47 | belzeil_grund  | 
||
| 48 | LEFT JOIN auftg ON bz_auftg = ag_nr AND ag_pos = bz_pos  | 
||
| 49 | WHERE  | 
||
| 50 | -- bz_be_bnr = any(array['AR20-30902', 'RG20-33439'])  | 
||
| 51 | bz_be_bnr = any(array['RG20-33439'])  | 
||
| 52 | </code></pre>  | 
||
| 53 | |||
| 54 | 7 | [S] Jens A | 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:  | 
| 55 | |||
| 56 | !clipboard-202102241455-vtt1w.png!  | 
||
| 57 | !clipboard-202102241456-ugfkk.png!  | 
||
| 58 | |||
| 59 | Alternativ kann die bestehende Anzahlungsrechnung storniert und neu erstellt werden.  | 
||
| 60 | |||
| 61 | Zur Vorbeugung derartiger Fälle bieten sich folgende Maßnahmen an:  | 
||
| 62 | |||
| 63 | 8 | [S] Jens A | # Auftragspositionen prinzipiell in Zehnerschritten vergeben, das lässt Platz für nachträglich eingefügte auftragspositionen, welche die bestehenden nicht zu verschieben brauchen.  | 
| 64 | !clipboard-202102241525-asz98.png!  | 
||
| 65 | 7 | [S] Jens A | # Man kann vorausschauend bei der Auftragsanlagen Dummypositionen an den Stellen anlegen, von denen man weiß, dasd diese später noch gefüllt werden.  |