Ir al contenido

Odoo ERP

Finalitix usa Odoo como ERP de contabilidad. La integración es indirecta: la API nunca llama a Odoo directamente. En su lugar, publica mensajes en AWS SQS, y un consumidor externo los procesa y ejecuta las operaciones en Odoo.

finalitixspeiapi
│ SQS.sendMessage(ACC_MOVE_SQS_URL, {...})
AWS SQS (cola FIFO)
Consumidor SQS (servicio externo)
Odoo ERP
├── res.partner (socios/contactos)
└── account.move (asientos contables)

Se ejecuta cuando STP activa una cuenta de usuario (PUT /stp/v1/account con estado: 'A').

Mensaje SQS:

{
"MessageAttributes": {
"method": { "DataType": "String", "StringValue": "create_finalitix_partner" },
"model": { "DataType": "String", "StringValue": "res.partner" },
"accountId": { "DataType": "Number", "StringValue": "42" },
"finalitixUserId": { "DataType": "String", "StringValue": "550e8400-e29b-41d4-a716-446655440000" }
}
}

El consumidor usa accountId y finalitixUserId para obtener los datos del usuario y crear el partner en Odoo.

Se ejecuta en cada transacción (cargo o abono) procesada.

Mensaje SQS:

{
"MessageAttributes": {
"method": { "DataType": "String", "StringValue": "create_post_move" },
"model": { "DataType": "String", "StringValue": "account.move" }
},
"MessageBody": "{\"transaction_id\": 123, \"amount\": 1500.00, \"finalitix_type\": \"cargo\", \"description\": \"Pago de servicios\"}"
}
CampoDescripción
transaction_idID de la transacción en la BD de Finalitix
amountMonto en MXN
finalitix_typecargo (saliente) o abono (entrante)
descriptionConcepto del movimiento

Ambas operaciones usan la misma cola: ACC_MOVE_SQS_URL

El campo method en MessageAttributes determina qué operación ejecutar en Odoo:

methodmodelOperación
create_finalitix_partnerres.partnerCrear socio
create_post_moveaccount.moveCrear asiento contable