Jump to content

Añadir excepción a Cart Rule


jose.alonso

Recommended Posts

Hola amigos!

 

Me gustaría saber como se pueden añadir excepciones "cart rule" a una categoría en concreto, como por ejemplo "Outlet"

 

Actualmente tengo el siguiente código:

          $cart_rule = new CartRule();
                $cart_rule->id_customer = (int)$this->context->cart->id_customer;
                $cart_rule->name = array(Configuration::get('PS_LANG_DEFAULT') => $email);
                $cart_rule->quantity = 1;
                $cart_rule->quantity_per_user = 1;
                $cart_rule->code = $random;
                $cart_rule->date_from = date('Y-m-d H:i:s', time());
                $cart_rule->date_to = date('Y-m-d H:i:s', time() + 24 * 36000);
                $cart_rule->active = 1;
                $cart_rule->reduction_percent = PORCENTAJE;
                $cart_rule->add();
    }

Gracias y un saludo.

Edited by jose.alonso (see edit history)
Link to comment
Share on other sites

Al final he encontrado la solución por mi cuenta y la comparto con todos ustedes, por si a alguien la necesita algún día.

 

Dentro de  /classes/CartRule.php

 

y antes de la línea  en la que aparece el siguiente código: 

  $nb_products = Cart::getNbProducts($context->cart->id);

Colocar lo siguiente:

if(!isset($products))
    $products = $context->cart->getProducts();

if($products)
{
    foreach ($products as $prod) {
     $prod_categories = Product::getProductCategories($prod['id_product']);
     if(in_array(110, $prod_categories))       /****El 110 hace referencia a la categoría que no quiero que se aplique el descuento****/
                 return (!$display_error) ? false : Tools::displayError('Uno o más productos de su carrito no son compatibles con este descuento');       
    }
}

Como resultado final quedaría así:

if(!isset($products))
    $products = $context->cart->getProducts();

if($products)
{
    foreach ($products as $prod) {
     $prod_categories = Product::getProductCategories($prod['id_product']);
     if(in_array(110, $prod_categories))       /****El 110 hace referencia a la categoría que no quiero que se aplique el descuento****/
                 return (!$display_error) ? false : Tools::displayError('Uno o más productos de su carrito no son compatibles con este descuento');       
    }
}



$nb_products = Cart::getNbProducts($context->cart->id);
Edited by jose.alonso (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...