0

我需要根据产品的数量增量显示(层)价格。例如,一个简单的产品,正常价格为 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

我在这里错过了什么,还是我必须编写业务逻辑来自己计算价格?我将如何最好地封装它?

4

1 回答 1

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().

于 2012-06-23T23:12:37.410 回答