Problema al actualizar total de impuestos en envíos
-
Hola,
Estoy encontrando dificultades con la correcta actualización del total de impuestos en el carrito de WooCommerce al usar el plugin Envia Shipping and Fulfillment. El plugin importa el costo de envío, pero los impuestos asociados no se desglosan ni suman correctamente al total de impuestos del pedido.
He estado trabajando con un snippet de código para ajustar los impuestos del método de envío, que calcula la base imponible y el impuesto a partir del costo total del envío. A pesar de que el código parece modificar adecuadamente el array de impuestos de cada tarifa, el total de impuestos mostrado en el carrito no refleja estos cambios.
Aquí está el código que he utilizado para intentar solucionar el problema:
add_filter('woocommerce_package_rates', 'ajustar_impuesto_envio', 10, 2);
function ajustar_impuesto_envio($rates, $package) {
error_log('Inicio de ajustar_impuesto_envio');
foreach ($rates as $rate_key => $rate) {
error_log("Procesando tarifa: $rate_key");
// Registro del estado inicial de $rate->taxes
error_log('Estado inicial de $rate->taxes: ' . print_r($rate->taxes, true));
// Calcula la base imponible y el impuesto
$costo_envio_original = $rate->cost;
$base = $costo_envio_original / 1.21;
$impuesto = $costo_envio_original - $base;
// Registra la base y el impuesto calculados
error_log("Base del envío: $base, Impuesto del envío: $impuesto");
// Ajusta el costo sin impuestos
$rate->cost = $base;
// Prepara el array de impuestos
$taxes = [];
foreach ($rate->taxes as $tax_id => $value) {
$taxes[$tax_id] = $impuesto;
// Registra el proceso de ajuste del impuesto
error_log("Ajustando impuestos para tax_id $tax_id: $impuesto");
}
// Asegúrate de que el array de impuestos no esté vacío
if (empty($taxes)) {
$taxes[] = $impuesto;
error_log("Ajuste general del impuesto: $impuesto");
}
// Asigna el array de impuestos ajustado a la tarifa
$rates[$rate_key]->taxes = $taxes;
// Registro del estado final de $rate->taxes
error_log('Estado final de $rate->taxes: ' . print_r($rate->taxes, true));
}
error_log('Fin de ajustar_impuesto_envio');
return $rates;
}El recálculo del total funciona correctamente al cambiar entre métodos de envío con diferentes importes. Sin embargo, el total del impuesto permanece inalterado y no incluye los impuestos de envío.
¿Alguien podría ayudarme a entender qué podría estar fallando o proporcionarme alguna orientación sobre cómo resolver este problema?
Gracias de antemano por su tiempo y ayuda.
La página con la que necesito ayuda: [accede para ver el enlace]
- El debate ‘Problema al actualizar total de impuestos en envíos’ está cerrado a nuevas respuestas.