LuisValencia Posted October 29, 2012 Share Posted October 29, 2012 (edited) 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 October 29, 2012 by LuisValencia (see edit history) Link to comment Share on other sites More sharing options...
neohai Posted July 24, 2013 Share Posted July 24, 2013 Yo tambien estoy en la busqueda de eso, si se de algo lo pondre aqui . Link to comment Share on other sites More sharing options...
Enrique Gómez Posted July 24, 2013 Share Posted July 24, 2013 (edited) 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 July 24, 2013 by Enrique Gómez (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted July 24, 2013 Share Posted July 24, 2013 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. 1 Link to comment Share on other sites More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 Como se pone una validacion? Link to comment Share on other sites More sharing options...
Enrique Gómez Posted July 25, 2013 Share Posted July 25, 2013 (edited) Se trata de añadir esas líneas de código en la línea 51 en el fichero OrderController.php que se encuentra en controllers/front/ Ten en cuenta que es para PS 1.5.4 que versión usas tú? Edited July 25, 2013 by Enrique Gómez (see edit history) Link to comment Share on other sites More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 (edited) 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 July 25, 2013 by neohai (see edit history) Link to comment Share on other sites More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 Seria programar la cesta para que solo permita compras con total de articulos multiplos de 6. en caso de no serlo, mensaje de error ... Gracias Link to comment Share on other sites More sharing options...
Enrique Gómez Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 ¿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 More sharing options...
Enrique Gómez Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 Yo soy nuevito, pero para su nivel, no creo que sea tan complicado, son unos masters en Prestashop ... yo soy un "PrestaShop Newbie" jejeje Link to comment Share on other sites More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
Enrique Gómez Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 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); } 1 Link to comment Share on other sites More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 Prueba el ultimo mensaje que te acabo de dejar. Link to comment Share on other sites More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
neohai Posted July 25, 2013 Share Posted July 25, 2013 Solo me queda por decir ... GRACIAS! Link to comment Share on other sites More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
Enrique Gómez Posted July 25, 2013 Share Posted July 25, 2013 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 Link to comment Share on other sites More sharing options...
nadie Posted July 25, 2013 Share Posted July 25, 2013 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 More sharing options...
Recommended Posts