Vit*_*min 4 php magento php-5.3
我想对某些产品实施全球订单限制.关键是我想在某些产品上启用延期交货,并定义几个日期,这些日期对可订购的这些单个产品的数量有限制.
目前,我的自定义模型已加载所选日期期间的相关信息,并$product->setMyModel(...)在这些事件加载时附加到产品模型:
catalog_product_load_aftercatalog_product_collection_load_aftersales_quote_item_collection_products_after_load使用特定产品的数据访问我的模型就像调用一样简单$product->getMyModel(),因此我将其简称为我的模型.
这就是我想要做的:
1.每当产品被添加到购物车/报价或订单时,我都想做这样的事情(伪代码):
// Somehow get $product and $requestedQty (most likely from an event)
$myModel = $product->getMyModel();
if($myModel->applyOrderLimit()) {
// ($orderedQty + $requestedQty) <= $orderLimit
if($myModel->isRequestedQtyAvailable($requestedQty)) {
// Issue an error and prevent the item from being ordered
return;
}
// $orderedQty += $requestedQty
$myModel->addToQtyOrdered($requestedQty);
}
// Continue Magentos default behaviour
Run Code Online (Sandbox Code Playgroud)
1.1.我怀疑Mage_CatalogInventory_Item::checkQuoteItemQty()应该重写以捕获$requestedQty这里.
2.更新$myModel::ordered_qty每当订单被取消,退款或这样.
我想真正的问题是我在哪里运行这个代码,是否有更多的东西来实现这样的订单限制并跟踪数量而不是我已经意识到的?
对我来说,这似乎是一项非常复杂的任务.这就是为什么我需要更有经验的Magento开发人员的帮助!
注意:我无法弄清楚如何混合编号列表和代码块,但我希望它足够可读
您无需借助重写Mage_CatalogInventory_Model_Stock_Item:.checkQty()方法来实现目标.
如果向事件添加事件观察器,则sales_quote_item_qty_set_after除了cataloginventory检查之外,还会触发您的观察者.
public function salesQuoteItemQtySetAfter(Varien_Event_Observer $observer)
{
$quoteItem = $observer->getItem();
$qty = $quoteItem->getQty();
$myModel = $quoteItem->getProduct()->getMyModel()
// Your Logic
// If not salable set error for the quote item
$quoteItem->addErrorInfo(
'mymodule', // origin code
'currently_not_salable', // error code
'The Error Message'
);
}
Run Code Online (Sandbox Code Playgroud)
sales_quote_item_qty_set_aftercataloginventory模块也使用该事件进行调用checkQty(),因此您还可以检查Mage_CatalogInventory_Model_Observer::checkQuoteItemQty()可用功能的其他可能性.
| 归档时间: |
|
| 查看次数: |
1563 次 |
| 最近记录: |