Puente de migración de contactos Odoo v11 → v19 para Daniela. Clasifica, valida contra SII y migra con confirmación de JIND.
Find a file
Hermes Agente a505c6f3e1 feat: odoo-bridge — migración de contactos v11 → v19
Script puente para Daniela que:
- Clasifica contactos por prioridad (clientes → proveedores)
- Valida RUT contra SRE/SII
- Detecta duplicados por email, RUT y nombre
- Revisión lote por lote con confirmación de JIND
- Modo dry-run, enriquecimiento sin sobrescribir
- Metadata de trazabilidad en cada contacto migrado
2026-06-25 06:33:03 +00:00
.gitignore feat: odoo-bridge — migración de contactos v11 → v19 2026-06-25 06:33:03 +00:00
odoo_bridge.py feat: odoo-bridge — migración de contactos v11 → v19 2026-06-25 06:33:03 +00:00
README.md feat: odoo-bridge — migración de contactos v11 → v19 2026-06-25 06:33:03 +00:00
requirements.txt feat: odoo-bridge — migración de contactos v11 → v19 2026-06-25 06:33:03 +00:00

odoo-bridge — Migración de contactos Odoo v11 → v19

Puente de migración para Daniela, asistente ejecutiva de OdooCoop SpA. Transfiere contactos desde Odoo v11 (legado, 2,059 contactos) a Odoo v19 (destino, 96 contactos iniciales), validando cada uno contra el Servicio de Registro de Empresas (SII) y evitando duplicados.

Arquitectura

┌──────────┐     ┌──────────┐     ┌──────────┐
│ Odoo v11 │     │ Odoo v19 │     │ SRE/SII  │
│ (legado) │     │ (destino)│     │  :5000   │
└────┬─────┘     └────┬─────┘     └────┬─────┘
     │ XML-RPC        │ JSON-RPC       │ REST
     │                │ +API key       │ token
     └────────┬───────┴────────┬───────┘
              │                │
         ┌────┴────────────────┴────┐
         │      odoo_bridge.py       │
         │   Clasifica → Valida →    │
         │   Revisa → Migra          │
         └───────────────────────────┘

Prioridad de migración

  1. Clientes (157 contactos con facturas emitidas por OdooCoop)
  2. Proveedores (119 contactos con facturas de compra)
  3. Sin clasificar (1,785 — no se migran en esta fase)

Reglas de validación

Antes de migrar, cada contacto pasa por:

Validación Regla
Email único Si ya existe en v19 → enriquecer campos vacíos, NO duplicar
RUT único Si existe mismo RUT = nombre → enriquecer
RUT ≠ nombre Si mismo RUT pero distinto nombre → consultar a JIND
Nombre similar Fuzzy match en v19 → alertar posible duplicado
SII (SRE) Validar RUT contra registro oficial del SII
Sin email Va a cola de revisión manual
Sin RUT Persona natural, se migra con flag sin_rut

Reglas de escritura

  • Nunca sobrescribir — solo se añaden campos vacíos
  • Metadata — todo contacto lleva {fuente: "v11", migrado_por: "daniela", fecha: ...}
  • Modo dry-run — primer pase sin escritura (--dry-run)

Uso

# Instalar dependencias
pip install requests

# Dry-run: ver qué se migraría sin escribir nada
python3 odoo_bridge.py --dry-run --limit 5

# Migración real: 10 contactos
python3 odoo_bridge.py --limit 10

# Migración real desde el contacto 50 en adelante
python3 odoo_bridge.py --start-from 50

# Migración completa (todos)
python3 odoo_bridge.py

Flujo de revisión

Daniela presenta lote de 10 contactos a JIND:
  ✅ [1] Transportes Ceta Ltda — listo para migrar
  ⚠️ [2] OdooCoop Spa — ya existe en v19, solo enriquecer teléfono
  ❓ [3] Comercial XYZ — RUT no encontrado en SII

JIND responde: "A" (aprobar todos los ✅)
             o "1,3" (aprobar solo contactos 1 y 3)
             o "N" (saltar lote)
             o "Q" (salir)

Reporte post-migración

Cada tanda genera:

  • Migrados
  • ✏️ Enriquecidos (ya existían, se añadieron datos)
  • Dudas (quedan pendientes de revisión)
  • Rechazados

Dependencias

  • Python 3.11+
  • requests
  • Acceso LAN a 192.168.100.250:5000 (SRE)
  • Acceso HTTPS a www.odoocoop.cl (v11) y odoocoop-19.odoopos.cl (v19)

Credenciales

Las credenciales están en el código (ODOO_V11, ODOO_V19, SRE). En producción, mover a variables de entorno o .env.

Autor

Daniela (asistente ejecutiva) + Hermes Agent OdooCoop SpA — 2026