在Magento,我正在开发一个佣金模块,我需要在销售完成时支付我的代理,而不是在下订单时.
理想情况下,我希望在订单状态变为"完成"时捕获它,但我还没有找到观察者这样做?
我可以将这个添加到货运观察员,但订单可以有多个货物,因此不对.
或者,我总是可以解雇一个cron作业来计算最后一小时的顺序,但似乎也不是正确的方法.
关于什么是正确的方法的任何建议.
Syl*_*ayé 23
使用观察者"sales_order_save_commit_after"或"sales_order_invoice_pay",您可以获得订单状态,并根据您所做的状态.这是一个例子:
// for event sales_order_save_commit_after
public function commissionCalculationOnComplete($observer)
{
$order = $observer->getOrder();
if($order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE){
// do your order complete stuff
}
}
Run Code Online (Sandbox Code Playgroud)
要么
// Event sales_order_invoice_pay
public function triggerProvisionCalculation ($observer)
{
$invoice = $observer->getEvent()->getInvoice();
switch ($invoice->getState()) {
case Mage_Sales_Model_Order_Invoice::STATE_PAID :
//do your stuff
break;
}
return $this;
}
Run Code Online (Sandbox Code Playgroud)
您必须检查两次不进行计算,因为每次保存订单时都会触发此方法.