/** * Update stock data of multiple products at once * * @param array $itemData * @return array */ public function inventoryPush($itemData) { if (isset($itemData['records'])) { $itemData = $itemData['records']; } $response = array(); $response['records'] = array(); $orderItemsCollection = Mage::getResourceModel('retailops_api/api')->getRetailopsReadyOrderItems(); $orderItems = $this->filterOrderItems($orderItemsCollection); $productIds = $this->getProductIds($itemData); foreach ($itemData as $item) { try { $itemObj = new Varien_Object($item); Mage::dispatchEvent('retailops_inventory_push_record', array('record' => $itemObj)); $result = array(); $result['sku'] = $itemObj->getSku(); $itemObj->setQty($itemObj->getQuantity()); // api update accepts qty not quantity parameter $qty = $itemObj->getQty(); if (isset($orderItems[$itemObj->getSku()])) { $qty = $itemObj->getQty() - $orderItems[$itemObj->getSku()]; } $itemObj->setQty($qty); Mage::dispatchEvent('retailops_inventory_push_record_qty_processed', array('record' => $itemObj)); $this->update($productIds[$itemObj->getSku()], $itemObj->getData()); $result['status'] = RetailOps_Api_Helper_Data::API_STATUS_SUCCESS; } catch (Mage_Core_Exception $e) { $result['status'] = RetailOps_Api_Helper_Data::API_STATUS_FAIL; $result['error'] = array('code' => $e->getCode(), 'message' => $e->getMessage()); } $response['records'][] = $result; } return $response; }