2013-04-01 82 views
5

我有兩個貨幣的magento商店,我的購物車中的物品有動態價格。 我成功地計算我quote_item價格,與觀察者和setCustomPrice和setOriginalCustom價格如何處理Magento上的多幣種和自定義報價項目價格?

$quote_item->setCustomPrice($price); 
$quote_item->setOriginalCustomPrice($price); 

我的觀察:

<sales_quote_add_item> 

但我有一個問題,當我改變我的商店的貨幣,小計不更新。 如何處理多幣種和自定義報價項目價格?

+0

我在這裏有同樣的問題,你找到的任何解決方案? –

+0

你好@Guillaume,我有同樣的問題。你有沒有找到解決辦法?請在這裏分享。 –

回答

-3

你可能錯過了一個電話:

$quote->collectTotals()->save(); 
0

處理它通過觀測

< sales_quote_item_set_product>

$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode(); 
$currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode(); 
if($currentCurrencyCode!=$baseCurrencyCode) 
    $price= Mage::helper('directory')->currencyConvert($baseprice, $baseCurrencyCode, $currentCurrencyCode); 
else 
    $price = $baseprice; 

$item->setPrice($baseprice); 
$item->setRowTotal($item->getQty() * $price); 
1

我有這個同樣的問題在上個星期。使用 - > setOriginalCustomPrice方法適用於單一貨幣網站,但是通過貨幣切換,其剛性意味着您需要每次更換貨幣時更新購物車項目和價格,這在我看來是非常低效的。

我想出了一個更優雅的解決方案。創建一個模塊,並在你的配置的模型部分添加這個;

<models> 
     <catalog> 
      <rewrite> 
       <product>PixieMedia_CustomPrice_Model_Product</product> 
      </rewrite> 
     </catalog> 
</models> 

與直覺相反,main - > getFinalPrice函數位於產品模型中,而不是價格模型。

現在/app/code/local/Namespace/Module/Model/Product.php創建新Product.php模型

class PixieMedia_CustomPrice_Model_Product extends Mage_Catalog_Model_Product { 

public function getFinalPrice($qty=null) 
// REWRITTEN FUNCTION TO RETURN THE SPECIAL PRICE AND ENSURE CURRENCY CONVERSION 
{ 
    $qBreak = false; 
    $customPrice = Mage::Helper('pixiemedia_customprice')->getCustomerPrice($this); 

    if($qty) { 
     $qBreak = $this->getQtyBreakPrice($this->getSku(),$qty,$customPrice[0]); 
     } 

    if($qBreak) { return $qBreak; } else { return $customPrice[0]; } 

} 

} 

具體項目我工作,客戶端使用多個價格清單爲客戶具體定價,其範圍將使Magento的指數定價變得非常慢。所以我們將所有數據加載到自定義表中,並執行查找以返回客戶的正確價格或數量中斷。

這很容易勾住你自己的邏輯,並返回你想要的任何價格。這完全支持貨幣轉換,所以不需要重新轉換價格。

希望這可以幫助別人。享受:)

相關問題