我以自己的觀察員爲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