Neueste Blog-Einträge
Kurzinfo

Andreas von Studnitz
- Diplom-Informatiker
- 6 Jahre Entwicklungs- und Projektleitungserfahrung in einer Internet-Agentur
- Magento-Freelancer
- auch TYPO3, PHP, SQL
- JavaScript, jQuery, Prototype, AJAX
< Anlegen neuer Magento-Bestellungen per Quellcode
Magento: Versand zu einer Bestellung per Quellcode erzeugen
11.05.2010 00:04
Vor allem beim Zusammenspiel mit Schnittstellen kommt es immer wieder vor, dass ein Versand zu einer Bestellung per Skript ausgelöst werden soll. Hierbei hilft folgender Code:
/**
* Creates a shipment for an order
*
* @param Mage_Sales_Model_Order $order
* @return Mage_Sales_Model_Order_Shipment
*/
protected function createShipment($order) {
$convertor = Mage::getModel('sales/convert_order');
$shipment = $convertor->toShipment($order);
// count items
$savedQtys = array();
$items = $order->getAllItems();
foreach($items as $item) {
$savedQtys[$item->getId()] = $item->getQtyOrdered();
}
// add items to shipment
foreach ($order->getAllItems() as $orderItem) {
if (!$orderItem->isDummy(true) && !$orderItem->getQtyToShip()) {
continue;
}
if ($orderItem->isDummy(true) && !$this->_needToAddDummy($orderItem, $savedQtys)) {
continue;
}
if ($orderItem->getIsVirtual()) {
continue;
}
$item = $convertor->itemToShipmentItem($orderItem);
if (isset($savedQtys[$orderItem->getId()])) {
if ($savedQtys[$orderItem->getId()] > 0) {
$qty = $savedQtys[$orderItem->getId()];
} else {
continue;
}
}
else {
if ($orderItem->isDummy(true)) {
$qty = 1;
} else {
$qty = $orderItem->getQtyToShip();
}
}
$item->setQty($qty);
$shipment->addItem($item);
}
$shipment->register();
$shipment->setEmailSent(true);
// save shipment and order
$order->setCustomerNoteNotify(true);
$order->setIsInProcess(true);
$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->addObject($order)
->save();
// send email
$shipment->sendEmail(true, '');
return $shipment;
}
Kommentar hinzufügen