Magento 2:プログラムでカートにカスタム税額を追加する


10

プログラムでチェックアウトカートにカスタム税額を追加したい。

以下がその例です。

Cart Old Tax = 4.21

Custom Tax = 2

New Tax = 4.21 + 2 = 6

以下のスクリーンショットを確認してください。

ここに画像の説明を入力してください

これをプログラムで行う必要があります。


どこcustom amountから来たの?
Toan Nguyen

セッションから取得する@ToanNguyen、私のポイントは、その値を税に追加する方法です。
Dhiren Vasoya 2017年

カートに追加したとき、我々は製品のカスタム税の価格を追加することができ、ここで私の質問は、どのよう@DhirenVasoya、magento.stackexchange.com/questions/274520/...
ジャファルpinjar

@DhirenVasoyaは、私が試した解決策の下に、これは...カートを示すが、計算されていません
ジャファルpinjar

@DhirenVasoya-この問題の解決策を手に入れましたか?
Manashvi Birla

回答:


4

イベントsales_quote_address_collect_totals_afterを観察して達成することができます。このためには、モジュールをセットアップし、イベントを構成する必要があります。モジュールがであるとしましょうMStack_Exchange

ファイル: app\code\MStack\Exchange\etc\events.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="sales_quote_address_collect_totals_after">
        <observer name="changeTaxTotal" instance="MStack\Exchange\Observer\ChangeTaxTotal"/>
    </event>
</config>

ファイル: app\code\MStack\Exchange\Observer\ChangeTaxTotal.php

<?php
namespace MStack\Exchange\Observer;

use \Magento\Framework\Event\ObserverInterface;
use \Magento\Framework\Event\Observer;

class ChangeTaxTotal implements ObserverInterface
{
    public $additionalTaxAmt = 2;

    public function execute(Observer $observer)
    {
        /** @var Magento\Quote\Model\Quote\Address\Total */
        $total = $observer->getData('total');

        //make sure tax value exist
        if (count($total->getAppliedTaxes()) > 0) {
            $total->addTotalAmount('tax', $this->additionalTaxAmt);
        }

        return $this;
    }
}

ここでの重要な呼び出しは次のとおり$total->addTotalAmount('tax', $this->additionalTaxAmt);です。これは2、既存の税額に追加されます。私はそれがあなたの場合に必要なものだと思います。だからあなたがする必要があるのは、$this->additionalTaxAmtあなたの税金バッファの値で置き換えます。

このイベントsales_quote_address_collect_totals_afterは、合計計算が行われた直後に発生するため、遊ぶのに最適な場所になります。

この合計計算がどこで行われているのか知りたい場合はMagento\Quote\Model\Quote\TotalsCollector::collect()Magento\Quote\Model\Quote\TotalsCollector::collectAddressTotals()メソッドとメソッドを調べる必要があります。


これを確認させてください。
Dhiren Vasoya 2017

@Rajeev、カートに追加するときに、個々の製品にカスタム税を追加できますか?ここに私の質問があります、magento.stackexchange.com
questions / 274520 /

私の日を救うために@Rajeevに感謝します
Soundararajan m

作品ありがとう
スネズ

2

@ディレン・ヴァソヤ

これらの行も使用してください。

$total->addBaseTotalAmount('tax', $this->additionalTaxAmt);
$total->setGrandTotal((float)$total->getGrandTotal() + $this->additionalTaxAmt);
$total->setBaseGrandTotal((float)$total->getBaseGrandTotal() + $this->additionalTaxAmt);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.