Projekt

Allgemein

Profil

Abweichungen zw Auftragspositionen und Anzahlungs sowie Schlussrechnungen » Historie » Revision 7

Revision 6 ([S] Dominik G, 27.11.2020 15:32) → Revision 7/8 ([S] Jens A, 24.02.2021 15:01)

h2. 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 

 <pre><code class="sql"> 
 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 
 </code></pre>  

 oder  

 <pre><code class="sql"> 
 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'])    
 </code></pre> 

 Eine Die einzige Lösung besteht darin, darin die Zuordnungen manuell anzugleichen, ggf. unter Vergabe von Auftragsstrukturpositionen, um den Zustand vor der Änderung zu simulieren. anzugleichen. Das sollte vorzugsweise der Kunde selbst tun. Aufgetreten in #15868 und #16207: 

 !clipboard-202102241455-vtt1w.png! 
 !clipboard-202102241456-ugfkk.png! 

 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 versxhieben brauchen. 
 !clipboard-202102241458-rwfyv.png! 
 # Man kann vorausschauend bei der Auftragsanlagen Dummypositionen an den Stellen anlegen, von denen man weiß, dasd diese später noch gefüllt werden. 
 #15868.