我发现了一个奇怪的问题。
我已经创建了一个新的群发行动,可以创建订单发货。
问题是当此动作同时触发时 相同的订单会为某些订单创建多个货件。
以下是我的代码
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();
}
你能否建议我如何避免这种情况。感谢
答案 0 :(得分:0)
在加载订单后将inprocess设置为true。
$order = Mage::getModel('sales/order')->load($orderIdss);
$order->setIsInProcess(true);