繁体   English   中英

下订单后创建发票

[英]Create an Invoice after order is placed

我已经创建了我的自定义付款模块,它可以在付款网关上正常工作,但一切正常,但是当返回URL返还成功代码时,我想将订单设置为已付款。 到目前为止,我已经了解我必须为订单创建发票才能将其设置为已在Magento面板中支付。

所以首先请告诉我我是否在这里呆过。

然后,我尝试使用一些代码在success.phtml上创建发票:

$invoice = Mage::getModel('sales/service_order', $order->prepareInvoice());


        $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
        $invoice->register();

        $invoice->getOrder()->setCustomerNoteNotify(true);          
        $invoice->getOrder()->setIsInProcess(true);
        $order->addStatusHistoryComment('Automatically INVOICED by Rico.', false);

        $transactionSave = Mage::getModel('core/resource_transaction')
            ->addObject($invoice)
            ->addObject($invoice->getOrder());

        $transactionSave->save();

但这总是给我带来magento错误,因此可能不是一个好主意。

任何帮助将不胜感激

编辑

从此http://blog.chapagain.com.np/magento-quick-way-to-create-order-invoice-programmatically/

我用过

$invoiceId = Mage::getModel('sales/order_invoice_api')
                        ->create($_order->getIncrementId(), array());

而是上面的代码,似乎订单已付款。 但是我不确定是否足够。

我建议您,当客户从付款网关返回您的网站时,它必须转到magento控制器,并且您需要在此添加代码的操作

  $order=Mage::getModel('sales/order')->load($orderID); if($order->canInvoice() and $order->getIncrementId()) { $items = array(); foreach ($order->getAllItems() as $item) { $items[$item->getId()] = $item->getQtyOrdered(); } $invoiceId=Mage::getModel('sales/order_invoice_api')->create($order->getIncrementId(),$items,null,false,true); Mage::getModel('sales/order_invoice_api')->capture($invoiceId)}; } 

参见http://www.amitbera.com/programmatically-create-invoice-of-a-new-order-in-magento/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM