我想對某些產品實施全局訂單限制。重點在於,我希望啓用某些產品的延期交貨,並定義多個日期,以限制可能訂購的這些單個產品的數量。Magento - 基於自定義標準實施訂單限制
目前我的自定義模型加載對於選定日期期間的相關信息,並附着在產品型號的時候都對這些事件的加載,$product->setMyModel(...)
:
catalog_product_load_after
catalog_product_collection_load_after
sales_quote_item_collection_products_after_load
訪問我的模型與特定產品的數據是as simp le致電$product->getMyModel()
,因此我將其簡稱爲我的型號。
這就是我想做的事:當一個產品被添加到購物車/報價,或放置在一個順序
,我想要做這樣的事情(僞):
// 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
1.1。我懷疑Mage_CatalogInventory_Item::checkQuoteItemQty()
應該被覆蓋以在這裏捕獲$requestedQty
。
2.更新$myModel::ordered_qty
每當訂單被取消,退款或此類。
我想真正的問題是我在哪裏運行這段代碼,還有什麼更多的實現這樣的訂單限制和跟蹤的數量比我已經意識到?
對我而言,這看起來相當複雜。這就是爲什麼我需要更有經驗的Magento開發人員的幫助!
注:我不能弄清楚如何搭配編號列表和代碼塊,但我希望它足夠可讀
嘗試開發一個針對sales_quote_save_before的觀察者,並且僅通過會話中的addError消息,它將自動回到角色。 – ShaunOReilly 2012-02-23 05:03:43
我所做的測試顯示,通過重寫'Mage_CatalogInventory_Item :: checkQty()'來驗證數量是否正常(如果它不適合我,則返回false)。我可能會忽視某些事情。無論如何,我仍然不知道何時以及如何在我的模型中添加/刪除'ordered_items' - 請注意,我只想在特定條件下執行此操作,而不是在管理員更新數量時執行此操作(請參閱該職位) – Vitamin 2012-02-24 12:06:44