我尝试从管理员创建订单(用于电话订单)。在那种情况下,我需要从观察者处获得引用ID。我试过下面的观察者
sales_quote_save_after
sales_model_service_quote_submit_success
sales_quote_product_add_after
我尝试使用此功能获取id,
$id = $observer->getQuoteId();
和 我试图打印那些引用项目,但我得到空值。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
如果 sales_quote_product_add_after , quote_item 会传递给观察者。 要从此Observer获取引用和id:
public function yourMethod($observer)
{
$quoteItem = $observer->getEvent()->getQuoteItem();
$quote = $quoteItem->getQuote();
$id = $quote->getId();
}
如果 sales_model_service_quote_submit_success 您已通过订单和报价
public function yourMethod($observer)
{
$order= $observer->getEvent()->getOrder();
$quote= $observer->getEvent()->getQuote();
$id = $quote->getId();
}
如果 sales_quote_save_after ,您已通过引用,因为在 app / code / core / Mage / Sales / Model / Quote.php < / p>
protected $_eventObject = 'quote';
然后在你的观察者中你可以得到它:
public function yourMethod($observer)
{
$quote= $observer->getEvent()->getQuote();
$id = $quote->getId();
}
答案 1 :(得分:1)
我使用以下解决方案修复此问题, 我用下面的事件
sales_quote_item_set_product
实际上我试图为可配置产品定价相应的相关产品的价格。我的观察者是,
$event = $observer->getEvent();
$quote_item = $event->getQuoteItem();
$storeId = $quote_item->getStoreId();
if(Mage::app()->getStore()->isAdmin()) {
$item = $observer->getQuoteItem();
$product = $observer->getProduct();
$sku = $product->getSku();
$productDetails = Mage::getModel('catalog/product')
->setStoreId($storeId)
->loadByAttribute('sku',$sku);
$price = $productDetails->getPrice();
$sprice = $productDetails->getFinalPrice();
$item->setOriginalCustomPrice($sprice);
$item->setOriginalPrice($price);
}
$quote = Mage::getSingleton('adminhtml/session_quote')->getQuote();