ECommerce: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 120: Zeile 120:
     abu.Rabatt(PERSON_R) : boolean;
     abu.Rabatt(PERSON_R) : boolean;
     // Zu der angegebenen Person wird ermittelt, ob sie Rabatte bekommt.
     // Zu der angegebenen Person wird ermittelt, ob sie Rabatte bekommt.
     // Wenn ja, wird true, andernfalls false zurückgegeben.
     // Wenn ja wird true, andernfalls false zurückgegeben.


     abu.Preis(AUSGABEART_R,ARTIKEL_R,PERSON_R) : array of double;
     abu.Preis(AUSGABEART_R,ARTIKEL_R,PERSON_R) : array of double;

Version vom 12. April 2005, 13:54 Uhr

eCommerce - Funktionen "Überblick"

Erstmalig werden Funktionen für Geschäftsabläufe aus OrgaMon in einem
Zentralen Modul (eCommerce) gesammelt. Das Ziel ist, den ganzen Webshop
bzw. alle Webanfragen ausschließlich über das eCommerce Modul laufen zu
lassen. Dabei werden auch erstmals "r" Connections und "w" Connections
eingesetzt, was dem zukünftigen raib-Server zugute kommt (Clustering).
Nun eine Liste aller eCommerce Funktionen:

eCommerce - Funktionen "XML-RPC-Verfügbar"

   abu.ArtikelSuche(SuchStr: string): array of integer; { ARTIKEL_R }
   // Suchmaschine für Artikelsuche
   abu.ArtikelPreis(AUSGABEART_R, ARTIKEL_R:integer): double;
   // liefert den Preis des Artikels in dieser Ausgabeart
   // kostenlos = 0; // 
   // cPreis_vergriffen = -1.0; // Artikel nicht mehr lieferbar.
   // cPreis_aufAnfrage = -2.0; // keine Preisinformation verfügbar.
   abu.Land(LAND_R: integer): string;
   // liefert die Landesbezeichnung (als ISO-Kürzel)
   abu.KontoInfo(PERSON_R: integer): double;
   // liefert den Kontostand des Kunden (zu zahlen!)
   // erzeugt als Nebeneffekt die aktuelle "Mahnung.html"
   abu.BestellInfo(PERSON_R: integer): integer;
   // liefert den Lieferrückstand des Lieferanten (Erwartete Mengen!)
   // erzeugt als Nebeneffekt die aktuelle "Bestellung.html"
   abu.Bestellen(PERSON_R: integer): integer;
   // erstellt aus dem Einkaufswagen des Kunden eine tatsächliche
   // Bestellung. Die (neue) Beleg-Nummer wird zurückgegeben.
   //
   abu.ArtikelVersendetag(AUSGABEART_R, ARTIKEL_R:integer): integer;
   //
   // GELBE STATI
   //  0=keine Info über Verfügbarkeit vorhanden
   //
   // ROTE STATI:
   //  1=entgültig vergriffen
   //  2=zur Zeit vergriffen, Neuauflage jedoch ungewiss
   //  3=zur Zeit vergriffen, Neuauflage jedoch sicher
   //
   //
   // GRÜNE STATI:
   //  10=heute lieferbar  (=ist am Lager, ohne Mengenangabe)
   //  11=morgen lieferbar (=wurde z.B. mit dieser Zusage bereits bestellt und kommt morgen)
   //  12=in 2 Tagen lieferbar... (=ist z.B. in dieser Zeit zu beschaffen)
   //  13=in 3 Tagen lieferbar...
   //  14= ... usw ...
   //
   // GRÜNE STATI:
   //  101= heute lieferbar  (=ist am Lager, Lagermenge=1)
   //  102= heute lieferbar  (=ist am Lager, Lagermenge=2)
   //  103= heute lieferbar  (=ist am Lager, Lagermenge=3)
   //  ... usw.
   //
   //  GRÜNE STATI:
   // >20020101= Konkretes Lieferdatum (z.B. Erscheinungsdatum!)
   //  20031003= am 03.10.2003 lieferbar (da es z.B. an diesem Tag erscheint)
   //            (Vorbestellungen natürlich möglich)
   //
   abu.Verlag(VERLAG_R:integer): string;
   // Names des Verlages zu einem Verlags-RID
   // ACHTUNG: aus geschichtlichen Gründen sind VERLAG_R zumeist als PERSON_R(s)
   // zu verstehen!
   abu.Versandkosten(PERSON_R:integer): double;
   // Liefert passend zum "Kunden,Umfang des Einkaufswagen,Versandart des Kunden" die
   // passenden Versandkosten. Im Moment als dummy immer 3,33 €.
   abu.ArtikelInfo(AUSGABEART_R, ARTIKEL_R, LAND_R, VERLAG_R) : double, string;
   // Multi-Info-Funktion für weitere Informationen zu Artikel-Daten
   // Ergebnisse: Preis, "ISO-Landeskennzeichen" "-" "Verlag"
   abu.BasePlug():array of string;
   // liefert diverse Informations-String:
   // 1) Datenbankname
   // 2) OrgaMon Versions-Nummer
   // 3) IBO Versions-Nummer
   // 4) Indy Versions-Nummer
   // 5) PDF Pfad (public)
   // 6) Musik Pfad
   // 7) HTML-Pfad (Rechnungen)
   // 8) Bild-URL
   // * Mit Hilfe des Verbindungsstrings sollte auf die entsprechende Datenbank
   //   konnektiert werden.
   // * In der Datenbank sollten nun alle weiteren Parameter, den Shop betreffend
   //   eingegeben sein!
   // für den Shop wichtige Parameter:
   //
   // MusicPath=\\Linus\user\abu\Delphi\abu\Musik\
   // PDFPath=\\Linus\user\hebu\HeBu PDF\A4PDF\
   // XMLRPCHost=BRUTUS
   // XMLRPCPort=3049
   //
   abu.ArtikelRabattPreis(AUSGABEART_R,ARTIKEL_R,PERSON_R) : array of double;
   //
   // wie Artikel-Preis, soll jedoch bei Kunden mit Rabatt-Code verwendet werden,
   // diese Funktion liefert noch die Rabatt-Zahl dazu!
   //
   abu.PersonNeu : integer; { PERSON_R }
   //
   // Eine neue Person wird angelegt. Der (neue) RID wird als Ergebnis ge-
   // liefert. Der Webshop kann nun weitere Eintragungen machen.
   //
   abu.Ort(PERSON_R) : string; { Adress-Ortsangabe }
   //
   // Zu der angegebenen Person wird die Orts-Angabe zusammengestellt.
   // Dazu wird Land, Plz, Ortsname und Ortsteil landesspeziefisch
   // kombiniert.
   abu.Rabatt(PERSON_R) : boolean;
   // Zu der angegebenen Person wird ermittelt, ob sie Rabatte bekommt.
   // Wenn ja wird true, andernfalls false zurückgegeben.
   abu.Preis(AUSGABEART_R,ARTIKEL_R,PERSON_R) : array of double;
   //
   // Ersetzt in Zukunft die beiden Methoden abu.ArtikelPreis und abu.ArtikelRabattPreis
   // Falls der Kunde Rabatte bekommt, was beim Login mit abu.Rabatt geprüft wird,
   // wird der Funktion der wirkliche PERSON_R übergeben, andernfalls 0.
   // Rückgabewerte sind der Preis und der Rabatt (in Prozent, 0 bei PERSON_R == 0).

eCommerce - Funktionen "intern verfügbar"

   procedure e_w_BedarfsAnzeige(AUSGABEART_R, ARTIKEL_R, POSTEN_R, MENGE: integer; Motivation: eMotivation);
   // dem Agenten signalisieren, dass Bestell-Bedarf besteht
   procedure e_w_Wareneingang(AUSGABEART_R, ARTIKEL_R, MENGE: integer);
   // Waren im System verteilen
   function e_r_Lieferant(ARTIKEL_R, MENGE: integer): integer; {PERSON_R}
   // Ermittelt den Lieferanten zu diesem Artikel
   function e_w_BestellBeleg(PERSON_R: integer): integer; {BBELEG_R}
   // liefert die Nummer eines Bestellbelegs, ev. wird einer neu erzeugt
   function e_r_Menge(AUSGABEART_R, ARTIKEL_R: integer): integer; { MENGE }
   // liefert die Lagermenge dieses Artikels in der angegebenen
   // Ausprägungsart
   function e_w_Menge(AUSGABEART_R, ARTIKEL_R, MENGE: integer): integer; { MENGE }
   // bucht eine Lagermenge ab oder zu, oder als read-Only
   // liefert die neue Lagermenge