Jump to content

larose

Members
  • Posts

    33
  • Joined

  • Last visited

Everything posted by larose

  1. Son muchos los hilos que he estado viendo sobre usuarios que se quejan porque ven en su ficha de producto un precio similar a: 59,01 € Cuando en realidad lo que quieren es que muestre: 59,00 € Y aunque ellos tienen bien puesto el precio sin iva en el Backoffice con el valor 59,00 luego en la ficha de producto se muestra mal. Esto principalmente es debido al orden en el que Prestashop aplica el iva de los productos y las variaciones (recuerdo que esta corrección es para los productos con combinaciones que muestran un desvío decimal en el precio). Para corregirlo hay que editar el archivo /themes/mitema/js/product.js Remplazar sólo las lineas en negrita (línea 630 aprox): // Apply Tax if necessary if (noTaxForThisProduct || customerGroupWithoutTax) { basePriceDisplay = basePriceWithoutTax; priceWithDiscountsDisplay = priceWithDiscountsWithoutTax; } else { basePriceDisplay = basePriceWithoutTax * (taxRate/100 + 1); priceWithDiscountsDisplay = priceWithDiscountsWithoutTax * (taxRate/100 + 1); Por estas otras: //MODIFICACIÓN PARA CORREGIR EL BUG DECIMAL O,O1 QUE APARECE EN LOS REDONDEOS. var redondeadoBase = basePriceWithoutTax * (taxRate/100 + 1); var dosdecimales = redondeadoBase.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]; basePriceDisplay = Number(dosdecimales); priceWithDiscountsDisplay = priceWithDiscountsWithoutTax * (taxRate/100 + 1); var auxPriceWDisplay = priceWithDiscountsDisplay.toString().match(/^-?\d+(?:\.\d{0,2})?/)[0]; priceWithDiscountsDisplay = Number(auxPriceWDisplay); Con esto, ahora la ficha de producto ya debería mostrar el precio sin el céntimo "de sobra". Esto lo he probado en versiones PS 1.6.1.4 en adelante.
  2. Hola Vickyi, entiendo lo que dices porque me pasa lo mismo. ¿Has solucionado el tema? Si es así, por favor comparte con la comunidad cómo lo hiciste. ¿actualizaste el módulo?¿Cambiaste la configuración en el perfil de Paypal? gracias!
  3. Hola a todos, hace mucho que no aportaba algo y hoy he hecho una corrección que me he encontrado. Los usuarios de PS 1.6.0.X que no hayan actualizado tendrán el siguiente error: El PDF de las devoluciones no muestra los datos de empresa como Nombre de la empresa, dirección, teléfono, el CIF, etc. en el encabezado del documento. Para que aparezcan sólo hay que modificar dos ficheros: 1. Editar el fichero /classes/order/OrderSlip.php y añadir, antes de la última llave de cierre " } " estas dos funciones: public static function getCurrentFormattedShopAddress($id_shop = null) { $address = new Address(); $address->company = Configuration::get('PS_SHOP_NAME', null, null, $id_shop); $address->address1 = Configuration::get('PS_SHOP_ADDR1', null, null, $id_shop); $address->address2 = Configuration::get('PS_SHOP_ADDR2', null, null, $id_shop); $address->postcode = Configuration::get('PS_SHOP_CODE', null, null, $id_shop); $address->city = Configuration::get('PS_SHOP_CITY', null, null, $id_shop); $address->phone = Configuration::get('PS_SHOP_PHONE', null, null, $id_shop); $address->id_country = Configuration::get('PS_SHOP_COUNTRY_ID', null, null, $id_shop); return AddressFormat::generateAddress($address, array(), '<br />', ' '); } public static function fixAllShopAddresses() { $shop_ids = Shop::getShops(false, null, true); $db = Db::getInstance(); foreach ($shop_ids as $id_shop) { $address = self::getCurrentFormattedShopAddress($id_shop); $escaped_address = $db->escape($address, true, true); $db->execute('UPDATE `'._DB_PREFIX_.'order_invoice` INNER JOIN `'._DB_PREFIX_.'orders` USING (`id_order`) SET `shop_address` = \''.$escaped_address.'\' WHERE `shop_address` IS NULL AND `id_shop` = '.$id_shop); } } 2. Editar el archivo /pdf/HTMLTemplateOrderSlip.php después de la línea 50 (donde pone "$this->smarty = $smarty; ") añadir lo siguiente: if (!isset($this->order_slip->shop_address) || !$this->order_slip->shop_address) { $this->order_slip->shop_address = OrderSlip::getCurrentFormattedShopAddress((int)$this->order->id_shop); if (!$bulk_mode) { OrderSlip::fixAllShopAddresses(); } } Guardamos y subimos los dos archivos por FTP y ya podremos ver los datos de nuestra tienda en los PDF de devoluciones. Saludos
  4. [sOLVED] ! The sollution aported by user "grumbley" worked fot me. Only adding a line with the country code in lowecase. PD: My version of module is 3.11.1 Thanks
  5. Thanks Vekia. It also worked for me: adding in the DB table ps_cms this two fields "id_shop" and "indexation". Adding only id_shop not worked so I added also de field indexation. No matters clear cache or other changes. SOLVED!
  6. Hola, yo también me estaba volviendo loco y lo solucioné a la primera con esta configuración: Accede al panel de administración, Haz clic en "Preferencias" y luego en la pestaña "Emails", Selecciona "Establecer mis propios parámetros SMTP". "Sólo para usuarios avanzados", - En servidor SMTP: el servidor SMTP introduce el valor "smtp.gmail.com" - En usuario SMTP del usuario: tu dirección de correo gmail o de Google Apps (si tienes en correo de tu dominio allí, por ejemplo) - Contraseña SMTP: contraseña de ese correo electrónico - Encriptación: Gmail utiliza "TLS" - Puerto: Gmail utiliza "465" - Haz clic en el botón "Guardar" Tienes más info en inglés en la web donde encontré la solución: http://www.blmodules.com/prestashop-tutorials-users/how-to-set-send-email-from-prestashop-using-smtp-gmail/#.V1a5UpOLSV4
  7. Thanks to all for this answer. I'll try the codecanyon module, because is the most cheap. I hope solve with that. Regards
  8. Hello, I m searching a module than be able to modify the <title> tag adding several parameters as "manufactuer name", the price, or the category as this example: Product: Car weels Title: "Buy cheap + Car weels + Continental + for + 69$ ". I hope I explained well, thank you.
  9. Es curioso porque tengo otros Prestashop instalados con la misma versión, y no dan problemas. Este en concreto tiene varios idiomas y el Googlebot marca errores en el GWT de cada idioma (tengo un perfil creado para cada idioma de este dominio en GWT).
  10. Hola, He detectado que existe un problema en PS 1.6 cuando el usuario se registra pero no introduce su teléfono, sino que rellena directamente el teléfono móvil. El problema se traslada al panel de gestión de clientes, ya que cuando el administrador quiere ver todos los datos del cliente, NO APARECE NINGÚN TELÉFONO. Ni siquiera el móvil. Esto lo habíamos solucionado provisionalmente, editando las plantillas del administrador del Backoficce: /views/templates/admin/controllers/orders/ Pero la nueva versión PS 1.6.1 corrige este bug, por lo que os recomiendo que actualiceis. Saludos!
  11. Hola a todos, Llevo tiempo en lucha continua con el robot de Google, ya que desde que hizo su último cambio del algoritmo (pensado para priorizar los móviles), en WebmasterTools me llegan periódicamente avisos con el título "el robot de Google no puede acceder a tu sitio". En parte lo he solucionado dando acceso al robot de google por completo, en el archivo robots.txt : User-agent: Googlebot Disallow: Esto ha solucionado parcialmente el problema, ya que en ocasiones Google sigue enviando el mensaje de que no puede acceder al sitio. Os brindo la posibilidad de comentar alguna otra forma de solucionar el acceso de Google a vuestra web. Saludos
  12. Hello, I had the same problem "The mobile theme is disabled" and my solution was simply uninstall the module "Mobile Template". After that I was able to run 1 Click Upgrade module. That SOLVED my problem. Regards
  13. Perdonad la tardanza en responder. Sí, al final lo solucioné actualizando la versión de prestashop a la release 1.6.1 (supongo que la 1.6.2 también lo solucionará). Y después de actualizar volví a configurar y generar el sistema de búsquedas de nuevo; el número mínimo de letras, etc... Este era uno de los bugs que resolvieron en ese update. Espero que así se os solucione el tema. Saludos
  14. Hola familia, He migrado una web de Prestashop 1.5 a Pretashop 1.6 y repasando todo el funcionamiento he detectado que hay un problema en la búsqueda de productos para esta última versión: El caso es que cuando un producto tiene asociadas más de 24 combinaciones de atributos deja de aparecer en las búsquedas, tanto la de Ajax como la página de búsqueda. ¿A alguien más le pasa algo similar?¿Cómo lo solucionásteis? He buscado en la documentación para desarrolladores algún informe de bugs relacionado con esto y no he encontrado nada. He probado a indexar los productos de nuevo, desactivar opciones de caché, cambiar el peso de las búsquedas, etc. pero no se soluciona. Por eso creo que el problema está muy cerca de la relación con un número elevado de combinaciones, en concreto cuando añado 24 combinaciones a un producto deja de aparecer. Espero vuestra gran ayuda!
  15. Hola a todos! Estoy con una tienda que ofrece productos para profesionales y para particulares, de modo que quieren que en las categorías que son de profesionales no se puestre el precio con iva, mientras que en las categorías que son de consumo particular el precio se muestre con iva. Lo iba a apañar de momento en la plantilla del product.tpl con una condición del tipo: {assign var="categorias_sin_iva" value="1,5,8,11,19"} {si $product->idcategoria is in categorias_sin_iva} mostrar precio sin IVA {else} mostrar precio con IVA {/else} {/if} (no os centréis en el pseudocódigo, es sólo un ejemplo) Antes de hacerlo así, pregunto si existe alguna configuración posible en el Backoffice, porque igual que se puede mostrar o no el IVA en funcion de los grupos (menu clientes->grupos->metodo de visualización de precios) se podría hacer en funcion de determinadas categorías. ¿Qué opinais?¿alguien sabe algo?
  16. Cuando aparece este mensaje: Ha introducido caracteres no admitidos en este campo. Los tipos de caracteres actualmente disponibles son: europeo, chino, coreano, japonés y tailandés. Inténtelo de nuevo. Es porque la página desde donde se envían los datos a PayPal no está en UTF-8. La página donde tengas el formulario de envío de datos a PayPal debería de tener una cabecera del tipo: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Saludos
  17. Hola, Perdonad que reabra este post, estaba pendiente el error de "Cart cannot be loaded or an order has already been placed using this cart". Yo tengo el mismo error. Cuando el usuario paga contrareembolso, a veces, se muestra el siguiente mensaje: Cart cannot be loaded or an order has already been placed using this cart o bien en español: El carrito no puede cargarse o ya hay un pedido en el mismo. Mi versión es la 1.4.7.3 He probado con el módulo contrareembolso (cashondelivery) y con el módulo de contrareembolso con recargo (cashondeliverywithfee) de Quixotehosting.com. Con ambos da el mismo problema. Si os sirve de ayuda, haciendo pruebas he concretado que el error surge cuando el pedido tenía varias unidades del mismo producto. Alguien lo ha solucionado? Compartid ;-) -- RECTIFICO -- El problema sólo salta con el módulo de contrareembolso con recargo de Quixotehosting.com, cuando hay varias unidades de un mismo producto en el carrito. Y no es que salga ese mensaje de error, sino que se parte la secuencia de php y al actualizar la página ya muestra el error (lógico).
  18. Para los que no os genera el archivo, entiendo que es un tema de permisos de carpetas. A mí también me pasaba: He dado permisos 777 a todas las carpetas y archivos del módulo googleshopping, incluida la propia carpeta del módulo. También he cambiado el usuario y el grupo (antes era Apache porque instalé el módulo desde el Backoffice y no iba). He creado a mano la carpeta "file_exports" ( que es la que se usa para guardar el archivo xml) y le he dado permisos 777. Con ésto, yo ya he podido generar el listado si problemas. Suerte.
  19. Hola chicos Yo estoy tratando de configurar el módulo de pago Banesto y no estoy seguro de qué "url_ok" y "url_ko" proporcionarle al servicio técnico para que configure el callback y se cierre el proceso de compra en pruebas. No se si es www.midominio.com/modules/bto/recibo.php ó www.midominio.com/modules/bto/validation.php También hay que proporcionar la "url_post" pero me parece que coincide con validation.php ya que es donde está la llamada a la función validateOrder, que procesa el pedido. También he observado que no hay página de error definida, así que he clonado la página pago_error.php y la plantilla pago_error.tpl del módulo Servired y la he adaptado. ¿Vosotros cómo lo hacéis?
  20. Hola, Estoy tratando de configurar el módulo de pago Banesto y no estoy seguro de qué "url_ok" y "url_ko" proporcionarle al servicio técnico para que configure el callback y se cierre el proceso de compra en pruebas. No se si es www.midominio.com/modules/bto/recibo.php ó www.midominio.com/modules/bto/validation.php También hay que proporcionar la "url_post" pero me parece que coincide con validation.php ya que es donde está la llamada a la función validateOrder, que procesa el pedido. También he observado que no hay página de error definida, así que he clonado la página pago_error.php y la plantilla pago_error.tpl del módulo Servired y la he adaptado. ¿Vosotros cómo lo hacéis? Any contribution?
  21. ¿Alguno de vosotros ha conseguido que funcione para Prestashop 1.4? Me pasa lo mismo que a eduardolp Saludos a todos
  22. Hola CPDA, Yo estoy interesado en la misma solución de Banesto para Prestashop 1.4. ¿Me puedes decir cómo lo solucionaste? Saludos!
  23. Hola Piratillar, como ya comenté lo que hago es parsear XML y los pasos serían los siguientes: 1. Guardar el Excel como "Hoja de cálculo XML", manteniendo un cierto orden en los campos. Ese orden se va a seguir luego para recorrer los productos. 2. A través del formulario cuyo código pego a continuación subo el XML, lo parseo, compruebo si hay cambios en los artículos y lo guardo en la BD. Faltan muchas comprobaciones, pero de momento esto es lo que ando probando. El fichero se podría llamar update_stock.php por ejemplo: <?php //Para mostrar errores //error_reporting(E_ALL); //ini_set("display_errors", 1); // incluir la clase PHP para parsear XML require("xml2array.php"); //xml2array.php, u007xml.php ... o algun otro similar // esta funcion ayuda a quitar los saltos de linea y tabulaciones que tiene el Excel XML. function limpiarEspacios($codigo){ $buscar = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s'); $reemplazar = array('>','<','\\1'); $codigo = preg_replace($buscar, $reemplazar, $codigo); $codigo = str_replace("> <", "><", $codigo); return $codigo; } //NUMERO DE FILAS QUE HAY EN EL XML ANTES DEL LISTADO (CABECERAS) $encabezado = $_POST['encabezado']; $salida = ""; $nuevos = 0; $modificados = 0; if($_FILES['file']['tmp_name']){ echo "HAY FILE ".$_FILES['file']['tmp_name']; $archivoXML = file_get_contents ($_FILES['file']['tmp_name']); if (empty($archivoXML)) die( "El archivo no se encuentra o falla. Intentelo de nuevo [<a href=\"javascript:history.go(-1)\">volver</a>]" ."<script type=\"text/javascript\">function volver(){ history.go(-1); } setTimeout(\"volver()\",5000); </script>" ); $cadenaA = str_replace('<NamedCell', '', $archivoXML); $cadenaB = str_replace('ss:Name="_FilterDatabase"/>', '', $cadenaA); $cadenaC = limpiarEspacios($cadenaB); $cadenaLimpia = str_replace('ss:', '', $cadenaC); // resultado : "Antes que ellos tuvieran leyes, León tuvo 24 reyes" print $cadenaLimpia; $xml = new leerXML($cadenaLimpia); //antes leerXML($archivoXML); //$xml->verXML(); $totales = $xml->nFilas; echo("<br />Total artículos a importar: ".($totales - $encabezado)."<br /><br />"); for($i=$encabezado; $i < $xml->nFilas; $i++){ //si hay encabezado "i" empieza en 1, sino en 0. // LA ESTRUCTURA DEL XML OBTENIDO DEBE TENER ESTE ORDEN // 0 <Cell><Data>categoría</Data></Cell> prstshp_category_lang.name // 1 <Cell><Data>subcategoria</Data></Cell> prstshp_category_lang.name // 2 <Cell><Data>subfamilia</Data></Cell> prstshp_category_lang.name // 3 <Cell><Data>MARCAS</Data></Cell> prstshp_manufacturer.name // 4 <Cell><Data>fotos</Data></Cell> // 5 <Cell ss:StyleID="s27"><Data>nombre</Data></Cell> // 6 <Cell ss:StyleID="s27"><Data>REF</Data></Cell> prstshp_product.reference // 7 <Cell ss:StyleID="s27"><Data>pvp web</Data></Cell> // 8 <Cell><Data>keywords</Data></Cell> // 9 <Cell ss:StyleID="s28"><Data>descripciones</Data></Cell> $xml->lista[$i][1] = strtolower($xml->lista[$i][1]); $categoria = $xml->lista[$i][0]; $subcategoria = $xml->lista[$i][1]; $subfamilia = $xml->lista[$i][2]; $marcas = $xml->lista[$i][3]; $fotos = $xml->lista[$i][4]; $nombre = $xml->lista[$i][5]; $referencia = $xml->lista[$i][6]; $pvp_web = $xml->lista[$i][7]; $keywords = $xml->lista[$i][8]; $descripcion = $xml->lista[$i][9]; //COMPROBAMOS QUE EL ARTICULO TIENE REFERENCIA, SI NO TIENE REFERENCIA NO LO METEMOS if(!intval($referencia)){ echo "El producto ".$nombre." NO TIENE REFERENCIA.<br />"; } else{ //Obtener categoría $result = mysql_query("SELECT id_category FROM prstshp_category_lang WHERE name LIKE '".$categoria."'"); if(mysql_num_rows($result) > 0){ $fila = mysql_fetch_assoc($result); $categoria_id = $fila["id_category"]; } //Obtener subcategoria $result = mysql_query("SELECT id_category FROM prstshp_category_lang WHERE name LIKE '".$subcategoria."'"); if(mysql_num_rows($result) > 0){ $fila = mysql_fetch_assoc($result); $subcategoria_id = $fila["id_category"]; } //Obtener subfamilia $result = mysql_query("SELECT id_category FROM prstshp_category_lang WHERE name LIKE '".$subfamilia."'"); if(mysql_num_rows($result) > 0){ $fila = mysql_fetch_assoc($result); $subfamilia_id = $fila["id_category"]; } //Obtener marca $result = mysql_query("SELECT id_manufacturer FROM prstshp_manufacturer WHERE name LIKE '".$marca."'"); if(mysql_num_rows($result) > 0){ $fila = mysql_fetch_assoc($result); $marca_id = $fila["id_category"]; } echo("Cat: $categoria_id - $categoria<br /> Subcat: $subcategoria_id - $subcategoria<br /> Subfam: $subfamilia_id - $subfamilia<br /> Marca: $marca_id - $marca<br /> Fotos: $fotos<br /> Nombre: $nombre<br /> REf: $referencia<br /> PVP: $pvp_web<br /> Keywors: $keywords<br /> $descripcion<br /><br />"); /*** AHORA COMPROBACIONES ***/ //Comprobar duplicados y solo meter los cambios diferentes //comprobar si existe referencia del producto en la Base de Datos $result = mysql_query("SELECT id_product, reference FROM prstshp_product WHERE reference LIKE '".$referencia."'"); if(mysql_num_rows($result) > 0){ //MODIFICAR PRODUCTO EXISTENTE $fila = mysql_fetch_assoc($result); $id_producto = $fila["id_product"]; //mysql_free_result($result); //actualizar nombre, pvp, keyworss y descripction $sql = "UPDATE prstshp_product SET price=".$pvp_web." WHERE reference = ".$referencia."; "; $sql .= "UPDATE prstshp_product_lang SET name='".$nombre."', description = '".$descripcion."', meta_keywords = '".$keywords."' WHERE id_product = ".$id_producto; echo "EXISTE<br />"; //AQUI HABRÁ QUE actualizar categorias //AQUI HABRÁ QUE actualizar marcas //AQUI HABRÁ QUE actualizar fotos } else{ // INSERTAR NUEVO PRODUCTO echo "NUEVO<br />"; //AQUÍ CONSULTA SQL = "INSERT INTO prstshp_product ... " } // if(@mysql_query($sql)){ //SI TUVO EXITO LA INSERCIÓN... $salida .= "EXITO"; } else{ //SI FALLÓ... $salida .= "HUBO UN PROBLEMA EN..."; } } } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="shortcut icon" href="img/favicon.ico" /> <style> body{ font-family:Verdana, Geneva, sans-serif; font-size:11px } table{ font-size:11px } </style> <script type="text/javascript"> <!-- function Blancos(Cadena){ if (Cadena.split(" ").join("").length == 0) return true; else return false; } function validarImp(formulario){ if (Blancos(formulario.file.value)) { window.alert("Ha de indicar el fichero XML"); formulario.file.focus(); formulario.file.select(); return false; } //formulario.submit(); return true; } --> </script> </head> <body bgcolor="#EFEFEF" style="padding:2px"> <table width="100%" border="0" cellpadding="10" cellspacing="0" background="../img/rayas_a.gif" bgcolor="#FFFFFF" style="border:1px solid #6BB8DF"> <tr> <td><form method="post" enctype="multipart/form-data" onsubmit="return validarImp(this);" style="display:inline;"> <input type="hidden" name="MAX_FILE_SIZE" value="2000000" /> <table width="100%" border="0" cellpadding="4" cellspacing="4"> <tr valign="top"> <td width="159">Archivo XML</td> <td colspan="2"><input type="file" name="file" class="form_element" /></td> </tr> <tr align="right"> <td align="left">Quitar filas de encabezado:</td> <td width="522" align="left"><input name="encabezado" type="text" id="encabezado" value="0" size="2" /> <span style="color:#999"> si el archivo tiene alguna fila de cabecera que no es de datos, no incluirla</span></td> <td width="180" align="right"><?php echo $botones ?> <input type="submit" value=" Importar Datos " /> </td> </tr> </table> </form> </td> </tr> </table> <div> <?php if(!$salida){ ?> <span style="color:#6BB8DF"> <strong>ATENCIÓN</strong>: El código XML ha de tener la siguiente estructura:<br /> ...<br /> <Cell><Data>categoría</Data></Cell><br /> <Cell><Data>subcategoria</Data></Cell><br /> <Cell><Data>subfamilia</Data></Cell><br /> <Cell><Data>MARCAS</Data></Cell><br /> <Cell><Data>fotos</Data></Cell><br /> <Cell><Data>nombre</Data></Cell><br /> <Cell><Data>REF</Data></Cell><br /> <Cell><Data>pvp web</Data></Cell><br /> <Cell><Data>keywords</Data></Cell><br /> <Cell><Data>descripciones</Data></Cell><br /> ...<br /> </span> <?php } ?> <?php echo $salida; ?> </div> </body> </html>
  24. Hola, ¿Lo has adaptado para la versión 1.4? Yo estoy tocando esa versión 1.3 pero también me da fallos. En concreto cuando el usuario al finalizar el pago, pincha en Modo de Pago "Tarjeta", vuelve al paso 1 del carrito de la compra. ¿Cómo lo solucionáis?
  25. Hola, Me pasaba lo mismo y lo he solucionado como decía pepocero. Al parecer no deja borrar aquellos productos que interactúen con los pedidos, para no dejar agujeros negros en las relaciones entre tablas y demás. Solucionado.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More