特定の商品にグローバル注文限度額を適用したいと思います。これは、特定の製品でバックオーダーを有効にし、これらの個々の製品の数に制限があるいくつかの期間を定義することです。Magento - カスタム基準に基づく注文限度の実装
現在、私のカスタムモデルを選択した日付の期間に関連する情報をロードし、それらは、これらのイベントに$product->setMyModel(...)
としてロードされたときの製品モデルに添付されています
catalog_product_load_after
catalog_product_collection_load_after
sales_quote_item_collection_products_after_load
特定の製品のデータでマイモデルにアクセスするのはsimp私は私のモデルと呼んでいるので、私は$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
1.1。私はMage_CatalogInventory_Item::checkQuoteItemQty()
がここで$requestedQty
をキャプチャするためにオーバーライドされるべきだと思う。
更新$myModel::ordered_qty
注文がキャンセル、払い戻されるなどの場合はいつでも。
私はこのコードをどこで実行すればいいのでしょうか?そのような注文制限を実装し、私が実現した数量を把握するために何かがありますか?
私にとってこれはかなり複雑な作業のようです。だから、私は経験豊富なMagento開発者からの支援が必要です!
注:私は、番号付きリストやコードブロックを混在させる方法を見つけ出すcouldntのが、私はあなたがあなたの目標を達成するためにMage_CatalogInventory_Model_Stock_Item:.checkQty()
方法を書き換えるに頼る必要はありません
sales_quote_save_beforeに対してオブザーバーを開発し、セッション内のaddErrorメッセージだけを使用して、自動的にロールバックします。 – ShaunOReilly
私が行ったテストでは、 'Mage_CatalogInventory_Item :: checkQty()'をオーバーライドしてqtyを検証するだけで問題なく動作することがわかりました。私は何か見落としているかもしれない。とにかく、自分のモデル 'ordered_items'に追加/削除するのがいつ、どのように適切なのか、まだ分かりません。例えば、管理者がqtyを更新するときなど、特定の条件の下でのみ行いたいのです。投稿) – Vitamin