2012-03-15 73 views
1

我有一個活的Magento 1.5.0.1網上商店,有以下問題:Magento的:訂單發票(產生的),但「總因」> 0

我們收到的訂單,其中已經通過iDEAL進行支付(荷蘭的在線支付服務),並且在支付成功時自動生成發票。我們也收到了我們銀行賬戶的金額。

唯一的問題是,我們無法完成訂單,因爲「總計到期」字段的金額高於0(零)。這必須是我們的iDEAL模塊中的錯誤(將在另一時刻處理)。

有沒有辦法強制'這個特定的順序是'完整的'總和期限字段設置爲0?

顯然,這樣做的PHP代碼示例非常受歡迎(我自己也是程序員)。

+0

這個總數有多大?這與原來的一樣嗎?或者可能是0.01? – 2012-03-15 14:34:06

+0

這與總計(大於0.01)相同,總支付爲0.00(這是不正確的,因爲訂單已經支付)。 – edsk 2012-03-15 14:58:38

回答

2

這可能對你有幫助。從我們的模塊之一

例子:

$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId); 
if ($order->getTotalPaid() == 0) { 
    $invoice = $order->prepareInvoice(); 
    $invoice->register()->capture(); 
    Mage::getModel('core/resource_transaction') 
     ->addObject($invoice) 
     ->addObject($invoice->getOrder()) 
     ->save(); 
    $order->save(); 

此檢查付款尚未註冊(用戶可以發送通過多點擊幾次成功的請求),然後創建發票,註冊它,捕獲並保存發票和訂單。

編輯1

private function markOrderPayd($incrementId, $status) { 
     $order = Mage::getModel('sales/order')->loadByIncrementId($incrementId); 
     if ($order->getTotalPaid() == 0) { 
      ... 
      $order->save(); 
      $invoice = $order->prepareInvoice(); 
      $invoice->register()->capture(); 
      ... 
      Mage::getModel('core/resource_transaction') 
       ->addObject($invoice) 
       ->addObject($invoice->getOrder()) 
       ->save(); 
      $order->save(); 
      ... 

     } else { 
      ... 
      $order->save(); 
     } 
} 

我猜你沒有任何檢查,所以2次發票生成。

+0

非常感謝!訂單已完成,'總計到期日期'= 0,付款總額==總計。唯一的是,我有一張訂單的兩張發票,但我可以忍受; – edsk 2012-03-16 09:47:55

+0

檢查更新 – 2012-03-16 09:56:54

+0

謝謝,但我不完全理解。您使用resource_transaction來完成訂單,並且您必須創建發票。已經有一張發票,但不知怎的,這不是正確的。有沒有辦法不創建額外的發票,並將此訂單標記爲完整? – edsk 2012-03-16 10:03:43