/** * Load item data by product * * @param mixed $product * @return Mage_CatalogInventory_Model_Stock_Item */ public function loadByProduct($product) { if ($product instanceof Mage_Catalog_Model_Product) { $this->_getResource()->loadByProduct($this, $product); $this->setOrigData(); return $this; } else { return parent::loadByProduct($product); } }
/** * Test if stock item quantity properly saved after import * * @magentoDataFixture Mage/Catalog/_files/multiple_products.php */ public function testSaveStockItemQty() { $existingProductIds = array(10, 11, 12); $stockItems = array(); foreach ($existingProductIds as $productId) { $stockItem = new Mage_CatalogInventory_Model_Stock_Item(); $stockItem->loadByProduct($productId); $stockItems[$productId] = $stockItem; } $source = new Mage_ImportExport_Model_Import_Adapter_Csv(__DIR__ . '/_files/products_to_import.csv'); $this->_model->setParameters(array('behavior' => Mage_ImportExport_Model_Import::BEHAVIOR_REPLACE, 'entity' => 'catalog_product'))->setSource($source)->isDataValid(); $this->_model->importData(); /** @var $stockItmBeforeImport Mage_CatalogInventory_Model_Stock_Item */ foreach ($stockItems as $productId => $stockItmBeforeImport) { /** @var $stockItemAfterImport Mage_CatalogInventory_Model_Stock_Item */ $stockItemAfterImport = new Mage_CatalogInventory_Model_Stock_Item(); $stockItemAfterImport->loadByProduct($productId); $this->assertEquals($stockItmBeforeImport->getQty(), $stockItemAfterImport->getQty()); unset($stockItemAfterImport); } unset($stockItems, $stockItem); }
/** * Set inventory data to custom attribute * * @param Varien_Object $object * @return Mage_Eav_Model_Entity_Attribute_Backend_Abstract */ public function afterLoad($object) { $this->_inventory->loadByProduct($object); $object->setData($this->getAttribute()->getAttributeCode(), array('is_in_stock' => $this->_inventory->getIsInStock(), 'qty' => $this->_inventory->getQty())); return parent::afterLoad($object); }