• 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]

Viendo 1 respuesta (de un total de 1)
  • Moderador kallookoo

    (@kallookoo)

    Hola @victortorneiros

    He revisado por encima el plugin que comentas, y veo que no esta en el repositorio. Esto nos crea un problema ya que no solemos tener acceso a ese tipo de plugins.

    El codigo que tu indicas deberia funcionar para todos los metodos pero parece que el plugin lo gestiona independientemente provocando que el resto de informacion que se muestra no coincida, como no puedo completar la configuracion del plugin, tampoco puedo comprobarlo.

    Asi que diria que puede sucederte varias cosas.

    El plugin no es completamente compatible con los hooks del WooCommerce.
    El plugin esta mal configurado, ya que cuando hice una prueba en tu web el subtotal cambia y pero no los impuestos y entiendo que los precios de correos tambien tienen los impuestos incluidos.
    Tambien he visto que usas elementor y aunque no deberia, cabe la posibilidad que este dando problemas.

    Te sugiero que hables primero con el soporte; https://woo.com/es/my-account/contact-support/?select=envia-shipping-and-fulfillment

    Y luego mirar otras cosas, para descrubir que sucede.

Viendo 1 respuesta (de un total de 1)
  • Debes estar registrado para responder a este debate.