以数量增量和税收显示(等级)价格

时间:2012-06-23 15:10:48

标签: api magento integration catalog

我需要根据产品的数量增量显示(分层)价格。例如。一个简单的产品,正常价格为50¢,不含税和20的数量增量应在产品视图上显示“每20美元10美元”。

不使用税,这应该很容易。但似乎没有“默认”帮助器或模型来启用税收和不同的计算算法(例如Mage_Tax_Model_Calculation::CALC_UNIT_BASE);期望引用Mage_Tax_Model_Sales_Total_Quote_TaxMage_Tax_Model_Sales_Total_Quote_Subtotal

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

1 个答案:

答案 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()