Magento 2: Tambahkan Jumlah Pajak Kustom Dalam Keranjang Secara Programatis

10

Saya ingin menambahkan jumlah pajak khusus ke checkout keranjang secara terprogram.

Inilah contohnya.

Cart Old Tax = 4.21

Custom Tax = 2

New Tax = 4.21 + 2 = 6

Periksa tangkapan layar di bawah ini.

masukkan deskripsi gambar di sini

Saya perlu ini dilakukan secara terprogram.

Dhiren Vasoya
sumber
Dari mana custom amountasalmu?
Toan Nguyen
@ToanNguyen yang saya ambil dari sesi, poin saya adalah bagaimana bisa menambahkan nilai itu ke pajak.
Dhiren Vasoya
@DhirenVasoya, bagaimana kita bisa menambahkan harga pajak khusus untuk produk ketika ditambahkan ke troli, inilah pertanyaan saya, magento.stackexchange.com/questions/274520/…
jafar pinjar
@DhirenVasoya, solusi di bawah ini saya coba, ini menunjukkan keranjang tetapi tidak menghitung ..
jafar pinjar
@DhirenVasoya - apakah Anda mendapatkan solusi untuk masalah ini?
Manashvi Birla

Jawaban:

4

Anda dapat mengamati acara sales_quote_address_collect_totals_afterdan mencapainya. Untuk ini, Anda perlu mengatur modul dan mengkonfigurasi suatu peristiwa. Katakanlah modul kita adalah MStack_Exchange.

File: 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>

File: 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;
    }
}

Panggilan penting di sini adalah: $total->addTotalAmount('tax', $this->additionalTaxAmt);. Ini akan ditambahkan 2dengan jumlah pajak yang ada dan saya pikir itulah yang Anda butuhkan dalam kasus Anda. Jadi yang perlu Anda lakukan adalah, ganti $this->additionalTaxAmtdengan nilai buffer pajak Anda.

Acara ini sales_quote_address_collect_totals_aftermemanas setelah perhitungan total dilakukan dan karenanya menjadi tempat yang sempurna untuk bermain-main.

Jika Anda ingin tahu di mana perhitungan total ini terjadi, maka Anda perlu melihat Magento\Quote\Model\Quote\TotalsCollector::collect()dan Magento\Quote\Model\Quote\TotalsCollector::collectAddressTotals()metode.

Rajeev K Tomy
sumber
Biarkan saya periksa ini.
Dhiren Vasoya
@Rajeev, dapatkah kami menambahkan pajak khusus untuk produk individual saat ditambahkan ke troli? ini pertanyaan saya, magento.stackexchange.com/questions/274520/...
jafar pinjar
Terima kasih @Rajeev untuk menyelamatkan hari saya
Soundararajan m
Bekerja terima kasih
snez
2

@Diren Vasoya

Gunakan garis-garis ini juga.

$total->addBaseTotalAmount('tax', $this->additionalTaxAmt);
$total->setGrandTotal((float)$total->getGrandTotal() + $this->additionalTaxAmt);
$total->setBaseGrandTotal((float)$total->getBaseGrandTotal() + $this->additionalTaxAmt);
Gaurav
sumber