【问题标题】:In magento, how to add shipment and track number to order在 magento 中,如何在订单中添加货件和跟踪编号
【发布时间】:2011-10-02 20:43:25
【问题描述】:

我需要在订单中动态添加发货和发货跟踪,它需要动态,因为我们将批量进行,你们可以帮我解决这个问题吗?

编辑:
用户将看到一个包含订单列表的页面,然后他将输入每个订单的跟踪编号并提交表单,因此我需要获取一个已知的承运人并通过该承运人发送所有订单。

【问题讨论】:

    标签: magento orders


    【解决方案1】:

    给你:)

        private function _createShipment($shipment, $itemsQty)
        {
            $itemsQtyArr = array();
            foreach ($itemsQty as $item)
            {
                $itemsQtyArr[$item->iExternalOrderId] = $item->dQtyShipped;
            }
    
            try
            {
                $shipmentIncrementId = Mage::getModel('sales/order_shipment_api')->create($shipment->sOrderNumber, $itemsQtyArr, $shipment->sShipmentComment, true, true);
    
                if ($shipmentIncrementId)
                {
                    Mage::getModel('sales/order_shipment_api')->addTrack($shipmentIncrementId, $shipment->sCarrierCode, $shipment->sTrackingTitle, $shipment->sTrackingNumber);
                }
            }
            catch(Exception $e)
            {
                Mage::log('Exception: ' . $e->getMessage());
            }
    
            return $shipmentIncrementId ? true : false;
        }  
    

    【讨论】:

    • 非常感谢您的快速回答,但我该怎么称呼它?我现在有一个订单,不是发货或数量。再次,非常感谢!
    • 这是我写的一个函数,所以只要把它弹出到某个地方......或者你可以简单地使用它的一部分。它使用 Magento API 中的函数来执行您的请求。如果您要运送所有订购的东西。简单地使用订单项目来获取将要发货的数量。
    • 感谢 elgabbu,我理解的订单项目,但我不知道该使用什么作为 $shipment 参数。你能解释一下吗?
    • 货件变量只是一个包含货件详细信息的对象,即跟踪号等。您可以简单地传递包含此信息的数组,或者将它们作为单独的变量传递。同样,您不需要完全按原样使用该功能......只需使用与您相关的部分。
    【解决方案2】:

    如果您有订单 ID 列表和相应的跟踪号,则可以,

    $shipment_collection = Mage::getResourceModel('sales/order_shipment_collection');
    $shipment_collection->addAttributeToFilter('order_id', $order_id);
    

    然后你可以检查所有的货物并添加跟踪,

    foreach($shipment_collection as $sc) {
        $shipment = Mage::getModel('sales/order_shipment');
        $shipment->load($sc->getId());
        if($shipment->getId() != '') { 
            $track = Mage::getModel('sales/order_shipment_track')
                     ->setShipment($shipment)
                     ->setData('title', 'ShippingMethodName')
                     ->setData('number', $track_no)
                     ->setData('carrier_code', 'ShippingCarrierCode')
                     ->setData('order_id', $shipment->getData('order_id'))
                     ->save();
        }
    }
    

    您需要在此代码之上有一个订单 ID 和跟踪 ID 的嵌套循环。

    【讨论】:

    • 它不起作用,它从未进入货物收集循环,您知道是什么原因吗?非常感谢!
    • ok 试试 $shipment_collection->addAttributeToFilter('order_id', $order_id);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2011-10-27
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多