Magento 2 : 프로그래밍 방식으로 장바구니에 맞춤 세금 금액 추가


11

프로그래밍 방식으로 체크 아웃 장바구니에 맞춤 세금 금액을 추가하고 싶습니다.

다음은 예입니다.

Cart Old Tax = 4.21

Custom Tax = 2

New Tax = 4.21 + 2 = 6

아래 스크린 샷을 확인하십시오.

여기에 이미지 설명을 입력하십시오

프로그래밍 방식 으로이 작업이 필요합니다.


어디 custom amount에서 왔습니까?
Toan Nguyen

세션에서 가져 오는 @ ToanNguyen, 내 요점은 그 가치를 세금에 추가하는 방법입니다.
Dhiren Vasoya

@DhirenVasoya, 장바구니에 추가 할 때 제품에 대한 사용자 정의 세금 가격을 추가하는 방법은 다음과 같습니다. magento.stackexchange.com/questions/274520/…
jafar 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

@Rajeev, 장바구니에 추가 할 때 개별 제품에 대한 세금을 추가 할 수 있습니까? 여기 내 질문입니다, magento.stackexchange.com/questions/274520/…
jafar pinjar

덕분에 내 하루 저장 @Rajeev
Soundararajan m

작품 감사합니다
snez

2

@Dhiren Vasoya

이 줄들도 사용하십시오.

$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.