Projekt

Allgemein

Profil

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.