FAQS / Preguntas frecuentes
1. Al sincronizar en un ecommerce, ¿sobreescribe datos existentes, los duplica o es necesario eliminarlos?
R: Los datos existentes en una instalación no se eliminan, ni es necesario eliminarlos. Para sincronizar los datos, se busca una relación de ID entre los elementos existentes con los de Sales Layer (normalmente por una tabla intermedia, o atributos generados en el ecommerce). Si existe dicha relación, se actualizan los datos. En caso de no existir, buscaremos entre los elementos existentes uno que tenga la misma referencia o nombre, y que no esté asignado con otro ID de Sales Layer (pertenece a otro conector u otra empresa).
Si lo encontramos, establecemos relación y se actualizan datos. Si no se encuentra ningún registro, entonces se crea.
2. Si elimino un producto directamente del PIM, ¿se borra también en el ecommerce?
R: Las categorías y los productos cambian a estado a desactivado y las variantes se eliminan. Sin embargo, si se refresca, o modifica el conector antes de que pueda sincronizar, los productos no se eliminarán y se quedarán en un estado inconsistente (existen en el ecommerce pero no en Sales Layer). En este caso la única manera de eliminarlos es directamente desde el e-commerce.
3. ¿Cuánto tiempo tarda en sincronizar un ecommerce?
R: Es un poco relativo, pero aunque depende del ecommerce, recursos, cantidad de elementos existentes, etc. Podríamos decir que 0,5-1,5 segundos por categoría y variantes, y 1-3 segundos por producto, al menos para la creación, la sincronización una vez generados los elementos tarda menos tiempo. Y si no se procesan muchas imágenes nuevas es más rápido.
4. En la consola me sale un error de Ajax 404.
R: Este error puede llegar por muchos motivos. La forma para reconocer que existe un error de Ajax es la que indicamos en la imagen.
Habitualmente, nos hemos encontrado con un error que proviene de cambios en los dominios de PrestaShop. De tal forma que, si en la instalación de PrestaShop figuraba antes un dominio que ya no existe, es posible que internamente queden restos de reglas de redireccionamiento no actualizados en el fichero
Este error de Ajax no cancela la sincronización. El plugin usa Ajax para que el cliente de forma cómoda y gráfica, pueda gestionar y ver el estado de su sincronización. El módulo tiene implementada la capa de seguridad para que en el caso de que se produzca un error de Ajax, se realice el envío del formulario por post para completar la acción.

5. ¿Cuándo se actualiza un producto y un campo del mismo no está casado en el conector se seguiría añadiendo ese producto para actualizar?
R: Sí, cuando un producto se modifica siempre se envía.
6. ¿Qué significan los colores de los módulos de PHP en la pestaña Diagnostics?
R: En esta pestaña podemos ver módulos de diferentes colores: Verde, Gris y Azul, y cuyo significados son:
- Verde: Sales Layer y la instalación de PrestaShop utilizan ese módulo, lo comparten.
- Gris: Sales Layer utiliza ese módulo, pero la instalación de PrestaShop no la utiliza.
- Azul: Sales Layer NO utiliza ese módulo, pero la instalación de PrestaShop, sí.

7. ¿Cómo se cambia la versión del plugin?
R: Si desea cambiar la versión del plugin, le recomendamos que actualice el módulo en PrestaShop en lugar de desinstalarlo. Desinstalando el plugin perderá todos los enlaces de artículos entre Sales Layer y PrestaShop. Al instalar el plugin desde el nuevo, algunas modificaciones no se reflejarán en PrestaShop (el cambio del estado del producto por borrador / invisible).
8. ¿Cómo exportar imágenes de productos desde PrestaShop?
R: A menudo se encontrará con una situación en la que necesita cargar datos desde PrestaShop a Sales Layer. Esto puede conducir a un problema común debido a la forma en que PrestaShop gestiona el sistema de nomenclatura de imágenes. Una vez que una imagen se carga en PrestaShop, se almacena con un sistema de identificación de carpetas y un nombre único por imagen.
Por ejemplo:
- Para productos: http://dominio/img/p/1/2/3/4/1234.jpghttp://dominio/img/p/1/2/3/5/1235.jpg
- Para categorías: http://dominio/img/c/1/2/3/4/1234.jpghttp://dominio/img/c/1/2/3/5/1235.jpg
Y cuando se accede a las mismas imágenes en la tienda, PrestaShop sustituye el identificador de la imagen por el del producto/categoría de esta forma
- http://dominio/1234-prod_default/producto.jpghttp://dominio/1235-prod_default/producto.jpg
Esa es la razón por la que la url se exporta así cuando viene directamente de una exportación de PrestaShop: carpetas diferentes, mismo nombre para la imagen. Luego cuando Sales Layer la importa, como el nombre no se puede duplicar, sólo subirá una con el mismo nombre.
Para evitar esta situación es posible modificar la configuración desde PrestaShop. Debe ir a Configurar >Parámetros avanzados >Base de datos> Añadir nueva consulta SQL:

Y luego añadir la siguiente consulta, con el fin de obtener el contenido para exportar desde prestashop en un archivo CSV . Con este contenido csv, podemos importarlo a Sales Layer.
(Ten en cuenta que este ejemplo utiliza un nombre de dominio falso como ejemplo).
SELECT aux.reference,
Group_concat(aux.img SEPARATOR ' ,') AS imagenes
FROM (SELECT p.id_product,
p.reference,
CASE
WHEN Length(im.`id_image`) = 6 THEN
Concat('https://yourdomain.com ', '/img/p/', INSERT(
INSERT(
INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), 8, 0, '/'), 10, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 5 THEN
Concat('https://yourdomain.com ',
'/img/p/',
INSERT(INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), 8, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 4 THEN
Concat( 'https://yourdomain.com ', '/img/p/',
INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 3 THEN Concat(
'https://yourdomain.com ', '/img/p/', INSERT(
INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 2 THEN Concat(
'https://yourdomain.com ', '/img/p/',
INSERT(im.`id_image`, 2, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 1 THEN Concat(
'https://yourdomain.com ', '/img/p/',
INSERT(im.`id_image`, 2, 0, '/'), im.`id_image`, '.jpg')
ELSE ''
end AS "img",
im.cover
FROM ps_product p
LEFT JOIN ps_image im
ON ( im.id_product = p.id_product )
ORDER BY cover DESC) AS aux
GROUP BY id_product;
Hay que tener en cuenta dos aspectos sobre esta consulta:
- El nombre de dominio tiene que ser adaptado en todo el concat (con la URL)
- Hay que incluir el orden de las imágenes para que la imagen de portada siga el orden de las imágenes.
A partir de aquí, sólo será necesario adaptar la consulta para las categorías y cualquier otro campo de imagen para importar en Sales Layer.
9. ¿Qué hago cuando hay un error de sincronización con Productos Relacionados y Productos Empaquetados?
R: ¿Es posible que la primera vez que se sincroniza un pack de productos o un producto relacionado, no se encuentre el enlace de referencia al pack de productos? Esto ocurre porque el producto relacionado no está en la base de datos.
syncOneProduct() > product reference : "myProduct" product type pack. ## Error. Product reference to link does not yet exist ->Array
Para resolver este problema, es posible que desee volver a sincronizar y descargar los datos de nuevo utilizando el conector del complemento.
10. Errores de sincronización con el ID de catálogo no existe en la tabla
R: Cuando vea este mensaje:
syncOneProduct() > ## Error. product reference : "myProduct" The catalog with ID :X for the company with ID: XXXX does not exist in the table. It is possible that it has been deactivated or deleted.Change the state of the category and of the product to invisible,and then back to visible again so that the issue can be resolved.
Ignórelo, no es un error.
11. ¿Qué ocurre cuando se produce un error de paginación porque hay demasiados elementos en una página?
R: Cuando esto sucede:
storeSyncData() > ##Error.:xxx Msg: Error connection: Empty reply from server
El plugin tiene una paginación alta configurada en el conector para los elementos que está sincronizando.
Para solucionar este problema, espere a que finalicen los procesos de sincronización y vuelva a sincronizar, pero esta vez seleccione un número menor de páginas en el conector.
12. Depuración de un elemento a bajo nivel
R: A partir de la versión 2.1.1 del plugin, se introduce la posibilidad de depurar elementos específicos con un nivel de detalle completo. Esta funcionalidad funciona incluso con los registros de depuración desactivados en la sección "Diagnósticos".
La funcionalidad es aplicable a categorías, productos y variantes.
Para activarla, hay que seguir los siguientes pasos:
- Crear un registro en la tabla "slyr_additional_config", que se creará con el prefijo de tabla elegido por el cliente en su instalación de Prestashop.
- Cree una fila por cada tipo de elemento que desee depurar. Por ejemplo, cree un registro con configname = {CATEGORY_LOG, PRODUCT_LOG, VARIANT_LOG}, y con save_value = ID:38034|ref:WOOD-TABLE-1000.
En estos registros, puede añadir:
- ID internos del artículo de la capa de ventas utilizando: ID
- Referencias de artículos del cliente utilizando: ref
- El operador | permite añadir múltiples artículos, teniendo en cuenta que la longitud de este campo es de 500 caracteres por defecto.
Como resultado, los detalles de estos elementos se mostrarán en los registros de depuración.