Ver. 2.5.1 Open Catalog Interface (OCI) Anbindung an VirtueMart Joomla 2.5 und Virtuemart 2.0.6 Ing. Karl Hirzberger www.hirzberger.at
Inhaltsverzeichnis Begriffserklärung... 3 OCI für VirtueMart... 4 Installation... 4 Autologin... 5 Administrator... 5 Frontend... 6 Aufruf... 6 Testmodus... 6 Vmoci... 7 Administrator... 7 Frontend... 9 Testmodus... 9 Customizing... 10 Was ist Customizing in vmoci:... 10 Das Standart-Template... 10 Wo finde ich die Templates... 10 Ein Template bearbeiten.... 10 Welche Felder stehen im Template zurverfügung... 12 Template User zuordnen... 14 Selbsterstelltes Feld anlegen... 16 Was ist neu... 18 Version 2.5.1... 18 Selbsterstelltes Feld für die Produkteinheit... 18 Default Template... 18 Information für Entwickler und Übersetzer... 18 Authoren... 19 Lizenz... 19 GNU General Public License... 19 Seite 2 von 19
Begriffserklärung Open Catalog Interface (OCI) ist eine offene und standardisierte Katalogdatenschnittstelle zum Austausch von Katalogdatensätzen zwischen SAP E-Procurement Systemen (meist EBP) und beliebigen anderen Katalogen. Der SAP User greift dabei auf aktuelle Katalogdaten des Anbieters über das Internet zu. OCI wurde von der Firma SAP AG entwickelt VirtueMart ist eine Open Source E-Commerce Lösung in Verbindung mit dem Content Management System (CMS) Joomla!. VirtueMart wurde bereits mehr als 1.500.000 mal installiert Seite 3 von 19
OCI für VirtueMart Es besteht aus zwei Plugins. Kh_autologin ist für die automatische Anmeldung zuständig. Kh_vmoci sendet die Daten mittels OCI an das aufrufende Programm. Wichtig: Das OCI-Interface speichert Daten im Session-Object. Stellen sie daher die Session-Zeit in der Konfiguration von Joomla hoch genug ein. Installation Die Plugins kh_autologin und kh_vmoci installieren und aktivieren. Seite 4 von 19
Autologin Administrator Parameter Beschreibung Werte Url-Redirekt Welche Seite soll nach dem Login Leer aufgerufen werden. Beliebige Seite aus Jomla: z.b. Index.php Passwort Wie werden die Logindaten unverschlüsselt übermittelt verschlüsselt Standart für SAP ist unverschlüsselt Debug Debugmodus nein ja Nur zum Testen auf ja stellen Seite 5 von 19
Frontend Aufruf Parameter Beschreibung Werte URL Url der eigenen Page http://www.meinshop.at/index.php Iindex.php muss angegeben werden Benutzername Username USER user USERNAME username Standart für SAP ist USERNAME Passwort Passwort passw PASSW password PASSWORD Hook_Url Url an welche die Bestelldaten gesendet werden. Wird vom aufrufenden System übergeben und in der Session gespeichert. Stellen sie sicher, dass die Session-Zeit groß genug ist. Standart für SAP ist PASSWORD hook_url HOOK_URL Standart für SAP ist HOOK_URL Die Parameter bzw Parameternamen müssen an den Kunden bekanntgegeben werden. Beispiel: Aufruf für Böhler USERNAME Mustername PASSWORD Musterpasswort HOOK_URL Wird vom System erstellt Testmodus Wenn man den Katalog mit HOOK_URL=test aufruft, dann werden die OCI-Daten angezeigt. URL: MeinschopUrl/index.php?USERNAME=xxx&PASSWORD=xxx&HOOK_URL=test Seite 6 von 19
Vmoci Vmoci sendet die Bestelldaten an die Hook_url. Wichtig: Vmoci importiert Code in die Thankyou-Page von VirtueMart. Daher muss der Bestellvorgang mit der Thankyou-Page von VirtueMart enden. Welche Daten in welchem Format übertragen werden, kann mittels Template mit Php- Grundkentnissen programmiert werden. Es kann für jeden User ein eigenes Template angegeben werden. Bitte den Abschnitt Customizing lesen. Administrator Parameter Beschreibung Werte Automatisch Wenn ja, muss der Kunde den Ja senden Sendebutton nicht selbst anklicken. Ein Script erledigt das. Nein Verzögerung Wie lange soll die Thankyou-Page Anzahl der Millisekunden sichtbar sein, wenn automatisch senden auf ja gestellt ist. Eigene Einheit Eigenes selbsterstelltes Feld für die Ja verwenden Einheit verwenden. Nein Name des Name des selbsterstellten Feldes für die Name des Feldes Feldes für die Einheit Produkt Einheit Default Template Default Template für meinen Shop Name des Templates ohne Erweiterung Debug Debugmodus nein Seite 7 von 19
ja Nur zum Testen auf ja stellen Seite 8 von 19
Frontend In der Thankyou-Page von VirtueMart wird die OCI Schnittstelle angezeigt. Je nachdem ob Automatisch senden auf ja oder nein gestellt ist, muss der Kunde auf den Sendebutton klicken oder nicht. Testmodus Wenn als HOOK_URL test angegeben wurde, wird der Reflektor zum Testen von Forms mit den Bestelldaten angezeigt. Seite 9 von 19
Customizing Was ist Customizing in vmoci: Mittels Template kann mit PHP-Grundkenntnissen bestimmt werden, welche Daten in welcher Form übertragen werden. Das Standart-Template Das Standart-Template ist default.tpl.php. Wo finde ich die Templates meinejoomlainstallation/plugins/system/kh_vmoci/template/xxxxx.tpl.php Ein Template bearbeiten. Kopiere das default Template default.tpl.php und benenne es. Den Namen des neuen Templates in die Options von kh_vmoci eintragen. Nun das Template bearbeiten. <form id="kh_vmocisendform" action=" <?php echo $hook_url?>" method="post" target="_top"> Standartparameter <input type="hidden" name="~okcode" value="addi" /> <input type="hidden" name="~target" value="_top" /> <input type="hidden" name="~caller" value="ctlg" /> <?php $counter = 1; foreach( $rows as $row ) {?> In der Schleife können die Daten für jeden Artikel angegeben werden z.b. <input type="hidden" name="new_item-description[<?php echo $counter?>]" value="<?php echo substr($row->order_item_name,0,40)?>" /> <input type="hidden" name="new_item-quantity[<?php echo $counter?>]" value="<?php echo number_format($row->product_quantity, 3, '.', '')?>" /> <input type="hidden" name=new_item-unit[<?php echo $counter?>]" value="<?php echo substr($row->product_unit,0,3)?>" /> <input type="hidden" name="new_item-price[<?php echo $counter?>]" value="<?php echo number_format($row->product_item_price, 3, '.', '')?>" /> <input type="hidden" name="new_item-priceunit[<?php echo $counter?>]" value="1" /> <input type="hidden" name="new_item-currency[<?php echo $counter?>]" value="<?php echo $row->order_item_currency?>" /> weitere Daten.. <?php $counter++;?> <?php } //end for?> <input type="button" class="button" value="<?php echo $button_text?>" id=kh_submitoci name=kh_submitoci onclick="kh_vmocisendform()"> </form> Bitte achten sie auf die richtige Angabe des Dezimaltrennzeichens. Seite 10 von 19
SAP R3 verwendet in den meisten Installationen das amerikanische Format (. ) als Dezimalrennzeichen. SAP ByD scheint das lokale Format zu verwenden (. ) für amerikanisch oder (, ).für europäisch. Eine genaue Auskunft kann der jeweilige Administrator der SAP-Installation geben. Seite 11 von 19
Welche Felder stehen im Template zurverfügung /* here are all fields // from order $row->order_id; $row->vendor_id; $row->product_id; $row->order_item_sku; $row->order_item_name; $row->product_quantity; $row->product_item_price; //pro Stück $row->product_tax //pro Position $row->product_basepricewithtax //pro Stück $row->product_subtotal_discount //pro Postion $row->product_final_price; //pro Stück $row->order_item_currency; $row->order_status; $row->order_item_cdate; $row->order_item_mdate; $row->product_attribute; //from product language-file $row->product_s_desc; $row->product_desc; //from product $row->product_weight; $row->product_weight_uom; $row->product_length; $row->product_width; $row->product_height; $row->product_lwh_uom; $row->product_url; $row->product_available_date; $row->product_tax_id; $row->product_unit; $row->product_packaging; */ Neu seit Version 2.5.1 $user_currency Weil in den meisten Fällen das Feld product_currency in der Datenbank leer ist, übertrage ich nun das Feld User_currency. In diesem Feld ist die Währungseinheit für den User für diese Bestellung gespeichert. Verwendung: <input type="hidden" name="new_item-currency[<?php echo $counter?>]" value="<?php echo!empty($row->order_item_currency)? $row->order_item_currency : $user_currency?>" /> $row->custom_unit Inhalt des Feldes, das sie als selbsterstelltes Feld für die Produkteinheit (ISO) angelegt haben. Verwendung Seite 12 von 19
<input type="hidden" name="new_item-unit[<?php echo $counter?>]" value="<?php echo!empty($row->custom_unit)? substr($row->custom_unit,0,3) : substr($row->product_unit,0,3)?>" /> Wenn die Option Eigene Einheit verwenden auf nein gesetzt ist, dann ist row->custom_unit immer leer und es wird das Feld row->proct_unit verwendet. Ist die Option auf ja gesetzt, wird row->custom_unit verwendet und nur wenn es leer ist row->product_unit. Seite 13 von 19
Template User zuordnen!! Nur notwendig wenn verschiedene Kunden unterschiedliche Daten übermittelt haben wollen. Ansonsten einfach default.tpl.php bearbeiten.!! Wenn erforderlich, kann für jeden User ein eigenes Template angegeben werden. Ist kein Template angegeben wird default.tpl.php verwendet. Um einem User ein Template zuordnen zu können, müssen folgende Schritte ausgeführt werden. 1. In VirtueMart -> Konfiguration -> Kundenfelder ein Feld mit dem Namen kh_oci einfügen!!achtung!! VM hat hier eine Bug! Das Feld wird immer mit dem Index 0 eingefügt. Wenn man das Feld löscht (weil der Name falsch ist) und wieder eines einfügt, dann hat man 2 Felder mit dem Index 0. Schlimmstenfalls muss man in der Datenbank in der Tabelle #_virtuemart_userfields in der Spalte ordering die Werte ändern. Seite 14 von 19
2. Die Benutzer in VirtueMart -> Bestellung&Kunden -> Kunden -> Zusatinformationen im Feld kh_oci den Namen des Templates ohne Erweiterung eingeben Seite 15 von 19
Selbsterstelltes Feld anlegen 1. In Virtuemart -> Produkte -> selbsterstelle Felder ein neues Feld einfügen Seite 16 von 19
2. Im Produkt fügen sie das selbsterstelle Feld ein und geben die ISO-Einheit in das Feld ein 3. Nicht vergessen, den Namen des selbsterstellten Feldes in den Optionen von kh_vmoci einzugeben. Seite 17 von 19
Was ist neu Version 2.5.1 Selbsterstelltes Feld für die Produkteinheit VM hat das Eingabefeld für die Produkteinheit von einem freien Textfeld in ein Kombinationsfeld mit nur wenigen Optionen geändert. Die Eingabe von ISO-Einheiten ist daher nicht mehr möglich. SAP (im speziellen SAP ByD) benötigt aber ISO-Einheiten. Nun können wir den Code von VM hacken oder ein eigenes Feld für die ISO_Einheit erstellen. Ich denke, dass die zweite Möglichkeit die bessere ist, da der Hack von VM bei einem Update überschrieben wird. Daher habe ich kh_vmoci erweitert. Nun kann ein selbsterstelltes Produktfeld für die ISO-Einheit verwendet warden. Default Template Ab Version 2.5.1 kann das default Template selbst definiert warden. Dieses wird bei einem Update von kh_vmoci nicht überschrieben. Natürlich darf der Name nicht default sein. Information für Entwickler und Übersetzer Weil es Probleme mit anderen Erweiterungen gibt, habe ich die Namen der Variablen in den Sprachdateien von kh_vmoci und kh_autologin geändert. Jede Varibale beginnt nun mit dem Namen des Plugins. Z.B. USER_FIELD_LABEL hat nun den Namen KH_VMOCI_USERFIELD_LABEL Seite 18 von 19
Authoren Karl Hirzberger (Entwickler) http://www.hirzberger.at Dorin Marmeliuc (SAP ByD) Anonymus (SAP R3) Lizenz GNU General Public License Seite 19 von 19