2011-04-12 19 views
14

¿Es posible obtener la disponibilidad del producto pasando una identificación de producto al sistema Magento?¿Cómo obtener la disponibilidad del producto con la identificación del producto en magento?

voy a publicar en este si encuentro la respuesta ...

+1

tiene la respuesta ... !!! \t \t $ model = Mage :: getModel ('catalog/product'); \t \t $ _product = $ model-> load ($ product_id); \t \t $ stocklevel = (int) Mage :: getModel ('cataloginventory/stock_item') -> loadByProduct ($ _ product) -> getQty(); Esto obtendrá la cantidad de un producto. – balanv

+0

Puede ponerlo en una respuesta y formatear el código correctamente. Probablemente ayudará a otros. –

+0

Soy nuevo en Stackoverflow ... puedo responder solo después de 24 horas ... es por eso que lo publiqué en los comentarios ... – balanv

Respuesta

28

a buscar a la cantidad (en stock) para un producto dado

$model = Mage::getModel('catalog/product'); 
$_product = $model->load($product_id); 
$stocklevel = (int)Mage::getModel('cataloginventory/stock_item') 
       ->loadByProduct($_product)->getQty(); 
+4

Con todo el respeto debido a una respuesta funcional: las dos líneas principales de esta respuesta son muy inútiles. El '$ product_id' podría haberse utilizado directamente en el método' loadByProduct() 'del modelo stock_item. La respuesta de 'Anatoly A. Kazantsev' tiene un rendimiento muy superior. Esta respuesta abusa de los recursos del servidor cargando el modelo completo del producto innecesariamente. – FactoryAidan

17

Usted puede obtener información de la (Mage_CatalogInventory_Model_Stock_Item clase) por Identificación del producto sin cargar los datos entera de productos (por lo menos en Magento 1,7)

$stockItem = Mage::getModel('cataloginventory/stock_item') 
       ->loadByProduct($productId); 

y entonces usted puede utilizar getQty() y otros métodos en $stockItem objeto para obtener la información requerida. Los puede encontrar en el archivo de origen para la clase

2

Magento 1,7

$product = Mage::getModel('catalog/product')->load($productId); 
$qty = $product->getStockItem()->getQty(); 

debería funcionar también

6

Para algunos tipos de productos cero Cant del producto no significa que sea fuera de stock. A continuación, puede utilizar

$stockStatus = Mage::getModel('cataloginventory/stock_item') 
        ->loadByProduct($product) 
        ->getIsInStock(); 

Para la recogida de una de las maneras de hacerlo es

$collection = Mage::getModel('catalog/product')->getCollection() 
       ->addAttributeToFilter('status', 1) 
       ->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) 
       ->addAttributeToSelect('*'); 



     if (! Mage::helper('cataloginventory')->isShowOutOfStock()) { 
      Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection); 
     } 
Cuestiones relacionadas