本文整理汇总了PHP中Mage_Catalog_Model_Product::getStockItem方法的典型用法代码示例。如果您正苦于以下问题:PHP Mage_Catalog_Model_Product::getStockItem方法的具体用法?PHP Mage_Catalog_Model_Product::getStockItem怎么用?PHP Mage_Catalog_Model_Product::getStockItem使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Mage_Catalog_Model_Product
的用法示例。
在下文中一共展示了Mage_Catalog_Model_Product::getStockItem方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getItemBaseInfo
public function getItemBaseInfo()
{
$helper = Mage::helper('catalog/image');
$helper->init($this->product, $this->getProductImageType())->keepAspectRatio($this->_keepAspectRatio)->keepFrame($this->_keepFrame);
$this->item['item_id'] = $this->product->getId();
$this->item['item_title'] = $this->product->getName();
$this->item['item_url'] = $this->product->getProductUrl();
$this->item['cid'] = $this->product->getCategoryIds();
$this->item['qty'] = $this->product->getStockItem()->getQty();
$this->item['thumbnail_pic_url'] = (string) $helper->resize($this->thumbnail_with, $this->thumbnail_height);
$this->item['main_pic_url'] = (string) $helper->resize($this->main_with, $this->main_height);
$this->item['is_virtual'] = $this->product->isVirtual();
$this->item['item_status'] = $this->product->isSaleable() ? 'instock' : 'outofstock';
if (!$this->product->getRatingSummary()) {
Mage::getModel('review/review')->getEntitySummary($this->product, Mage::app()->getStore()->getId());
}
$this->item['allow_add_to_cart'] = !$this->HasOptions();
$this->item['rating_score'] = round((int) $this->product->getRatingSummary()->getRatingSummary() / 20);
$this->item['rating_count'] = $this->product->getRatingSummary()->getReviewsCount();
$this->item['sales_type'] = $this->product->isInStock() ? 'stock' : 'distribute';
$this->item['qty_min_unit'] = 1;
$stockItem = $this->product->getStockItem();
if ($stockItem) {
if ($stockItem->getMinSaleQty() && $stockItem->getMinSaleQty() > 0) {
$this->item['qty_min_unit'] = $stockItem->getMinSaleQty();
}
}
$this->item['item_type'] = $this->product->getTypeId();
return $this->item;
}
示例2: convertAttribute
/**
* Set current attribute to entry (for specified product)
*
* @param Mage_Catalog_Model_Product $product
* @param Varien_Gdata_Gshopping_Entry $entry
* @return Varien_Gdata_Gshopping_Entry
*/
public function convertAttribute($product, $entry)
{
$quantity = $product->getStockItem()->getQty();
if ($quantity) {
$value = $quantity ? max(1, (int) $quantity) : 1;
$this->_setAttribute($entry, 'quantity', self::ATTRIBUTE_TYPE_INT, $value);
}
return $entry;
}
示例3: _getMinimalQty
/**
* Get MinSaleQty for product
*
* @param Mage_Catalog_Model_Product $product
* @return int|null
*/
protected function _getMinimalQty($product)
{
if ($stockItem = $product->getStockItem()) {
if ($stockItem->getMinSaleQty() && $stockItem->getMinSaleQty() > 0) {
return $stockItem->getMinSaleQty() * 1;
}
}
return null;
}
示例4: getMinimalQty
/**
* Gets minimal sales quantity
*
* @param Mage_Catalog_Model_Product $product
* @return int|null
*/
public function getMinimalQty($product)
{
$stockItem = $product->getStockItem();
if ($stockItem) {
return $stockItem->getMinSaleQty() && $stockItem->getMinSaleQty() > 0 ? $stockItem->getMinSaleQty() * 1 : null;
}
return null;
}
示例5: _prepareDataForSave
/**
* Set additional data before product save
*
* @param Mage_Catalog_Model_Product $product
* @param array $productData
*/
protected function _prepareDataForSave($product, $productData)
{
if (isset($productData['stock_data'])) {
if (!$product->isObjectNew() && !isset($productData['stock_data']['manage_stock'])) {
$productData['stock_data']['manage_stock'] = $product->getStockItem()->getManageStock();
}
$this->_filterStockData($productData['stock_data']);
} else {
$productData['stock_data'] = array('use_config_manage_stock' => 1, 'use_config_min_sale_qty' => 1, 'use_config_max_sale_qty' => 1);
}
$product->setStockData($productData['stock_data']);
// save gift options
$this->_filterConfigValueUsed($productData, array('gift_message_available', 'gift_wrapping_available'));
if (isset($productData['use_config_gift_message_available'])) {
$product->setData('use_config_gift_message_available', $productData['use_config_gift_message_available']);
if (!$productData['use_config_gift_message_available'] && $product->getData('gift_message_available') === null) {
$product->setData('gift_message_available', (int) Mage::getStoreConfig(Mage_GiftMessage_Helper_Message::XPATH_CONFIG_GIFT_MESSAGE_ALLOW_ITEMS, $product->getStoreId()));
}
}
if (isset($productData['use_config_gift_wrapping_available'])) {
$product->setData('use_config_gift_wrapping_available', $productData['use_config_gift_wrapping_available']);
if (!$productData['use_config_gift_wrapping_available'] && $product->getData('gift_wrapping_available') === null) {
$xmlPathGiftWrappingAvailable = 'sales/gift_options/wrapping_allow_items';
$product->setData('gift_wrapping_available', (int) Mage::getStoreConfig($xmlPathGiftWrappingAvailable, $product->getStoreId()));
}
}
if (isset($productData['website_ids']) && is_array($productData['website_ids'])) {
$product->setWebsiteIds($productData['website_ids']);
}
// Create Permanent Redirect for old URL key
if (!$product->isObjectNew() && isset($productData['url_key']) && isset($productData['url_key_create_redirect'])) {
$product->setData('save_rewrites_history', (bool) $productData['url_key_create_redirect']);
}
/** @var $attribute Mage_Catalog_Model_Resource_Eav_Attribute */
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
//Unset data if object attribute has no value in current store
if (Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID !== (int) $product->getStoreId() && !$product->getExistsStoreValueFlag($attribute->getAttributeCode()) && !$attribute->isScopeGlobal()) {
$product->setData($attribute->getAttributeCode(), false);
}
if ($this->_isAllowedAttribute($attribute)) {
if (isset($productData[$attribute->getAttributeCode()])) {
$product->setData($attribute->getAttributeCode(), $productData[$attribute->getAttributeCode()]);
}
}
}
}
示例6: _getQuantity
protected function _getQuantity()
{
$stockData = $this->_product->getStockData();
return (int) $this->_product->getStockItem()->getQty();
//(int)$stockData['qty'];
}
示例7: _updateProductData
protected function _updateProductData($productId, $field, $value)
{
$this->_initProduct($productId, $field);
if ($this->_product) {
$result = array();
switch ($field) {
case 'custom_name':
$field = 'name';
break;
}
$store = $this->_getStore();
$columnProps = $this->_getColumnProperties();
$obj = $this->_product;
if (isset($columnProps[$field])) {
/* will save value. first need to check where to save (product itself, stock item, etc.)
* @see Amasty_Pgrid_Helper_Data
*/
$obj = $this->_getObject($columnProps[$field]);
if (isset($columnProps[$field]['format'])) {
switch ($columnProps[$field]['format']) {
case 'numeric':
if (false !== strpos($value, '+') || false !== strpos($value, '-')) {
if (strpos($value, '+') != strlen($value) - 1 && strpos($value, '-') != strlen($value) - 1) {
$value = preg_replace('@[^0-9\\.+-]@', '', $value);
try {
$toEval = '$value = ' . $value . ';';
eval($toEval);
} catch (Exception $e) {
}
}
}
$symbol = Mage::app()->getLocale()->currency($this->_getStore()->getBaseCurrency()->getCode())->getSymbol();
if ($value !== "") {
$value = str_replace($symbol, '', $value);
$value = Mage::app()->getLocale()->getNumber($value);
} else {
$value = NULL;
}
break;
}
}
if (!empty($value)) {
if ('multiselect' == $columnProps[$field]['type']) {
$value = explode(',', $value);
}
if ('price' == $columnProps[$field]['type']) {
$value = str_replace('$', '', $value);
}
if ($columnProps[$field]['type'] == 'date') {
$value = Mage::app()->getLocale()->date(strtotime($value), null, null)->getTimestamp();
$value = date("Y-m-d", $value);
}
}
$obj->setData($columnProps[$field]['col'], $value);
try {
if (method_exists($obj, 'validate')) {
$obj->validate();
// this will validate necessary unique values
}
} catch (Exception $e) {
$result = array('error' => 1, 'message' => 'ID ' . $productId . ': ' . $e->getMessage(), "\r\n");
}
if (!isset($result['error'])) {
if (Mage::getStoreConfig('ampgrid/cond/availability')) {
if ('qty' == $columnProps[$field]['col']) {
if ($obj->getOrigData('qty') > 0 && $obj->getData('qty') <= 0) {
$obj->setData('is_in_stock', 0);
}
if ($obj->getOrigData('qty') <= 0 && $obj->getData('qty') > 0) {
$obj->setData('is_in_stock', 1);
}
}
}
if ($columnProps[$field]['col'] != 'visibility') {
$obj->setData('visibility', $obj->getOrigData('visibility'));
}
if ($columnProps[$field]['col'] != 'status') {
$obj->setData('status', $obj->getOrigData('status'));
}
if ($columnProps[$field]['col'] != 'tax_class_id') {
$obj->setData('tax_class_id', $obj->getOrigData('tax_class_id'));
}
$obj->save();
$this->_product->setData('updated_at', Mage::getModel('core/date')->timestamp(time()));
$this->_product->save();
$this->_initProduct($productId, $field);
$obj = $this->_getObject($columnProps[$field]);
}
}
$indexer = Mage::getSingleton('index/indexer');
if ($indexer) {
$indexer->processEntityAction($this->_product, Mage_Catalog_Model_Product::ENTITY, Mage_Index_Model_Event::TYPE_SAVE);
$indexer->processEntityAction($this->_product->getStockItem(), Mage_CatalogInventory_Model_Stock_Item::ENTITY, Mage_Index_Model_Event::TYPE_SAVE);
}
if (!isset($result['error'])) {
$outputValue = $obj->getData($columnProps[$field]['col']);
if (isset($columnProps[$field])) {
switch ($columnProps[$field]['type']) {
case 'price':
if (!empty($outputValue)) {
//.........这里部分代码省略.........
示例8: isBackorderable
/**
* Determine if the passed in product is a backorderable product.
*
* @param Mage_Catalog_Model_Product
* @return bool
*/
protected function isBackorderable(Mage_Catalog_Model_Product $product)
{
$stockItem = $product->getStockItem();
return (int) $stockItem->getBackorders() > Mage_CatalogInventory_Model_Stock::BACKORDERS_NO;
}
示例9: getAvailableText
/**
* fills the item-array available_text field
* <strong>Note:</strong> the function isAvailable() on the Product-Object is only available in Magento-Version >= 1.5
*
* @param Mage_Catalog_Model_Product $product
* @param int $storeViewId
*
* @return string
*/
public function getAvailableText($product, $storeViewId)
{
$availableText = "";
$attributeCode = Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_EXPORT_AVAILABLE_TEXT_ATTRIBUTE_CODE);
if ($attributeCode) {
$attributeInputType = $product->getResource()->getAttribute($attributeCode)->getFrontendInput();
$rawValue = $product->getResource()->getAttributeRawValue($product->getId(), $attributeCode, $storeViewId);
switch ($attributeInputType) {
case "select":
/** @var Mage_Eav_Model_Entity_Attribute_Option $attr */
$attr = Mage::getModel('eav/entity_attribute_option')->getCollection()->setStoreFilter($storeViewId)->join('attribute', 'attribute.attribute_id=main_table.attribute_id', 'attribute_code')->addFieldToFilter('main_table.option_id', array('eq' => $rawValue))->getFirstItem();
if ($attr) {
$availableText = $attr->getStoreValue() ? $attr->getStoreValue() : $attr->getValue();
}
break;
case "date":
$availableText = Mage::helper('core')->formatDate($rawValue, 'medium', false);
break;
case "text":
$availableText = $rawValue;
break;
default:
}
}
if (!$availableText) {
/** @var Mage_CatalogInventory_Model_Stock_Item $stockItem */
$stockItem = $product->getStockItem();
$isAvailable = $stockItem->checkQty(1) && $product->isSaleable();
if ($product->isComposite()) {
$isAvailable = true;
}
if ($isAvailable && $stockItem->getIsInStock()) {
if ($stockItem->getManageStock() && $stockItem->getBackorders() == Mage_CatalogInventory_Model_Stock::BACKORDERS_YES_NOTIFY && $stockItem->getQty() <= 0) {
$availableText = Mage::helper('shopgate')->__('Item will be backordered');
} else {
$availableText = Mage::helper('shopgate')->__('In stock');
}
} else {
$availableText = Mage::helper('shopgate')->__('Out of stock');
}
}
return $availableText;
}
示例10: _isProductOutOfStock
/**
* Check whether specified product is out of stock
*
* @param Mage_Catalog_Model_Product $product
* @return bool
*/
protected function _isProductOutOfStock($product)
{
if ($product->isComposite()) {
if (!$product->getStockItem()->getIsInStock()) {
return true;
}
$productsByGroups = $product->getTypeInstance(true)->getProductsToPurchaseByReqGroups($product);
foreach ($productsByGroups as $productsInGroup) {
foreach ($productsInGroup as $childProduct) {
if ($childProduct->hasStockItem() && $childProduct->getStockItem()->getIsInStock() && !$childProduct->isDisabled()) {
return false;
}
}
}
return true;
}
/** @var $stockItem Mage_CatalogInventory_Model_Stock_Item */
$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->loadByProduct($product);
$stockItem->setProduct($product);
return !$stockItem->getIsInStock();
}
示例11: _setMaximumOrderQuantity
/**
* get product max order qty
*
* @param Mage_Catalog_Model_Product $product
*/
protected function _setMaximumOrderQuantity($product)
{
$this->_defaultRow["maximum_order_quantity"] = $product->getStockItem()->getMaxSaleQty();
}
示例12: _setBundleOptions
/**
* @param $inputs
*
* @return array
*/
protected function _setBundleOptions($inputs = array())
{
$bundleOptions = $this->item->getPriceModel()->getOptions($this->item);
$isGross = Mage::getStoreConfig(self::CONFIG_XML_PATH_PRICE_INCLUDES_TAX, $this->_getConfig()->getStoreViewId());
$stock = parent::getStock();
$selectionQuantities = array();
foreach ($bundleOptions as $bundleOption) {
$optionValues = array();
/* @var $bundleOption Mage_Bundle_Model_Option */
if (!is_array($bundleOption->getSelections())) {
$stock->setIsSaleable(false);
$bundleOption->setSelections(array());
}
$optionPrices = array();
$cheapestOptionId = null;
$cheapestPrice = null;
// fetch id of cheapest option
foreach ($bundleOption->getSelections() as $selection) {
$selectionPrice = $this->item->getPriceModel()->getSelectionFinalPrice($this->item, $selection, 1, $selection->getSelectionQty());
$selectionPrice = Mage::helper('tax')->getPrice($selection, $selectionPrice, $isGross);
if ($cheapestPrice === null || $cheapestPrice > $selectionPrice) {
$cheapestPrice = $selectionPrice;
$cheapestOptionId = $selection->getSelectionId();
}
$optionPrices[$selection->getSelectionId()] = $selectionPrice;
}
foreach ($bundleOption->getSelections() as $selection) {
$option = new Shopgate_Model_Catalog_Option();
/** @var $selection Mage_Catalog_Model_Product */
$selectionId = $selection->getSelectionId();
$qty = max(1, (int) $selection->getSelectionQty());
$selectionPrice = $optionPrices[$selectionId];
$selectionName = $qty > 1 ? $qty . " x " : '';
$selectionName .= $this->_getMageCoreHelper()->htmlEscape($selection->getName());
if (!array_key_exists($selectionId, $selectionQuantities)) {
$selectionQuantities[$selectionId] = 0;
}
if ($this->item->getStockItem()->getManageStock() && $selection->isSaleable() && $this->item->getStockItem()->getQty() > 0) {
if ($selectionQuantities[$selectionId] !== null) {
$selectionQuantities[$selectionId] += $this->item->getStockItem()->getQty();
}
} else {
if (!$this->item->getStockItem()->getManageStock()) {
$selectionQuantities[$selectionId] = null;
} else {
if (!$selection->isSaleable() && $this->item->getStockItem()->getBackorders()) {
$selectionQuantities[$selectionId] = null;
} else {
$selectionQuantities[$selectionId] = 0;
}
}
}
$option->setUid($selection->getSelectionId());
$option->setLabel($selectionName);
$option->setSortOrder($selection->getPosition());
// reset selection price, in this case the bundle parent is already configured
// with the price of the cheapest bundle configuration
if ($this->item->getPriceType() == Mage_Bundle_Model_Product_Price::PRICE_TYPE_DYNAMIC) {
if ($cheapestOptionId == $selection->getSelectionId() && $selection->getOption()->getRequired()) {
$selectionPrice = 0;
} elseif ($selection->getOption()->getRequired()) {
$selectionPrice = $selectionPrice - $optionPrices[$cheapestOptionId];
}
}
$option->setAdditionalPrice($selectionPrice);
$optionValues[] = $option;
if ($selectionQuantities[$selectionId] === null) {
unset($selectionQuantities[$selectionId]);
}
}
$inputItem = new Shopgate_Model_Catalog_Input();
$inputItem->setUid($bundleOption->getId());
$inputItem->setType($this->_mapInputType($bundleOption->getType()));
$title = $bundleOption->getTitle() ? $bundleOption->getTitle() : $bundleOption->getDefaultTitle();
$inputItem->setLabel($title);
$inputItem->setValidation($this->_buildInputValidation($inputItem->getType(), null));
$inputItem->setRequired($bundleOption->getRequired());
$inputItem->setSortOrder($bundleOption->getPosition());
$inputItem->setOptions($optionValues);
$inputs[] = $inputItem;
}
$stockQty = count($selectionQuantities) ? min($selectionQuantities) : 0;
$stock->setStockQuantity($stockQty);
if (!count($selectionQuantities)) {
$stock->setUseStock(false);
}
$this->setStock($stock);
return $inputs;
}
示例13: isUsableProduct
public function isUsableProduct(Mage_Catalog_Model_Product $product)
{
$stockItem = $product->getStockItem();
if (!isset($stockItem)) {
return false;
}
if ($this->isValidProductType($product) && $stockItem->getIsInStock()) {
return true;
}
}
示例14: updateProduct
/**
* Update product
*
* @param Mage_Catalog_Model_Product $magentoProduct Magento product
* @param Nicovogelaar_Nedisimport_Model_Entity_Product $product Product
*
* @return void
*/
protected function updateProduct(Mage_Catalog_Model_Product $magentoProduct, Nicovogelaar_Nedisimport_Model_Entity_Product $product)
{
$categoryIds = $magentoProduct->getCategoryIds();
$newCategoryIds = $this->createCategories($product->getCategories());
$categoryIds = array_unique(array_merge($categoryIds, $newCategoryIds));
$magentoProduct->setUpdatedAt(strtotime('now'))->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)->setSku($product->getSku())->setName($product->getName())->setMsrp($product->getMsrp())->setDescription($product->getDescription())->setShortDescription($product->getShortDescription())->setCategoryIds($categoryIds);
$stockItem = $magentoProduct->getStockItem();
if ($stockItem) {
$stockItem->setQty($product->getStockQty());
$stockItem->setIsInStock($product->getIsInStock());
} else {
$this->createStockItem($magentoProduct, $product);
}
$this->save($magentoProduct);
}