プログラムでチェックアウトカートにカスタム税額を追加したい。
以下がその例です。
Cart Old Tax = 4.21
Custom Tax = 2
New Tax = 4.21 + 2 = 6以下のスクリーンショットを確認してください。
これをプログラムで行う必要があります。
プログラムでチェックアウトカートにカスタム税額を追加したい。
以下がその例です。
Cart Old Tax = 4.21
Custom Tax = 2
New Tax = 4.21 + 2 = 6以下のスクリーンショットを確認してください。
これをプログラムで行う必要があります。
回答:
イベント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()メソッドとメソッドを調べる必要があります。
custom amountから来たの?