Cupón de descuento sobre precio regular del producto (no precio de oferta)

2 minutos de lectura

avatar de usuario
haley m

En WooCommerce, tengo productos con un precio regular de X y un precio de venta de Y. Me gustaría agregar un cupón con un código para un descuento de $ 45.00 que se tomará del precio regular X.

Me gustaría que el cupón no tenga en cuenta el precio de venta para obtener X-$45 NO Y-$45. Pero cuando no se aplica el cupón se utiliza el precio Y.

Encontré lo siguiente que funciona para descuentos porcentuales, pero parece que no puedo hacerlo funcionar para un precio de descuento de producto fijo.

add_filter('woocommerce_coupon_get_discount_amount', 'woocommerce_coupon_get_discount_amount', 10, 5 );
function woocommerce_coupon_get_discount_amount( $discount, $discounting_amount, $cart_item, $single, $coupon ) {
    if ($coupon->type == 'percent_product' || $coupon->type == 'percent') {
        global $woocommerce;
        $cart_total = 0;

        foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {

         $variable_product1= new WC_Product_Variation( $cart_item["variation_id"] );

         $cart_total += $variable_product1 ->regular_price * $cart_item['quantity'];
        } 
        $discount = round( ( $cart_total / 100 ) * $coupon->amount, $woocommerce->cart->dp );
        return $discount;
    }
    return $discount;
}

  • Creo que ese código es el mismo de: gist.github.com/frozonfreak/1458e5a43a87812ebeab Estoy leyendo que tiene el problema de descontar el descuento al precio ya rebajado :/

    – chelder

    22 de enero de 2018 a las 13:17


  • El código anterior solo devuelve el descuento del precio regular, pero no resta el monto del descuento del precio regular al finalizar la compra. Entonces terminas dando más descuento del que quieres.

    – Saif

    20 de noviembre de 2018 a las 16:09

avatar de usuario
JSE

Esto parece buscar un cupón y luego cambiar el precio del carrito al precio normal en lugar del precio con descuento (obtenido del precio dinámico de WooCommerce en esta aplicación) antes de aplicar el cupón. colocado en functions.php

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object) {

    global $woocommerce;

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    $coupon = False;

    if ($coupons = WC()->cart->get_applied_coupons()  == False ) 
      $coupon = False;
    else {
        foreach ( WC()->cart->get_applied_coupons() as $code ) {
          $coupons1 = new WC_Coupon( $code );
          if ($coupons1->type == 'percent_product' || $coupons1->type == 'percent')
            $coupon = True;
        }
    }

    if ($coupon == True)
        foreach ( $cart_object->get_cart() as $cart_item ) 
        {
            $price = $cart_item['data']->regular_price;
            $cart_item['data']->set_price( $price );
        }
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad