Quelltext anzeigen
Aus Marburger Medien
für
BOB-XMLToSBO-Stand-20130725
Wechseln zu:
Navigation
,
Suche
Quelltext aus dem Cockpit Stand 2013 07 25 07:19 Uhr <?xml version="1.0"?> <CONFIG> <!-- Beschreibung: Tabelle <PARM> beschreibt die Basisparameter <XMLINP> Eingangspfad der XML Dateien <XMLSAV> Sicherungspfad der XML Dateien <PATTERN> Suchmaske für XML Dateien im <XMLINP> <DAYS> Verweilzeit der Sicherungsdateien <CVTALL> Pfad zur EXE, die alle eingehenden XML Dateien auf ein mal umsetzt <CVTFILE> Pfad zur EXE, die eine einzelne XML Datei umsetzt <CVTINP> Pfad, in dem die zu kovertierenden WEB-Eingangsdateien liegen (wird nur vom CVT-Programm verwendet) <CVTSAV> Pfad, in den die originalen WEB-Eingangsdateien nach erfolgreicher Konvertierung verschoben werden (wird nur vom CVT-Programm verwendet) <CVTUTF> *YES|*NO mit *YES wird die Datei vor der Konvertierung nach UTF8 konvertiert <NOTCCHECKFILE> Dateinamen ohne Extension (mit Wildcard) wlche von der "TRANSACTIONCODE"-Prüfung ausgenommen sind, Default *NONE Tabelle <SEQ> beschreibt die Verarbeitungsreihenfolge und die Zuordnung eines SBO Objektes zu einem Transaktionscode in den eingehenden XML Daten <TC> Transaktionscode in der XML Datei im Feld <TRANSACTIONCODE> <TCTAG> definiert den TagNamen der den Transaktionscode enthält <BO> verwendetes SBO Object, durch Mehrfachzuordnung können aus einer Eingangstransaktion beliebige Folgetransaktionen abgeleitet werden <PRT> *YES druckt zum Schluss der Gesamtverarbeitung das zugeordnete Standardformular (Einträge werden zur Laufzeit in Tabelle gesammelt) <DEV> Druckername auf dem der Request gedruckt werden soll <METHOD> Function oder Sub aus der dynamisch generierten Dll aus der Tabelle <COMPILE> aus dem Tag <CODE> <REFTC> Verwende für das Mapping die Definition des Transaktionscodes <REFTC> <CHKSQL> <DUPIGNORE> <CHECKTC> <UPD> <NEW> <IGNOREMAT> <SINGLETC> <CHKDRAFT> Tabelle STR: beschreibt die Umsetzungsstruktur der XML Daten für eine Transaktion <TC> Transaktionscode in der XML Datei im Feld <TRANSACTIONCODE> <BO> zugeordnetes SBO Object oder Spezialwerte (*IF, *ENDIF, *ELSE, *METHOD) *IF prüft die Bedingung die im <IF> Tag definiert ist (Syntax siehe <IF>) die nachfolgenden Zeilen werden bis zum *ELSE bzw. *ENDIF nicht ausgeführt *METHOD <SUB> defniert die Unterebene des SBO Objects <NEW> erzwingt ein anfügen einer neuen Unterebene vom Typ <SUB> <SBO> definiert die SBO-Object.Property <VAR> 0..9 der ermittelte Wert wird in einer Speichervariablen pro Datei gemerkt <DAT> Format des Eingabedatums: *YMD, *DMY, *MDY oder auch Deutsch (*JMT), leer entspricht *YMD <IF> Bedingung zur Feldwertfüllung, ist Bedinung falsch keine Ausgabe Faktor1|OP|Faktor2 - Faktor 1 und 2 kann eine beliebige Feldausprägung (Konstante, Feldwert, Teilfeld etc.) - OP = EQ, NE, LT,LE, GT, GE <XML> definiert die XML Herkunft (siehe gültige Funktionen) - Feldname(n) ntes Teilfeld aus Wert#Wert#Wert (Nullbasierend) - mehrere Feldwerte werden durch | getrennt und stellen eine Verkettung der Ergebnisse dar - #Wert oder $Wert beschreibt eine Konstante - %0..9 liefert den Wert einer Speichervariablen die durch <VAR>n gesetzt wurde - *Regelname beschreibt eine Übersetzungsregel <RULE> und <VAL> - / oder \ Zeilenumbruch <DFT> - wenn der ermittelte Feldwert leer ist wird dieser Default verwendet <MAXLEN> - wenn die Länge des ermittelten Feldwertes größer als der hier eingestellte Wert ist wird der Feldwert abgeschnitten <PLIST> <METHOD> - Ausführung der dynamischen Sub oder Function (Parameter: das aktuelle SBO Object) Tabelle <RULE> Umsetzregeln <ID> Name der mit *Regel benannten Konvertierungsregel <TAB> Name einer Umsetztabelle aus <VAL> <KEY1..3> Zugriffsfelder auf die Tabelle <RET> Feldname des Ergebnisfeldes aus <VAL> (VAL1..3> <ELSE> Wenn aus der Umsetzung kein Wert ermittelt wurde wird ersatzweise dieser Wert verwendet Tabelle <VAL> Umsetzwerte <TAB> Name einer Umsetzungstabelle <KEY1..3> Schlüsselwert 1 bis 3 <VAL1..3> Rückgabewert 1 bis 3 Funktionen --> <!--Basisparameter für Verarbeitung--> <PARM> <XMLINP>\\192.168.5.8\SAP\Datentransfer\ShopAbo-Transfer\WebIn\ToSbo</XMLINP> <XMLSAV>\\192.168.5.8\SAP\Datentransfer\ShopAbo-Transfer\WebIn\ToSboSicherung</XMLSAV> <PATTERN>*.xml</PATTERN> <DAYS>30</DAYS> <CVTINP></CVTINP> <CVTSAV></CVTSAV> <CVTPATTERN></CVTPATTERN> </PARM> <!--Reihenfolgebearbeitung für die Verarbeitung innerhalb einer Datei. Gilt nicht für mehrere Dateien --> <!--OCRD Kundenstamm für Besteller--> <!-- TA 010 Normalauftrag --> <SEQ> <TC>010</TC> <BO>OCRD</BO> <REFTC>KUNDE1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>010</TC> <BO>CRD1</BO> <REFTC>BILLTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>010</TC> <BO>CRD1</BO> <REFTC>SHIPTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--OCRD Kundenstamm Update Default ShipTo und BillTo--> <SEQ> <TC>010</TC> <BO>OCRD</BO> <REFTC>ADRDFT</REFTC> <UPD>*YES</UPD> <NEW>*NO</NEW> </SEQ> <!--ORDR Kundenauftrag mit Rechnungadresse--> <SEQ> <TC>010</TC> <BO>ORDR</BO> <CHKSQL>@DupORDR</CHKSQL> <DUPIGNORE>*NO</DUPIGNORE> </SEQ> <!-- TA 011 NormalABO --> <SEQ> <TC>011</TC> <BO>OCRD</BO> <REFTC>KUNDE1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>011</TC> <BO>CRD1</BO> <REFTC>BILLTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>011</TC> <BO>CRD1</BO> <REFTC>SHIPTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--OCRD Kundenstamm Update Default ShipTo und BillTo--> <SEQ> <TC>011</TC> <BO>OCRD</BO> <REFTC>ADRDFT</REFTC> <UPD>*YES</UPD> <NEW>*NO</NEW> </SEQ> <!--@BOB_AboMaster nur mit AboKundennummer--> <SEQ> <TC>011</TC> <BO>*METHOD</BO> <METHOD>AboMaster</METHOD> </SEQ> <!-- TA 012 GeschenkABO --> <SEQ> <TC>012</TC> <BO>OCRD</BO> <REFTC>KUNDE1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>012</TC> <BO>CRD1</BO> <REFTC>BILLTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>012</TC> <BO>CRD1</BO> <REFTC>SHIPTO1</REFTC> <UPD>*YES</UPD> </SEQ> <!--OCRD Kundenstamm Update Default ShipTo und BillTo--> <SEQ> <TC>012</TC> <BO>OCRD</BO> <REFTC>ADRDFT</REFTC> <UPD>*YES</UPD> <NEW>*NO</NEW> </SEQ> <!-- Empfänger des Geschenkabos --> <SEQ> <TC>012</TC> <BO>OCRD</BO> <REFTC>KUNDE2</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>012</TC> <BO>CRD1</BO> <REFTC>BILLTO2</REFTC> <UPD>*YES</UPD> </SEQ> <!--CRD1 Adressen, Rechnungsanschrift --> <SEQ> <TC>012</TC> <BO>CRD1</BO> <REFTC>SHIPTO2</REFTC> <UPD>*YES</UPD> </SEQ> <!--OCRD Kundenstamm Update Default ShipTo und BillTo --> <SEQ> <TC>012</TC> <BO>OCRD</BO> <REFTC>ADRDFT2</REFTC> <UPD>*YES</UPD> <NEW>*NO</NEW> </SEQ> <!--@BOB_AboMaster nur mit AboKundennummer und Empfängerkunde--> <SEQ> <TC>012</TC> <BO>*METHOD</BO> <METHOD>AboMaster</METHOD> </SEQ> <!--Variablen setzten--> <STR> <TC>KUNDE1</TC> <BO>OCRD</BO> <SBO>*VAR</SBO> <VAR>CARDCODE1</VAR> <XML>query(CARDCODE1)</XML> </STR> <!--STR> <TC>KUNDE1</TC> <BO>OCRD</BO> <SBO>*VAR</SBO> <VAR>CARDCODE2</VAR> <XML>text('')</XML> </STR--> <STR> <TC>KUNDE2</TC> <BO>OCRD</BO> <SBO>*VAR</SBO> <VAR>CARDCODE1</VAR> <XML>query(CARDCODE1)</XML> </STR> <STR> <TC>KUNDE2</TC> <BO>OCRD</BO> <SBO>*VAR</SBO> <VAR>CARDCODE2</VAR> <XML>query(CARDCODE2)</XML> </STR> <!-- Methode KUNDE1 anlegen/ändern OCRD für Besteller --> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>CardName</SBO> <XML>fld(bill_last_name)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>CardType</SBO> <XML>text('0')</XML> </STR> <!--0=Customer;1=Supplier;2=Lid)--> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>CardForeignName</SBO> <XML>fld(bill_first_name)</XML></STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>Cellular</SBO> <XML>fld(bill_phone2)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>Currency</SBO> <XML>text(EUR)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>EmailAddress</SBO> <XML>fld(bill_user_email)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>Fax</SBO> <XML>fld(bill_fax)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>GroupCode</SBO> <XML>text('100')</XML> </STR> <!-- vorläufig fix 100 fld(GROUPCODE) --> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>Phone1</SBO> <XML>fld(bill_phone1)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>ShippingType</SBO> <XML>text('1')</XML> </STR> <STR> <TC>Kunde1</TC> <BO>ORDR</BO> <SBO>CmpPrivate</SBO> <XML>text('I')</XML> <IF>fld(bill_company)|*EQ|text('')</IF> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>SalesPersonCode</SBO> <XML>text('44')</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>Properties(1)</SBO> <XML>text('1')</XML> </STR> <!-- ? --> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>U_SMM_ABO</SBO> <XML>text('Y')</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SBO>U_BOB_Shop3_UserId</SBO> <XML>fld(userId)</XML> </STR> <!--SUB muss immer ContactEmployees sein - dann der Feldname also nicht SUB--> <STR> <TC>Kunde1</TC> <BO>OCPR</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>Name</SBO> <XML>fld(bill_first_name)|text(' ')|fld(bill_last_name)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>U_Anrede</SBO> <XML>fld(bill_title)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>Phone1</SBO> <XML>fld(bill_phone1)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>Phone2</SBO> <XML>fld(bill_phone2)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>E_Mail</SBO> <XML>fld(bill_user_email)</XML> </STR> <STR> <TC>Kunde1</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>U_PAnrede</SBO> <XML>text('02')</XML> </STR> <!-- Methode BILLTO1 anlegen/ändern CRD1 für Besteller aus bill_* --> <!--Rechnungssdresse--> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressType</SBO> <XML>text('1')</XML> </STR> <!-- 0 = Lieferadresse, 1 = Rechnungsadresse --> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName</SBO> <XML>fld(bill_city)|text(', ')|fld(bill_address1)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName2</SBO> <XML>fld(bill_address2)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Street</SBO> <XML>fld(bill_address1)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>ZipCode</SBO> <XML>fld(bill_zip)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>City</SBO> <XML>fld(bill_city)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>State</SBO> <XML>fld(bill_state)</XML> </STR> <STR> <TC>BILLTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Country</SBO> <XML>fld(bill_country)</XML> </STR> <!-- Methode SHIPTO1 anlegen/ändern CRD1 für Besteller aus ship_* --> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressType</SBO> <XML>text('0')</XML> </STR> <!-- 0 = Lieferadresse, 1 = Rechnungsadresse --> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName</SBO> <XML>fld(ship_city)|text(', ')|fld(ship_address1)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName2</SBO> <XML>fld(ship_address2)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Street</SBO> <XML>fld(ship_address1)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>ZipCode</SBO> <XML>fld(ship_zip)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>City</SBO> <XML>fld(ship_city)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>State</SBO> <XML>fld(ship_state)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Country</SBO> <XML>fld(ship_country)</XML> </STR> <STR> <TC>SHIPTO1</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>FederalTaxID</SBO> <XML>fld(userUstid)</XML> </STR> <!-- Methode KUNDE2 anlegen/ändern OCRD für Geschenkempfänger aus receiver_* --> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE2)</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>CardName</SBO> <XML>fld(receiver_last_name)</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>CardType</SBO> <XML>text('0')</XML> </STR> <!--0=Customer;1=Supplier;2=Lid)--> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>CardForeignName</SBO> <XML>fld(receiver_first_name)</XML></STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>Currency</SBO> <XML>text(EUR)</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>GroupCode</SBO> <XML>text('100')</XML> </STR> <!-- vorläufig fix 100 fld(GROUPCODE) --> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>ShippingType</SBO> <XML>text('1')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>SalesPersonCode</SBO> <XML>text('44')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>Properties(11)</SBO> <XML>text('1')</XML> </STR> <!--STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_SMM_Zube</SBO> <XML>text('03')</XML> </STR--> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_SMM_Dank</SBO> <XML>text('03')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_SMM_Bitte</SBO> <XML>text('02')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_IP_Status</SBO> <XML>text('05')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_IP_Fixierung</SBO> <XML>text('02')</XML> </STR> <!--STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_DU_Profit</SBO> <XML>text('01')</XML> </STR--> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_SMM_ABO</SBO> <XML>text('N')</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SBO>U_BOB_Ampel</SBO> <XML>text('G')</XML> </STR> <!--SUB muss immer ContactEmployees sein - dann der Feldname also nicht SUB --> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>Name</SBO> <XML>fld(receiver_first_name)|text(' ')|fld(receiver_last_name)</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>U_Briefanrede</SBO> <XML>text('Liebe(r) ')|fld(receiver_first_name)</XML> </STR> <STR> <TC>Kunde2</TC> <BO>OCRD</BO> <SUB>ContactEmployees</SUB> <SBO>U_PAnrede</SBO> <XML>text('01')</XML> </STR> <!-- Methode BILLTO2 anlegen/ändern CRD1 für Geschenkempfänger aus receiver_* --> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE2)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressType</SBO> <XML>text('1')</XML> </STR> <!-- 0 = Lieferadresse, 1 = Rechnungsadresse --> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName</SBO> <XML>fld(receiver_city)|text(', ')|fld(receiver_address1)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName2</SBO> <XML>fld(receiver_address2)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Street</SBO> <XML>fld(receiver_address1)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>ZipCode</SBO> <XML>fld(receiver_zip)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>City</SBO> <XML>fld(receiver_city)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>State</SBO> <XML>fld(receiver_state)</XML> </STR> <STR> <TC>BILLTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Country</SBO> <XML>fld(receiver_country)</XML> </STR> <!-- Methode SHIPTO2 anlegen/ändern CRD1 für Geschenkempfänger aus receiver_* --> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE2)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressType</SBO> <XML>text('0')</XML> </STR> <!-- 0 = Lieferadresse, 1 = Rechnungsadresse --> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName</SBO> <XML>fld(receiver_city)|text(', ')|fld(receiver_address1)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>AddressName2</SBO> <XML>fld(receiver_address2)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Street</SBO> <XML>fld(receiver_address1)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>ZipCode</SBO> <XML>fld(receiver_zip)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>City</SBO> <XML>fld(receiver_city)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>State</SBO> <XML>fld(receiver_state)</XML> </STR> <STR> <TC>SHIPTO2</TC> <BO>CRD1</BO> <SUB>Addresses</SUB> <SBO>Country</SBO> <XML>fld(receiver_country)</XML> </STR> <!-- Methode ADRDFT für alle OCRD --> <STR> <TC>ADRDFT</TC> <BO>OCRD</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>ADRDFT</TC> <BO>OCRD</BO> <SBO>BilltoDefault</SBO> <XML>fld(bill_city)|text(', ')|fld(bill_address1)</XML> </STR> <STR> <TC>ADRDFT</TC> <BO>OCRD</BO> <SBO>ShiptoDefault</SBO> <XML>fld(ship_city)|text(', ')|fld(ship_address1)</XML> </STR> <!-- Methode ADRDFT2 für OCRD des receiver--> <STR> <TC>ADRDFT2</TC> <BO>OCRD</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE2)</XML> </STR> <STR> <TC>ADRDFT2</TC> <BO>OCRD</BO> <SBO>BilltoDefault</SBO> <XML>fld(receiver_city)|text(', ')|fld(receiver_address1)</XML> </STR> <STR> <TC>ADRDFT2</TC> <BO>OCRD</BO> <SBO>ShiptoDefault</SBO> <XML>fld(receiver_city)|text(', ')|fld(receiver_address1)</XML> </STR> <!-- ORDR Kundenauftrag ****************************************************************************************************************************************--> <!-- Handwritten 0 SBO-Belegnummer, 1=manuelle Belegnummer --> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>HandWritten</SBO> <XML>text('0')</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>CardCode</SBO> <XML>var(CARDCODE1)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>Comments</SBO> <XML>fld(orderCustomerNote).substring(0,254)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>DocCurrency</SBO> <XML>text(EUR)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>DocDate</SBO> <XML>fld(orderCreatedOn)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>DocDueDate</SBO> <XML>fld(orderCreatedOn)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>PartialSupply</SBO> <XML>text('0')</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>PaymentGroupCode</SBO> <XML>text('-1')</XML> </STR> <!-- Vorher fld(PAYTERMSGRPCODE) ; jetzt fix -1 = Sofort Zahlbar--> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>TransportationCode</SBO> <XML>rule(TC)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>NumAtCard</SBO> <XML>fld(orderNumber)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>SalesPersonCode</SBO> <XML>text('13')</XML> </STR> <!--STR> <TC>010</TC> <BO>ORDR</BO> <SBO>OwnerCode</SBO> <XML>text('9')</XML> </STR--> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>U_DU_PROFIT</SBO> <XML>text('02')</XML> <IF>fld(storeid)|*NE|text('shop3')</IF> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>U_ddsbestellart</SBO> <XML>text('01')</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>Confirmed</SBO> <XML>text('0')</XML> <IF>(fld(orderCustomerNote)|*NE|text(''))*OR(fld(orderSubtotal)|*GT|text(100.00))*OR(fld(itemQuantity)|*GT|text(10))</IF> </STR> <!-- Gesamtbrutto --> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>DocTotal</SBO> <XML>fld(orderTotal).dot2Komma()</XML> </STR> <!-- Positionsdaten --> <STR> <TC>010</TC> <BO>ORDR</BO> <SUB>Lines</SUB> <SBO>ItemCode</SBO> <XML>fld(itemSku)</XML> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SUB>Lines</SUB> <SBO>Quantity</SBO> <XML>fld(itemQuantity)</XML> </STR> <!--STR> <TC>010</TC> <BO>ORDR</BO> <SUB>Lines</SUB> <SBO>VatGroup</SBO> <XML>rule(VG)</XML> </STR--> <STR> <TC>010</TC> <BO>ORDR</BO> <SUB>Lines</SUB> <SBO>PriceAfterVat</SBO> <XML>fld(itemFinalPrice).dot2Komma()</XML> </STR> <!--Übersetzungsregeln--> <!--Versandart--> <RULE> <ID>TC</ID> <TAB>TRANSPORTATIONCODE</TAB> <KEY1>fld(orderShipmentMethod)</KEY1> <KEY2></KEY2> <RET>VAL1</RET> <ELSE>text(ERROR)</ELSE> </RULE> <!--Zahlungsbedingung--> <RULE> <ID>PM</ID> <TAB>PAYMENTMETHODE</TAB> <KEY1>fld(orderPaymentMethod)</KEY1> <KEY2></KEY2> <RET>VAL1</RET> <ELSE>text(ERROR)</ELSE> </RULE> <!--Zahlungsbedingung--> <RULE> <ID>VG</ID> <TAB>VATGROUP</TAB> <KEY1>fld(orderPaymentMethod)</KEY1> <KEY2></KEY2> <RET>VAL1</RET> <ELSE>text(ERROR)</ELSE> </RULE> <!--Umsetzungstabellen--> <!--Versandart--> <VAL> <TAB>TRANSPORTATIONCODE</TAB> <KEY1>1</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1>1</VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <VAL> <TAB>TRANSPORTATIONCODE</TAB> <KEY1>2</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1>5</VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <VAL> <TAB>TRANSPORTATIONCODE</TAB> <KEY1>3</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1>4</VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <!--Zahlungsbedingung--> <VAL> <TAB>PAYMENTMETHODE</TAB> <KEY1>1</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1></VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <VAL> <TAB>PAYMENTMETHODE</TAB> <KEY1>2</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1></VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <VAL> <TAB>PAYMENTMETHODE</TAB> <KEY1>3</KEY1> <KEY2></KEY2> <KEY3></KEY3> <VAL1></VAL1> <VAL2></VAL2> <VAL3></VAL3> </VAL> <!-- Fracht über dynamischen Code füllen --> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>*IF</SBO> <IF>LASTLINE()|*EQ|TEXT('TRUE')</IF> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>*METHOD</SBO> <METHOD>OrdrFillExpenses</METHOD> </STR> <STR> <TC>010</TC> <BO>ORDR</BO> <SBO>*ENDIF</SBO> </STR> <!-- Scripte ****************************************************************************************************************************************************--> <!-- CARDCODE1 = Script zur Vergabe der SBO Kunden-Nr. für den Besteller --> <SCRIPT> <ID>CARDCODE1</ID> <VAR0>fld(sap_user_id)</VAR0> <VAR1>fld(userId)</VAR1> <VAR2>fld(GP_NR_SAP_Confirmed)</VAR2> <!--VAR3>fld(AP_ID_SAP)</VAR3--> <SQL> --ermittelt CardCode von Shopid+CardCodeShop oder email oder Adressdaten declare @KD nvarchar(16) declare @CardCodeSAP as nvarchar(15) declare @CardCodeShop as nvarchar(15) declare @CardCodeConfirmed as nvarchar(3) -- declare @Ansprechpartner as nvarchar(50) set @CardCodeSAP='{0}' set @CardCodeShop='{1}' set @CardCodeConfirmed='{2}' -- set @Ansprechpartner='{2}' select @KD=CardCode from ocrd --, OCPR where OCRD.CardCode = @CardCodeSAP --and OCRD.CardCode = OCPR.CardCode --and OCPR.Name = @Ansprechpartner --and OCRD.U_BOB_Shop3_UserId=@CardCodeShop and @CardCodeConfirmed *NE 'N' and OCRD.FrozenFor = 'N' if @KD is null and @CardCodeSAP = 'neu' Select @KD= Max(Cardcode) +1 from OCRD where CardType = 'C' select @KD </SQL> </SCRIPT> <!-- Script zur Vergabe der SBO Kunden-Nr. für den Abo-Receiver --> <SCRIPT> <ID>CARDCODE2</ID> <VAR0>fld(receiver_first_name)</VAR0> <VAR1>fld(receiver_last_name)</VAR1> <VAR2>fld(receiver_address1)</VAR2> <VAR3>fld(receiver_zip)</VAR3> <SQL> declare @Vorname nvarchar (100) declare @Name nvarchar (100) declare @Strasse nvarchar (100) declare @PLZ nvarchar (20) declare @Parm nvarchar(15) set @Vorname ='{0}' set @Name ='{1}' set @Strasse ='{2}' set @PLZ ='{3}' SELECT @Parm=OCRD.CardCode FROM OCRD, CRD1 WHERE OCRD.CardType = 'C' AND OCRD.CardCode = CRD1.CardCode AND OCRD.ShipToDef = CRD1.Address AND CRD1.AdresType= 'S' AND OCRD.CardName = @Name AND OCRD.CardFname = @Vorname AND CRD1.Street = @Strasse AND CRD1.ZipCode = @PLZ if @Parm is null Select @Parm= Max(Cardcode) +1 from OCRD where CardType = 'C' select @Parm <!-- die vorherigen 3 Zeilen von Bk 110805-1511 eingefügt (vor Job 5491)--> </SQL> </SCRIPT> <!-- DupORDR = Auftrag bereits mit NumAtCard im System ? --> <SCRIPT> <ID>DupORDR</ID> <VAR0>fld(orderNumber)</VAR0> <SQL> declare @ShopOrderNumber as nvarchar (16) --Variable {0} = Webauftragsnummer set @ShopOrderNumber = {0} --prüft ob der Auftrag schon vorhanden ist select 'Auftrag schon vorhanden' from ORDR where NumAtCard='{0}' </SQL> </SCRIPT> <SCRIPT> <ID>CCVAT</ID> <VAR0>fld(VATLIABLE)</VAR0> <VAR1>fld(TAXID)</VAR1> <SQL> --ermittelt den Steuercode für den Kundenstamm anhand des Steuerstatus VATLIABLE und TAX ID -- VatLiable: 0 = befreit = Drittland, 1 = Steuerpflichtig = Inland, 2 EU -- befreit: A0, steuerpflichtig = A2, EU mit TaxID = A7, EU ohne TaxID = A2 declare @VATLIABLE nvarchar(16) declare @TAXID as nvarchar(2) declare @VATGROUP as nvarchar(2) set @VATLIABLE='{0}' set @TAXID='{1}' select @VATGROUP=case @VATLIABLE when 0 then 'A0' when 1 then 'A2' end if @VATGROUP is null begin if len(@TAXID) > 0 select @VATGROUP='A7' else select @VATGROUP='A2' end if @VATGROUP='A1' or @VATGROUP='A2' set @VATGROUP='XX' select @VATGROUP </SQL> </SCRIPT> <!-- Dynamisch zu erzeugende Dll mit den indiviuellen Füllfunktionen *******************************************************--> <COMPILE> <CODE><![CDATA[ Imports SAPbobsCOM Imports System.Data Imports System.Data.SqlClient Imports xmlToSBO Imports System Namespace bobDynamic Public Class bobDynamicClass Inherits DynamicBaseClass Public Function AboMaster(ByRef cnSbo As SBOConnection) As Boolean 'ID aus dem Webshop aus der XML besorgen Dim WebId As String = xmlValue("orderNumber") 'einen Dataadapter um die bereits vorhandene ID zu finden und ggf. zu modifizieren Dim daAbo As New SqlDataAdapter(String.Format("select * from [@BOB_AboMaster] where ShopId={0}", WebId), cnSql) Dim dtAbo As New DataTable daAbo.Fill(dtAbo) Dim cnAbo As SqlCommandBuilder = MakeBuilder(daAbo) 'Neuanlage eines Abo's für CARDCODE1, Ob Normal oder Geschenk liegt an der Füllung der Variablen CARDCODE1 und CARDCO If dtAbo.Rows.Count = 0 Then Dim drAbo As DataRow = dtAbo.NewRow drAbo("CardCode") = VarValue("CARDCODE1") drAbo("ItemCode") = xmlValue("pos_item_sku") drAbo("CardCodeRcv") = VarValue("CARDCODE2") drAbo("ShopId") = xmlValue("orderNumber") drAbo("DateFrom") = dateStr2Date(xmlValue("order_sdate")) drAbo("Quantity") = xmlValue("pos_product_quantity") dtAbo.Rows.Add(drAbo) Else Dim drabo As DataRow = dtAbo.Rows(0) 'nur die Menge kann geädert werden drabo("Quantity") = xmlValue("pos_product_quantity") 'wenn das Abo beendet werden soll If xmlValue("order_edate").Length > 0 Then drabo("DateTo") = dateStr2Date(xmlValue("order_edate")) End If End If 'die Änderung auf der Datenbank updaten daAbo.Update(dtAbo) End Function 'Füllen der Expenses im Kundenauftrag je nach VATLIABLE Public Function OrdrFillExpenses(ByRef ordr As SAPbobsCOM.Documents) As Boolean 'Ermitteln aller Summen je Steuer Dim WertA0 as decimal=0 Dim WertA1 as decimal=0 Dim WertA2 as decimal=0 Dim WertA7 as decimal=0 Dim AnzLines as integer = ordr.lines.count For Idx as integer = 0 to AnzLines - 1 'Position setzen ordr.lines.setcurrentline(Idx) select case ordr.lines.VatGroup case "A0" WertA0 += ordr.lines.PriceAfterVat*ordr.lines.Quantity case "A1" WertA1 += ordr.lines.PriceAfterVat*ordr.lines.Quantity case "A2" WertA2 += ordr.lines.PriceAfterVat*ordr.lines.Quantity case "A7" WertA7 += ordr.lines.PriceAfterVat*ordr.lines.Quantity end select next 'Der Steuersatz für die Frachten (der mit dem höchsten Wert) Dim SteuerKey as string="" if WertA0 > WertA1 and WertA0 > WertA2 and WertA0 > WertA7 then SteuerKey="A0" end if if WertA1 > WertA2 and WertA1 > WertA7 and WertA1 > WertA0 then SteuerKey="A1" end if if WertA7 > WertA0 and WertA7 > WertA2 and WertA7 > WertA1 then SteuerKey="A7" end if if WertA2 > WertA0 and WertA2 > WertA7 and WertA2 > WertA1 then SteuerKey="A2" end if 'bei gleichem Positionswert unterschiedlicher Steuersätze if WertA1 = WertA2 and WertA1 > 0 then SteuerKey="A1" end if select case SteuerKey case "A0" AddExpenses(ordr, 15, 3, 8) case "A1" AddExpenses(ordr, 14, 1, 7) case "A2" AddExpenses(ordr, 13, 2, 6) case "A7" AddExpenses(ordr, 11, 4, 9) end select Return True End Function Private Sub AddExpenses(ByRef ordr As SAPbobsCOM.Documents, ByVal VersandKosten As Integer, ByVal Nachnahme As Integer, ByVal Trustedshopkschutz As Integer) Dim ExpenseBrutto As Decimal = 0 If xmlValue("orderShipment").length > 0 Then ExpenseBrutto = xmlValue("orderShipment").replace(".",",") LogMsg(LogFile, string.format("VERSANDKOSTEN aus der XML: {0}; aus Var: {1}",xmlValue("orderShipment"), ExpenseBrutto)) End If ordr.Expenses.ExpenseCode = VersandKosten ordr.Expenses.LineTotal = ExpenseNetto(VersandKosten, ExpenseBrutto) ordr.Expenses.Add() ExpenseBrutto = 0 End Sub Private Function ExpenseNetto(ByRef ExpenseCode As Integer, ByRef ExpenseBrutto As Decimal) As Double 'Steuerprozent besorgen Dim Rate As Decimal = Str2Dec(ExecQueryScalar(cnSql, String.Format("select OVTG.Rate from OVTG,OEXD where OEXD.ExpnsCode='{0}' and OEXD.VatGroupI=OVTG.Code", ExpenseCode))) 'berechnen Nettowert Dim FrachtNetto as double = 0 FrachtNetto=math.round(ExpenseBrutto / (Rate / 100 + 1), 4, MidpointRounding.AwayFromZero) 'Werte ausgeben LogMsg(LogFile, string.format("ExpenseCode: {0}; ExpenseBrutto: {1}; Rate: {2}; FrachtNetto: {3}",expenseCode, ExpenseBrutto, Rate, FrachtNetto)) Return FrachtNetto ' Return math.round(ExpenseBrutto / (Rate / 100 + 1), 4, MidpointRounding.AwayFromZero) End Function End Class End Namespace ]]></CODE> </COMPILE> </CONFIG>
Zurück zur Seite
BOB-XMLToSBO-Stand-20130725
.
Ansichten
Seite
Diskussion
Quelltext anzeigen
Versionen/Autoren
Persönliche Werkzeuge
Anmelden
Navigation
Hauptseite
Gemeinschafts-Portal
Aktuelle Ereignisse
Letzte Änderungen
Zufällige Seite
Hilfe
Suche
Werkzeuge
Links auf diese Seite
Änderungen an verlinkten Seiten
Spezialseiten