Magento 2: Programlı Olarak Sepete Özel Vergi Tutarı Ekleyin


11

Programlı olarak ödeme sepetine özel vergi tutarı eklemek istiyorum.

İşte örnek.

Cart Old Tax = 4.21

Custom Tax = 2

New Tax = 4.21 + 2 = 6

Aşağıdaki ekran görüntüsünü kontrol edin.

resim açıklamasını buraya girin

Programlı olarak buna ihtiyacım var.


Nereden custom amountgeliyorsun?
Toan Nguyen

@ToanNguyen oturumdan getirdim, Demek istediğim, bu değeri vergiye nasıl ekleyebilirim.
Dhiren Vasoya

@DhirenVasoya, sepete eklendiğinde ürün için nasıl özel vergi fiyatı ekleyebiliriz, işte benim sorum, magento.stackexchange.com/questions/274520/…
jafar pinjar

@DhirenVasoya, denedim çözümün altında, bu sepeti gösteriyor ama hesaplama değil ..
jafar pinjar

@DhirenVasoya - bu soruna çözüm buldunuz mu?
Manashvi Birla

Yanıtlar:


4

Etkinliği gözlemleyebilir sales_quote_address_collect_totals_afterve başarabilirsiniz. Bunun için bir modül kurmanız ve bir olay yapılandırmanız gerekir. Diyelim ki modülümüz MStack_Exchange.

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

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

Burada önemli çağrısıdır: $total->addTotalAmount('tax', $this->additionalTaxAmt);. Bu 2, mevcut vergi miktarıyla birlikte eklenecek ve bence sizin durumunuzda ihtiyacınız olan şey bu. Yapmanız gereken şey, $this->additionalTaxAmtvergi tamponu değerinizle değiştirin.

Olay, sales_quote_address_collect_totals_aftertoplam hesaplamalar gerçekleştikten hemen sonra patlar ve böylece oynamak için mükemmel bir yer haline gelir.

Bu toplam hesaplamaların nerede olduğunu merak ediyorsanız, o zaman Magento\Quote\Model\Quote\TotalsCollector::collect()ve Magento\Quote\Model\Quote\TotalsCollector::collectAddressTotals()yöntemlere bakmanız gerekir .


Bunu kontrol edeyim.
Dhiren Vasoya

@Rajeev, sepete eklendiğinde bireysel ürün için özel vergi ekleyebilir miyiz? İşte sorum, magento.stackexchange.com/questions/274520/…
jafar pinjar

@Rajeev günümü kurtarmak için teşekkürler
Soundararajan m

Works thank you
Snez

2

@ErkekTerimleri

Bu çizgileri de kullanın.

$total->addBaseTotalAmount('tax', $this->additionalTaxAmt);
$total->setGrandTotal((float)$total->getGrandTotal() + $this->additionalTaxAmt);
$total->setBaseGrandTotal((float)$total->getBaseGrandTotal() + $this->additionalTaxAmt);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.