Logística

INTETCA: Módulo logístico last-mile en Odoo 19

INTETCA (operador logístico CR)

El Reto

Orquestar entregas last-mile con múltiples carriers sin sistema unificado.

La Solución

Módulo Odoo 19 con integración Correos CR (SOAP) y Moovin (REST), 6 tiers de lealtad.

El Resultado

Precio base CRC 4,500 XS GAM Express D+1. Sistema operando en producción.

Contexto del proyecto

INTETCA es un operador logístico costarricense especializado en entregas last-mile para e-commerce y retail. Con un volumen creciente de paquetes diarios y la necesidad de trabajar con múltiples carriers según zona geográfica y tipo de servicio, su operación dependía de hojas de cálculo, llamadas telefónicas y cotizaciones manuales que consumían horas de trabajo cada día.

El equipo de INTETCA necesitaba un sistema que centralizara toda la operación logística dentro de su ERP (Odoo 19), eliminara la cotización manual y permitiera escalar sin agregar personal administrativo.

El desafío técnico

La complejidad no estaba en un solo problema, sino en la intersección de varios:

Múltiples carriers con APIs diferentes. Correos de Costa Rica expone un servicio SOAP con WSDLs que requieren certificados digitales para firmar cada solicitud. Moovin, por otro lado, ofrece una REST API moderna con autenticación Bearer y webhooks. El módulo debía abstraer estas diferencias y presentar una interfaz unificada al operador.

Pricing dinámico con muchas variables. El precio de un envío depende del peso, dimensiones, zona de origen y destino (GAM vs. fuera de GAM), tipo de servicio (express D+1, estándar D+2, económico D+3), y el tier de lealtad del cliente. Esto genera cientos de combinaciones posibles que antes se consultaban en una tabla de Excel de 15 hojas.

Sistema de lealtad con 6 tiers. INTETCA quería premiar a sus clientes recurrentes con descuentos progresivos y prioridad de despacho. Los tiers van desde Bronce (0-50 envíos/mes) hasta Diamante (500+ envíos/mes), con descuentos que van del 0% al 15% y beneficios adicionales como recogida gratuita y seguro incluido.

La solución implementada

Arquitectura del módulo

Desarrollamos un módulo Odoo 19 completo llamado intetca_logistics que se integra nativamente con el flujo de ventas y almacén de Odoo. Los modelos principales son:

  • Envío (intetca.shipment): registro central con datos del paquete, origen, destino, carrier seleccionado y estado del envío con trazabilidad completa.
  • Cotización (intetca.quote): cálculo automático de precio para cada carrier disponible, permitiendo al operador comparar y seleccionar la mejor opción.
  • Tier de lealtad (intetca.loyalty.tier): cálculo automático mensual del tier de cada cliente basado en volumen de envíos y facturación acumulada.
  • Configuración de carrier (intetca.carrier.config): credenciales, endpoints y parámetros específicos de cada carrier.

Integración con Correos de Costa Rica

La API SOAP de Correos CR fue el componente más desafiante. Implementamos un cliente basado en la librería zeep de Python que:

  • Carga el WSDL y genera los bindings automáticamente
  • Firma cada request con el certificado digital de INTETCA
  • Implementa retry con backoff exponencial (3 intentos, 1s-2s-4s)
  • Parsea las respuestas XML y las mapea a los modelos de Odoo
  • Almacena el número de guía y la URL de tracking para cada envío

Integración con Moovin

Moovin fue más directo por su API REST moderna. El conector:

  • Autentica con Bearer token con refresh automático
  • Envía solicitudes de cotización y recibe respuestas en JSON
  • Registra webhooks para recibir actualizaciones de estado en tiempo real
  • Maneja rate limiting con cola de procesamiento asíncrona

Motor de pricing

El motor de pricing calcula el costo de cada envío evaluando en orden:

  1. Clasificación del paquete por peso y dimensiones (XS, S, M, L, XL)
  2. Determinación de zona (GAM, fuera de GAM, zona rural)
  3. Selección de tarifa base según carrier, zona y tamaño
  4. Aplicación de recargos (combustible, zona rural, peso excedente)
  5. Aplicación de descuento por tier de lealtad
  6. Cálculo de IVA y total final

El precio base para el servicio más solicitado quedó en CRC 4,500 para un paquete XS dentro del GAM con entrega Express D+1.

Proceso de desarrollo con Claude Code

Este proyecto fue uno de los primeros donde usamos Claude Code como copiloto de desarrollo desde la fase de especificación. El resultado fue una reducción del 70% en el tiempo de desarrollo comparado con nuestras estimaciones iniciales.

Claude Code generó la especificación técnica inicial de 839 líneas, que incluía modelos de datos, flujos de estado, reglas de acceso y estructura de vistas. Luego asistió en la generación del código Python, las vistas XML y las pruebas unitarias.

El módulo final pasó todas las pruebas unitarias y fue desplegado en el servidor de producción de INTETCA sin incidentes.

Resultados en producción

El sistema lleva operando en producción desde enero de 2026 con los siguientes resultados:

  • Cotización automática en menos de 3 segundos vs. 15-20 minutos manuales
  • Cero errores de pricing por cálculo manual incorrecto
  • Trazabilidad completa de cada envío desde la solicitud hasta la entrega
  • Dashboard operativo con métricas de volumen, tiempos de entrega y costos por carrier
  • Recálculo automático mensual de tiers de lealtad para los más de 200 clientes activos

Tecnologías utilizadas

Odoo 19PythonSOAPREST APIClaude Code