Imposto de envio no Reino Unido com base nas mercadorias entregues
-
12-12-2019 - |
Pergunta
De acordo com o HMRC, “a responsabilidade do IVA [da taxa de envio] baseia-se na responsabilidade das mercadorias entregues”*
Não parece haver uma maneira no Magento de basear o IVA do frete na classe tributária dos produtos no carrinho.No entanto, para obter um total preciso do IVA, é assim que devem ser calculados.
Existe uma extensão ou solução alternativa que alguém conheça para a versão recente do Magento CER (ou seja,1,7-1,9)?
Solução
No final, escrevemos uma extensão que mudou a forma como o Magento funciona para remessas no Reino Unido, baseando a proporção do IVA na responsabilidade dos itens do pedido.É assim que o HMRC espera que o imposto sobre remessas no Reino Unido seja calculado (consulte https://www.gov.uk/rates-of-vat-on- Different-Goods-and-services#postage)
As classes/funções que precisaram ser substituídas para fazer essa alteração foram:
tax/sales_total_quote_tax::_calculateShippingTax
tax/ales_total_quote_shipping::collect
Nessas funções pegamos a taxa calculada por:
$rate = $calc->getRate($addressTaxRequest);
Em seguida, multiplicamos isso por um coeficiente baseado na proporção de itens tributáveis:
// Iterate over all items with prices to get proportional rate
$items = $address->getAllItems();
$totalPrice = 0.0;
$totalTax = 0.0;
foreach ($items as $item) {
// Add to total tax and price
$totalTax += $item->getTaxAmount();
$totalPrice += $item->getRowTotalInclTax() - $item->getDiscountAmount();
}
// Divide total tax by price in order to get weighted tax rate
$weightedTaxRate = ($totalPrice > 0.0) ? ($totalTax / $totalPrice) : 0.0;
// Convert rate to shipping tax rate (invert tax)
$rate = (1.0 / (1.0 - $weightedTaxRate)) - 1.0;
return $rate * 100.0;
Isso deve fornecer a abordagem geral, mas observe que há algum código para lidar com casos extremos não incluídos aqui, pois é um pouco mais complexo.Além disso, tivemos que usar condições nas funções substituídas porque essas funções principais evoluíram ao longo do tempo, então você precisaria basear isso na versão específica do Magento que você está usando.
A extensão, que não é gratuita, pode ser encontrada aqui:https://www.c3media.co.uk/c3-uk-shipping-tax.html