GestiLibro

Módulo de Odoo 18 · ERP

Módulo de Odoo 18 para una cadena de librerías: catálogo, stock por tienda, ventas con validación de existencias y facturación automática.

Autoría
Proyecto propio
Rol
Diseño y desarrollo completos
Contexto
Proyecto académico · DAM
Periodo
Abr – Jun 2026
Plataformas
Odoo 18

El proyecto

GestiLibro cubre el ciclo completo de una cadena de librerías dentro de Odoo 18: catálogo con ISBN y portadas, autores y editoriales, inventario independiente por tienda, ventas y clientes fidelizados.

Es un módulo propio, con modelos en Python, vistas en XML y reglas de seguridad, que se apoya en la contabilidad de Odoo en lugar de reinventarla. El repositorio incluye un entorno reproducible con Docker Compose (Odoo 18 + PostgreSQL 15) y 81 registros de demostración.

Lo que construí

  • Modelo de datos

    Ocho modelos propios (libros, géneros, autores, editoriales, tiendas, stock, pedidos y líneas) y dos extensiones por herencia: res.partner para clientes con código y puntos, y account.move para enlazar cada factura con su pedido.

  • Vistas

    Kanban con portadas, calendario de ventas coloreado por tienda, tabla dinámica de análisis y botones de acceso cruzado entre pedidos, facturas y clientes.

  • Seguridad

    Tres roles encadenados (Consulta, Vendedor y Gestor) con reglas de registro que limitan al vendedor a su propia tienda.

modelos propios y heredados
8 + 2
roles con reglas de registro
3
registros de demostración
81
commits
18

Decisiones técnicas

  • Vender dispara la contabilidad

    Confirmar un pedido valida el stock de la tienda, lo descuenta, asigna la numeración (ORD/2026/0001) y crea la factura como account.move en borrador. Al marcarlo como hecho, la factura se contabiliza sola. El selector de libros solo ofrece títulos con existencias en esa tienda.

  • Vender sin ser contable

    El vendedor no tiene permisos de Contabilidad. La factura se crea y se publica con sudo() solo en ese punto: el privilegio se eleva para una operación concreta, no para el usuario.

  • Aislamiento por tienda

    Las reglas de registro (ir.rule) separan lectura y escritura: un vendedor consulta las ventas y el stock de toda la cadena, pero solo crea o modifica los de la tienda de la que es responsable. El gestor lo ve todo sin necesidad de ser administrador de Odoo.

  • Integridad en dos niveles

    Restricciones SQL (un único registro de stock por libro y tienda, y cantidades no negativas) más validaciones en Python para la lógica de negocio. La disponibilidad de cada libro y el aviso de stock bajo mínimo son campos calculados.

Evolución

  1. Abr 2026

    Primeras entregas: modelos base, vistas y entorno Docker.

  2. May 2026

    Vistas Kanban, clientes y stock por tienda. Integración de las ventas con account.move.

  3. Jun 2026

    Revisión de roles y reglas de registro, y corrección de seguridad en ventas.

Stack

  1. Módulo

    • Odoo 18
    • Python 3.12
    • XML (vistas)
    • PostgreSQL 15
  2. Entorno

    • Docker Compose