Ergebnis 1 bis 5 von 5

Thema: Lagerverwaltung

  1. #1
    Contao-Nutzer
    Registriert seit
    18.03.2013.
    Beiträge
    41

    Standard Lagerverwaltung

    Hallo,
    ich versuche gerade eine Art Lagerverwaltung in Isotope selbst einzubauen.
    Das Modul wf_isotpe_stockManagement funktioniert bei mir leider nicht, sondern legt das ganze System lahm.

    Aktuell soll sobald ein Kaufvorgang abgeschlossen wird die Anzahl der jeweiligen Produkte in der DB entsprechend ihrer Häufigkeit im Warenkorb abgezogen.
    Ich habe bisher die Stelle herausgefunden die ich bearbeiten muss.

    -> isotope/library/Isotope/Module/Checkout.php bei Zeile 225

    Wenn ich mir dort Isotope::getCart()->getItems() ausgeben lasse erhalte ich alle Produktinfos zu den Artikeln im Warenkorb, allerdings sind da viele Informationen dabei die ich nicht brauche.

    Was ich brauche ist genau dieser Teil:

    [arrData: protected] => Array
    (
    [id] => 31
    [pid] => 1
    [tstamp] => 1421828159
    [product_id] => 2
    [type] => standard
    [sku] => 0001
    [name] => Adidas Sneaker
    [configuration] => a:0:{}
    [quantity] => 2
    [price] => 25.00
    [tax_free_price] => 25.00
    [tax_id] =>
    [jumpTo] => 3
    )

    Hat jemand eine Idee wie ich ohne große Umstände daran komme? Ich will nicht tausend foreachschleifen lostreten um das abgreifen zu können.
    Ein Problem dabei ist auch dass es dieses [arrData: protected]... in mehrfacher ausführung in dem array gibt.
    Um an die Iteminfos zu kommen genügt ja zB Isotope::getCart()->getItems(), gibt es da vllt auch etwas womit ich noch weiter in das array hineingreifen kann?
    Auf der Isotope-Seite habe ich dazu nichts gefunden.

    vielen Dank schonmal für eure Hilfe
    Geändert von Rigobert (21.01.2015 um 08:30 Uhr)

  2. #2
    Contao-Nutzer Avatar von Monique Hahnefeld
    Registriert seit
    22.11.2011.
    Ort
    Berlin
    Beiträge
    173

    Standard

    Hallo Rigobert,

    welche Version von Isotope nutzt du denn?
    Curiosity killed the cat

  3. #3
    Contao-Nutzer
    Registriert seit
    18.03.2013.
    Beiträge
    41

    Standard

    Hallo,
    ich nutze die Version 2.1.9.

    Habe das Problem aber mittlerweile gelöst über drei zusätzliche Funktionen in der Checkout.php

    ich liste hier mal den Code auf:

    PHP-Code:
    public function getStockUpdateInfo($arrItem){
            
            
    $arrStock = array();
            foreach(
    $arrItem as $a){
                
    $arrHelp = array(
                                
    'id'         => $a->product_id,
                                
    'quantity'    => $a->quantity
                                
    );    
                
    array_push($arrStock$arrHelp);
            }
            
            return 
    $arrStock;
        }
        
        
        public function 
    updateProductStock($arrItem){
            
            
    $arrItem $this->getStockUpdateInfo($arrItem);
            
            
            
            foreach(
    $arrItem as $a){
                
    $this->Database->prepare("UPDATE tl_iso_product
                                          SET stock = stock - ?
                                          WHERE id = ?"
    )->execute($a['quantity'], $a['id']);
                
    $this->checkStock($a['id']);
            }
            
        }
        
        public function 
    checkStock($id){
            
    $stock $this->Database->prepare("SELECT sku, name, stock FROM tl_iso_product WHERE id = ?")->execute($id)->fetchAllAssoc();
        
            
            if(
    $stock[0]['stock'] == 0){
                
    $to "email@mail.com";
                
    $subject 'blub!';
                
    $from 'From: blubblub';
                
    $message "Achtung! \nDas Produkt ".$stock[0]['name']." (Sku: ".$stock[0]['sku'].") ist ausverkauft. Bitte füllen Sie das Lager wieder auf.";
                
                
    mail($to$subjectuft8_decode($message), $from);
                
            }
        } 
    Die letzte Funktion gibt noch eine Warnmail an den Shopinhaber heraus falls das Produkt ausverkauft ist.

    der Funktionsaufruf erfolgt folgendermaßen ab Zeile 138 in der Checkout.php

    PHP-Code:
      if ($objOrder->checkout() && $objOrder->complete()) {
                            
    $this->updateProductStock($objOrder->getItems());
                            \
    Controller::redirect(\Haste\Util\Url::addQueryString('uid=' $objOrder->uniqid$this->orderCompleteJumpTo));
                        } 

  4. #4
    Contao-Nutzer
    Registriert seit
    18.03.2013.
    Beiträge
    41

    Standard

    das einzige Problem ist, dass es nicht updatesicher ist.
    Ich weis leider nicht wie ich von außen an diesem Schritt eingreifen kann. Der Funktionsaufruf erfolgt ja immer sobald man auf den Button "jetzt bezahlen" klickt.

  5. #5
    Contao-Nutzer Avatar von Monique Hahnefeld
    Registriert seit
    22.11.2011.
    Ort
    Berlin
    Beiträge
    173

    HTML

    Hallo Rigobert,

    wenn du es updatesicher möchtest musst du eine kleine Erweiterung schreiben.

    Für deinen Zweck bietet das ProductCollectionModel mehrere Hooks.
    https://github.com/isotope/core/blob...Collection.php
    https://github.com/isotope/core/blob...tion/Order.php

    Wenn der Bestellvorgang abgeschlossen ist wird das CollectionModel gelockt. Das heißt der Besteller kann nichts mehr verändern und hat die Bestellung abgesendet.
    Hier wäre deine Funktion sicher am besten aufgehoben:
    PHP-Code:
    $GLOBALS['ISO_HOOKS']['collectionLocked'
    Vielleicht solltest du noch optional mit eine Funktion einbauen, falls eine Bestellung storniert wird oder gelöscht.
    Für die Löschen-Aktion hast du diesen Hook:
    PHP-Code:
    $GLOBALS['ISO_HOOKS']['deleteCollection'
    Für die Storno-Aktion sollte dieser Hook nützlich sein:
    PHP-Code:
    $GLOBALS['ISO_HOOKS']['postOrderStatusUpdate'
    Viel Erfolg
    Curiosity killed the cat

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •