Abweichungen zw Auftragspositionen und Anzahlungs sowie Schlussrechnungen » Historie » Version 7
[S] Jens A, 24.02.2021 15:01
| 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 | # Auftragspositionen prinzipiell in Zehnerschritten vergeben, das lässt Platz für nachträglich eingefügte auftragspositionen, welche die bestehenden nicht zu versxhieben brauchen. |
||
| 64 | !clipboard-202102241458-rwfyv.png! |
||
| 65 | # Man kann vorausschauend bei der Auftragsanlagen Dummypositionen an den Stellen anlegen, von denen man weiß, dasd diese später noch gefüllt werden. |