Jump to content
Fuchs25

Bestandsabfrage im Fremdsystem bei klick auf In den Warenkorb

Recommended Posts

Hallo,

 

ich bräuchte mal Hilfe zu meinem Thema Bestandsabfrage im Fremdsystem bei klick auf In den Warenkorb.

 

 

Wie es funktionieren sollte:

Der Kunde klickt auf den Button "In den Warenkorb". Dabei möchte ich zuerst den Artikel und die Anzahl in dem Fremdsystem abfragen. Sollte kein Bestand da sein, sollte in einem Modalfenster eine entsprechende Meldung ausgegeben werden. Wenn Bestand da ist, kann die Funktion wie üblich durchlaufen.

 

Ich finde leider keinen richtigen Ansatzpunkt. Shopversion 1.7.2.1.

 

Danke & Gruß

Andreas

 

 

Share this post


Link to post
Share on other sites

Eigentlich wäre das etwas, um die Lagerbestandsverwaltung zu nutzen. Da kann man dann steuern, ob nicht an Lager verfügbare Produkte trotzdem bestellbar sein sollen. Das wäre der Ansatz, den ICH verfolgen würde. Selbstredend muss der Lagerbestand Bescheid wissen, was verfügbar ist. Das kann man zB regelmässig per Cron und über ein Schnittstellenprogramm nachführen.

 

Dein Ansatz ist wohl in der Theorie umsetzbar, allerdings nicht mit Bordmitteln von PrestaShop. Vielleicht gibt es dafür ein Modul. Ich glaube eher nicht, aber Suchen schadet sicher nicht. Wenn nein, dann musst Du in den Core von PrestaShop eingreifen. Da ich V 1.7. kaum kenne, kann ich nicht beurteilen ob die relevanten Funktionen seit 1.6. geändert haben. Was  sich aber sicher sagen lässt: Viele Fallstricke.

 

Der erste: Wenn das Fremdsystem mal nicht läuft oder es aus was auch immer gearteten Problemen zu Störungen im Ablauf kommt, dann kann der Kunde in Deinem Shop keine Bestellungen mehr tätigen.

Der zweite: Der Bestellablauf vom Backoffice unterscheidet sich technisch von jenem im Frontoffice. Es ist also möglich, dass dieselbe Funktion zur Überprüfung an zwei unterschiedlichen Stellen getriggert werden müsste.

 

Fazit: Wenn man recht gute Erfahrung hat in Modulentwicklung oder Änderungen am Core, kann man das hinbekommen. Einfach ist es nicht und obig erwähntes Risiko bleibt immer bestehen.

Share this post


Link to post
Share on other sites

Danke für deine Antwort.

 

Die negativen Einschränkungen sind mir bewusst. Wenn das Fremdsystem nicht erreichbar ist, dann soll man auch nichts bestellen können. Diese Vorgehensweise betrifft nur einige Artikel und soll (laut Chef) auch so gemacht werden.

 

Ich bräuchte nur mal einen Startpunkt. Vielleicht hat noch jemand eine Idee.

 

Danke & Gruß

Andreas

Share this post


Link to post
Share on other sites

Ganz ehrlich, ich würde da nicht auf Prestashop setzen, sondern mich gleich direkt an das Fremdsystem anbinden. Die haben vermutlich auch selbst eine Lösung für e-commerce. Wenn nicht, dann dort anknüpfen und nicht das Rad nochmal neu erfinden. So wie du dir das vorstellst ist es zwar mit Codeänderungen möglich, aber ohne Fehlerquoten sicher nicht durchführbar.

Share this post


Link to post
Share on other sites

PS 1.7. ist ja - zumindest im deutschsprachigen Gebiet - noch eher kaum im produktiven Einsatz. Viele raten auch von dieser Version ab. Daher könnte es schwieriger werden, jemanden zu finden der hier schon ausreichend Erfahrung hat. In PS 1.6. würde ich diese Datei anschauen. So es diese auch in 1.7 gibt, hier geht es lang:

/controllers/front/CartController.php
/classes/Cart.php

Das sind die zwei Wichtigsten Bereiche des Programmcodes. CartController ist ein Controller und steuert Methoden und Funktionen aus der Klasse Cart. Aber ehrlich - wenn es schon daran hapert, die richtigen Dateien für Änderungen zu finden, wird es wohl ein ziemlich anspruchsvolles Unterfangen.

Share this post


Link to post
Share on other sites

Ich habe mir schon Dateien angeschaut. Darunter auch diese. Ich wollte nur unvoreingenommen die Meinung erfragen.

 

Beim CartController in der function processChangeProductInCart konnte ich zumindest schon mal verhindern das der Artikel in den Warenkorb kommt. Kann aber keine Meldung durchleiten.

 

Muss weiter schauen. Vielleicht komme ich noch drauf.

Share this post


Link to post
Share on other sites

Hilfreich ist es immer, wenn man sich im jeweiligen Controller oder Modul anschaut, wie Fehlermeldungen erzeugt werden. Ein korrektes Modul hat immer ein minimales Fehlerhandling. Für den obigen Fall ein Beispiel, dass Du adaptieren kannst:

            if ($total_quantity < $minimal_quantity) {
                $this->ajaxDie(Tools::jsonEncode(array(
                        'hasError' => true,
                        'errors' => array(sprintf(Tools::displayError('You must add %d minimum quantity', !Tools::getValue('ajax')), $minimal_quantity)),
                )));
            }

Und sonst einfach mal nach 'error' im Quellcode suchen. Evtl. wurde das in 1.7 auch etwas geändert. Typischerweise setzt man nur das oder die Array / Variablen für den Meldungstext und dieser wird, wenn man dies in der richtigen Reihenfolge macht dann auch automatisch angezeigt.

Share this post


Link to post
Share on other sites

Danke für deine Antwort.

 

Die negativen Einschränkungen sind mir bewusst. Wenn das Fremdsystem nicht erreichbar ist, dann soll man auch nichts bestellen können. Diese Vorgehensweise betrifft nur einige Artikel und soll (laut Chef) auch so gemacht werden.

 

Ich bräuchte nur mal einen Startpunkt. Vielleicht hat noch jemand eine Idee.

 

Danke & Gruß

Andreas

 

Du Brauchst sowas hier

 

Share this post


Link to post
Share on other sites

Du Brauchst sowas hier

Über ERP würde ich auch nicht gehen. Einer meiner Kunden führt absolut 0 Lager und greift auf die Daten seiner Hersteller zu. Der Händler generiert 4x täglich eine csv, welche mittels externen Tool und automatischen Datenbankupdate zwischen sein Prestashop und seinen Herstellern 4x täglich die Lagersituation aktualisert. Mit einer eigenen ERP ist es nicht abgetan, ein Datenaustausch muss auf jeden Fall angebunden werden. Deshalb finde ich, ist es besser gleich die Datenbank vom Hersteller zu verwenden und im Prestashop nur in eine Richtung zu Synchronisieren, anstatt in beide Richtungen. Mein Kunde arbeitet so schon über 7 Jahre problemlos und Lagersituation ist so ziemlich zeitnah korrekt.

 

Im Einsatz ist Prestashop 1.6., Presta Store Manager Pro um seine Shops in einer Oberfläche zu managen und das für den Store Manager "automated import" Modul.

  • Like 1

Share this post


Link to post
Share on other sites

Selectshop hat schon recht. Bidirektionale Schnittstellen bieten noch ganz andere Tücken. Der Ansatz, die Lagerbestände von PrestaShop ein paar mal am Tage nachzuführen, scheint mir realistisch. Haben wir so auch schon umgesetzt, dabei erfolgt der Update einmal morgens früh und einmal um die Mittagszeit. Die 0.x% an Bestellungen die dann dochmal ohne Lagerbestand durchkommen, die kann man problemlos in den Griff bekommen. Oft ist auch eine 90%-Lösung eine gute Lösung. Vor allem dann, wenn die 100%-Lösung mit deutlich mehr Komplexität erkauft werden muss.

Share this post


Link to post
Share on other sites

Hallo noch mal,

 

ein Bestandsabgleich ist ja relativ einfach und habe ich auch schon mit einem anderen ERP und der 1.6 version gemacht. 

In dem Fall geht es aber nicht anders.

 

Hiermit mein Lösungsansatz falls andere Leute etwas ähnliches machen wollen:

 

In der core.js wo der Button add-to-cart ausgelöst wird, feuer ich per ajax die Daten an das ERP System. Ich nehme dazu gleich die query Variable die ich einfach an die URL mit dran hänge.

 

Das ERP macht den Bestandsabgleich und kann mir auch gleich eine Meldung zurückgeben falls nicht genug Bestand da ist oder es sonstige Sachen zu melden gibt.

 

Sollte alles OK sein läuft das Script einfach weiter. Wenn nicht, stoppe ich den Vorgang und zeige ein Modalfenster mit der Nachricht an.

 

Sollte das ERP nicht erreichbar sein wird der Kunde vertröstet das er später noch mal wieder vorbei kommen soll. (der wird sicherlich nicht mehr wiederkommen, naja der Kunde wünscht das so)

 

Ich weiß, es werden viele von euch als beknackte Idee halten. Ich hätte es auch gern anders gemacht aber das ist nun mal die Vorgabe und auch dafür muss man Lösungen finden.

 

Gruß Andreas

Share this post


Link to post
Share on other sites

Nun ja, Voragabe ist Vorgabe. Evtl. darüber nachdenken, den Zielserver ggf. im 5-Minuten Intervall auf Verfügbarkeit prüfen. Wenn keine Antwort, könnte man den Shop entweder in den Katalog- bzw. Wartungsmodus setzen und umgekehrt... Das würde den Kunden ggf. Fragezeichen ersparen.

Share this post


Link to post
Share on other sites

Nun ja, Voragabe ist Vorgabe. Evtl. darüber nachdenken, den Zielserver ggf. im 5-Minuten Intervall auf Verfügbarkeit prüfen. Wenn keine Antwort, könnte man den Shop entweder in den Katalog- bzw. Wartungsmodus setzen und umgekehrt... Das würde den Kunden ggf. Fragezeichen ersparen.

 

ich glaube das kann man auch mit diesem Sync4 

aber ich kenne es nicht was haltet ihr dafon ?

 

https://www.youtube.com/watch?time_continue=281&v=9i4sl1FbOYc

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More