2014-04-02 3 views
3

각 상점보기에서 다른 통화를 사용하는 여러 웹 사이트가 있습니다. 기본 통화 (기본값)는 GBP로 설정됩니다. 맞춤형 옵션에 고정 가격을 추가하면 통화가 저장 통화에 따라 변환됩니다.Magento : 사용자 지정 옵션 가격에 복수 통화 변환

나중에 가격을 계속 변환 할 때 다른 값을 나중에 업데이트하려고 할 때 문제가 발생합니다. 예를 들어, 매장보기 1에 파란색 옵션에 100GBP를 추가하는 사용자 지정 옵션이있는 제품이 있다고 가정 해 봅니다. 올바른 통화 변환에 따라 동일한 제품이 매장보기 2에 파란색 옵션에 120 유로를 추가하는 맞춤 옵션으로 표시됩니다.

예를 들어 제품 이름을 변경하거나 이미지를 추가하거나 가격이나 맞춤 옵션을 포함하지 않는 변경 사항을 저장하고 변경 사항을 저장하는 등 Store View 2에서 값을 변경하면 사용자 지정 옵션의 가격을 계속 변환 할 것입니다. 120 EUR 인 경우 120 GBP의 새 값인 것처럼 참조하고 143.5 EUR로 변환합니다. 다시 저장하려면 171.5 EUR로 다시 변환됩니다.

이는 Magento가 사용자 정의 옵션 가격을 변환해야하는 새 값으로 언급했기 때문에 발생합니다.

제품의 가치를 변경할 때마다 어떻게 해결할 수 있습니까?

+0

SET 관리자 패널 – himansu

+0

에서 스토어 뷰 2 120 EUR : _saveValuePrices 방법에서 사용 그런

protected function checkIfPriceHasNotBeenChanged($object, $storeId) { $newPrice = (float)sprintf('%F', $object->getPrice()); $priceTable = $this->getTable('catalog/product_option_type_price'); $select = $this->_getReadAdapter()->select() ->from($priceTable, 'price') ->where('option_type_id = ?', (int)$object->getId()) ->where('store_id = ?', $storeId); $oldPrice = $this->_getReadAdapter()->fetchOne($select); return $newPrice == $oldPrice; } 

:

먼저이 방법을 추가 – ido

답변

0

나는 이것이 꽤 오래된 질문이라는 것을 알고 있지만이 버그는 여전히 (Magento 1.9에서도) 발생하므로 아마도 내 대답이 도움이 될 것입니다.

Mage_Catalog_Model_Resource_Product_Option_Value 클래스를 덮어 써야합니다. 그것은 GBP로 변환 유지

if ($object->getStoreId() != '0' && $scope == Mage_Core_Model_Store::PRICE_SCOPE_WEBSITE 
     && !$object->getData('scope', 'price')) { 

     $baseCurrency = Mage::app()->getBaseCurrencyCode(); 

     $storeIds = Mage::app()->getStore($object->getStoreId()) 
      ->getWebsite() 
      ->getStoreIds(); 

     if (is_array($storeIds)) { 
      foreach ($storeIds as $storeId) { 
       if ($priceType == 'fixed') { 

        if ($this->checkIfPriceHasNotBeenChanged($object, $storeId)) { 
         continue; 
        } 
(...) 
관련 문제