Skip to main content
Skip table of contents

ERP Proxy

Muss der Shop Daten aus einem ERP übernehmen, das Informationen nur lokal zur Verfügung stellt, können wir mit unserer Proxy Komponente den File Transfer organisieren. Der ERP Proxy überträgt Kunden- und Artikeldaten/Preisinformationen in Richtung Shop und neue Aufträge in Richtung ERP. Da prinzipiell aber Dateien übertragen werden, können natürlich auch Informationen über Gutscheine, Dokumente, Rechnungen, etc. mitübertragen werden.

Die Komponente muss auf einem Gerät im Netzwerk des Kunden installiert werden, das einerseits Zugriff auf das ERP (bzw. das Ausgabe-Verzeichnis des ERPs) und auch auf das Internet hat.

Kommandozeile oder Dienst

Die Implementierung liegt in den Repos centauriProxy und centauriProxyShell.

In centauriProxy ist eine Bibliothek mit Hilfsfunktionen und ein Dienst implementiert.

In centauriProxyShell ist ein Kommandozeilen Tool implementiert, das regelmäßig über die Geplanten Tasks von Windows aufgerufen werden muss. Dieses Version sollte aktuell verwendet werden - die Dienst Variante ist noch nicht freigegeben.

Die notwendigen Files sind nicht Teil des Shop Releases.

Konfiguration

Zusätzlich zu den Programmdateien muss ein centauriERPProxy.cfg gepflegt werden. Das liefern wir als Modell an den Kunden mit und passen es an sein lokales ERP an.

CODE
#
# Konfiguration für Firma Proxy
#
hostname=https://firma.firma.com
proxyserver=
proxyusername=
proxypassword=
hashpath=c:\daten

#
# Security
#
apikey=eafd32cb-874c-4b3b-bcd1-cd46dd453101

#
# Konfiguration für Artikeldaten (ERP -> Shop) Id=products
#
products.type=file
products.direction=outbound
products.folder=c:\daten\products
products.archive=c:\daten\products\archiv
products.filename=*.csv

#
# Konfiguration für Produktbilder (ERP -> Shop) Id=images
#
images.type=file
images.direction=outbound
images.folder=c:\daten\images
images.lastmodified=01:00:00

#
# Konfiguration für Dokumente (ERP -> Shop) Id=documents
#
documents.type=file
documents.direction=outbound
documents.folder=c:\daten\pdf
documents.lastmodified=01:00:00

#
# Konfiguration für Kunde (ERP -> Shop) Id=customers
#
customers.type=file
customers.direction=outbound
customers.folder=c:\daten\customers
customers.filename=*.csv
customers.archive=c:\daten\customers\done

#
# Konfiguration für Preisvereinbarungen (ERP -> Shop) Id=prices
#
prices.type=file
prices.direction=outbound
prices.folder=c:\daten\prices
prices.filename=*.csv
prices.archive=c:\daten\prices\done

#
# Konfiguration für Gutscheine (ERP->Shop) id=coupons
#
coupons.type=file
coupons.direction=outbound
coupons.folder=c:\daten\coupons
coupons.filename=*.csv
coupons.archive=c:\daten\coupons\done

#
# Konfiguration für Bestellungen (Shop -> ERP) Id=orders
#
orders.type=file
orders.direction=inbound
orders.folder=c:\daten\orders
orders.tempfile=c:\daten\orders\order.tmp

Angepasst muss unbedingt der Parameter hostname für den URL des Shops und der Parameter apikey, der mit dem Parameter transferapikey in der web.config übereinstimmen muss. Ist der Parameter transferapikey nicht gesetzt, wird keine Prüfung vorgenommen.

Die Parameter proxy… müssen gesetzt werden, wenn der Internetzugriff im Netzwerk des Kunden nur über einen Proxy-Server zulässig ist.

Darunter folgen dann die Parameter für einzelne Übertragungskanäle products, customers, etc.

Angepasst werden muss unbedingt der .folder Parameter, der das Verzeichnis im Netzwerk des Kunden definiert, aus dem die zu übertragenden Dateien gelesen bzw. geschrieben werden. Für dieses Verzeichnis muss der Task centauriProxyShell.exe Schreib/Lesezugriff im Netzwerk des Kunden haben.

Kann eine Datei nach der Übertragung an den Shop gelöscht werden, muss der .archive Parameter angegeben werden. Dort muss ein Pfad definiert werden, in den die übertragene Datei verschoben wird.

Muss die Datei nach der Übertragung an den Shop im Verzeichnis stehen bleiben (z.B. bei Bild- oder Dokumentverzeichnissen), kann mit dem .lastmodified Parameter der Zeitrahmen definiert werden, in dem eine Datei im Verzeichnis an den Server übertragen wird. Ist der Parameter z.B. wie oben auf 01:00:00 gesetzt, dann werden nur Dateien übertragen, die in der letzten Stunde geändert wurden.

Konfiguration am Server

Prinzipiell können neue Übertragungskanäle documents, invoices, etc. in der obenstehenden Konfigurationsdatei frei erfunden werden. Allerdings muss der Server sie auch erwarten.

Am Server muss unter /img/transfers/ ein Verzeichnis mit dem Namen des Übertragungskanals angelegt werden. Sollen verarbeitete Dateien dort auch archiviert werden, sollte ein archive-Unterverzeichnis in diesem Arbeitsverzeichnis angelegt werden.

Außerdem muss in der Shop-Datenbank über die transfers Tabelle jeder Übertragungskanal konfiguriert werden.

Solange die transfers Tabelle komplett leer ist, werden standardmäßige Übertragungskanäle wie products, images, customers, … erwartet. Sobald der erste Datensatz angelegt ist, müssen auch die bisherigen Defaultkanäle angelegt werden.

Eine bequeme Möglichkeit zur Wartung der transfers Tabelle ist das Modul EDI-Transfers im Bereich Optionen des Admin Backends.

Prinzipiell können beim Hinzufügen bzw. beim Ändern eines Kanals die gleichen Parameter angegeben werden, die auch in der .cfg Datei im ERPProxy angegeben werden können.

Wichtig ist aber eigentlich nur das erste Feld Name, weil damit der Übertragungskanal auch Serverseitig angelegt wird. Alle anderen Felder sind nur Default-Werte, die von den Einstellungen in der .cfg Datei überschrieben werden.

Vermeiden doppelt übertragener Dateien

Um das Thema mehrfach übertragene Bilder zu lösen, die uns dann die Warteschlange für die Importe blockieren, haben wir die Proxy Kompontente aktualisiert.

Sie schreibt jetzt entweder im Temp-Verzeichnis oder in einem Verzeichnis, das durch den Parameter

CODE
hashpath=c:\verzeichnis

in der centauriERPProxy.cfg definiert wird, ein Protokoll mit. Anhand dieses Protokolls kann die Komponente erkennen, ob sie die Datei bereits übertragen hat oder nicht.

Da die Funktion standardmäßig aktiviert ist, müssen die beiden Files in der angefügten ZIP Datei einfach nur ins Installationsverzeichnis einkopiert werden. Ist über den Konfigurationsparameter hashpath ein Verzeichnis definiert, sieht man dort .history Files entstehen, in denen das Übertragungsprotokoll gehalten wird.

Nur ergänzend: theoretisch kann man die Funktion mit dem Parameter checkhash=false für einzelne Strecken auch ausschalten, z.B. für die customers Strecke

 

CODE
#
# Konfiguration für Kunde (ERP -> Shop) Id=customers
#

customers.type=file
customers.direction=outbound
customers.folder=c:\daten\customers
customers.filename=*.csv
customers.archive=c:\daten\customers\done
customers.checkhash =false

 

Dann wird auch eine alte Datei, die man nochmal ins Übertragungsverzeichnis legt, nochmals übertragen.

Parallelbetrieb mehrerer Proxy Komponenten

Die Übertragungskanäle werden regelmäßig, aber nacheinander abgearbeitet. Damit kann ein lange laufender Übertragungskanal - z.B. für Bilder - die anderen Übertragungen verzögern.

Es ist möglich die Proxy Komponente für solche Langläufer getrennt nochmals aufzusetzen und dann nur für diesen aufwendigen Übertragungskanal laufen zu lassen. Der normale Dokumentenaustausch, der innerhalb von wenigen Minuten übertragen werden sollte, bleibt in der ursprünglichen Installation.

Voraussetzung ist den Kanal zuerst vollständig aufzusetzen, damit er wie die anderen Übertragungskanäle arbeitet.

Um dann diesen Übertragungskanal auszulagern:

  1. Verwenden Sie im Admin Backend das Modul EDI Transfers im Abschnitt Optionen, um den Kanal zu löschen. Er wird dann nicht mehr im Rahmen der normalen Übertragung bearbeitet.

  2. Kopieren Sie das gesamte Verzeichnis mit der ERP Proxy Installation und erstellen Sie dafür einen weiteren CRON Job/Geplante Aufgabe, um die centauriERPProxyShell.exe in der Kopie regelmäßig aufzurufen.

  3. Erweitern Sie die .cfg Datei in der Kopie um eine Zeile mit dem Parameter transfers=

CODE
#
# Konfiguration für Firma 02 Proxy
#
hostname=https://firma.firma02.com
proxyserver=
proxyusername=
proxypassword=
hashpath=c:\daten
transfers=images

Der transfers Parameter kennzeichnet den Übertragungskanal, der mit dieser Kopie parallel getrennt übertragen werden soll. Im Beispiel oben wurde der images-Kanal ausgelagert.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.