商品リストの最後に売り切れた商品がすべて出たいと思っています。システム内のすべてのカテゴリは、製品の注文に「ベストバリュー」のポジションのみを使用するように設定されており、この再配置は自動的に行われなければならないことは注目に値する。Magentoで売り切れたときの商品の位置設定
現在、カートアイテムがオーダー自体に追加されているポイントである 'sales_convert_quote_item_to_order_item'イベントにオブザーバーを追加しました(ターゲットに適した場所のようです)。
私が見つけた問題は、明らかに製品に利用可能な数量は製品在庫レコードに格納されていますが、製品の位置はカテゴリ自体に格納されてインデックス化されていることです。
私は実際にはSQLを使用することに頼りたくないので、ここの誰かが使用するメソッドの提案を提供できることを願っていました。
My Observerメソッドは現在このようになっていますが、何らかの理由でgetUsedProductsメソッドが使用できないため機能しません。ここでは、とにかくです:
$cart = Mage::getModel('checkout/cart')->getQuote();
foreach($cart->getAllItems() as $key=>$item):
print_r(get_class_methods($item));
echo ">>> ".$item->getProductType();
if($item->getProductType()):
$item = $item->load($item->getId());
//print_r(get_class_methods($item));
$_productCollection = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$item);
print_r($_productCollection);
$stockLevel = 0;
foreach($_productCollection as $product):
$childProductData = $product->getData();
$stockLevel+= $childProductData['stock_item']['qty'];
endforeach;
echo "<br />STOCK LEVEL: $stockLevel<br />";
if($stockLevel <= 0):
echo "ZERO";
//return true;
endif;
endif;
echo "<br />";
endforeach;
が、私はそれがカート内の製品の多くがあった、非常に集中的になり、これはこれを行うのに最適な方法ではないことを認識し、そのように。しかし、注文がこの時点で作成されていないので、私はそれを使うことはできません。
感謝の言葉をいただきました。
ありがとうございました。
見積もりの代わりに在庫モデルを調べます。 –
見積もりは製品を入手することでした。しかし、私もそのルートを見下ろすでしょう。 – Dan
補足として、getUserProducts()メソッドは、商品自体ではなく、見積もり項目に基づいて読み込んでいたため、使用できませんでした。 – Dan