#Introducción — Integración Deltav → Odoo 17
Objetivo, alcance y casos de uso de la integración entre Deltav y Odoo 17.
#Objetivo
Conectar el sistema externo Deltav con Odoo 17 mediante tres componentes que trabajan en conjunto:
- Un middleware REST que traduce llamadas a JSON-RPC interno de Odoo.
- Un módulo Odoo
deltav_connectorcon modelos, vistas y controladores HTTP. - Un módulo Odoo
integrador_odoo2deltaque notifica automáticamente al sistema externo cuando se crean o confirman documentos de venta y compra.
Esto permite sincronización bidireccional de entidades de negocio clave sin intervención manual.
#Componentes del Proyecto
#Middleware REST (FastAPI)
API REST que expone endpoints para que el sistema externo envíe datos a Odoo. Autentica por API Key + JWT, resuelve external_ref → odoo_id vía Mapping DB, y garantiza idempotencia en todas las operaciones de escritura.
#Módulo deltav_connector
Módulo nativo de Odoo 17 que extiende el ERP con:
- Modelos custom para la configuración y auditoría de la integración
- Vistas (form, tree, search) y menú de configuración
- Controladores HTTP y lógica de sincronización DeltaV ↔ Odoo
- Reglas de seguridad (ACL) y permisos por rol
#Módulo integrador_odoo2delta
Módulo nativo de Odoo 17 que extiende los módulos de Ventas y Compras para notificar automáticamente al sistema externo:
| Módulo Odoo extendido | Evento | Acción |
|---|---|---|
sale.order | create / action_confirm | HTTP POST a API externa con payload de venta |
purchase.order | create / button_confirm | HTTP POST a API externa con payload de compra |
Incluye configuración de URL de API externa, reintentos, logging y manejo de errores HTTP.
Flujo: Odoo → evento (create/confirm) → hook → HTTP POST → API del sistema externo (DeltaV)
#Alcance
| Incluido | Fuera de alcance |
|---|---|
| Autenticación por API Key + JWT | Single Sign-On (SSO) |
Upsert de contactos (res.partner) | Gestión de oportunidades CRM |
Upsert de productos con variantes (product.template + product.product) | Pricing avanzado o reglas de precio |
Upsert de listas de materiales (mrp.bom + mrp.bom.line) | Planificación de producción (MRP scheduler) |
Creación y conciliación de pagos (account.payment) | Facturación electrónica o fiscal |
| Mapeo external_id → odoo_id vía Mapping DB | Migración masiva de datos históricos |
Idempotencia por external_ref en POST | Webhooks entrantes hacia Odoo |
| Rate limit de 100 req/min por API Key | Multi-tenancy |
| Notificaciones salientes de ventas y compras al sistema externo | Sincronización de otros modelos (inventario, contabilidad, etc.) |
| Reintentos automáticos con backoff exponencial en notificaciones salientes | Procesamiento de respuestas de negocio del sistema externo |
Módulo deltav_connector — modelos, vistas, sync, seguridad | Modificaciones a otros módulos de Odoo |
Módulo integrador_odoo2delta — hooks en sale.order y purchase.order | Notificaciones de otros documentos (facturas, albaranes, etc.) |
#Casos de uso
#1. Sincronización de contactos
El sistema externo envía un contacto (empresa o individuo). El middleware lo crea o actualiza en Odoo por external_ref y devuelve el odoo_id mapeado.
Flujo: POST /v1/contacts → lookup mapping → upsert res.partner → respuesta con ID
#2. Alta de productos con variantes
El sistema externo define un producto con atributos (color, talle, etc.). El middleware crea product.template, genera las variantes (product.product) y mapea cada una.
Flujo: POST /v1/products → crear template → generar variantes → mapear template + variantes
#3. Definición de lista de materiales (BoM)
El sistema externo envía una BoM con sus componentes. El middleware resuelve las dependencias (productos deben existir) y crea mrp.bom + mrp.bom.line.
Flujo: POST /v1/boms → resolver producto y componentes → crear BoM → mapear
#4. Registro de pagos
El sistema externo informa un pago asociado a facturas de Odoo. El middleware crea account.payment, concilia contra las facturas indicadas y confirma la operación.
Flujo: POST /v1/payments → resolver partner + facturas → crear pago → action_post() → respuesta
#5. Notificación de ventas al sistema externo
Cuando se crea o confirma un sale.order en Odoo, el módulo integrador_odoo2delta envía automáticamente un HTTP POST a la API del sistema externo con los datos de la orden.
Flujo: sale.order confirmado → hook integrador_odoo2delta → HTTP POST → API DeltaV → confirmación
#6. Notificación de compras al sistema externo
Cuando se crea o confirma un purchase.order en Odoo, el módulo integrador_odoo2delta envía automáticamente un HTTP POST a la API del sistema externo con los datos de la orden de compra.
Flujo: purchase.order confirmado → hook integrador_odoo2delta → HTTP POST → API DeltaV → confirmación
📄 Ver también: Arquitectura · API Doc