我现在非常简单地解决了我的问题。为此,我使用自定义模块中的元素通过附加实例方法<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()
.