✨ Introducción y Funcionamiento General
El **SINLI Manager** es una plataforma centralizada para la ingesta, validación y sincronización del catálogo de libros en formato SINLI (Sistema de Información de la Librería) hacia la tienda online de Odoo.
El flujo de procesamiento automático del sistema funciona de la siguiente manera:
-
Monitoreo IMAP: El sistema se conecta a la cuenta de correo electrónico configurada y busca mensajes que contengan archivos de intercambio SINLI adjuntos.
-
Procesamiento de Archivos: Lee y parsea los archivos en formato XML (tipos
LIBROS para nuevos títulos, ESTADO para actualizar stock/disponibilidad y CAMPRE para cambios de precio).
-
Carga en Base de Datos: Inserta o actualiza la información en la base de datos local del panel, descargando las referencias y asociándoles metadatos bibliográficos, precios, dimensiones físicas y clasificaciones oficiales de materias.
-
Sincronización con Tienda: Permite revisar, ajustar precios de forma personalizada y publicar los títulos en la plataforma de Odoo de forma individual o masiva.
💡 Información sobre SINLI: La ventaja de este sistema es que automatiza la entrada de catálogo sin necesidad de insertar los datos manualmente, previniendo errores de transcripción en los códigos de barra (EAN/ISBN) y precios.
📊 Panel de Control (Dashboard)
La pantalla principal proporciona un resumen analítico instantáneo del estado de la base de datos y la tienda, junto con herramientas para el control directo de las integraciones.
Métricas de Estado
- Total libros: El número total de registros de libros cargados en el panel.
- Con precio: Títulos a los que se les ha asignado un precio de venta personalizado.
- Publicados: Libros marcados en el panel con el flag activo de publicación.
- En Odoo: Productos que ya han sido sincronizados y creados en Odoo (tienen un Odoo Product ID asignado).
- En stock: Libros disponibles físicamente para la venta.
- Agotados: Libros cuyo estado de stock indica que no hay unidades en almacén.
Botones de Acción Rápida
-
⚡ Ejecutar Pipeline IMAP: Ejecuta manualmente el proceso de lectura de emails. Buscará nuevos correos con archivos SINLI, descargará sus datos y actualizará el panel de control. Al finalizar el proceso, la consola mostrará un registro con los archivos leídos, inserciones y errores ocurridos.
-
🔌 Test Odoo: Envía una señal de prueba a la API de Odoo para confirmar que la conectividad y las credenciales son correctas y el canal está despejado.
📚 Gestión de Libros (Pestaña Principal)
El catálogo de libros le permite gestionar y curar la información antes y después de enviarla a Odoo. Esta pestaña cuenta con herramientas avanzadas para agilizar el trabajo diario.
1. Búsqueda, Filtros y Ordenación
- Buscador: Introduzca un fragmento del título, autor, ISBN/EAN o editorial para filtrar la tabla en tiempo real.
- Filtro de Estado: Puede filtrar para ver únicamente los libros publicados, los no publicados o ver todo el catálogo.
- Ordenación Dinámica: Haga clic en los encabezados de columna resaltados (ISBN, Título, Autor, Editorial, PVP, Precio o Modificado) para ordenar de forma ascendente o descendente.
2. Precios e IVA
- PVP con IVA: Es el precio recomendado oficial que venía en el archivo SINLI original.
- Precio de Venta (Editable): Es el precio que se aplicará en la tienda de Odoo. Este campo es editable in-line: puede hacer clic sobre el precio de cualquier fila, escribir el nuevo importe y presionar Enter (o hacer clic fuera) para guardarlo inmediatamente en el panel.
3. Acciones Individuales
A la derecha de cada registro se disponen tres botones rápidos:
- ✏️ Editar (Modal): Abre una ficha completa para examinar y refinar los datos bibliográficos, físicos, fiscales (IVA %), clasificaciones del libro, materias y sinopsis.
- 📤 Sincronizar (Sync Odoo): Registra o actualiza este libro directamente en Odoo, asociando su stock, precio de venta e impuestos.
- 🗑️ Eliminar: Elimina permanentemente el libro de la base de datos local del panel de control.
4. Acciones Masivas y Sincronización en Lote
-
Selección múltiple: Marcando las casillas situadas a la izquierda de los libros, puede habilitar el panel inferior de acciones en bloque. Desde allí, podrá Publicar, Despublicar o Eliminar múltiples libros simultáneamente.
-
Sincronizar pendientes: Ubicado en la esquina superior derecha del catálogo, este botón realiza una subida masiva a Odoo de todos aquellos libros marcados como "Publicado" que aún no han sido sincronizados o que han recibido ediciones de precio/datos después de su última sincronización.
5. Tratamiento de Materias (THEMA) y Categorías de Odoo
El sistema se integra con las taxonomías oficiales de la industria editorial para clasificar automáticamente los libros en la tienda online:
-
Traducción de Códigos: Los códigos abstractos de materias que viajan en el archivo SINLI (ej:
WBH) son analizados por el backend y traducidos a texto inteligible en español (ej: "Cocina saludable y de alimentos integrales") gracias a un diccionario integrado de más de 9.000 términos.
-
Jerarquía de Categorías en Odoo: Para evitar desorganizar la tienda online, las materias traducidas se crean en Odoo eCommerce como subcategorías hijas de una categoría raíz común llamada "Librería". Así, la tienda mantendrá un menú de navegación ordenado y legible.
-
Categoría Interna de Inventario: Paralelamente, los productos se asocian a la categoría interna de Odoo llamada "Librería" (con ID 5) para homogeneizar la gestión del stock.
6. Descarga y Optimización de Portadas (Workaround CORS)
Muchas portadas procedentes de servidores externos están protegidas bajo cortafuegos o Cloudflare, bloqueando las descargas directas desde el servidor de base de datos debido a políticas de CORS.
🖼️ Solución mediante el Navegador: El panel implementa una solución que utiliza el propio navegador web del usuario. Cuando se inicia la sincronización de un libro, el navegador del cliente carga la imagen externa de forma nativa, la dibuja de manera invisible en un objeto canvas y extrae su base64 para subirla al servidor. El servidor optimiza y almacena la imagen localmente en formato WebP de alta compresión.
⚠️ Extensión recomendada para solucionar bloqueos de CORS: Para descargar portadas automáticamente desde servidores externos (que no envían por defecto las cabeceras CORS necesarias), el navegador bloquea la lectura del lienzo (canvas) por seguridad. Para evitarlo, es indispensable instalar y activar una extensión que habilite las cabeceras CORS de forma local:
Instrucciones: Una vez instalada la extensión en tu navegador, haz clic en su icono para activarla antes de realizar la descarga de las portadas. Puedes desactivarla cuando finalices la gestión en el panel.
💶 Equivalencias de IVA (Impuestos)
Para asegurar que las facturas y pedidos en la tienda online cumplan con la legislación fiscal, el panel de control incluye un mapeador dinámico de impuestos:
- Impuestos de Venta: En la pestaña "Impuestos" se vinculan los porcentajes de IVA procedentes del SINLI (normalmente
4.00% en libros físicos) con los registros de impuestos configurados en Odoo para ventas (ej. ID de impuesto 1).
- Impuestos de Compra (Proveedores): El sistema resuelve de forma complementaria el impuesto de proveedor idóneo al sincronizar con Odoo, rellenando correctamente las fichas de producto de cara a compras y control de costes.
-
IVA Global por Defecto: Puede designar un mapeo de IVA como el predeterminado del sistema (habitualmente el 4%). Este impuesto se utilizará automáticamente en cualquier libro que no defina un IVA en sus fichas originales o en el que no exista una equivalencia registrada, previniendo fallos en la subida a Odoo.
👥 Gestión de Usuarios
El acceso al panel está restringido mediante seguridad JWT. La pestaña de usuarios permite administrar a las personas autorizadas para gestionar el catálogo:
- Creación: Permite registrar nuevos gestores proporcionando su dirección de correo electrónico, nombre completo y una contraseña inicial segura.
- Edición: Se pueden modificar los nombres, correos o restablecer contraseñas de cuentas existentes en cualquier momento.
- Estado Activo/Inactivo: Si un usuario es marcado como inactivo, perderá inmediatamente la capacidad de acceder al panel y sus sesiones abiertas serán revocadas de manera segura.