2014-01-07 30 views
3

我正在觀察小計和總計爲0的訂單的奇怪情況,但產品在其中。產品行有價格,沒有促銷規則或折扣正在使用。偶爾會發生這種情況,而不僅僅是一個站點。 Magento的版本是1.7.0.2。也沒有安裝額外的擴展。 system.log和exception.log不包含可能與此問題有關的錯誤的痕跡。Magento與小計和總計的訂單0

起初我以爲這可能是因爲服務器超載。我認爲這可能與它有關,但最後的「0」 - 小數順序發生在服務器根本沒有加載時。

任何想法?謝謝!

+0

這發生兩次以上。我真的無法弄清楚。 –

+0

我遇到了同樣的問題。任何線索? – kiatng

+0

我還沒有任何解決方案。問題依然存在,偶爾發生。 –

回答

1

我有同樣的問題。我在這裏做了一些研究。 我使用IWD onepagecheckout模塊。問題出在這個模塊裏面。

讓我們考慮一下情況。您在adminpanel中執行操作,或者cron正在執行此產品的某些任務,或者您可以應用一些目錄規則。在這些行爲中的任何一種將被稱爲事件catalog_product_status_updatecatalog_product_save_after

因此,每當您更改產品的平價時,所有當前報價都將根據事件進行更新。

好的,在這裏你會問我 - 這是什麼意思?

這意味着每個引號改變字段trigger_recollectsales_flat_quote表。 您可以在這裏找到 app/code/core/Mage/Sales/Model/Resource/Quote.php :: [markQuotesRecollectOnCatalogRules和markQuotesRecollect方法]以獲取更多細節。

trigger_recollect字段是一個觸發器/信號來重新記錄整個報價總和。你可以在這裏找到這一步 app/code/Mage/Sales/Model/Quote.php :: _ afterLoad。

protected function _afterLoad() 
{ 
     // collect totals and save me, if required 
     if (1 == $this->getData('trigger_recollect')) { 
      $this->collectTotals()->save(); 
     } 
     return parent::_afterLoad(); 
} 

,準確此時所有當前報價總金額降爲0的後續步驟是獲得地址的收集和出於某種原因,我們沒有產品項目現在的地址對象。 Magento在這裏無法回憶正確。但是,只有當您或系統對產品採取行動並且客戶正在按下「發送訂單」按鈕時纔會發生。爲什麼 - 我還不知道。由這個問題發生和捕捉。

+0

這聽起來很合理。我正在使用相同的模塊。你找到了解決方案嗎?你爲什麼認爲這個問題在模塊中。這不是全球性問題嗎? –

+0

我假定原因在模塊中。讓我們比較一下saveOrder操作中的IWD_OnepageCheckout_IndexController和Mage_Checkout_OnepageController。 Mage_Checkout_OnepageController在此步驟中沒有保存付款數據,而不是IWD_OnepageCheckout_IndexController。有關更多詳細信息,請參閱IWD_OnepageCheckout_IndexController中的_saveOrderPurchase方法。此步驟發生此錯誤。因此IWD checkout是在產品在管理面板中更改的時刻進行的初始報價回憶。如果我在這裏錯了,請糾正我。 – Anthony

+0

我的解決方案是一個黑客) - 我只是忽略recollect的情況下調用saveOrder操作。不是很好的解決方案,但它的工作原理) – Anthony

-1

只需檢查配置 - >高級 - >高級 - >禁用模塊輸出 Mage_Tax選項是否啓用。

+0

Mage_Tax處於活動狀態,即未禁用。但我不明白這與這個問題有什麼關係? –

+0

如果您禁用它,則不計算小計和總計。 – Ashlesha

-2

零小計結帳

使用這種

系統>配置>付款方式>零小計結帳

More info to go hear

enter image description here

enter image description here

+0

這真的和我的問題絕對沒有關係 –

3

我和你們有過同樣的問題,它真的很煩人,因爲我無法重現它,也找不到合適的解決方案。 我開始相信這只是另一個由於數據庫操作時間不合適而導致的Magento錯誤。

安東尼的帖子真的幫了我,並指導我找到一個實際的修復。

所以它就是這樣。 事實上,錯誤是由markQuotesRecollect中設置的觸發器回憶標誌(例如,當產品被保存時)造成的,並且導致所有活動引號重新收集其總數。

我不得不在調試IWD OnepageCheckout代碼來理解,在Geo.php saveBilling功能通過克隆 帳單地址創建一個新的送貨地址花了很多的時間(如果出貨賬單一樣),並把(幾乎)將所有數據從帳單地址發送到稍後保存的送貨地址(通過父報價保存)。 這種方式設置了cached_items_ *數據,當Geo.php保存付款時,即使您故意設置報價來記錄總計(即通過將收集標誌設置爲false),運輸總計 計算不正確。

最後我不得不添加的代碼,這行行之後saveBilling方法寫道:

$ship->addData($bill->getData());) 

    $ship->setSameAsBilling(1)->setShippingMethod($ship_method)->setCollectShippingRates(true); 
    $ship->unsetData('cached_items_nominal'); 
    $ship->unsetData('cached_items_nonnominal'); 
    $ship->unsetData('cached_items_all'); 

到目前爲止(後10天及周圍1000號令)沒有隨機零個訂單總數。

希望這有助於大家

親切的問候

Lefteris