我創建了新的自定義產品類型,它擴展了magento中的虛擬產品。現在我想阻止在線支付的自動發票,例如。貝寶當訂單至少包含一種自定義產品類型時。所有使用此類產品的訂單都必須手動開具發票。我應該如何解決這個問題?magento的自動發票
4
A
回答
5
最好的辦法是在支付捕獲過程中註冊一個事件,但我沒有看到太多相關的遺憾。您可以嘗試sales_order_invoice_save_before
來截取save(),但我並不熱衷於此,因爲它可能會使控制器混淆發票保存失敗的原因。
通過PayPal代碼查看,您將在Mage_Paypal_Model_Ipn::_processOrder()
中看到成功調用$this->_registerPaymentCapture()
,而這又調用$payment->registerCaptureNotification()
。
Mage_Sales_Model_Order_Payment::registerCaptureNotification($amount)
創建新的發票(如果尚不存在且付款是訂單的全部金額)。它使用_isCaptureFinal($amount)
方法來驗證這一點。
一種選擇是延長Mage_Sales_Model_Order_Payment
與代碼線沿線的覆蓋_isCaptureFinal($amount)
:
foreach($this->getOrder()->getAllItems() as $oOrderItem){
if($oOrderItem()->getProduct()->getTypeId() == 'your_custom_product_type'){
return false;
}
}
return parent::_isCaptureFinal($amountToCapture);
不要忘了父母最後調用!
你會做這一切的自定義模塊中(如果你想先從ModuleCreator),並插入以下到config.xml中
<global>
<models>
<modulename>
<class>Namespace_Modulename_Model</class>
</modulename>
<sales>
<rewrite>
<order_payment>Namespace_Modulename_Model_Order_Payment</order_payment>
</rewrite>
</sales>
</models>
標準的聲明,你的資金交易搞亂在這裏,所以確保你徹底地測試它真的真的。
請注意,這種方法將適用於所有支付方式,調用Mage_Sales_Model_Order_Payment::registerCaptureNotification($amount)
,而不只是貝寶。
好運,
JD
相關問題
- 1. Magento自定義PDF發票
- 2. Magento發票自動發送不發送郵件
- 3. Magento - 自定義發票號碼
- 4. 如何禁用magento中的自動發票生成?
- 5. 通過Magento中的Paypal禁用自動發票
- 6. 當訂單總額爲零時,自動發票在magento 1.9
- 7. 從Magento導出發票
- 8. Magento發票電子郵件
- 9. Magento獲得發票號碼
- 10. Magento 1.7 - 發票修改
- 11. Magento:創建發票號碼=訂單號的發票?
- 12. 的Magento:從發票取得發票編號incrementId
- 13. 隨着貝寶自動發送發票
- 14. 的Prestashop,生成發票(PDF)自動
- 15. Magento的:PHP爲PDF發票 - 創建新的生產線/自動換行內容
- 16. Magento:添加pdf發票發票電子郵件
- 17. 刪除發票中的'product_options'PDF(magento)
- 18. Magento:沒有發票的銷售報告?
- 19. 發票的Magento地址模板pdf
- 20. Magento - 發票中的小數點/爲
- 21. 獲取Magento中的所有發票
- 22. Magento的:在PDF發票編號
- 23. Magento PDF發票 - 總計的順序
- 24. Magento的增值稅號PDF發票
- 25. Magento發票PDF自定義給定的度量單位爲mm
- 26. Magento發票的付款方式部分來自
- 27. 的Magento支付模塊,沒有自動開票
- 28. 在發票中自動計算價格
- 29. Odoo 8 - 創建自動打開發票
- 30. 試圖創建自動發票Excel VBA
是隻爲貝寶或其他付款嗎?發票由付款方式控制,而不是產品類型。 – 2011-02-17 02:04:05