ECommerce: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Die B2B Fähigkeiten des OrgaMon ermöglichen es Dienstleistungen des OrgaMon von aussen zu benutzten. Dazu wird im Moment, die von jedem System beherschte XML-RPC Schnittstelle benutzt. Der benutzte TCP/IP Port ist frei einstellbar. | |||
== Funktionen "Überblick" == | |||
Erstmalig werden Funktionen für Geschäftsabläufe aus OrgaMon in einem | Erstmalig werden Funktionen für Geschäftsabläufe aus OrgaMon in einem | ||
Zeile 8: | Zeile 11: | ||
Nun eine Liste aller eCommerce Funktionen: | Nun eine Liste aller eCommerce Funktionen: | ||
== Funktionsindex "XML-RPC-Verfügbar" == | |||
abu.ArtikelSuche(SuchStr: string): array of integer; { ARTIKEL_R } | abu.ArtikelSuche(SuchStr: string): array of integer; { ARTIKEL_R } | ||
Zeile 135: | Zeile 138: | ||
// | // | ||
== Funktionsindex "intern verfügbar" == | |||
// SQL selects, die einen Einzelnen Wert zurückgeben | |||
function e_r_sql(s: string): integer; | |||
function e_r_GEN(GenName: string): integer; | |||
function e_r_sqls(s: string): string; | |||
function e_r_sqll(s: string): TStringList; | |||
function e_r_sqlm(s: string): TIntegerList; | |||
function e_r_sqld(s: string): double; | |||
function e_r_IsRID(FieldName: string; RID: integer): boolean; | |||
// SQL Update, Execute Statements | |||
procedure e_x_sql(s: string); overload; | |||
procedure e_x_sql(s: TStrings); overload; | |||
// kleinere Tools für Artikel Selektion | |||
function e_r_sqlArtikelWhere(AUSGABEART_R, ARTIKEL_R: integer): string; | |||
// | |||
procedure e_r_ArtikelSortieren(const RIDS: TList); | |||
// | |||
function ResolveSQL(const VarName: ShortString): ShortString; | |||
// | |||
procedure e_x_dereference(dependencies: TStringList; fromref, toref: string); | |||
// alle Referenzen von einem Wert auf einen RID | |||
// | |||
// TABELLE "." FELD [","] [" where " CONDITION] | |||
// | |||
function e_r_AgentMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// liefert die Menge, die im Moment zu beschaffen ist | |||
function e_r_UngelieferteMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// liefert die Menge, die im Moment zu beschaffen ist | |||
function e_r_VorschlagMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// liefert die Menge, die das System vorschlagen würde | |||
function e_r_ErwarteteMenge(AUSGABEART_R, ARTIKEL_R: integer; sDetails: TStringList = nil): integer; | |||
// liefert die Menge, die im Moment erwartet wird! | |||
function e_r_Localize(RID, LAND_R: integer): string; | |||
// | |||
function e_r_Localize2(RID, LANGUAGE: integer): string; | |||
// Landesspezifiesche Strings | |||
// | |||
function e_w_SyncLocalTime: boolean; | |||
// Lokale Uhrzeit neu stellen! | |||
// | |||
function e_w_GEN(GenName: string): integer; | |||
// erhöht den Generator um ein und liefert nun diesen Wert. | |||
// | |||
function e_r_Bearbeiter(BEARBEITER_R: integer): string; | |||
// Liefert das Kürzel des Bearbeiters. | |||
// | |||
function e_r_ServerTime: TDateTime; | |||
// Server Uhrzeit auslesen! | |||
// | |||
function e_r_UngelieferteMengeUeberBedarf(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// liefert die überzählige Menge die vom System erwartet wird, also über "Agent" und "Mindestbestand" | |||
// hinaus. | |||
function e_r_MindestMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// liefert die Mindest-Menge, die auf Lager sein sollte | |||
procedure e_w_BedarfsAnzeige(AUSGABEART_R, ARTIKEL_R, POSTEN_R, MENGE: integer; Motivation: eMotivation); | procedure e_w_BedarfsAnzeige(AUSGABEART_R, ARTIKEL_R, POSTEN_R, MENGE: integer; Motivation: eMotivation); | ||
// dem Agenten signalisieren, dass Bestell-Bedarf besteht | // dem Agenten signalisieren, dass Bestell-Bedarf besteht | ||
function e_w_SetFolge(AUSGABEART_R, ARTIKEL_R: integer): integer; // Order-Posten-Anz | |||
// Reihenfolge der Befriediung von Erwarteten Mengen voreinstellen | |||
function e_w_Wareneingang(AUSGABEART_R, ARTIKEL_R, MENGE: integer): integer; // [ZUSAMMENHANG] | |||
// Waren im System verteilen | // Waren im System verteilen | ||
function e_r_ZahlungText(ZAHLUNGTYP_R: integer; PERSON_R: integer = 0; MoreInfo: TStringList = nil): string; | |||
// liefert den Zahlungstext zur jeweiligen Person | |||
function e_r_VERLAG_R_fromVerlag(Verlag: string): integer; { RID } | |||
// RID eines Verlages bestimmen! | |||
function e_r_Lieferant(ARTIKEL_R, MENGE: integer): integer; {PERSON_R} | function e_r_Lieferant(ARTIKEL_R, MENGE: integer): integer; {PERSON_R} | ||
Zeile 148: | Zeile 231: | ||
function e_w_BestellBeleg(PERSON_R: integer): integer; {BBELEG_R} | function e_w_BestellBeleg(PERSON_R: integer): integer; {BBELEG_R} | ||
// liefert die Nummer eines Bestellbelegs, ev. wird einer neu erzeugt | // liefert die Nummer eines Bestellbelegs, ev. wird einer neu erzeugt | ||
function e_w_JoinBeleg(BELEG_R_FROM, BELEG_R_TO: integer): integer; | |||
// 2 Belege zusammen führen | |||
function e_w_JoinPerson(PERSON_R_FROM, PERSON_R_TO: integer): integer; | |||
// 2 Personen zusammen führen, Quellperson kann gelöscht werden | |||
function e_w_MoveBeleg(BELEG_R_FROM, PERSON_R_TO: integer): integer; | |||
// einen Beleg von einem Verantwortlichen zum anderen führen | |||
function e_w_CopyBeleg(BELEG_R_FROM, PERSON_R_TO: integer): integer; | |||
// Beleg neu erstellen anhand einer Vorlage | |||
function e_r_MengenAusgabe(MENGE, EINHEIT_R: integer; FormatStr: string = '%d'): string; | |||
// Menge rausbelichten | |||
function e_r_EinzelPreisAusgabe(PREIS: double; EINHEIT_R: integer): string; | |||
// Einzelpreis rausbelichten | |||
function e_r_PostenPreis(EinzelPreis: double; Anz, EINHEIT_R: integer): double; | |||
// Gesamtpreis berechnen | |||
function e_w_AusgabeBeleg(BELEG_R: integer; NurGeliefertes: boolean; AlsLieferschein: boolean): string; | |||
// Ausgabelauf für den aktuellen Beleg mit Anlage der htmls | |||
function e_r_Ausgabeart(AUSGABEART_R: integer): string; | |||
// liefert den text dieser Ausgabeart | |||
// | |||
function e_r_Menge(AUSGABEART_R, ARTIKEL_R: integer): integer; { MENGE } | function e_r_Menge(AUSGABEART_R, ARTIKEL_R: integer): integer; { MENGE } | ||
Zeile 153: | Zeile 264: | ||
// Ausprägungsart | // Ausprägungsart | ||
function e_w_Menge(AUSGABEART_R, ARTIKEL_R, MENGE: integer): integer; { MENGE } | function e_r_PreisTabelle(PREIS_R: integer): double; | ||
// bucht eine Lagermenge ab oder zu | // Liest den Preiswert aus der Tabelle aus | ||
// | |||
function e_r_PreisValid(p: double): boolean; | |||
// Ist es auch ein echter preis, oder nur ein Tag | |||
// | |||
function e_r_Preis(AUSGABEART_R, ARTIKEL_R: integer; var Satz: double; var Netto: boolean; var NettoWieBrutto: boolean): double; | |||
// liefert den Preis des Artikels | |||
// Satz ist der Mwst-Satz | |||
// Netto liefert Info, ob dieser Preis ein Netto oder Brutto-Preis ist | |||
// | |||
function e_r_PreisText(AUSGABEART_R, ARTIKEL_R: integer): string; | |||
// liefert den Preis des Artikels, fertig als String | |||
// - es kann auch "auf Anfrage" geben | |||
function e_r_PreisBrutto(AUSGABEART_R, ARTIKEL_R: integer): double; | |||
// liefert den Preis des Artikels | |||
// | |||
function e_r_PreisNativ(AUSGABEART_R, ARTIKEL_R: integer): double; | |||
// liefert die Preisangabe für diesen Artikel | |||
// unabhängig von netto/brutto Problematik so wie er in der | |||
// Datenbank steht. | |||
function e_r_EndPreis(PERSON_R, AUSGABEART_R, ARTIKEL_R: integer): double; | |||
// liefert den Preis des Artikels | |||
function e_r_PreisNetto(AUSGABEART_R, ARTIKEL_R: integer): double; | |||
// liefert den Preis des Artikels | |||
function e_r_PaketPreis(AUSGABEART_R, ARTIKEL_R: integer): double; | |||
// liefert den Preis des Artikels | |||
function e_r_RabattFaehig(PERSON_R: integer): boolean; | |||
// ist es ein Rabatt-Kunde JA/NEIN | |||
function e_r_Rabatt(ARTIKEL_R, PERSON_R: integer; var Netto: boolean; var NettoWieBrutto: boolean): double; | |||
// liefert den Rabatt, den diese Person bei diesem Artikel erhält | |||
// nebenbei: | |||
// wird bei dieser Person ohne MwSt-Ausweisgearbeitet (Ausländer)? | |||
// soll dabei einfach der eigentliche Bruttopreis als Nettopreis ausgewiesen werden? | |||
// | |||
function e_r_ekRabatt(ARTIKEL_R: integer): double; | |||
// liefert den Rabatt, mit dem dieser Artikel eingekauft wird | |||
function e_r_ObtainISOfromRID(LAND_R: integer): string; | |||
// liefert das ISO Landeskennzeichen | |||
function e_r_MwSt(AUSGABEART_R, ARTIKEL_R: integer): double; overload; | |||
// liefert die MwSt des Artikels | |||
function e_r_MwSt(SORTIMENT_R: integer): double; overload; | |||
// liefert die MwSt wie in diesem Sortiment üblich | |||
function e_w_EinLagern(ARTIKEL_R: integer): integer; // [LAGER_R] | |||
// Lagerplatz eintragen | |||
function e_r_LagerVorschlag(SORTIMENT_R: integer; PERSON_R: integer {VERLAG_R}): integer; // [LAGER_R] | |||
// Lagerplatz vorschlagen | |||
function e_r_LagerDiversitaet(LAGER_R: integer): integer; // [MENGE] | |||
// Liefert die Anzahl verschiedener Artikel auf einem Lagerplatz | |||
procedure e_w_LagerFreigeben; | |||
// gibt Lagerplätze frei, bei denen 14 Tage keine Bewegung mehr ist und Menge=0 | |||
function e_w_Menge(AUSGABEART_R, ARTIKEL_R, MENGE: integer; BELEG_R: integer = 0; POSTEN_R: integer = 0): integer; { MENGE } | |||
// bucht eine Lagermenge ab oder zu | |||
// liefert die neue Lagermenge | // liefert die neue Lagermenge | ||
function e_w_NeuerMahnlauf(ForceNew: boolean = false): boolean; | |||
// erzeugt neuen Nummernkreise und leert die Mahnkandidatenliste | |||
// | |||
function e_w_KontoInfo(PERSON_R: integer; Verbuchen: boolean = false; AuchMahnbescheid: boolean = false): TStringList; | |||
// liefert den Kontostand des Kunden (zu zahlen!) | |||
// erzeugt als Nebeneffekt die aktuelle "Mahnung.html" | |||
// | |||
// OFFEN= | |||
// VERZUG= | |||
// [GUTSCHRIFT=JA] | |||
// [DIFFERENZ=JA] | |||
// | |||
function e_r_BestellInfo(PERSON_R: integer): integer; | |||
// liefert den Lieferrückstand des Lieferanten (erwartete Mengen!) | |||
// erzeugt als Nebeneffekt die aktuelle "Bestellung.html" | |||
function e_w_Bestellen(PERSON_R: integer): integer; | |||
// setzt den Einkaufswagen in eine Bestellung um. Dabei wird der | |||
// Einkaufswagen geleert. | |||
function e_w_BudgetEinfuegen(BELEG_R: integer): integer; | |||
// Fügt unberechnetes Volumen aus offenen Bugets in den angegebenen | |||
// Beleg ein. | |||
procedure e_w_BudgetAbschreiben(BELEG_R: integer; BUDGET_R: integer; Menge_Rechnung: integer); | |||
// Bucht ein bisher unberechnetes Volumen an einem Budget ab, und | |||
// setzt das Volumen auf "abgerechnet". | |||
procedure e_w_EinkaufswagenLeeren(PERSON_R: integer); | |||
// Leert den aktuellen Einkaufswagen | |||
function e_w_EinkaufswagenEinfuegen(BELEG_R: integer): integer; | |||
// Fügt den aktuellen Einkaufswagen in den angegebenen Beleg | |||
// ein. | |||
function e_r_Rechnung(BELEG_R: integer): integer; | |||
// liefert die als nächstes zu vergebene Rechnungsnummer | |||
function e_w_BelegVersand(BELEG_R: integer; Summe: double; gewicht: integer): integer; | |||
// Legt einen neuen Versand-Eintrag in der Versand-Tabelle an, | |||
// oder füllt den vorbereiteten! | |||
function e_r_StandardVersender: integer; | |||
// Legt einen neuen Versand-Eintrag in der Versand-Tabelle an, | |||
// dadurch | |||
function e_r_LeerGewicht(PACKFORM_R: integer): integer; | |||
// Leergewicht einer bestimmten Packform | |||
// | |||
function e_r_Gewicht(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// Gewicht eines Artikels | |||
// | |||
function e_r_ArtikelVersendetag(AUSGABEART_R, ARTIKEL_R: integer): integer; | |||
// gibts infos über den Versendetag aus, es werden spezielle Status Codes | |||
// verwendet. Siehe Doku. | |||
function e_r_Lieferzeit(AUSGABEART_R, ARTIKEL_R: integer): integer; // [Tage] | |||
// gibts infos über den Versendetag aus, es werden spezielle Status Codes | |||
// verwendet. Siehe Doku. | |||
function e_w_ArtikelNeu(SORTIMENT_R: integer): integer; { : RID } | |||
// legt einen Artikel im angegebenen Sortiment an | |||
// liefert den neuen RID zurück! | |||
function e_w_PersonNeu: integer; { : RID } | |||
// legt eine neue Person (vorläufig) an. Über sie kann der Kunde | |||
// vorbestellungen / vormerkungen anlegen. | |||
function e_r_UebergangsfachFromPerson(PERSON_R: integer): integer; | |||
// Übergangsfach ermitteln | |||
// | |||
function e_r_Uebergangsfach_VERLAG_R: integer; | |||
// Das Übergangsfach | |||
function e_r_FreiesLager_VERLAG_R: integer; | |||
// | |||
function e_r_IsUebergangsfach(LAGER_R: integer): boolean; | |||
// | |||
function e_r_LagerPlatzNameFromLAGER_R(LAGER_R: integer): string; | |||
// Names eines Lagerplatzes anhand des LAGER_R | |||
function e_w_SetStandardVersandData(qVERSAND: TIB_Query): integer; | |||
// Versanddatensatz vorbelegen | |||
function e_r_VersandKosten(AUFTRAGGEBER_R, LIEFERANSCHRIFT_R, BELEG_R: integer): integer; { : ARTIKEL_R } | |||
// berechnet die VersandKosten anhand der Tabelle VREGEL | |||
// PERSON_R: Auftraggeber, angabe freiwillig | |||
// LIEFERANSCHRIFT_R: an wen geht die Lieferung, angabe freiwillig | |||
// BELEG_R: um welchen Beleg geht es | |||
function e_r_IsVersandKosten(ARTIKEL_R: integer): boolean; | |||
// ermittelt, ob es sich bei dem Angegebenen Artikel | |||
// um einen Versandartikel handelt, dies sind solche, die | |||
// in der VREGEL genannt werden. | |||
function e_w_VersandKostenClear(BELEG_R: integer): integer; { : Anzahl der entfernten } | |||
// löschen der ungebuchten versandkosten des | |||
// letzten Buchungslaufes | |||
function e_r_ort(PERSON_R: integer): string; | |||
// gibt der kompletten Orts-String an | |||
// | |||
function e_r_ObtainVerlagFromPERSON_RID(PERSON_R: integer): string; | |||
// | |||
function e_r_BelegInfo(PERSON_R: integer; BELEG_R: integer): TStringList; { : diverse ermittelten Werte } | |||
// PERSON_R: Eigner des Einkaufswagen | |||
// -- ODER ALTERNATIV -- | |||
// BELEG_R: direkte Belegnummer | |||
// | |||
function e_w_BerechneBeleg(BELEG_R: integer; NurGeliefertes: boolean = false): TStringList; { : diverse ermittelte Werte } | |||
// die Auftragsmengen entsprechend auf die Mengen verteilen Daumen, es erfolgen | |||
// Lagerbuchungen. | |||
// RECHNUNGSBETRAG= | |||
// LIEFERGEWICHT= | |||
function e_w_ForderungBuchen(BELEG_R: integer; RechnungsBetrag: double): TStringList; | |||
// | |||
// | |||
function e_w_BucheVersand(BELEG_R: integer; LabelDatensatz: boolean): string; | |||
// Briefumschlag-Funktion in den Belegen, Berechnete Mengen werden auf | |||
// geliefert gesetzt. Budgets werden abgeschrieben. | |||
procedure e_w_RechnungDatumSetzen(ib_q: TIB_Query; Aufdatum: TDateTime); overload; | |||
// historisch !! - löschen wenn möglich | |||
procedure e_w_RechnungDatumSetzen(ib_q: TIB_Query; Aufdatum: TANFiXDate); overload; | |||
// historisch !! - löschen wenn möglich | |||
function e_w_BelegNeu(PERSON_R: integer): integer; { } | |||
// legt einen neuen Kunden-Beleg an | |||
function e_r_LohnKalkulation(Betrag: double; Datum: TANFIXDate): string; | |||
// | |||
function e_r_LadeParameter: TStringList; { } | |||
// | |||
procedure e_r_PostenInfo(IBQ: TIB_DataSet; NurGeliefertes: boolean; EinzelpreisNetto: boolean; | |||
var | |||
_Anz, | |||
_AnzAuftrag, | |||
_AnzGeliefert, | |||
_AnzStorniert, | |||
_AnzAgent: integer; | |||
var | |||
_Rabatt, | |||
_EinzelPreisUnrabattiert, | |||
_EinzelPreis, | |||
_MwStSatz: double | |||
); | |||
procedure e_w_BeforeDeletePosten(POSTEN_R: integer); | |||
procedure e_w_BeforeDeleteBPosten(BPOSTEN_R: integer); | |||
procedure e_w_BeforeDeleteBeleg(BELEG_R: integer); | |||
procedure e_w_BeforeDeleteBBeleg(BBELEG_R: integer); | |||
procedure e_w_BeforeDeleteArtikel(ARTIKEL_R: integer); | |||
function e_w_BelegStatusBuchen(qbeleg: TIB_Query): boolean; | |||
function e_w_BBelegStatusBuchen(bbeleg, bposten: TIB_Query): boolean; | |||
procedure e_w_SetPostenData(ARTIKEL_R, PERSON_R: integer; qPosten: TIB_Query); | |||
procedure e_w_SetPostenPreis(AUSGABEART_R, ARTIKEL_R, PERSON_R: integer; qPosten: TIB_Query); | |||
// vor dem setzen weiterer Felder kann hier Standardasiert ein Artikel in | |||
// den aktuellen Posten kopiert werden. Zentrale Funktion zum Füllen einer | |||
// Posten zeile | |||
procedure e_w_InvalidateCaches; | |||
// Q - Funktionen sind Qualitätssicherungs-Hilfsfunktionen | |||
function q_r_PersonWarnung(PERSON_R: integer): TStringList; | |||
// F - Sind Download und Upload Funktionen | |||
procedure e_f_PersonInfo(PERSON_R: integer; AusgabePfad: string); |
Version vom 27. April 2005, 13:58 Uhr
Die B2B Fähigkeiten des OrgaMon ermöglichen es Dienstleistungen des OrgaMon von aussen zu benutzten. Dazu wird im Moment, die von jedem System beherschte XML-RPC Schnittstelle benutzt. Der benutzte TCP/IP Port ist frei einstellbar.
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:
Funktionsindex "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). // // result[0] Preis in Euro // result[1] Rabatt in % // result[2] Netto-Flag: ("1" = JA | "0" = NEIN) // result[3] Netto-wie-Brutto-Flag: ("1"= JA | "0" = NEIN) //
Funktionsindex "intern verfügbar"
// SQL selects, die einen Einzelnen Wert zurückgeben function e_r_sql(s: string): integer; function e_r_GEN(GenName: string): integer; function e_r_sqls(s: string): string; function e_r_sqll(s: string): TStringList; function e_r_sqlm(s: string): TIntegerList; function e_r_sqld(s: string): double; function e_r_IsRID(FieldName: string; RID: integer): boolean;
// SQL Update, Execute Statements procedure e_x_sql(s: string); overload; procedure e_x_sql(s: TStrings); overload;
// kleinere Tools für Artikel Selektion function e_r_sqlArtikelWhere(AUSGABEART_R, ARTIKEL_R: integer): string; //
procedure e_r_ArtikelSortieren(const RIDS: TList); //
function ResolveSQL(const VarName: ShortString): ShortString; //
procedure e_x_dereference(dependencies: TStringList; fromref, toref: string); // alle Referenzen von einem Wert auf einen RID // // TABELLE "." FELD [","] [" where " CONDITION] //
function e_r_AgentMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; // liefert die Menge, die im Moment zu beschaffen ist
function e_r_UngelieferteMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; // liefert die Menge, die im Moment zu beschaffen ist
function e_r_VorschlagMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; // liefert die Menge, die das System vorschlagen würde
function e_r_ErwarteteMenge(AUSGABEART_R, ARTIKEL_R: integer; sDetails: TStringList = nil): integer; // liefert die Menge, die im Moment erwartet wird!
function e_r_Localize(RID, LAND_R: integer): string; //
function e_r_Localize2(RID, LANGUAGE: integer): string; // Landesspezifiesche Strings //
function e_w_SyncLocalTime: boolean; // Lokale Uhrzeit neu stellen! //
function e_w_GEN(GenName: string): integer; // erhöht den Generator um ein und liefert nun diesen Wert. //
function e_r_Bearbeiter(BEARBEITER_R: integer): string; // Liefert das Kürzel des Bearbeiters. //
function e_r_ServerTime: TDateTime; // Server Uhrzeit auslesen! //
function e_r_UngelieferteMengeUeberBedarf(AUSGABEART_R, ARTIKEL_R: integer): integer; // liefert die überzählige Menge die vom System erwartet wird, also über "Agent" und "Mindestbestand" // hinaus.
function e_r_MindestMenge(AUSGABEART_R, ARTIKEL_R: integer): integer; // liefert die Mindest-Menge, die auf Lager sein sollte
procedure e_w_BedarfsAnzeige(AUSGABEART_R, ARTIKEL_R, POSTEN_R, MENGE: integer; Motivation: eMotivation); // dem Agenten signalisieren, dass Bestell-Bedarf besteht
function e_w_SetFolge(AUSGABEART_R, ARTIKEL_R: integer): integer; // Order-Posten-Anz // Reihenfolge der Befriediung von Erwarteten Mengen voreinstellen
function e_w_Wareneingang(AUSGABEART_R, ARTIKEL_R, MENGE: integer): integer; // [ZUSAMMENHANG] // Waren im System verteilen
function e_r_ZahlungText(ZAHLUNGTYP_R: integer; PERSON_R: integer = 0; MoreInfo: TStringList = nil): string; // liefert den Zahlungstext zur jeweiligen Person
function e_r_VERLAG_R_fromVerlag(Verlag: string): integer; { RID } // RID eines Verlages bestimmen!
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_w_JoinBeleg(BELEG_R_FROM, BELEG_R_TO: integer): integer; // 2 Belege zusammen führen
function e_w_JoinPerson(PERSON_R_FROM, PERSON_R_TO: integer): integer; // 2 Personen zusammen führen, Quellperson kann gelöscht werden
function e_w_MoveBeleg(BELEG_R_FROM, PERSON_R_TO: integer): integer; // einen Beleg von einem Verantwortlichen zum anderen führen
function e_w_CopyBeleg(BELEG_R_FROM, PERSON_R_TO: integer): integer; // Beleg neu erstellen anhand einer Vorlage
function e_r_MengenAusgabe(MENGE, EINHEIT_R: integer; FormatStr: string = '%d'): string; // Menge rausbelichten
function e_r_EinzelPreisAusgabe(PREIS: double; EINHEIT_R: integer): string; // Einzelpreis rausbelichten
function e_r_PostenPreis(EinzelPreis: double; Anz, EINHEIT_R: integer): double; // Gesamtpreis berechnen
function e_w_AusgabeBeleg(BELEG_R: integer; NurGeliefertes: boolean; AlsLieferschein: boolean): string; // Ausgabelauf für den aktuellen Beleg mit Anlage der htmls
function e_r_Ausgabeart(AUSGABEART_R: integer): string; // liefert den text dieser Ausgabeart //
function e_r_Menge(AUSGABEART_R, ARTIKEL_R: integer): integer; { MENGE } // liefert die Lagermenge dieses Artikels in der angegebenen // Ausprägungsart
function e_r_PreisTabelle(PREIS_R: integer): double; // Liest den Preiswert aus der Tabelle aus //
function e_r_PreisValid(p: double): boolean; // Ist es auch ein echter preis, oder nur ein Tag //
function e_r_Preis(AUSGABEART_R, ARTIKEL_R: integer; var Satz: double; var Netto: boolean; var NettoWieBrutto: boolean): double; // liefert den Preis des Artikels // Satz ist der Mwst-Satz // Netto liefert Info, ob dieser Preis ein Netto oder Brutto-Preis ist //
function e_r_PreisText(AUSGABEART_R, ARTIKEL_R: integer): string; // liefert den Preis des Artikels, fertig als String // - es kann auch "auf Anfrage" geben
function e_r_PreisBrutto(AUSGABEART_R, ARTIKEL_R: integer): double; // liefert den Preis des Artikels //
function e_r_PreisNativ(AUSGABEART_R, ARTIKEL_R: integer): double; // liefert die Preisangabe für diesen Artikel // unabhängig von netto/brutto Problematik so wie er in der // Datenbank steht.
function e_r_EndPreis(PERSON_R, AUSGABEART_R, ARTIKEL_R: integer): double; // liefert den Preis des Artikels
function e_r_PreisNetto(AUSGABEART_R, ARTIKEL_R: integer): double; // liefert den Preis des Artikels
function e_r_PaketPreis(AUSGABEART_R, ARTIKEL_R: integer): double; // liefert den Preis des Artikels
function e_r_RabattFaehig(PERSON_R: integer): boolean; // ist es ein Rabatt-Kunde JA/NEIN
function e_r_Rabatt(ARTIKEL_R, PERSON_R: integer; var Netto: boolean; var NettoWieBrutto: boolean): double; // liefert den Rabatt, den diese Person bei diesem Artikel erhält // nebenbei: // wird bei dieser Person ohne MwSt-Ausweisgearbeitet (Ausländer)? // soll dabei einfach der eigentliche Bruttopreis als Nettopreis ausgewiesen werden? //
function e_r_ekRabatt(ARTIKEL_R: integer): double; // liefert den Rabatt, mit dem dieser Artikel eingekauft wird
function e_r_ObtainISOfromRID(LAND_R: integer): string; // liefert das ISO Landeskennzeichen
function e_r_MwSt(AUSGABEART_R, ARTIKEL_R: integer): double; overload; // liefert die MwSt des Artikels
function e_r_MwSt(SORTIMENT_R: integer): double; overload; // liefert die MwSt wie in diesem Sortiment üblich
function e_w_EinLagern(ARTIKEL_R: integer): integer; // [LAGER_R] // Lagerplatz eintragen
function e_r_LagerVorschlag(SORTIMENT_R: integer; PERSON_R: integer {VERLAG_R}): integer; // [LAGER_R] // Lagerplatz vorschlagen
function e_r_LagerDiversitaet(LAGER_R: integer): integer; // [MENGE] // Liefert die Anzahl verschiedener Artikel auf einem Lagerplatz
procedure e_w_LagerFreigeben; // gibt Lagerplätze frei, bei denen 14 Tage keine Bewegung mehr ist und Menge=0
function e_w_Menge(AUSGABEART_R, ARTIKEL_R, MENGE: integer; BELEG_R: integer = 0; POSTEN_R: integer = 0): integer; { MENGE } // bucht eine Lagermenge ab oder zu // liefert die neue Lagermenge
function e_w_NeuerMahnlauf(ForceNew: boolean = false): boolean; // erzeugt neuen Nummernkreise und leert die Mahnkandidatenliste //
function e_w_KontoInfo(PERSON_R: integer; Verbuchen: boolean = false; AuchMahnbescheid: boolean = false): TStringList; // liefert den Kontostand des Kunden (zu zahlen!) // erzeugt als Nebeneffekt die aktuelle "Mahnung.html" // // OFFEN= // VERZUG= // [GUTSCHRIFT=JA] // [DIFFERENZ=JA] //
function e_r_BestellInfo(PERSON_R: integer): integer; // liefert den Lieferrückstand des Lieferanten (erwartete Mengen!) // erzeugt als Nebeneffekt die aktuelle "Bestellung.html"
function e_w_Bestellen(PERSON_R: integer): integer; // setzt den Einkaufswagen in eine Bestellung um. Dabei wird der // Einkaufswagen geleert.
function e_w_BudgetEinfuegen(BELEG_R: integer): integer; // Fügt unberechnetes Volumen aus offenen Bugets in den angegebenen // Beleg ein.
procedure e_w_BudgetAbschreiben(BELEG_R: integer; BUDGET_R: integer; Menge_Rechnung: integer); // Bucht ein bisher unberechnetes Volumen an einem Budget ab, und // setzt das Volumen auf "abgerechnet".
procedure e_w_EinkaufswagenLeeren(PERSON_R: integer); // Leert den aktuellen Einkaufswagen
function e_w_EinkaufswagenEinfuegen(BELEG_R: integer): integer; // Fügt den aktuellen Einkaufswagen in den angegebenen Beleg // ein.
function e_r_Rechnung(BELEG_R: integer): integer; // liefert die als nächstes zu vergebene Rechnungsnummer
function e_w_BelegVersand(BELEG_R: integer; Summe: double; gewicht: integer): integer; // Legt einen neuen Versand-Eintrag in der Versand-Tabelle an, // oder füllt den vorbereiteten!
function e_r_StandardVersender: integer; // Legt einen neuen Versand-Eintrag in der Versand-Tabelle an, // dadurch
function e_r_LeerGewicht(PACKFORM_R: integer): integer; // Leergewicht einer bestimmten Packform //
function e_r_Gewicht(AUSGABEART_R, ARTIKEL_R: integer): integer; // Gewicht eines Artikels //
function e_r_ArtikelVersendetag(AUSGABEART_R, ARTIKEL_R: integer): integer; // gibts infos über den Versendetag aus, es werden spezielle Status Codes // verwendet. Siehe Doku.
function e_r_Lieferzeit(AUSGABEART_R, ARTIKEL_R: integer): integer; // [Tage] // gibts infos über den Versendetag aus, es werden spezielle Status Codes // verwendet. Siehe Doku.
function e_w_ArtikelNeu(SORTIMENT_R: integer): integer; { : RID } // legt einen Artikel im angegebenen Sortiment an // liefert den neuen RID zurück!
function e_w_PersonNeu: integer; { : RID } // legt eine neue Person (vorläufig) an. Über sie kann der Kunde // vorbestellungen / vormerkungen anlegen.
function e_r_UebergangsfachFromPerson(PERSON_R: integer): integer; // Übergangsfach ermitteln //
function e_r_Uebergangsfach_VERLAG_R: integer; // Das Übergangsfach
function e_r_FreiesLager_VERLAG_R: integer; //
function e_r_IsUebergangsfach(LAGER_R: integer): boolean; //
function e_r_LagerPlatzNameFromLAGER_R(LAGER_R: integer): string; // Names eines Lagerplatzes anhand des LAGER_R
function e_w_SetStandardVersandData(qVERSAND: TIB_Query): integer; // Versanddatensatz vorbelegen
function e_r_VersandKosten(AUFTRAGGEBER_R, LIEFERANSCHRIFT_R, BELEG_R: integer): integer; { : ARTIKEL_R } // berechnet die VersandKosten anhand der Tabelle VREGEL // PERSON_R: Auftraggeber, angabe freiwillig // LIEFERANSCHRIFT_R: an wen geht die Lieferung, angabe freiwillig // BELEG_R: um welchen Beleg geht es
function e_r_IsVersandKosten(ARTIKEL_R: integer): boolean; // ermittelt, ob es sich bei dem Angegebenen Artikel // um einen Versandartikel handelt, dies sind solche, die // in der VREGEL genannt werden.
function e_w_VersandKostenClear(BELEG_R: integer): integer; { : Anzahl der entfernten } // löschen der ungebuchten versandkosten des // letzten Buchungslaufes
function e_r_ort(PERSON_R: integer): string; // gibt der kompletten Orts-String an //
function e_r_ObtainVerlagFromPERSON_RID(PERSON_R: integer): string; //
function e_r_BelegInfo(PERSON_R: integer; BELEG_R: integer): TStringList; { : diverse ermittelten Werte } // PERSON_R: Eigner des Einkaufswagen // -- ODER ALTERNATIV -- // BELEG_R: direkte Belegnummer //
function e_w_BerechneBeleg(BELEG_R: integer; NurGeliefertes: boolean = false): TStringList; { : diverse ermittelte Werte } // die Auftragsmengen entsprechend auf die Mengen verteilen Daumen, es erfolgen // Lagerbuchungen. // RECHNUNGSBETRAG= // LIEFERGEWICHT=
function e_w_ForderungBuchen(BELEG_R: integer; RechnungsBetrag: double): TStringList; // //
function e_w_BucheVersand(BELEG_R: integer; LabelDatensatz: boolean): string; // Briefumschlag-Funktion in den Belegen, Berechnete Mengen werden auf // geliefert gesetzt. Budgets werden abgeschrieben.
procedure e_w_RechnungDatumSetzen(ib_q: TIB_Query; Aufdatum: TDateTime); overload; // historisch !! - löschen wenn möglich
procedure e_w_RechnungDatumSetzen(ib_q: TIB_Query; Aufdatum: TANFiXDate); overload; // historisch !! - löschen wenn möglich
function e_w_BelegNeu(PERSON_R: integer): integer; { } // legt einen neuen Kunden-Beleg an
function e_r_LohnKalkulation(Betrag: double; Datum: TANFIXDate): string; //
function e_r_LadeParameter: TStringList; { } //
procedure e_r_PostenInfo(IBQ: TIB_DataSet; NurGeliefertes: boolean; EinzelpreisNetto: boolean; var _Anz, _AnzAuftrag, _AnzGeliefert, _AnzStorniert, _AnzAgent: integer; var _Rabatt, _EinzelPreisUnrabattiert, _EinzelPreis, _MwStSatz: double
);
procedure e_w_BeforeDeletePosten(POSTEN_R: integer); procedure e_w_BeforeDeleteBPosten(BPOSTEN_R: integer); procedure e_w_BeforeDeleteBeleg(BELEG_R: integer); procedure e_w_BeforeDeleteBBeleg(BBELEG_R: integer); procedure e_w_BeforeDeleteArtikel(ARTIKEL_R: integer);
function e_w_BelegStatusBuchen(qbeleg: TIB_Query): boolean; function e_w_BBelegStatusBuchen(bbeleg, bposten: TIB_Query): boolean;
procedure e_w_SetPostenData(ARTIKEL_R, PERSON_R: integer; qPosten: TIB_Query); procedure e_w_SetPostenPreis(AUSGABEART_R, ARTIKEL_R, PERSON_R: integer; qPosten: TIB_Query); // vor dem setzen weiterer Felder kann hier Standardasiert ein Artikel in // den aktuellen Posten kopiert werden. Zentrale Funktion zum Füllen einer // Posten zeile
procedure e_w_InvalidateCaches;
// Q - Funktionen sind Qualitätssicherungs-Hilfsfunktionen function q_r_PersonWarnung(PERSON_R: integer): TStringList;
// F - Sind Download und Upload Funktionen procedure e_f_PersonInfo(PERSON_R: integer; AusgabePfad: string);