cancel
Showing results for 
Search instead for 
Did you mean: 

Magento 1.7 - Fehler mit Bundle-Produkten bei der Bestellemail - .../Renderer.php #155

Magento 1.7 - Fehler mit Bundle-Produkten bei der Bestellemail - .../Renderer.php #155

Hallo,

 

folgender Fehler bereitet mir seit einigen Stunden Kopfzerbrechen. Wir haben einen Bundle-Artikel erstellt, bestehend aus zwei Produkten jeweils mit Menge 1. Der Kunde kann den Artikel normal in den Warenkorb legen und bestellen. Bei dem onepage-Review wird danach ja die Bestellemail verschickt. Hier kommt es zu einem PHP Error:

 

PHP Fatal error:  Call to a member function getId() on a non-object in /www/magento/app/code/core/Mage/Bundle/Block/Sales/Order/Items/Renderer.php on line 155

Der Code dazu aus dem Renderer.php File (keine Änderungen):

/**
     * Getting all available childs for Invoice, Shipmen or Creditmemo item
     *
     * @param Varien_Object $item
     * @return array
     */
    public function getChilds($item)
    {
	    $_itemsArray = array();
		if ($item instanceof Mage_Sales_Model_Order_Invoice_Item) {
            $_items = $item->getInvoice()->getAllItems();
        } else if ($item instanceof Mage_Sales_Model_Order_Shipment_Item) {
            $_items = $item->getShipment()->getAllItems();
        } else if ($item instanceof Mage_Sales_Model_Order_Creditmemo_Item) {
            $_items = $item->getCreditmemo()->getAllItems();
        }
		
        if ($_items) {
            foreach ($_items as $_item) {
				var_dump($_item->getOrderItem()->getParentItem()) ;
                if ($parentItem = $_item->getOrderItem()->getParentItem()) {
                    $_itemsArray[$parentItem->getId()][$_item->getOrderItemId()] = $_item;
                } else {
                    $_itemsArray[$_item->getOrderItem()->getId()][$_item->getOrderItemId()] = $_item;
                }
            }
        }
		
        if (isset($_itemsArray[$item->getOrderItem()->getId()])) {
            return $_itemsArray[$item->getOrderItem()->getId()];
        } else {
            return null;
        }
    }

In der Zeile: if (isset($_itemsArray[$item->getOrderItem()->getId()])) {    kommt der Fehler, da das getOrderItem() kein Objekt zurückliefert. Da wir den Code nicht angepasst haben, frage ich mich nun, wie ich den Fehler weiter analysieren kann.

Plugins haben wir, nicht übermässig viele und nichts was mit Bundles zu tun hat...

 

 

Vielen Dank für Eure Hilfe,

Philipp

1 REPLY

Re: Magento 1.7 - Fehler mit Bundle-Produkten bei der Bestellemail - .../Renderer.php #155

Weiterhin frage ich mich, warum weiter oben in der Methode nicht folgendes vorhanden ist:

 

if ($item instanceof Mage_Sales_Model_Order_Item) {
            $_items = $item->getOrder()->getAllItems();
        }

 

da ja bei einer Bestellung (nicht LIeferschein, nicht Rechnung, nicht Gutschrift) sonst gar keine $_items erstellt werden. Hier würde also immer NULL zurückkommen, was aber dazu führt, dass der Artikel in der Bestellemail gar nicht aufgeführt wird.

 

Danke euch,

Philipp