Как сделать автоматическую доставку программно в magento?

Я попытался использовать следующий код наблюдателя.

... public function automaticallyInvoiceShipCompleteOrder($observer) { $order = $observer->getEvent()->getOrder(); $orders = Mage::getModel('sales/order_invoice')->getCollection() ->addAttributeToFilter('order_id', array('eq'=>$order->getId())); $orders->getSelect()->limit(1); if ((int)$orders->count() !== 0) { return $this; } try { if($order->canShip()) { $itemQty = $order->getItemsCollection()->count(); $items[] = $itemQty; // This first definition and 2nd look overlapping, our one is obsolete? $shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); $ship = new Mage_Sales_Model_Order_Shipment_Api(); $shipmentId = $ship->create($order->getId(), $items, 'Shipment created through ShipMailInvoice', true, true); //getting Error here } } } catch (Exception $e) { $order->addStatusHistoryComment(' Exception occurred during automaticallyInvoiceShipCompleteOrder action. Exception message: '.$e->getMessage(), false); $order->save(); } return $this; } ..... 

Когда я размещаю заказ, я могу захватить событие успеха заказа с помощью наблюдателя. Наконец, получение « Fatal error: Maximum function nesting level of '100' reached, aborting! » В самом вызове ajax.

Я не мог найти решение. Просьба дать некоторые советы по этому вопросу.

Каждый раз, когда ваш заказ сохраняется, вызывается этот метод наблюдателя, который снова сохраняет ваш заказ из-за некоторой ошибки в блоке try. Вот почему я думаю, что он будет бесконечно исполнять, и после 100-го времени будет выброшена фатальная ошибка.

В блоке $ship->create() вашего блока try вам нужно пройти Order Increment ID а не Order Entity ID .

посмотреть ссылку

Я попробовал это несколько месяцев назад, и это сработало для меня … Этот парень получил несколько хороших уроков по пурпурно …

НТН

Я пробовал с кодом ниже,

  public function automaticallyInvoiceShipCompleteOrder($observer) { //$order = $observer->getEvent()->getOrder(); $incrementid = $observer->getEvent()->getOrder()->getIncrementId(); $order = Mage::getModel('sales/order')->loadByIncrementId($incrementid); try { // Is the order shipable? if($order->canShip()) { $shipmentid = Mage::getModel('sales/order_shipment_api')->create($order->getIncrementId(), array()); } //END Handle Shipment } catch (Exception $e) { $order->addStatusHistoryComment(' Exception occurred during automaticallyInvoiceShipCompleteOrder action. Exception message: '.$e->getMessage(), false); } return $this; } 

Отправка Создано сейчас …