【发布时间】: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