Soporte » Plugins y Hacks » WooCommerce » Problema Cupón Descuento WooCommerce

  • He instalado WooCommerce y he creado un cupón de descuento del 15%.

    En el checkout aparece el importe de los productos, el importe del descuento, pero me falta el total del importe de los productos menos el descuento:

    TOTAL CARRITO
    Subtotal: 20,00 euros
    Cupón 15: -3,00 euros

    Envío: 2,95 euros
    Total: 19,95 euros

    Necesito una línea más entre Cupón y Envío donde ponga el importe con el descuento aplicado (20,00 euros – 3,00 euros -> 17,00 euros). Sin embargo sólo aparece el total pero con el gasto de envío ya aplicado.

    Alguien me puede ayudar por favor? Gracias por adelantado!

    • Este debate fue modificado hace 2 meses, 1 semana por wildconfetti.
Viendo 3 respuestas - 1 de 3 (de 3 total)
  • Hola,

    Deberías usar el hook woocommerce_cart_totals_before_shipping y woocommerce_review_order_before_order_total
    Tienes que hacer un código del tipo:

    add_action( 'woocommerce_cart_totals_before_shipping', 'action_woocommerce_cart_discount_applied', 10, 0 );
    add_action( 'woocommerce_review_order_before_order_total', 'action_woocommerce_cart_discount_applied', 10, 0 );
    
    function action_woocommerce_cart_discount_applied(){
        global $woocommerce;
        $discount_total = 0;
        $regular_price_total = 0;
        $shipping_cost = $woocommerce->cart->shipping_total;
        $cart_total = $woocommerce->cart->total;
        foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $values) {
            $_product = wc_get_product( $values['data'] );
            if ( $_product->is_on_sale() ) {
               $regular_price = $_product->get_regular_price();
               $regular_price_total += $regular_price* $values['quantity'];
            }
        }
        $discount_total = $regular_price_total - $cart_total + $shipping_cost;
          
        if ( $discount_total > 0 ) {
           echo '<tr class="cart-discount">
           <th>'. __( 'You Saved', 'woocommerce' ) .'</th>
           <td data-title=" '. __( 'You Saved', 'woocommerce' ) .' ">'
           . wc_price( $discount_total ) .'</td>
           </tr>';
        }  
    }

    No he testeado el código pero por ahí debería ir. También revisa exactamente la maqueta de tu tema para que los se muestre bien en el listado de totales.

    Espero que te haya ayudado. Agradeceré que pases a comentar tu resultado y en caso de que funcionase marques el debate como resuelto.

    Gracias Adrián, en breve contrataré un informátic@ para que añada este código que mencionas, porque yo no sé lo que es un hook ni dónde debería insertarlo.
    Si piensas que no es necesario contratarlo y tú me puedes dar las indicaciones de dónde insertarlo, estaré encantada. Mi web: http://www.wild-confetti.com
    Mil gracias de nuevo. Teresa

    Hola @wildconfetti

    Pudiste solucionarlo? Comparte como lo hiciste y cierra el debate.

Viendo 3 respuestas - 1 de 3 (de 3 total)
  • Debes estar registrado para responder a este debate.