因此,当数量字段大于0时,我一直在寻找一种方法将库存可用性更改回库存。当您将数量设置为0时,系统已自动将库存可用性更改为缺货保存产品。当您将数量设置为大于0并保存产品时,我想要一种方法将其设置回库存。
嗯,我想我发现了一种简单的方法,这本身就让我感到紧张。因此,我想向大家发帖,看看这是否安全,正确,可以做到。
在 app / design / adminhtml / default / default / template / catalog / product / tab / inventory.phtml
我改变了这个:
<?php foreach ($this->getStockOption() as $option): ?>
<?php $_selected = ($option['value'] == $this->getFieldValue('is_in_stock')) ? 'selected="selected"' : '' ?>
<option value="<?php echo $option['value'] ?>" <?php echo $_selected ?>><?php echo $option['label'] ?></option>
<?php endforeach; ?>
对此:
<?php if( ($this->getFieldValue('qty')*1) > 0): ?>
<option selected="selected" value="1">In Stock</option>
<?php else: ?>
<option selected="selected" value="0">Out of Stock</option>
<?php endif; ?>
此时我需要做的只是一个现场网站,所以你可以理解我的关注......
请告诉我这是否会产生预期效果(看起来如此但似乎过于简单......)
答案 0 :(得分:6)
我相信你可以使用Magento事件catalog_product_save_after。 创建一个观察者方法,在事件catalog_product_save_after上执行以下操作。
public function catalog_product_save_after($observer) {
$product = $observer->getProduct();
$stockData = $product->getStockData();
if ( $product && $stockData['qty'] ) {
$stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product->getEntityId()); // Load the stock for this product
$stock->setData('is_in_stock', 1); // Set the Product to InStock
$stock->save(); // Save
}
}
答案 1 :(得分:1)
只需使用该代码段创建cron作业:
public function setBackInStock()
{
$collection = Mage::getResourceModel('cataloginventory/stock_item_collection');
$outQty = Mage::getStoreConfig('cataloginventory/item/options_min_qty');
$collection->addFieldToFilter('qty', array('gt' => $outQty));
$collection->addFieldToFilter('is_in_stock', 0);
foreach($collection as $item) {
$item->setData('is_in_stock', 1);
}
$collection->save();
}
小记,你可以为每分钟设置一个cron作业,因为如果没有结果,工作就会消耗时间/资源
答案 2 :(得分:0)
可以在产品设置的库存标签中处理库存可用性文本,与库存数量字段相同的选项卡。由于您无论如何都必须手动输入库存数量,我建议您只需将库存可用性设置更改回&#39;库存&#39;当您输入产品的新QTY时。
答案 3 :(得分:0)
这就是我必须做的事情
var stock_data = new catalogInventoryStockItemUpdateEntity()
{
qty = quantity,
is_in_stock = inStock,
manage_stock = stockManaged,
is_in_stockSpecified = true,
};
is_in_stockSpecified很重要
我使用SOAP API来更新库存状态。
答案 4 :(得分:0)
另一个简单的解决方案是在DB上创建存储过程并使用事件
进行调用############################################# START : Enable Stock Status
DELIMITER //
CREATE PROCEDURE EnableStock()
BEGIN
-- UPDATE
UPDATE cataloginventory_stock_status
SET stock_status=1
WHERE qty>0;
-- UPDATE
UPDATE cataloginventory_stock_status
SET stock_status=0
WHERE qty<0;
END; //
DELIMITER ;
############################################# END : Enable Stock Status
#Create event
CREATE EVENT CallEnableStock
ON SCHEDULE EVERY 1 HOUR
DO
CALL EnableStock();