2012-01-29 95 views
7

我在看一些代码,在Magento和船舶和完整的多个订单增加MassActionsales_order/indexMagento如何以编程方式发送订单?

莫名其妙的命令没有被运。

它看起来像(完全正常的顺序)没有通过canship()测试。是否应通过$orderid传递$order

这里是我的代码

//Get orderids 
$orderIds = $this->getRequest()->getPost('order_ids'); 

//verify if the array is not empty 
if (!empty($orderIds)) { 
//loop through orders 
foreach ($orderIds as $orderId) { 

// Dont know what this does 
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId); 

// Is the order shipable? 
if($order->canShip()) 
{ 
$itemQty = $order->getItemsCollection()->count(); 
// This first definition and 2nd look overlapping, our one is obsolete? 
$shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 
$shipment = new Mage_Sales_Model_Order_Shipment_Api(); 

// But still, no shipment, why? 
$shipmentId = $shipment->create($orderId, array(), 'Shipment created through ShipMailInvoice', true, true); 

回答

6

您需要通过ID来加载,如果你单编号,或负载由IncrementOrderId如果,你实际上得到订单incrementId。

使用此:

$order = Mage::getModel('sales/order')->load($orderId);

让我们知道它的工作。

然后:

$shipmentId = $shipment->create($order->getIncrementId(), $itemQty, 'Shipment created through ShipMailInvoice', true, true); 

尝试。

+0

非常感谢@ShaunOReilly。它通过canship()... 但出现下一个错误:order_not_exists 'code' 跟踪:订单/出货/ Api.php(142):Mage_Api_Model_Resource_Abstract - > _故障( 'order_not_exist ......') 销售/ OrderController.php(45):Mage_Sales_Model_Order_Shipment_Api->创建( '121',阵列, '出货创造... ...',真,真) 'code' – 2012-01-30 19:50:31

+0

所以现在它崩溃上$ shipment->创建。我尝试了$ order和orderId。两者都不起作用。 $ order导致访问冲突 $ shipmentId = $ shipment-> create($ order,array(), – 2012-01-30 19:57:44

+0

看看我的答案的最后编辑。 – ShaunOReilly 2012-01-30 23:52:49

1
$order = Mage::getModel('sales/order')->load($orderId); 

//create shipment 
$itemQty = $order->getItemsCollection()->count(); 
$shipment = Mage::getModel('sales/service_order', $order)->prepareShipment($itemQty); 
$shipment = new Mage_Sales_Model_Order_Shipment_Api(); 
$shipmentId = $shipment->create($order->getIncrementId(), array(), 'Shipment created through ShipMailInvoice', true, true); 

//add tracking info 
$shipment_collection = Mage::getResourceModel('sales/order_shipment_collection'); 
$shipment_collection->addAttributeToFilter('order_id', $orderId); 
foreach($shipment_collection as $sc) 
{ 
$shipment = Mage::getModel('sales/order_shipment'); 
$shipment->load($sc->getId()); 
           if($shipment->getId() != '') 
           { 
           try 
           { 
            Mage::getModel('sales/order_shipment_track') 
            ->setShipment($shipment) 
            ->setData('title', 'carrier') 
            ->setData('number', $trackInfo) 
            ->setData('carrier_code', 'custom') 
            ->setData('order_id', $shipment->getData('order_id')) 
            ->save(); 

           }catch (Exception $e) 
           { 
            Mage::getSingleton('core/session')->addError('order id '.$orderId.' no found'); 
           } 
           } 
         } 
// change order status to complete 
         $order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE); 
         $order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE); 
         $order->save(); 

任何想要创建船员的工作代码,2.添加运输跟踪信息和3.更改船舶状态以完成。

非常感谢ShaunOReilly。

相关问题