73D.44 Register „Warenkorb“
SQL_sqlVorschlagsmenge
Aufgabe:
Berechnung einer alternativen (Anfrage-/Bestell-)Menge abhängig vom Teil und dem ausgewählten Lieferanten.
Die Menge wird unter der eingebbaren Menge zur Auswahl angeboten.
Umsetzung:
Als Beispiel wird die LosMenge aus dem Teilestamm (in der im Dialog ausgewählten Mengeneinheit) „errechnet“.
Technik:
Vorbelegung aus Sektion [EKA73D]/ EKA73D_2_MENGECALC per SQLSelect
Für die berechnete alternative Menge kann auch ein Hinweistext in der INI-Datei hinterlegt werden, der dann im Dialog angezeigt wird:
[EKA73D]
EKA73D_2_MENGECALC_TEXT=Zauberformel
73D.441 Kalender
Das Kalender-Control ist ähnlich wie das Chart-Control in einen Container gebettet. Ein besonderes Feature des Controls, ist die Möglichkeit, Kalendertage datenabhängig unterschiedlich farblich oder mit Symbolen zu markieren.
Ein Kalender-Control wird durch folgende SibDef-Einträge in einem Container instanziiert:
[infraCalendar]
MarkDates.1=EKA73D,MarkDates1
MarkDates.2=EKA73D,MarkDates2
Über die „MarkDates“-Einträge wird jeweils mit Sektions- und Schlüsselnamen auf Einträge in der INI-Datei verwiesen. Dort sind die jeweiligen Markierungsdaten hinterlegt:
[EKA73D]
MarkDates1=,Green,White,diagonal1,(weekly,SQLSelect(INFRAOMA,SQL_sqlAusliefertermine,/ALL))
MarkDates2=Corner red.bmp,,,,(none,SQLSelect(INFRAOMA,SQL_sqlBestelltermine,/ALL))
Der prinzipielle Aufbau eines Markierungseintrags ist wie folgt:
MarkDatesKey=Bitmap,Color1,Color2,Gradient,(DateGroup1),(DateGroup2),…
  • MarkDatesKey               
    Eindeutiger Schlüssel der Markierungsbeschreibung. Auf diesen Schlüssel wird im SibDef-Eintrag „MarkDates“ verwiesen.
  • Bitmap                           
    Name einer Bitmap, mit der die Tage dieser Markierungsbeschreibung markiert werden sollen. Derzeit wird nur eine Bitmap als Markierungsoption angeboten:
    Corner red = Rote Ecke
  • Color1                           
    Erste Farbe, mit der die Tage markiert werden sollen. Ohne Gradient ist dies die einzige Farbe.
  • Color2                           
    Zweite Farbe, mit der die Tage markiert werden sollen. Wird nur bei Farbverläufen (Gradienten) verwendet.
  • Gradient                        
    Gibt an, ob die Tage mit einem Farbverlauf markiert werden sollen:
    None = kein Farbverlauf
    Vertical = Farbverlauf von oben nach unten
    Horizontal = Farbverlauf von links nach rechts
    Diagonal1 = Farbverlauf von links unten nach rechts oben
    Diagonal2 = Farbverlauf von links oben nach rechts unten
  • (DateGroup…)               
    Gruppe von Terminen, die markiert werden sollen. Eine DateGroup setzt sich dabei aus den folgenden Angaben zusammen:
    (Pattern,StartDate(s), EndDate(s))
  • Pattern                          
    Wiederholungsschema. Ausgehend vom angegebenen Startdatum werden alle Termine, die dem Wiederholungsschema entsprechen, markiert, bis ein ggf. angegebenes Enddatum erreicht wird:
    none = kein Wiederholungsschema (es werden nur einzelne Termine markiert)
    daily = täglich (jeder Tag ab Startdatum wird markiert)
    weekly = wöchentlich (der Wochentag wird in jeder Woche markiert)
    monthly = monatlich (der Tag wird jeden Monat markiert)
    yearly = jährlich (der Termin wird jedes Jahr markiert)
  • StartDate(s)                   
    Ein einzelnes Datum oder eine Gruppe von Terminen, die zum Beispiel durch eine SQL-Anweisung per SQLSelect geliefert werden.
    Das angegebene Datum bzw. alle per SQL gelieferten Termine werden entsprechend dem Wiederholungsschema markiert.
    Ein Datum muss dabei der Form „tt.mm.wwww“ entsprechen.
  • EndDate(s)                    
    Ein einzelnes Datum oder eine Gruppe von Terminen, die das jeweilige Ende eines Wiederholungsschemas definieren.
    Fehlt diese Angabe, werden ohne Wiederholungsschema alle als Startdatum angegebenen Termine als Einzeltermine behandelt.
    Mit Wiederholungsschema wird dieses unendlich (bis Kalenderende) fortgesetzt.
    Wird ohne Wiederholungsschema ein Endtermin ungleich Starttermin angegeben, wird der Bereich zwischen Start- und Endtermin markiert.
    Werden weniger Endtermine als Starttermine angegeben, gilt der letzte Endtermin auch für die restlichen Startermine. Das heißt, werden zum Beispiel 3 unterschiedliche Starttermine mit wöchentlichem Wiederholungsschema angegeben und nur ein Endtermin, so gilt dieser Endtermin für die Markierung aller 3 sich wiederholenden Wochentage.
Verwendete SQL-Abfragen für die Markierung von Terminen
SQL_sqlAusliefertermine
Aufgabe:
Es sollen die Wochentage ab heute zurückgegeben werden, an denen der Lieferant laut Angabe im Lieferantenstamm liefern kann.
Umsetzung:
Per $Macros[LBUF2(100,3)] kann auf den selektierten Lieferanten zugegriffen werden.
Es muss für jeden möglichen Wochentag per Select das Datum des nächsten Wochentags (also zum Beispiel „nächster Montag ab heute“) ermittelt werden.
Anschließend werden alle Termine per Union zusammengefasst und als Ergebniszeilen geliefert.
SQL_sqlBestelltermine
Aufgabe:
Es sollen die Termine zurückgegeben werden, an denen zukünftige Lieferungen mit dem Lieferanten terminiert sind.
Umsetzung:
Per $Macros[LBUF2(100,3)] kann auf den selektierten Lieferanten zugegriffen werden.
Es werden alle nicht erledigten Bestellpositionen für den selektierten Lieferanten mit Lieferdatum > heute gelesen und die Liefertermine als Ergebniszeilen zurückgegeben.
73D.442 Auswahl Warenkorb
Die existierenden Warenkörbe zu einem Lieferanten werden per FillControl und SQLShowResults über eine Abfrage gefüllt.
SQL_sqlWarenkoerbe
Aufgabe:
Anzeige aller nicht erledigten Warenkorbpositionen zum selektierten Lieferanten und des jeweiligen Genehmigungszustands eines Warenkorbs.
Umsetzung:
In der Abfrage steht der selektierte Lieferant per $Macros[LBUF2(100,3)] zur Verfügung.
Es werden alle nicht erledigten Bestellpositionen (EKABPOS) zum selektierten Lieferanten mit Vorgangsart „W“ gelesen und der Zustand des Warenkorbs über GPzustand im zugehörigen Bestellkopf bestimmt und in Klartext umgewandelt.
Wichtig ist bei dieser Abfrage, dass die erste Spalte der Ergebnisliste immer die Warenkorbnummer enthält.
Das Programm ist darauf angewiesen.
Technik:
FillControl mit SQLShowResults