【发布时间】:2014-12-03 09:54:42
【问题描述】:
默认情况下,在 Magento 1.9.0.1 中,它会在下订单时减少库存数量。我想在以假订单为目的下订单时停止减少库存数量。而且我还想要在订单状态完成、未挂起、未处理时增加库存数量的功能。如何以编程方式或通过在管理面板中进行设置。如果有人知道,请回复。
谢谢你 安看
【问题讨论】:
标签: php stock magento-1.9
默认情况下,在 Magento 1.9.0.1 中,它会在下订单时减少库存数量。我想在以假订单为目的下订单时停止减少库存数量。而且我还想要在订单状态完成、未挂起、未处理时增加库存数量的功能。如何以编程方式或通过在管理面板中进行设置。如果有人知道,请回复。
谢谢你 安看
【问题讨论】:
标签: php stock magento-1.9
只需打开您的管理面板,转到系统->配置->目录选项卡->库存,然后单击堆栈选项并将下订单时减少库存更改为否。
谢谢, 洛夫凯什
【讨论】:
在管理面板中,系统->配置->目录选项卡->库存然后单击堆栈选项并将下订单时减少库存更改为否。以便它停止库存数量增加。在 Model/Automatically/Complete/Order/Observer.php 页面中,类 Webspidy_Customoption_Model_Automatically_Complete_Order_Observer { 公共函数 __construct(){} 公共函数自动完成订单($observer) { //法师::log('Ankan'); $order = $observer->getEvent()->getOrder(); /$orders = Mage::getModel('sales/order_invoice')->getCollection() ->addAttributeToFilter('order_id', array('eq'=>$order->getId()));/
/*if ((int)$orders->count() !== 0) {
return $this;
}*/
//Mage::log($orderstate);
//if($order->getState() == 'complete'){
if(($order->getState() == 'processing') || ($order->getState() == 'pending_payment')){
if($order->hasInvoices()){
//Mage::log($orderstate);
//Mage::log('Ankan');
//Mage::log($order->getData());
//====== Order Details ================
$orderNumber = $order->getIncrementId(); //Mage::log($orderNumber);
$orderDet = Mage::getModel('sales/order')->load($orderNumber, 'increment_id');
//Mage::log($orderDet->getData());
$orderItems = $orderDet->getItemsCollection()
->addAttributeToSelect('*')
->load();
foreach($orderItems as $orderItem){
$productId = $orderItem->getProductId();
$productOptionSku = $orderItem->getSku();
$productQty = $orderItem->getQtyOrdered();
$product = Mage::getModel('catalog/product')->load($productId);
$sku = $product->getSku();
$centralqty = $product->getStockItem()->getQty();
$values = array();
foreach ($product->getOptions() as $o) {
$p = $o->getValues();
}
foreach($p as $v)
{
$optionSku = $v->getSku();
$optionItem = $v->getQty();
//Mage::log($optionItem);
//Mage::log($productOptionSku.".....".$sku."-".$optionSku.".....".$optionItem);
if($productOptionSku == ($sku."-".$optionSku)){
if($centralqty >= ($optionItem*(int)$productQty)){
//$stockQty = (($centralqty-($optionItem*(int)$productQty))+$productQty);
$stockQty = ($centralqty-($optionItem*(int)$productQty));
}
}
}
$product->save();
//Mage::log($stockQty);
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
//$stockItem = Mage::getModel('cataloginventory/stock_item')->load($productId);
$stockItemId = $stockItem->getId();
$stockItem->setData('qty', $stockQty);//(integer)$XMLproduct->QtyInStock
$stockItem->setData('manage_stock',1);
$stockItem->save();
}
}
//======== End ======
}
}
}
在 etc/config.xml 中,
<global><events>
<sales_order_save_after><observers>
<webspidy_customoption_automatically_complete_order_observer>
<type>singleton</type> <class>Webspidy_Customoption_Model_Automatically_Complete_Order_Observer</class>
<method>automaticallycompleteorder</method>
</webspidy_customoption_automatically_complete_order_observer>
</observers></sales_order_save_after></events></global>经过漫长的过程,在我的自定义模块中创建Observer成功了。
【讨论】:
我正在使用 Magento 1.9
我已尝试使用以下代码。没关系,但我有另一个智能代码
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
$stockItemId = $stockItem->getId();
$stockItem->setData('qty', $stockQty);
$stockItem->setData('manage_stock',1);
$stockItem->save();
我的代码如下:-
Mage::getModel('cataloginventory/stock')->backItemQty($productId,$new_qty);
【讨论】: