我正在由自己的观察员以编程方式为 sales_order_save_after 事件创建发票。
不幸的是,发票立即被标记为已付款。
我怎样才能实现新发票仍处于打开状态并且管理员必须将其设置为已付款状态?
到目前为止我的代码:
$invoiceId = Mage::getModel('sales/order_invoice_api')
->create($order->getIncrementId(), array());
$invoice = Mage::getModel('sales/order_invoice')
->loadByIncrementId($invoiceId);
$invoice->capture()->save();
编辑: 为了让我对 urfusion 的回答的评论可以理解,这里是代码片段:
public function order_placed($observer) {
$event = $observer->getEvent();
// ....
$emailInvoice = false;
$captureInvoice = false;
$order = Mage::getModel("sales/order")->load($data['entity_id']);
if($order->canInvoice() and $order->getIncrementId())
{
$invoiceApi = Mage::getModel('sales/order_invoice_api');
$invoiceId = $invoiceApi->create(
$order->getIncrementId(),
array(),
Mage::Helper('sales')->__('Pending Invoice created!'),
$emailInvoice,
false);
if($captureInvoice) {
$invoiceApi->capture($invoiceId);
}
}
}