3

チェックアウト カート ページで、カスタム ボタンが押された後、アイテムごとに割引 (10 ドルなど) を動的に設定したいと考えています。Magento のコーディングの一部を確認して、次のことを確認しました。

  • 主に " Mage_Sales_Model_Quote_Address" クラスは、誰か (任意の Magento コード) が割引について話しているときに常に影響を受けます。
  • 「 」には 2 つのインスタンスがありますMage_Sales_Model_Quote_Address。1 つは「請求先」住所タイプ用で、もう 1 つは「配送先」住所タイプ用ですが、後者は主にクーポン コード関連の割引に使用されます。

これらの領域を確認した後、次のように、" shipping " 住所タイプ " "を対象とするコードを書き続けましたMage_Sales_Model_Quote_Address

$cart = Mage::getSingleton('checkout/cart');
$objShippingAddress = $cart->getQuote()->getShippingAddress();
$discountAmount = 10;

$objShippingAddress->setDiscountDescription('any description');
$objShippingAddress->addTotal(array(
    'code' => 'discount',
    'title' => "Custom Discount",
    'value' => -$discountAmount,
));

$totalDiscountAmount = $discountAmount;
$subtotalWithDiscount = $discountAmount;
$baseTotalDiscountAmount = $discountAmount;
$baseSubtotalWithDiscount = $discountAmount;

$objShippingAddress->setDiscountAmount($totalDiscountAmount);
$objShippingAddress->setSubtotalWithDiscount($subtotalWithDiscount);
$objShippingAddress->setBaseDiscountAmount($baseTotalDiscountAmount);
$objShippingAddress->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount);

$objShippingAddress->setGrandTotal($objShippingAddress->getGrandTotal() - $objShippingAddress->getDiscountAmount());
$objShippingAddress->setBaseGrandTotal($objShippingAddress->getBaseGrandTotal() - $objShippingAddress->getBaseDiscountAmount());

totalsしかし、チェックアウト カート ページの「 」セクションと、チェックアウト ワン ページの注文レビュー セクションに行が表示されません。

4

1 に答える 1

0

ディスカウント層を設定するリクエストがありました。現在の割引モデルを使用してそれらを行うことができなかったため、CartController 内の CouponPostAction に変更を加えました。ダミー クーポンを設定し、顧客に関する他の情報に基づいて、そのクーポンで段階的な割引スキームを提供することができました。

于 2012-07-24T15:25:50.893 に答える