Jump to content

Como hacer que el pedido mínimo sean 6 unidades, pudiendo coger diferentes artículos. Y multiplos 6


LuisValencia

Recommended Posts

Buenos días a todos.

Estoy implementando una tienda de vinos y me he encontrado con el siguiente problema.

Quiero que el cliente pueda comprar 1 unidad de diferentes marcas, siendo el pedido mínimo de 6 unidades y más, pero siempre en multiplos de 6.

El tema es porque por cuestiones de logística hay que enviar cajas de vino de 6 botellas. Ya se que puedo hacer que de una determinada marca el pedido mínimo sean 6 botellas, pero no me refiero a eso, lo que quiero es que el cliente pueda coger 1 botella de cada una de las distintas marcas pero siempre con un mínimo de 6 o multiplos de 6.

Gracias anticipadas.

Edited by LuisValencia (see edit history)
Link to comment
Share on other sites

  • 8 months later...

En OrdenController.php puedes poner una validación extra en la linea 51 (PS 1.5.4.0) p.ej

 

$nbOfProducts=$this->context->cart->getNbProducts($this->context->cart->id);
 $mult_items=6;
 if(($nbOfProducts % $mult_items) != 0){
  $this->step = 0;
  $this->errors[] =sprintf(Tools::displayError(' Only multiples of "%s" are allowed'), $mult_items);
 }

 

Luego traduces el error en el back office

 

Recuerda que los cambios en el Core de PS desaparecen al actualizar.

 

Saludos

Edited by Enrique Gómez (see edit history)
Link to comment
Share on other sites

Creo que aqui: http://www.prestashop.com/forums/topic/228452-resolu-multiple-de-quantite-minimum/page__p__1144311?do=findComment&comment=1144311

 

Update, pour la version 1.5

 

Ajoutez le code qui suit dans la fonction processChangeProductInCart() du CartController

 

 // collisage par qte min
 if ((int)$this->id_product_attribute)
 $minimal_quantity = Attribute::getAttributeMinimalQty($this->id_product_attribute);
 else
  $minimal_quantity = $product->minimal_quantity;				
 if ($this->qty % $minimal_quantity != 0)
   {
	  $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity;
	}
  // fin col par qte min

 

cet ajout doit se faire après les lignes

 

// If no errors, process product addition
if (!$this->errors && $mode == 'add')
{

 

et avant les lignes

 

// Add cart if no cart found
if (!$this->context->cart->id)
{

 

Hablaban de algo parecido.

  • Like 1
Link to comment
Share on other sites

Tal vez me he explicado mal, el pedido minimo ya lo tengo solucionado, lo que necesito que la cesta solo autoriza totales de unidades mutiplos de 6 . Por ejemplo si el cliente compra 7 articulos que apareza un cartel que diga "solo multiplos de 6 gracias" .. es por el tema de las cajas de vinos. y habilite la compra cuando llegue a 12 articulos en total ... y asi infinitamente ... n totales ... puede comprar 6 unidades de un articulo o 1 unidad de 6 articulos ... etc ... loimportante es la cesta. que aparezca un mensaje de error si el total de articulo no es multiplo de 6

 

Me he explicado bien? Gracias por anticipado . Prestashop 1.4.8.2

Edited by neohai (see edit history)
Link to comment
Share on other sites

Vamos a ver ....eso es exactamente lo que hace el trozo de código añadido para la 1.5.4 (no se de donde has sacado lo del pedido mínimo). No te deja tirar para adelante una vez haces el checkout, te sale un mensaje de error que dice "Only multiples of "%s" are allowed" donde esta definido como 6. Luego en el back office tu traduces la frase al español "Solo múltiples de %s estan permitdos, gracias".

 

$nbOfProducts=$this->context->cart->getNbProducts($this->context->cart->id);
 $mult_items=6;
 if(($nbOfProducts % $mult_items) != 0){
  $this->step = 0;
  $this->errors[] =sprintf(Tools::displayError(' Only multiples of "%s" are allowed'), $mult_items);
 }

 

Ahora bien para 1.4.8.2 no creo que sirva.

Link to comment
Share on other sites

¿No te vale esto: http://www.prestasho...restashop-1451/

 

Hola,

esta es la solución que he empleado en 1.4.5.1

 

dentro de CartController.php

en la línea 173~ después de:

if (!sizeof($this->errors))
 {
  if ($add AND $qty >= 0)
  {

 

y antes de:

/* Product addition to the cart */
   if (!isset(self::$cart->id) OR !self::$cart->id)
   {

 

añadimos esto:

// inicio modificación
   if ((int)$idProductAttribute)
		   $minimal_quantity = Attribute::getAttributeMinimalQty((int)$idProductAttribute);
		 else
				 $minimal_quantity = $producToAdd->minimal_quantity;							  
		  if ($qty%$minimal_quantity!= 0)
				   {
						 // $this->errors[] = Tools::displayError('You can only only add this item to your cart with a quantity multiple of ').' '.$minimal_quantity;
						 die('{"hasError" : true, "errors" : ["Este producto únicamente puede ser añadido al carrito en cantidades multiplos de '.$minimal_quantity.'. Por ejemplo: '.($minimal_quantity).', '.($minimal_quantity*2).', '.($minimal_quantity*3).', '.($minimal_quantity*4).'... "]}');
						 }
// fin modificación

 

ahora en "themes/laplantillaqueusemos/js/product.js

cambiar:

if ($('#quantity_wanted').val() < minimal_quantity)

 

por:

// código viejo
// if ($('#quantity_wanted').val() < minimal_quantity)
if ($('#quantity_wanted').val()%minimal_quantity!=0)

 

 

Si se quiere el mensaje de "la cantidad múltiplo de..." en un site multi idioma habrá que emplear

'.Tools::displayError('Error in English.').'

y agregar las correspondientes traducciones

 

 

para la 1.4?

Link to comment
Share on other sites

Me parece Vctor que ese código sirve para añadir múltiples de X al carrito, es decir me imagino que lo que interesa es que tu vayas añadiendo al carrito (una de vino por aquí, un par de otro vino por ahí...) y luego cuando haces el checkout mira que sea multiplo de 6.

Link to comment
Share on other sites

Me parece Vctor que ese código sirve para añadir múltiples de X al carrito, es decir me imagino que lo que interesa es que tu vayas añadiendo al carrito (una de vino por aquí, un par de otro vino por ahí...) y luego cuando haces el checkout mira que sea multiplo de 6.

 

Correcto, eso es lo que necesito Enrique ... justo eso. MEter una regla en la cesta que sin el total de articulos no es multiplo de 6 no permita la compra y envie un mensaje de error

Link to comment
Share on other sites

Correcto, eso es lo que necesito Enrique ... justo eso. MEter una regla en la cesta que sin el total de articulos no es multiplo de 6 no permita la compra y envie un mensaje de error

 

Ah ok.

 

Voy a mirar la 1.4, ahora vengo.

Link to comment
Share on other sites

El problema aquí, es que editar el fichero OrderController y añadir esas lineas de código creo que te suenan a chino.. (sin ofender :) ). Me equivoco?

Realmente no hay forma de configurarlo en el back office, y no creo que haya un módulo para eso (o tal vez si...), así que

la única forma es meterle mano y añadir código.

Un Saludo

Link to comment
Share on other sites

Un poco a chino me suenan, pero no es la primera vez que toco el codigo ... pero he probado ese y en 1.4 no funciona. A ver si Nadie me da una mano, tengo que presentar la tienda añana por la tarde y estoy un poco acojonado realmente

Link to comment
Share on other sites

El problema aquí, es que editar el fichero OrderController y añadir esas lineas de código creo que te suenan a chino.. (sin ofender :) ). Me equivoco?

Realmente no hay forma de configurarlo en el back office, y no creo que haya un módulo para eso (o tal vez si...), así que

la única forma es meterle mano y añadir código.

Un Saludo

 

En Prestashop 1.4.10.0

 

Fichero:

 

/controllers/OrderController.php

 

Debajo de:

 

public function preProcess()
{
 global $isVirtualCart, $orderTotal;
 parent::preProcess();

 

añade esto:

 

$nbOfProducts=self::$cart->getNbProducts((int)self::$cart->id);
 $mult_items=6;
 if(($nbOfProducts % $mult_items) != 0){
 $this->step = 0;
  $this->errors[] =sprintf(Tools::displayError(' Only multiples of "%s" are allowed'), $mult_items);
 }

  • Like 1
Link to comment
Share on other sites

Oficialmente estoy enamorado de Ti ! Jajajaja .Gracias Amigo . Me ghas salvado la vida! Ahora mi pregunta es, para las traducciones?

 

Ya esta ... "MEnsajes de error" Solucionado! Luego posterare la web a ver que les parece..g racias chicos !!!

Link to comment
Share on other sites

Oficialmente estoy enamorado de Ti ! Jajajaja .Gracias Amigo . Me ghas salvado la vida! Ahora mi pregunta es, para las traducciones?

 

Ya esta ... "MEnsajes de error" Solucionado! Luego posterare la web a ver que les parece..g racias chicos !!!

Ve a la pestaña Herramientas -> Traducciones -> Traducciones de los mensajes de errores

Link to comment
Share on other sites

Solo me queda por decir ... GRACIAS!

 

Gracias a usted por confiar en la Comunidad de Prestashop !

 

Un placer ayudarte y servirte!

 

Si das el tema como solucionado, edita el titulo del tema, editando el primer mensaje, pulsando en editar, y después en "Usar editor completo", añadiendo la palabra "Solucionado" al titulo, esto ayudara, a mantener una mayor organización en el foro.

 

Un saludo y recuerda que estaremos en el foro, para guiarte por este mundo oscuro y tenebroso.

Link to comment
Share on other sites

Bueno, al final ha quedado un post bastante útil, esta el código para 1.5 y para 1.4 para hacer el pedido múltiplos de X. Sólo hay que cambiar

$mult_items=6;

 

Saludos

 

Ese es el poder de la Comunidad, la colaboración entre todos los usuarios !

 

Forza Prestashop !

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...