Opencart-Integration in Buchhaltungssysteme

Opencart ist einer der häufigsten Online-Shops. In vielen Fällen ergibt sich die Aufgabe der Integration in ein Lagerbuchhaltungssystem (meistens mit 1C).

Die Integration umfasst mindestens die Übertragung von Bestellungen aus dem IM an das Lagersystem zur Verarbeitung und den Versand von Waren an den Käufer sowie die Aktualisierung der Warenmenge im IM entsprechend der tatsächlichen Verfügbarkeit im Lager.

Oft besteht die Aufgabe auch darin, die Waren selbst, ihre Parameter, Fotos usw. zu synchronisieren.

Die Schwierigkeit besteht darin, dass in der Regel Änderungen sowohl im IM als auch im Lagersystem vorgenommen werden müssen. Dies bedeutet, dass der Entwickler beide Systeme kennen oder einen anderen Entwickler einbeziehen muss. Es gibt vorgefertigte Lösungen, die jedoch normalerweise fertiggestellt oder bezahlt werden müssen und dennoch fertiggestellt werden müssen.

Um dieses Problem zu lösen, wurde für OpenCard ein Modul erstellt, das die OpenCart-API erweitert, sodass Änderungen nur auf der Seite des Buchhaltungssystems vorgenommen werden können.

Das Modul ist kostenlos Open Source und befindet sich auf dem Github .

Das Modul wurde für ein bestimmtes Buchhaltungssystem entwickelt, ist jedoch so geschrieben, dass es von allen anderen Programmen von Drittanbietern verwendet werden kann.

Das Modul wird entweder standardmäßig über das Admin-Panel oder einfach durch Kopieren in den Ordner catalog / controller / api im IM installiert. Das Modul besteht aus einer Datei. Es sind keine Änderungen an den Einstellungen oder der OpenCards-Struktur erforderlich.

Natürlich müssen Sie im Admin-Bereich die KEY-API generieren, die dann in den Warehouse-Systemeinstellungen für die Anmeldung bei der API festgelegt wird, bevor Sie darauf zugreifen.
Arbeit mit OpenCart 2.3 und 3.0 verifiziert

Das Modul bietet verschiedene API-Funktionen für die Arbeit mit Bestellungen und Waren.
In Übereinstimmung mit den Open-Card-Vereinbarungen werden Parameter mit der POST-Methode übertragen, und vor dem Zugriff auf die API muss ein spezielles Token abgerufen werden. Die Daten werden im JSON-Format ausgetauscht. All dies sind Standardtools für die Arbeit mit der OpenCart-API.

Arbeiten Sie mit Bestellungen


Wenn neue Bestellungen im IM erscheinen, müssen sie in das Lagersystem importiert werden, dh auf dieser Grundlage müssen die entsprechenden Dokumente (Datensätze usw.) im Lagersystem erstellt, verarbeitet und an den Kunden gesendet werden

Bestellungen werden durch Aufrufen der Funktion orders () importiert.
Um nur die erforderlichen Bestellungen zu erhalten, wird der Parameter status_id mit dem Status der Bestellungen übergeben. Da die Status in der geöffneten Karte vom Admin-Bereich erstellt werden und beliebig sein können, müssen Sie zunächst eine Liste der Status mithilfe der statuses () -Methode abrufen , die ein Schlüsselwert-Array mit Bezeichnern und Statusnamen zurückgibt.
Das Buchhaltungssystem präsentiert diese Status zur Verdeutlichung in einer Art Dropdown-Liste. Der Manager wählt aus diesen Status den aus, der der neuen Bestellung entspricht.

Mit der Bestellung kommt eine Liste der Waren und Kundendaten zur Lieferung.
Um Aufträge zu identifizieren, muss das Buchhaltungssystem die Auftrags-ID in ein Attribut des internen Auftrags schreiben. Diese Kennungen aktualisieren den Status im MI und stellen außerdem sicher, dass die Bestellung bereits importiert wurde.

Statusaktualisierungen im IM werden von der Funktion updateorder () durchgeführt
Der Manager wählt die erforderlichen Aufträge (Buchhaltungssystem) im gewünschten Zustand aus (z. B. wird der Auftrag bearbeitet) und aktualisiert den Status der entsprechenden Erstaufträge im IM. Das Schlüsselwert-Array wird übertragen - die Auftrags-ID des MI und die Status-ID des MI aus der vom System vorgeschlagenen Dropdown-Liste.

Beispielsweise können Bestellungen aktualisiert werden, nachdem sie zur Verarbeitung angenommen, an den Kunden versendet, an den Kunden geliefert und geschlossen wurden. Dies liegt im Ermessen des Managers.
Wenn die Status in beiden Systemen klar definiert sind und sich nicht ändern, können API-Aufrufe mit festen Status natürlich an einen Scheduler gehängt und automatisch aufgerufen werden.

Mit Waren arbeiten


Bei der Arbeit mit Waren ist es meist erforderlich, die tatsächliche Warenmenge im Lager und die Preise im Geschäft zu aktualisieren.

Um Daten auszutauschen, müssen Waren im IM mit Waren im Lager synchronisiert werden. Der Artikel stellt die Konformität bereit. Wenn Sie möchten, können Sie den Code anpassen und einen anderen Parameter verwenden, z. B. den Namen (obwohl dies keine gute Idee ist).

Verwenden Sie die Funktion addproducts () , um dem Geschäft Produkte hinzuzufügen.

Waren, die noch nicht da sind, werden in das Geschäft gebracht. Um keine Duplikate zu übertragen, können Sie mit der Methode articles () eine Liste der dort vorhandenen Artikel aus dem Store abrufen.
Damit Waren direkt in die gewünschte Kategorie fallen, müssen Sie zunächst eine Liste der Kategorien mit der Methode cat () abrufen und dem Manager die Möglichkeit geben, die gewünschte Kategorie aus der Liste auszuwählen. Danach werden die Waren mit Standardwerkzeugen im OpenCart-Admin-Bereich neu registriert.

Die Waren werden in Form eines Namens, eines Artikels, einer Beschreibung (falls vorhanden), eines Preises und einer Menge übertragen. In einigen Fällen besteht die Aufgabe darin, Attribute, alle Beschreibungen, Fotos usw. aus dem Lager zu übertragen. In dieser Hinsicht bestehen jedoch Zweifel daran, ob es ratsam ist, all dies auf der Seite des Rechnungsführungssystems zu schaffen.

Erstens reichen für die klassische Lagerbuchhaltung der Name und die Artikelnummer, dh die Daten, die in Rechnungen und Bestellungen verwendet werden, aus.

Zweitens verfügt das IM-Admin-Panel bereits über regelmäßige Mittel zum Bilden von Produktkarten.
Drittens ist die Übertragung und Koordination derart komplexer Strukturen wie eines Baums von Kategorien, Attributen, Bildern usw. ein sehr problematisches Geschäft und, wie aus dem Vorstehenden hervorgeht, nicht erforderlich.
Solche Lösungen sind sinnvoll, wenn das Buchhaltungssystem mit anderen Ressourcen zusammenarbeitet und beispielsweise Daten auf Marktplätze hochlädt. Obwohl ich sicher bin, dass es Module für die offene Karte gibt, die Eigenschaften und Fotos von Waren von der offenen Karte auf Marktplätze hochladen.

Wenn sich herausstellt, dass der IM zum Zeitpunkt der Implementierung des Lagersystems bereits über einige Waren verfügt, können Sie mit der Methode getproducts () eine Warenliste aus dem IM abrufen und zum Warenkatalog des Buchhaltungssystems hinzufügen. Die Eindeutigkeit wird auch nach Artikeln überprüft.

Als nächstes aktualisieren die Hauptfunktionen updatequantity () und updateprice () , um die Menge und den Preis im MI gemäß den Lagerdaten zu aktualisieren. Die Funktionen übergeben das Schlüsselwertarray (Artikelnummer oder Preis) und erfordern keine Parameter, d. H. Sie können vom Scheduler gestartet werden.

Wie bereits erwähnt, besteht der Vorteil des Moduls darin, dass keine Änderungen am OpenCart-Code vorgenommen werden. Bei Bedarf kann das Modul einfach finalisiert werden. Um zusätzliche Daten zu übertragen, müssen Sie lediglich einen neuen Schlüssel zum entsprechenden assoziativen Array hinzufügen. Die Daten werden auf der Empfangsseite in derselben Form gepackt und dann entpackt.

Falls das Buchhaltungssystem in PHP geschrieben ist, gibt es eine vorgefertigte Funktion zum Aufrufen der OpenCards-API (Sie können einfach die Zeile der Fehlermeldung aus dem System entfernen).

Source: https://habr.com/ru/post/de462737/


All Articles