Magento 1.5.1.0에 대한 확장 기능을 개발하는 중입니다. 재고 수량이 0으로 줄어든 제품에 카탈로그 가격 규칙을 추가 할 수있게되었습니다. auto_discount_active
이라는 속성 세트에 속성을 추가했습니다. 이 속성은 내 가격 규칙의 조건으로 작동하는 내 온/오프 스위치입니다.Magento - 제품 속성을 수정 한 후 카탈로그 규칙을 재 할당
나는 sales_order_place_after
과 catalog_product_save_before
이벤트에 반응하는 Observer를 썼다. 작업은 현재 제품의 재고 수량이 변경되었는지 확인하고 사용자 정의 속성을 설정 또는 해제로 설정하는 것입니다.
catalog_product_save_before
이벤트를 처리하는 방법이 정상적으로 작동합니다. 백엔드에 기사를 저장 한 후에는 가격 규칙이 활성화되어야하는 것처럼 활성화됩니다. 코드는 다음과 같습니다.
class Company_AutoDiscount_Model_Observer
{
public function updateAutoDiscount($observer)
{
/**
* @var Varien_Event
*/
$event = $observer->getEvent();
$product = $event->getProduct();
$data = $product->getStockData();
$discount = $data['qty'] < 1 ? true : false;
$attributes = $product->getAttributes();
$attribute = $attributes["auto_discount_active"];
if ($product->getAutoDiscountAllowed())
{
$product->setAutoDiscountActive($discount);
}
return $this;
}
}
이제 누군가 내 가게에서 주문한 경우에도 동일한 작업을 수행하고 싶습니다. 지금까지 작동하는 이벤트 sales_order_place_after
을 사용합니다. 그러나 사용자 지정 특성 값을 변경하면 가격 규칙이 업데이트되지 않습니다. 내 관찰자 방법은 다음과 같습니다
public function updateAutoDiscountAfterOrder($observer)
{
/**
* @var Varien_Event
*/
$event = $observer->getEvent();
$order = $event->getOrder();
foreach ($order->getItemsCollection() as $item)
{
$productId = $item->getProductId();
$productIds[] = $productId;
$product = Mage::getModel('catalog/product')->setStoreId($order->getStoreId())->load($productId);
$data = $product->getStockData();
$discount = $data['qty'] < 1 ? true : false;
if ($product->getAutoDiscountAllowed())
{
$product->setAutoDiscountActive($discount);
$product->save();
}
Mage::getModel('catalogrule/rule')->applyAllRulesToProduct($productId);
}
return $this;
}
변경없이 백엔드에 직접 주문을하고 구입 한 기사를 저장 한 후, 가격이 규칙은 업데이트됩니다. 하지만 내 옵저버 방식으로 업데이트가 작동하도록했습니다.
사용자 지정 특성을 변경 한 후 카탈로그 가격 규칙을 할당하려면 어떻게해야합니까?
미리 Thx!