Magento - Produkt Hinzufügen programmgesteuert an die Karre durch Beobachter

Hier meine Fragen: Was ist die richtige Veranstaltung, um hook in das hinzufügen einer Produkt-zu zitieren, programmgesteuert (Eintrag sales_flat_quote_item Tabelle). Auch ich habe, fangen die Artikel/Produkte im Warenkorb eines Nutzers/Kunden, weil Sie Ihre Daten Informationen bestimmen das Produkt, das sich programmgesteuert Hinzugefügt. So das Szenario wäre:

  1. Benutzer/Kunde fügt ein Produkt zum Warenkorb
  2. finden Sie die richtige Veranstaltung für Haken in
  3. Holen sich die Informationen über die Produkte im Warenkorb
  4. zusätzliche Produkt zum Warenkorb basiert auf einer Produkt-id und verändert seine Daten

Meiner Meinung nach besser zum arbeiten mit dem zitieren, bevor die Produkte in die Datenbank geschrieben werden.

Ich herausfinden, wie Sie es durch Mage_Sales_Model_Quote::_addCatalogProduct(). Aber ich möchte es durch ein Ereignis Beobachter anstelle von überschreiben von core-Klassen.

BEARBEITEN

Nach mehr Forschung und Anregungen hier in den post, ich war in der Lage, um es arbeiten. Das wichtigste für mich war das Verständnis der Objekte in den Betrachter, Ihren Klassen und Klassen-Methoden mit

var_dump(get_class($quote)); //$item //$product
var_dump(get_class_methods($quote)); //$item //$product

Nun die Kenntnis der Methoden verfügbar sind, ist es einfacher, um es herauszufinden:

Veranstaltung:

        <events>
        <checkout_cart_product_add_after>
            <observers>
                <unifiedarts_configurablebundleset>
                    <type>singleton</type>
                    <class>Namespace_ConfigurableBundleSet_Model_Observer</class>
                    <method>salesQuoteEditItems</method>
                </unifiedarts_configurablebundleset>
            </observers>
        </checkout_cart_product_add_after>
    </events>

- Und Beobachter-Daten:

public function salesQuoteEditItems($observer)
{
    $event = $observer->getEvent();
    $item = $event->getQuoteItem();
    $product = $item->getProduct();
    $quote = $item->getQuote();

    $parent = Mage::getModel('catalog/product')->load($product->getParentProductId());

    if($parent->getTypeId() == 'bundle')
    {

        if($product->getTypeId() == 'configurable')
        {

            if ($simpleItem = $item->getOptionByCode('simple_product'))
            {
                //check if the simple product is in the table
                if(!$quote->hasProductId($simpleItem->getProduct()->getId()))
                {
                    echo '<br /><br /> no simple, add it';
                    echo ' simple id '.$simpleItem->getProduct()->getId();

                    $simple = Mage::getModel('catalog/product')->load($simpleItem->getProduct()->getId());
                    $quoteItem = Mage::getModel('sales/quote_item')->setProduct($simple);
                    $parentItem = ( $item->getParentItem() ? $item->getParentItem() : $item );

                    echo 'simple id '.$simpleItem->getProduct()->getId();

                    $item->setRowWeight($product->getWeight());

                    $quoteItem->setQuote($quote);
                    $quoteItem->setQty('1');
                    $quoteItem->setParentItem($parentItem);
                    $quoteItem->setStoreId(Mage::app()->getStore()->getId());
                    $quoteItem->setOriginalCustomPrice(0);

                    $quote->addItem($quoteItem);
                    $quote->save();

                }
                else
                {
                    echo 'simple found change someting'; die;
                }
            }
        }
    }

}

Das Loch-Ding ist, dass meine Erweiterung hinzufügen, um eine konfigurierte Element mit dem bundle. Der Produkt-Ansicht zu arbeiten. Die schwierige Aufgabe ist, um es in den Warenkorb. Nun, alles ist in Ordnung, bis Sie gehen zurück und fügen Sie das Produkt wieder mit anderen (konfiguriert) Optionen.

Du oben siehst, versuche ich zu prüfen, für die einfache Produkt (die ich manuell hinzufügen). Der code erzeugt zwei neue Zeilen in der sales_flat_quote_item Tabelle.

Wie lösche ich die alten beiden Einträge, oder gibt es da einen anderen besseren Ansatz, um den neuen Daten? danke 🙂

Magento - Produkt Hinzufügen programmgesteuert an die Karre durch Beobachter

zu welchem Zeitpunkt wollen Sie Produkt hinzufügen in den Warenkorb?
das ist der Punkt, ich weiß nicht, was ist die beste Zeit, um es hinzuzufügen. ich denke, zusammen mit den anderen Produkten im Warenkorb, einfügen, um das Zitat, das Objekt, nachdem ich den check auf der angebotspositionen

InformationsquelleAutor Florin P. | 2014-05-14

Schreibe einen Kommentar