【发布时间】:2019-04-10 17:22:23
【问题描述】:
一旦订单收到processing 状态,我需要自动为其创建发票。在我的扩展程序中应该观察哪个事件来实现这一点?
我正在尝试,但这段代码不起作用,会是什么?
etc/modules 中的.xml
<?xml version="1.0"?>
<config>
<modules>
<Atwix_Orderhook>
<active>true</active>
<codePool>community</codePool>
</Atwix_Orderhook>
</modules>
</config>
app/code/中的config.xml...
<?xml version="1.0"?>
<config>
<modules>
<Atwix_Orderhook>
<version>1.0</version>
</Atwix_Orderhook>
</modules>
<global>
<models>
<orderhook>
<class>Atwix_Orderhook_Model</class>
</orderhook>
</models>
<events>
<sales_order_save_after>
<observers>
<auto_invoice_order>
<type>singleton</type>
<class>Atwix_Orderhook_Model_Observer</class>
<method>implementOrderStatus</method>
</auto_invoice_order>
</observers>
</sales_order_save_after>
</events>
</global>
</config>
app/code/中的 Oberver.php...
<?php
class Atwix_Orderhook_Model_Observer
{
public function implementOrderStatus($event)
{
$order = $event->getOrder();
if ($order == 'processing') {
if ($order->canInvoice())
$this->_processOrderStatus($order);
}
return $this;
}
private function _processOrderStatus($order)
{
$invoice = $order->prepareInvoice();
$invoice->register();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())
->save();
$invoice->sendEmail(false, '');
return true;
}
}
【问题讨论】: