【问题标题】:Process same orders from 2 systems at same time causes multiple shipment issues Magento同时处理来自 2 个系统的相同订单会导致多个发货问题 Magento
【发布时间】:2015-10-18 12:22:58
【问题描述】:

您好,我遇到了一个奇怪的问题。

我创建了一个新的批量操作来创建订单发货。

问题是当这个动作同时触发时 相同的订单会为某些订单创建多个发货。

下面是我的代码

public function batchshipAction() {
        $orderIds = $this->getRequest()->getParam('order_ids'); // to get selected order ids
        $success  = 0;
        if (count($orderIds) > 200) { // to restrict maximum orders selected to 200
            Mage::getSingleton('core/session')->addError($this->__('Only 200 records can be processed at a time. Please select again.'));
            $this->_redirectReferer(); // to redirect to sales order page after performing batchinvoice action
            session_write_close(); // to close messages session
        } else {
            try {

                foreach ($orderIds as $orderIdss) {
                    $order             = Mage::getModel('sales/order')->load($orderIdss); // to load order details
                    $order_status_code = $order->getStatus(); // to get status code of order
                    if ($order_status_code == 'order_processing') { // to cpmapare current order status code  with  "order_processing"

                        if ($order->canShip()) { // to check if the order can be ship or not
                            //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);
                            $success_ids[] = $order->getIncrementId();
                            $success++;
                        }
                    } else {
                        $error_id[] = $order->getIncrementId();
                    }

                }
            }
            catch (Mage_Core_Exception $e) {
                $error_id[] = $order->getIncrementId();
            }

您能否建议我如何避免这种情况。谢谢

【问题讨论】:

    标签: mysql magento zend-framework commit mass-assignment


    【解决方案1】:

    加载订单后设置inprocess为真。

    $order  = Mage::getModel('sales/order')->load($orderIdss);
    $order->setIsInProcess(true);
    

    【讨论】:

    • 它没有任何区别,您还有其他建议吗。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2017-12-23
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多