• Resuelto Tito Whisky

    (@titowhisky)


    Hola, implemente el php que esta al final para aplicar un descuento por pago con transferencia bancaria, el código fnciona bien y muestra correctamente el monto cálculado, el tema es que para el cálculo toma el subtotal de la orden(es decir la suma de todos los productos), sin tener en cuenta el descuento aplicado por uno o varios cupones de descuentos ingresados, esto entiendo es porque los mismos se muestran luego del subtotal en la misma área donde se coloca el descuento por el método de pago aunque este aparece después de los costos de envios. Mi consulta es como obtengo el total de los descuentos aplicados ?

    En la pagina se ve así:

    Total del carrito

    Subtotal$12.000,00

    Cupón: catap10 –$1.200,00 

    Descuento por transferencia–$1.800,00

    Total$9.000,00

    El descuento por transferencia del 15% lo aplica sobre los 12.000 del subtotal y quisiera que se aplique a $10800, es decir al subtotal antes del costo de envio (si es que lo hay), dado que es el monto (sin el envío) que el cliente debería pagar por Transferencia Bancaria. He buscado pero no encuentro el campo en el cual se guarda el total de los descuentos por cupón en $cart_object para poder aplicarlo en el còdigo que estoy utilizando. Gracias.

    add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
    function ts_add_discount( $cart_object ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    $payment_method = 'bacs';
    $percent = 0.15; 
    $cart_total = $cart_object->subtotal_ex_tax
    ;
    $cart_total1 = $cart_object->total;
    $chosen_payment_method =
     WC()->session->get('chosen_payment_method');
    if( $payment_method == $chosen_payment_method )
    {
    $label_text = __( "Descuento por transferencia" );
    $cart_object->add_fee( $label_text, -($cart_total* $percent), false );
    }
    }
    add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
    function ts_refresh_payment_method(){
    // jQuery
    ?>
    <script type="text/javascript">
    (function($){
    $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
    $('body').trigger('update_checkout');
    });
    })(jQuery);
    </script>
    
    

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 1 respuesta (de un total de 1)
  • Iniciador del debate Tito Whisky

    (@titowhisky)

    Ya encontré la solución, hay que usar WC()->cart->get_discount_total() quedando así el código:

    add_action( ‘woocommerce_cart_calculate_fees’,’ts_add_discount’, 20, 1 );
    function ts_add_discount($cart_object) {
    if ( is_admin() && ! defined( ‘DOING_AJAX’ ) ) return;
    // The percentage to apply
    $chosen_payment_method = WC()->session->get(‘chosen_payment_method’); //Get the selected payment method
    if( ‘bacs’ == $chosen_payment_method ){
    $percent = 0.10; // 10%
    $cart_total=WC()->cart->subtotal_ex_tax – WC()->cart->get_discount_total();
    $label_text = __( «Descuento por transferencia(no inclye gastos envio)» );
    // Adding the discount
    $cart_object->add_fee( $label_text, -($cart_total* $percent), false );
    }
    }

Viendo 1 respuesta (de un total de 1)
  • El debate ‘Como obtener el monto total aplicado por cupones’ está cerrado a nuevas respuestas.