JotaCe Posted November 1, 2014 Share Posted November 1, 2014 He buscado por ahí y no me queda claro si es posible: he visto soluciones complejas, creando diferentes transportistas por zonas y dejando alguno gratis con la condición de zona y precio, etc, pero no sé si en las últimas versiones de Prestashop (o toqueteando algún archivejo) será posible hacerlo. Lo que quiero es establecer transporte gratuito a partir de x€ de compra, pero sólo para la zona "Península", no para Baleares o Canarias (sería una ruina dejarlos gratis...). ¿Cómo podría hacerlo? Gracias. Link to comment Share on other sites More sharing options...
lastapril Posted November 1, 2014 Share Posted November 1, 2014 Si tienes creadas las zonas que comentas es muy sencillo, en transportistas crea uno nuevo, le das su nombre y todo pasas a la siguiente pagina y seleccionas los datos que te interesen de la parte superior y en la inferior seleccionas por ejemplo la zona peninsula y en la primera columna por ejemplo pones de 0€ a 75€ y en la casilla de peninsula le pones el precio, ahora añades otro rango de 75€ a XXXXXXX€ y en la casilla peninsula le pones 0 y sigues adelante, con eso ese transportista es gratuito a partir de 75€ luego creas los otros transportistas de igual forma para el resto de zonas Link to comment Share on other sites More sharing options...
JotaCe Posted November 1, 2014 Author Share Posted November 1, 2014 Pero de esa forma, ese transportista tendría un precio único para la península, y yo necesito que el precio varíe en función de los kg, aparte de ser gratis a partir de x€. Link to comment Share on other sites More sharing options...
JotaCe Posted November 2, 2014 Author Share Posted November 2, 2014 ¿Ninguna solución? ¿Nadie se ha encontrado antes con este problema...? Link to comment Share on other sites More sharing options...
ventura Posted November 2, 2014 Share Posted November 2, 2014 Para que funcione como quieres tienes que utilizar alguno modulo o realizar algún desarrollo de este tipo, de esta manera podrás configurar la gratuidad del transporte a partir de determinada cantidad en cada transportista asignado a cada zona http://blog.belvg.com/zone-based-shipping-limitations-and-choices-in-prestashop.html Link to comment Share on other sites More sharing options...
JotaCe Posted November 2, 2014 Author Share Posted November 2, 2014 Vaya, parece más complejo de lo que esperaba... Gracias por el enlace, lo estudiaré en detalle a ver si consigo ponerlo a mi gusto. Link to comment Share on other sites More sharing options...
JotaCe Posted November 5, 2014 Author Share Posted November 5, 2014 (edited) Bueno, con algo de retraso, pero he probado lo que contaban en http://blog.belvg.com/zone-based-shipping-limitations-and-choices-in-prestashop.html, con muy poco éxito (como ya apuntaban en los comentarios a esa misma entrada). El caso es que todo lo que proponen parece lógico... pero algo hay mal en los archivos que mete en el override (el carrier, el cart, o el controlador) que se carga la web. El problema no está en la base de datos (le meto los campos nuevos y todo va bien, sin problema, como era de esperar) sino en alguno de esos archivos. Los he examinado en detalle y no veo nada raro, pero claro, mi experiencia en esto es cercana a cero. Os copio aquí los archivos en cuestión por si alguien encuentra algún posible error. Creo que es interesante, porque de funcionar, sería muy útil para mucha gente, creo yo. Adjunto los archivos en cuestión y un resumen de los pasos a seguir, sacado del blog anterior. Saludos y suerte, si alguien se anima a intentar hacerlo funcionar. Carrier.php Cart.php INSTRUCCIONES.doc AdminCarrierWizardController.php Edited November 5, 2014 by JotaCe (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted November 5, 2014 Share Posted November 5, 2014 Que errores te muestra al petar la web Link to comment Share on other sites More sharing options...
JotaCe Posted November 6, 2014 Author Share Posted November 6, 2014 Que errores te muestra al petar la web Pues al intentar entrar en la web aparece este bonito rosario de texto en el navegador: 'carrier', 'primary' => 'id_carrier', 'multilang' => true, 'multilang_shop' => true, 'fields' => array( /* Override reason */ 'shipping_free_price' => array('type' => self:: TYPE_FLOAT, 'validate' => 'isFloat'), 'shipping_free_weight' => array('type' => self:: TYPE_FLOAT, 'validate' => 'isFloat'), /* Classic fields */ 'id_reference' => array('type' => self::TYPE_INT), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCarrierName', 'required' => true, 'size' => 64), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'is_free' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'url' => array('type' => self::TYPE_STRING, 'validate' => 'isAbsoluteUrl'), 'shipping_handling' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'shipping_external' => array('type' => self::TYPE_BOOL), 'range_behavior' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'shipping_method' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_width' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_height' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_depth' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_weight' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat'), 'grade' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'size' => 1), 'external_module_name' => array('type' => self::TYPE_STRING, 'size' => 64), 'is_module' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'need_range' => array('type' => self::TYPE_BOOL), 'position' => array('type' => self::TYPE_INT), 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), /* Lang fields */ 'delay' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128), ), ); } 'carrier', 'primary' => 'id_carrier', 'multilang' => true, 'multilang_shop' => true, 'fields' => array( /* Override reason */ 'shipping_free_price' => array('type' => self:: TYPE_FLOAT, 'validate' => 'isFloat'), 'shipping_free_weight' => array('type' => self:: TYPE_FLOAT, 'validate' => 'isFloat'), /* Classic fields */ 'id_reference' => array('type' => self::TYPE_INT), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCarrierName', 'required' => true, 'size' => 64), 'active' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true), 'is_free' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'url' => array('type' => self::TYPE_STRING, 'validate' => 'isAbsoluteUrl'), 'shipping_handling' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'shipping_external' => array('type' => self::TYPE_BOOL), 'range_behavior' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'shipping_method' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_width' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_height' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_depth' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt'), 'max_weight' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat'), 'grade' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'size' => 1), 'external_module_name' => array('type' => self::TYPE_STRING, 'size' => 64), 'is_module' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), 'need_range' => array('type' => self::TYPE_BOOL), 'position' => array('type' => self::TYPE_INT), 'deleted' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'), /* Lang fields */ 'delay' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128), ), ); } Link to comment Share on other sites More sharing options...
JotaCe Posted November 6, 2014 Author Share Posted November 6, 2014 Por cierto, un detalle del que no me había dado cuenta hasta ahora, por si sirviera de pista: Aunque los 3 archivos que se meten en el override son .php, el explorador de archivos de mi servidor los identifica como php uno de ellos (el controlador), como txt otro (el cart.php) y como C++ el otro (el carrier.php). Link to comment Share on other sites More sharing options...
ventura Posted November 6, 2014 Share Posted November 6, 2014 como estas subiendo los archivos, ftp ?, las rutas son las correctas ? Link to comment Share on other sites More sharing options...
JotaCe Posted November 7, 2014 Author Share Posted November 7, 2014 (edited) Los subo utilizando el explorador de archivos de mi host, por comodidad. Podría hacerlo por ftp, no hay problema. Supongo que piensas que puedan sufrir alguna transformación rara, ¿no? Hasta ahora no me ha dado problemas subir otros así, pero bueno, probaré por ftp esta tarde (ahora no puedo). Sobre la ruta, los pongo donde indican (lo que no sé es si esto es correcto o no): el cart.php y carrier.php dentro de la carpeta \override\classes. El AdminCarrierWizardController.php, dentro de \override\controllers. Directamente en esas carpetas, no en ninguna de las subcarpetas que hay en cada uno de ellos. Una duda que me surge (porque no sé cómo funciona el php y el tema de los overrides, mis conocimientos técnicos son más bien limitados) es si están bien hechos los archivos. Me explico: los archivos que subo a “override” contienen sólo una pequeña parte del archivo original. Si el “override” funciona leyendo el archivo “base” y aplicándole después encima lo que lee del archivo del “override”, entonces ok. Pero si el override funciona saltándose el archivo “base” o original, y tomando directamente el situado en “override”, entonces es lógico que no funcione, porque este archivo sólo tiene una pequeña parte de la información del archivo completo. No sé si me explico… Saludos. Edited November 7, 2014 by JotaCe (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted November 7, 2014 Share Posted November 7, 2014 Los archivos override sobreescriben las funciones incluidas en los archivos originales editandolas o añadiendo nuevas funciones. En cuanto a las rutas en muy importante seguirlas ya que imitan a las de la instalación de base, es decir el archivo AdminCarrierWizardController.php Tendría que estas en la ruta override/controllers/admin Si alguna carpeta no existe tendrás que crearla Link to comment Share on other sites More sharing options...
JotaCe Posted November 7, 2014 Author Share Posted November 7, 2014 ok, gracias, entonces veo que las rutas están mal. Probaré a ver si es ése el problema. Por terminar de entenderlo (por culturilla), ?entonces los archivos override sobreescriben SOLO lo que ellos contienen, manteniendo el resto? ¿Es decir, son complementarios al original, no sustitutos? Link to comment Share on other sites More sharing options...
ventura Posted November 7, 2014 Share Posted November 7, 2014 exactamente, asi es Link to comment Share on other sites More sharing options...
Recommended Posts