Magento 2 apaga programaticamente todos os impostos e adiciona custom no Observer
Aug 25 2020
Estou personalizando o cálculo do imposto e adicionando o imposto personalizado. Estou fazendo isso usando o observador:
A versão Magento é 2.3.4, o código abaixo está funcionando bem e adicionando taxas personalizadas, mas meu requisito para adicionar limpar todos os impostos adicionados antes de adicionar um novo.
<?xml version="1.0" encoding="UTF-8"?>
<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="Vendor\CustomTax\Observer\ChangeTaxTotal"/>
</event>
</config>
e o arquivo observador é
<?php
namespace Vendorname\CustomTax\Observer;
use \Magento\Framework\Event\ObserverInterface;
use \Magento\Framework\Event\Observer;
class ChangeTaxTotal implements ObserverInterface
{
public function execute(Observer $observer) { /** @var Magento\Quote\Model\Quote\Address\Total */ $total = $observer->getData('total'); $subtotal = $total['subtotal']; $customTax = ($subtotal * 9)/100; if (trim($total['shipping_description']) == "Shipping_methode_name") {
------------in this line I want to clear all tax -------
$total->addTotalAmount('tax', $customTax);
}
return $this;
}
}
Desejo limpar todos os impostos adicionados antes de adicionar minha taxa personalizada e também desejo adicionar o título do imposto. $ total-> addTotalAmount ('tax', $ customTax);
Se alguém tiver ideia, por favor me compartilhe.
Respostas
2 RiteshSantra Aug 25 2020 at 06:06
Por favor, altere o código conforme abaixo e tente
De:
if (trim($total['shipping_description']) == "Shipping_methode_name") { ------------in this line I want to clear all tax ------- $total->addTotalAmount('tax', $customTax);
}
Para:
if (trim($total['shipping_description']) == "Shipping_methode_name") {
------------in this line I want to clear all tax -------
$total->setTotalAmount('tax', $customTax);
}
RiteshSantra Aug 25 2020 at 14:15
Use o código abaixo para alterar o título
if (trim($total['shipping_description']) == "Shipping_methode_name") { ------------in this line I want to clear all tax ------- $total->setTotalAmount('tax', $customTax); $infos = $total->getFullInfo(); foreach($infos as $key1 => $info) {
foreach($info['rates'] as $key2 => $rate) { if($rate == 'Tax') {
$infos[$key1]['rates'][$key2]['title'] = 'YOUR CUSTOM TITLE'; } } } $total->setFullInfo($infos);
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino