- 20 Sep 2024
- 4 Minutes to read
- Print
- DarkLight
- PDF
Parameter Preisberechnung
- Updated on 20 Sep 2024
- 4 Minutes to read
- Print
- DarkLight
- PDF
Bei der Parameter-Preisberechnung erfolgt die Preisberechnung für eine Antwort eines Frageparameters über das hierfür neu eingeführte Preismakro eines Frageparameters.
Sobald ein Preismakro bei einem Frageparameter eingetragen wird, werden Zugriffsmakros bzw. Preismakros, welche bei Preismatrizen hinterlegt sind, nicht ausgeführt. Die Preisberechnung erfolgt somit nur über die neue Methode! Alle Einstellungen, welche bei den Antworten in den Laschen Preis sowie Variablen eingestellt werden können, werden für die neue Methode ebenfalls ignoriert.
Für die neue Parameter-Preisberechnung werden alle Einstellungen im neuen Preismakro mit Interface-Methoden gelöst.
Makroablauf
Bei F4-Auwahl (rein springen)
1. Unterdrückungsmakro
2. Abhängigkeitsmakro
3. Preismakro (falls Antwort mit Preisanzeige aktiviert wurde)
Validieren (raus springen)
1. Unterdrückungsmakro
2. Abhängigkeitsmakro
3. Validierungsmakro
4. Preismakro (falls Preisermittlung zur Laufzeit lizenziert bzw. aktiviert wurde)
Interface-Methoden
Im Preismakro des Frageparameters können mittels neuer ISS-Interface-Methoden direkt Daten vom Konfigurator ermittelt werden, bzw. Daten beim Konfigurator gesetzt werden.
Diese Interface-Methoden werden somit nicht erst beim Abschluss einer Procedure an den Konfigurator übergeben, sondern direkt nachdem die Methode ausgeführt wurde.
Das erlaubt mehrere Preiszugriffe innerhalb einer Procedure, ohne über spezielle Zyklen arbeiten zu müssen. ( PRMPRS_EXIT/ PRMPRS_NBR ist somit nicht mehr nötig)
Preise aus Matrizen ermitteln
Die Parameter-Preisberechnung erlaubt nach wie vor Preise aus dem bestehendem System der Preismatrizen zu ziehen. Anleitung zu den Preismatrizen findet man hier.
Dafür stehen 2 Interface-Methoden zur Verfügung:
ISS.GetMatrixPrices
Ermittlung von Grundpreis, Aufschlag und Mindestpreis aus der entsprechenden Preismatrixzeile einer bestimmten Preismatrix.
ISS.GETMATRIXPRICES ( MATRIX, KEY1, KEY2, KEY3, KEY4, KO_ACC, INPUTOUTPUT nGrundpreis, INPUTOUTPUT nAufschlag, INPUTOUTPUT nMindestpreis)
Die beiden Parameter MATRIX und KEY1 sowie die INPUTOUTPUT-Parameter si nd Pflichtwerte!
Wenn der Parameter KO_ACC (Zugriffsart) nicht angegeben wird, dann wird defaultmäßig = als Zugriffsart verwendet.
Bei KEY2- KEY4 wird defaultmäßig blank verwendet, wenn kein Wert angegeben wird.
Die Zugriffsart ( KO_ACC) wird über folgende Systemkonstante definiert:
Interner Wert | Operator | Systemkonstante | Beschreibung |
0 | = | SysConst.KoAcc.Equal | Der Schlüssel muss exakt dem Matrixzeilen Eintrag entsprechen |
1 | <> | SysConst.KoAcc.NotEqual | Es wird der nächst höhere (nicht-gleiche) Eintrag in der Matrix gesucht und ausgewählt. Gilt nur für den letzten Schlüssel. Alle anderen arbeiten mit „=“ |
2 | < | SysConst.KoAcc.Less | Es wird der nächst niedrige (nicht-gleiche) Eintrag in der Matrix gesucht und ausgewählt. Gilt nur für den letzten Schlüssel. Alle anderen arbeiten mit „=“ |
3 | > | SysConst.KoAcc.Greater | In der Matrix wird die erste Zeile gesucht, die nicht der Antwort entspricht und wird dann ausgewählt. Gilt nur für den letzten Schlüssel. Alle anderen arbeiten mit „=“ |
4 | <= | SysConst.KoAcc.LessEqual | Es wird der nächst höhere oder gleiche Eintrag in der Matrix gesucht und ausgewählt. Gilt nur für den letzten Schlüssel. Alle anderen arbeiten mit „=“ |
5 | >= | SysConst.KoAcc.GreaterEqual | Es wird der nächst niedrige oder gleiche Eintrag in der Matrix gesucht und ausgewählt. Gilt nur für den letzten Schlüssel. Alle anderen arbeiten mit „=“ |
6 | >=(2) | SysConst.KoAcc.GreaterEqual2 | Es werden die nächst höheren oder gleichen Einträge zweier abhängiger Keys in der Matrix gesucht und ausgewählt (wird zB bei Maße verwendet). Gilt nur für die letzten 2 Schlüssel. Alle anderen arbeiten mit „=“ |
7 | >=(3) | SysConst.KoAcc.GreaterEqual3 | Es werden die nächst höheren oder gleichen Einträge abhängig von drei Keys in der Matrix gesucht und ausgewählt. Gilt nur für die letzten 3 Schlüssel. Alle anderen arbeiten mit „=“ |
8 | >=(4) | SysConst.KoAcc.GreaterEqual4 | Es werden die nächst höheren oder gleichen Einträge abhängig von vier Keys in der Matrix gesucht und ausgewählt. Gilt nur für die letzten 4 Schlüssel. Alle anderen arbeiten mit „=“ |
ISS.GetMatrixPricePrs1
Wird nur der Grundpreis der entsprechenden Preismatrixzeile benötigt, dann steht folgende Interface-Methode zur Verfügung:
ISS.GETMATRIXPRICEPRS1 ( MATRIX , KEY1 , KEY2 , KEY3 , KEY4 , KO_ACC , INPUTOUTPUT nGrundpreis)
Beispiele
Ermitteln des Grundpreises eines Produktes über eine Preismatrix, welche einen Rasterpreis mit Breite und Höhe besitzt:
nGrundpreis = 0
ISS.GETMATRIXPRICEPRS1 ( "MmFensterGP" , STR$ (nBreite), STR$ (nHoehe), SYSCONST. KOACC. GreaterEqual2, INPUTOUTPUT nGrundpreis)
Ermitteln des Grundpreises sowie einen Aufschlag eines Zubehörs über eine Preismatrix:
nGP = 0
nAP = 0
ISS.GETMATRIXPRICES ( "MmZubehoer" , EVAL ( ASKPRMID ), INPUTOUTPUT nGP, INPUTOUTPUT nAP)
Setzen eines Preises
Für das Setzen eines Preises für eine Preisgruppe steht eine weitere Interface-Methode zur Verfügung:
ISS.SetPrice
ISS.SETPRICE ( "PgPreisgruppe" , nVerkaufspreis, nEinkaufspreis)
Preisgruppe sowie Verkaufspreis sind Pflichtfelder.
Wird kein Einkaufspreis angegeben, dann wird der Einkaufspreis auf denselben Wert gesetzt wie der Verkaufspreis. Die Systemvariable INDEPENDENTPCHCALCULATION wird für die neue Methode somit nicht mehr berücksichtigt. Die angegebene Preisgruppe muss im System angelegt sein.
Weitere Steuerungsmöglichkeiten
ISS.SetUndefinedPrice
Bei einer Preisgruppe des Frageparameters vermerken, dass der Preis undefiniert (?) ist. Die angegebene Preisgruppe muss definiert sein!
Wenn für eine Preisgruppe ein undefinierter Preis definiert ist, dann bleibt der Preis undefiniert, auch wenn ein Preis <> ? gesetzt werden sollte!
ISS.SETUNDEFINEDPRICE ( "PgPreisgruppe" )
ISS.PriceGroupResetList
Löschen einer kommagetrennten Liste von Preisgruppen, wobei die angegebenen Preisgruppen für alle Frageparameter gelöscht werden.
Es wird hierbei nicht überprüft, ob die angegebenen Preisgruppen auch definiert sind. Bei der Preisberechnung für die F4-Auswahl wird dies nicht berücksichtigt!
ISS.PRICEGROUPRESETLIST ( "PgPreisgruppe1,PgPreisgruppe2" )
ISS.SetShowZeroPrice
Festlegen, dass die Preisgruppe auch dann angezeigt werden soll, wenn Preis = 0. Dies ist unabhängig vom Frageparameter.
ISS.SETSHOWZEROPRICE ( "PgPreisgruppe" )
ISS.SetDisKey1-6
Definition von variablen Rabatten DisKey1-6.
ISS.SETDISKEY1 ( "PgPreisgruppe" , "Diskey1-Value" )