프로그래밍 방식으로 체크 아웃 장바구니에 맞춤 세금 금액을 추가하고 싶습니다.
다음은 예입니다.
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
에서 왔습니까?