0

製品の数量増分に基づいて (ティア) 価格を表示する必要があります。たとえば、通常価格が 50¢ で税金がなく、数量が 20 単位の単純な商品は、「$10 per 20」という商品ビューに表示する必要があります。

税金を使わなければ、これは非常に簡単なはずです。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 に答える