PMS32 Online- Hilfereferenz

EDELMETALLE.BERECHNUNGEN

Berechnungen des Edelmetallzuschlags


Information

Durch die neue Berechnung des Edelmetallzuschlags auf Rohstoffgruppen haben sich die Berechnungen der Werte geändert. Dazu wurden alle Berechnungsgrundlagen in eine neue Klasse gepackt die in PMS32 als globales Objekt zur Verfügung steht. Die Berechnung ist in zwei getrennte Berechnungsgrundlagen aufgeteilt.

Bei beiden Berechnungen werden fast die gleichen SQL Statements ausgeführt. Jedoch ist der Endwert der Berechnung unterschiedlich. Bei der Berechnung auf Kalkulationsbasis wird der Edelmetallzuschlag in der Firmenwährung zurückgegeben bei der Berechnung auf Einkaufsbasis wird der Edelmetallzuschlag in der Währung des Lieferanten zurückgegeben. Je nach dem welche Berechnungsbasis benötigt wird, muss eine andere Methode in der Edelmetallklasse angesprungen werden. Die Ausgaben sind bis auf verschiedene Feldinhalte identisch. Dazu wurde auch die Ansicht „E11_A“ – Edelmetalle geändert. Das Datenraster wurde mit den neuen Werten aufgebaut und auch mit neuen Spalten versehen.

Ansicht enthaltener Edelmetalle im Einkauf:

Wie oben zu sehen, wurde in der Maske D4002 – Bestellvorschlag ein neuer Button eingefügt, mit dem alle enthaltenen Edelmetallzuschläge des Bestellvorschlags angezeigt werden können. Dabei werden die Zuschläge in Lieferantenwährung und Firmenwährung angezeigt. In der Bestellung sind die Edelmetallzuschläge immer in der Währung des Lieferanten angegeben. Zur besseren Übersicht und Nachvollziehbarkeit wird zusätzlich der Edelmetallzuschlag in Firmenwährung angezeigt. Die Einstellungen für dieses Datenraster sind sowohl im Einkauf wie im Verkauf (Kalkulation) gleich. Zusätzlich werden die Summen für das entsprechende Edelmetall angezeigt.

SQL Select für die Berechnung des Edelmetallzuschlags in der Kalkulation

Für die, die Interesse daran haben, ist unten der SQL Select beschrieben, wie der Edelmetallzuschlag in der Kalkulation berechnet wird.

SELECT ;

      CAST(wbxx.position AS V(100)) AS position,;

      wbxx.icb01s,;

      wbxx.idb01s,;

      CAST(m.lcWe AS C(3))    AS idc03fi,;

      CAST(m.lcWe AS C(3))    AS idc03we,;

      c03.idc03               AS idc03li,;

      1 AS urfwefi,;

      c98cu.idc98,;

      c98cu.bezei             AS icc98,;

      d05.ipd05,;

      d05.rohgrp,;

      c98cu.preis,;

      CAST(d05.basis/c03.faktor*c03.kurs AS B(6)) AS basis,;

      CAST(c98cu.gewi AS B(3)) AS gewi,;

      CAST(m.tnMenge*wbxx.menge1 AS B(3)) AS menge,;

      d05.edelzahl,;

      d05.uflaezu,;

      CAST((c98cu.preis-d05.basis/c03.faktor*c03.kurs)/c98cu.gewi*d05.edelzahl/d05.uflaezu*m.tnMenge*wbxx.menge1 AS B(6)) AS summe;

      FROM (m.tcC98) AS c98cu, (THIS.cDbfDir+'c61.dbf') AS c61, (THIS.cDbfDir+'c03.dbf') AS c03, (THIS.cDbfDir+'d05.dbf') AS d05, (m.tcWB) AS wbxx;

      WHERE wbxx.ID == m.tcId ;

      AND   NOT wbxx.is_sl ;

      AND   wbxx.idb01s+wbxx.idc61 == d05.idb01+d05.idc61 ;

      AND   d05.ipd05 =  "DEB";

      AND   d05.idc61 == c61.idc61   AND c61.idc03 == c03.idc03;

      AND   d05.idc98 == c98cu.idc98 AND c98cu.idc26 == THIS.diSprache;

      UNION ALL;

SELECT ;

      CAST(wbxx.position AS V(100)) AS position,;

      wbxx.icb01s,;

      wbxx.idb01s,;

      CAST(m.lcWe AS C(3)) AS idc03fi,;

      CAST(m.lcWe AS C(3)) AS idc03we,;

      c03.idc03               AS idc03li,;

      1 AS urfwefi,;

      c98cu.idc98,;

      c98cu.bezei AS icc98,;

      d05.ipd05,;

      d05.rohgrp,;

      c98cu.preis,;

      CAST(IIF(d05.ipd05="DE1",wbxx.eknet,wbxx.ekbr) AS B(6)) AS basis,;

      CAST(d05.basis AS B(3)) AS gewi,;

      CAST(m.tnMenge * wbxx.menge1 AS B(3)) AS menge,;

      d05.edelzahl,;

      d05.uflaezu,;

      CAST(IIF(d05.ipd05="DE1",wbxx.eknet,wbxx.ekbr)*d05.edelzahl/100*wbxx.menge1*m.tnMenge AS B(6)) AS summe;

      FROM (THIS.cDbfDir+'d05.dbf') AS d05, (THIS.cDbfDir+'d05.dbf') AS d05a,;

            (THIS.cDbfDir+'c61.dbf') AS c61,  (THIS.cDbfDir+'c03.dbf') AS c03,;

            (m.tcC98) AS c98cu, (m.tcWB) AS wbxx;

      WHERE wbxx.ID == m.tcId ;

      AND   NOT wbxx.is_sl ;

      AND   wbxx.idb01s+wbxx.idc61 == d05a.idb01+d05a.idc61 ;

      AND   d05a.ipd05  =  "DEA";

      AND   d05a.idc61  == d05.idc61 ;

      AND   d05a.idc61  == c61.idc61 AND c61.idc03 == c03.idc03 ;

      AND   d05.cdbf    =  "C61" ;

      AND   d05a.rohgrp == d05.rohgrp ;

      AND   d05a.idc98  == d05.idc98 ;

      AND   d05.idc98   == c98cu.idc98 AND c98cu.idc26 == THIS.diSprache ;

      AND   STR(d05.basis)+d05.idc61+d05.idc98 IN ;

      (SELECT STR(MAX(d05.basis))+d05.idc61+d05.idc98 ;

            FROM (m.tcC98) AS c98cu, (THIS.cDbfDir+'c61.dbf') AS c61, (THIS.cDbfDir+'c03.dbf') AS c03, (THIS.cDbfDir+'d05.dbf') AS d05, (m.tcWB) AS wbxx;

            WHERE wbxx.ID    == m.tcId ;

            AND   NOT wbxx.is_sl;

            AND   wbxx.idc61 == d05.idc61 AND d05.cdbf  =  "C61" ;

            AND   d05.idc98  == c98cu.idc98 AND c98cu.idc26 == THIS.diSprache ;

            AND   d05.idc61  == c61.idc61 AND c61.idc03 == c03.idc03 ;

            AND   d05.basis / c03.faktor * c03.kurs <= c98cu.preis ;

            GROUP BY d05.idb01,d05.idc61,d05.idc98);

      INTO CURSOR qed2 NOFILTER

 

Der erste SQL Select berechnet den Edelmetallzuschlag wie bisher, d.h. auf Basis der Eingaben in B0103 für den Artikel und den Lieferanten. Der zweite SQL berechnet die Edelmetallzuschläge auf der Basis der Rohstoffgruppen. Der SQL IN… berechnet die Preisstaffel, die zur Berechnung des prozentualen Zuschlags benötigt wird. Die Tabelle WBXX ist entweder ein temporärer Cursor, der mit den Informationen eines Artikels gefüllt ist oder eine aufgelöste Baugruppe enthält. Für die Ermittelung der Daten werden in diesem SQL noch keine Summen gebildet. Dies wird erst anschließend mit dem Befehl:

SUM summe TO m.lnEdelwert

 

berechnet. Der obige SQL wird auch genommen, wenn eine Anzeige der verschiedenen Edelmetallwerte benötigt wird. Damit entfallen verschiedene SQL’s zur Ermittlung und Anzeige der Daten. Für die Berechnung des Edelmetallzuschlags gilt:

* Für die Seite Kalkulationsbasis:

 

* Standardberechnung, D05.IPD05=“DEB“

(c98.preis-d05.basis/c03.faktor*c03.kurs)/c98.gewi*d05.edelzahl/d05.uflaezu AS edelmetallzuschlag_in_firmenwährung

 

* Auf Rohstoffgruppenbasis, D05.IPD05=“DEA“ AND D05.CDBF=“B01“ => D05.IPD05$“DE1,DE2“ AND D05.CBDF=“C61“

IIF(d05.ipd05="DE1",b01.eknet,b01.ekbr)*d05.edelzahl/100 AS edelmetallzuschlag_in_firmenwährung

 

* Für die Seite Einkaufsbasis:

 

* Standardberechnung

(c98.preis*c03.faktor/c03.kurs-d05.basis)/c98.gewi*d05.edelzahl/d05.uflaezu*d03.meekuf AS edelmetallzuschlag_in_lieferantenwährung

 

* Auf Rohstoffgruppenbasis

d03.ekpreis*IIF(d05.ipd05="DE1",(1-d03.rabatt/100)*(1-d03.rabatt1/100),1)*d05.edelzahl/100*d03.meekuf AS edelmetallzuschlag_in_lieferantenwährung

 

Die fett dargestellten Felder des obigen SQL’s geben die Währung an, in der die verschiedenen Werte berechnet wurden. Die Inhalte sind je nach „Seite“ der Berechnung, Kalkulationsbasis / Einkaufsbasis, unterschiedlich. Eine Tabelle soll dies verdeutlichen:

Seite

IDC03FI

IDC03WE

IDC03LI

PREIS

BASIS

SUMME

SUMMEFI

Kalkulation

FIW

FIW

LIW

FIW

FIW

FIW

FIW

Einkauf

FIW

LIW

LIW

LIW

LIW

LIW

FIW

Summen, IPD05$“DEX,DEY“

FIW

FIW

 

 

 

FIW

FIW

 

Es bedeuten:

Die Spalte SUMMEFI ist nur bei der Anzeige der Edelmetallwerte vorhanden und immer mit der Firmenwährung berechnet. Summenzeilen, werden in der Darstellung immer in der Firmenwährung berechnet. Die SQL Spalte URFWEFI enthält den Umrechnungsfaktor für die Umrechnung des Wertes SUMME in die Firmenwährung.

summe*urfwefi = summefi

Hinweise

Bitte achten Sie bei der Eingabe von Edelmetalldefinitionen sowohl im Artikelstamm als auch im Lieferantenstamm darauf, dass keine doppelten Werte eingegebenen werden. Derartige Eingaben führen zu fehlerhaften Berechnungen des Edelmetallzuschlags. In der Maske D05NEW werden die Eingaben geprüft, jedoch kann es vorkommen, dass bei der Auswahl der Berechnungsgrundlage auf Rohstoffgruppen mehrere Einträge zur Verfügung stehen. Hier muss der Anwender die korrekte Rohstoffgruppe zuordnen damit die Berechnung korrekt ist.


Siehe auch : Hauptmenü / Hauptindex; / Dictionary Module / Programm- Module / Tabellen Index / Masken Index

Lokale Benutzerhilfe : Meine eigene Hilfe / Zurück zur PMS32 - Hilfe


Dateiversion:1.0.00.09.00 - H.U.DD.V1.V2
Senden Sie Ihren Kommentar zu diesem Thema an das Entwicklungsteam von PMS32
Weitere Informationen finden Sie unter der aktuellen PMS32 WEB-Hilfe . © PMS Compelec GmbH 2006 ® el-Projekt