我以自己的观察员为sales_order_save_after事件以编程方式创建发票。magento以编程方式创建未付发票
不幸的是,发票立即被标记为已付款。
我该如何实现新发票仍然开放,管理员必须将其设置为付费状态?
我迄今为止代码:
$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);
}
}
}
感谢您的回答。将代码提交给我的观察员后,我仍然收到挂单但已付款发票。我编辑了我的答案,以显示一些代码,因为我不能接受受保护的变量,因为我在方法中。但我认为这只是来自某个地方的示例代码? magento如何以及在哪里使用受保护的变量? – alexandre