我需要根据产品的数量增量显示(分层)价格。例如。一个简单的产品,正常价格为50¢,不含税和20的数量增量应在产品视图上显示“每20美元10美元”。
不使用税,这应该很容易。但似乎没有“默认”帮助器或模型来启用税收和不同的计算算法(例如Mage_Tax_Model_Calculation::CALC_UNIT_BASE
);期望引用Mage_Tax_Model_Sales_Total_Quote_Tax
和Mage_Tax_Model_Sales_Total_Quote_Subtotal
。
我在这里错过了什么,或者我是否必须编写业务逻辑来自行计算价格?我最好如何封装它?
答案 0 :(得分:0)
我现在解决了我的问题非常简单。为此,我使用自定义模块中的<rewrite>
元素来使用其他实例方法扩展帮助器Mage_Tax_Helper_Data
:
class My_Module_Helper_Tax_Data extends Mage_Tax_Helper_Data {
/**
* Get product price based on stock quantity increments
*
* @param Mage_Catalog_Model_Product $product
* @param float $price inputed product price
* @param null|int $qtyIncrements inputed stock quantity increments
* @param null|bool $includingTax return price include tax flag
* @param null|Mage_Customer_Model_Address $shippingAddress
* @param null|Mage_Customer_Model_Address $billingAddress
* @param null|int $customerTaxClass customer tax class
* @param mixed $store
* @param bool $priceIncludesTax flag what price parameter contain tax
* @return float
*/
public function getQtyIncrementsPrice($product, $price, $qtyIncrements = 1,
$includingTax = null, $shippingAddress = null, $billingAddress = null,
$customerTaxClass = null, $store = null, $priceIncludesTax = null) {
$store = Mage::app()->getStore($store);
$qtyIncrements *= 1;
if ($this->_config->getAlgorithm($store)
== Mage_Tax_Model_Calculation::CALC_UNIT_BASE) {
$price = $this->getPrice(
$product, $price, $includingTax, $shippingAddress,
$billingAddress, $customerTaxClass, $store, $priceIncludesTax
);
$price *= $qtyIncrements;
$price = $store->roundPrice($price);
} else {
$price *= $qtyIncrements;
$price = $this->getPrice(
$product, $price, $includingTax, $shippingAddress,
$billingAddress, $customerTaxClass, $store, $priceIncludesTax
);
}
return $price;
}
}
稍后可以用于自定义重写方法,例如Mage_Catalog_Block_Product_Price::getTierPrices()
。