2013-04-01 6 views
5

Tôi có một cửa hàng Magento với hai loại tiền tệ, và các mặt hàng của tôi trong giỏ hàng có một mức giá năng động. tôi thành công tính toán giá quote_item của tôi, với một người quan sát và setCustomPrice và giá setOriginalCustomLàm thế nào để xử lý nhiều loại tiền tệ và giá báo giá tùy chỉnh trên Magento?

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

Và quan sát của tôi:

<sales_quote_add_item> 

Nhưng tôi có một vấn đề, khi tôi thay đổi tiền tệ của cửa hàng của tôi, tổng phụ không cập nhật. Làm cách nào để xử lý nhiều loại tiền tệ và giá báo giá tùy chỉnh?

+0

tôi có cùng một vấn đề ở đây, bất kỳ giải pháp nào bạn tìm thấy? –

+0

Xin chào @Guillaume, tôi có cùng một vấn đề. Bạn đã tìm thấy giải pháp nào chưa? xin vui lòng chia sẻ ở đây. –

Trả lời

-3

Bạn có thể bỏ lỡ một cuộc gọi đến:

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

xử lý nó thông qua quan sát

< 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

Tôi đã có vấn đề này rất giống so với tuần trước. Sử dụng phương pháp -> setOriginalCustomPrice là tốt cho một trang tiền tệ duy nhất, nhưng với chuyển đổi tiền tệ, độ cứng của nó có nghĩa là bạn cần phải cập nhật các mặt hàng giỏ hàng và giá niêm yết mỗi khi đồng tiền được chuyển đổi, điều này rất không hiệu quả theo ý kiến ​​của tôi.

Tôi đã đưa ra một giải pháp thanh lịch hơn. Tạo một mô-đun và trong phần mô hình của cấu hình của bạn thêm này;

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

Counter trực quan, hàm main -> getFinalPrice nằm trong mô hình sản phẩm chứ không phải mô hình giá.

Bây giờ, tạo mô hình Product.php mới của bạn trong /app/code/local/Namespace/Module/Model/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]; } 

} 

} 

Về dự án cụ thể tôi đã làm việc trên, khách hàng là sử dụng nhiều danh sách giá cho giá cụ thể của khách hàng, phạm vi mà sẽ làm cho Magento khủng khiếp chậm để định giá chỉ số. Vì vậy, chúng tôi đã tải tất cả dữ liệu vào bảng tùy chỉnh và thực hiện tra cứu để trả lại giá chính xác của khách hàng hoặc số lần chia nhỏ.

Thật dễ dàng để móc logic của riêng bạn và trả lại giá bao giờ bạn muốn. Điều này hoàn toàn hỗ trợ chuyển đổi tiền tệ, vì vậy không cần phải fiddle xung quanh giá chuyển đổi lại.

Hy vọng điều này sẽ giúp ai đó ra ngoài. Hãy tận hưởng :)