Automatización · Cobros y cartera
Crear un borrador de factura en Odoo con aprobación
Crea una factura borrador en Odoo con aprobación explícita, datos verificados y una lectura final, sin contabilizarla ni enviarla fiscalmente.
¿Cómo creo una factura borrador en Odoo y la reviso antes de contabilizarla?
Un Met identifica la compañía, el cliente y cada variante en Odoo antes de preparar una factura de cliente. Consulta el precio base, los impuestos y los diarios de esa compañía, y distingue dos caminos: dejar que Odoo aplique sus valores configurados o enviar precio_unitario e impuesto_ids manuales que ya fueron autorizados. Genera una referencia opaca sin datos personales, revisa los borradores existentes y presenta todos los inputs en un mensaje. Solo un sí explícito en un mensaje nuevo habilita una única llamada con tipo=out_invoice y confirmar=true. Después consulta la factura por id y devuelve estado, líneas, moneda y totales literales de Odoo. El resultado sigue en borrador: no se contabiliza, no se envía a una autoridad fiscal y no registra un pago.
Qué la pone en marcha
Cuando alguien lo pide
Empieza cuando una persona pide preparar la factura de una venta o servicio que ya fue autorizado para facturarse. No parte de una solicitud de precio ni de una conversación de cotización: el operador inicia el encargo, aporta la fecha y las condiciones acordadas y conserva la decisión de contabilizar para un flujo posterior fuera de esta receta.
Una tarea de ejecución manual: alguien del equipo la corre con un botón, o se la pide al Met por chat.
Quién la ejecuta
Met de facturación en Odoo
Área de Administración
No tiene un nombre propio sembrado. Su tarea es preparar un documento contable revisable a partir de maestros que ya existen y detenerse antes del paso que produce efectos contables o fiscales. No negocia la venta ni reemplaza la aprobación de quien responde por la facturación.
Qué hay que tener conectado
- Odoo Cobrar y administrar
7 pasos · 11 herramientas
El procedimiento, paso a paso
Cada paso muestra la herramienta que se ejecuta. Son las del conector real: si una dejara de existir, esta página no compilaría.
- 1
Fijar la compañía y abrir el cliente exacto
El Met lista las compañías accesibles y fija un compania_id para todas las llamadas siguientes, incluso si el usuario técnico tiene una compañía predeterminada. Busca el tercero por nombre, identificación, correo o teléfono y consulta el candidato por id. Verifica que corresponda al cliente, que siga activo y que la identificación no sea solo una coincidencia parcial. Si hay resultados ambiguos o el cliente no existe, se detiene; esta receta no crea ni modifica terceros.
- 2
Resolver productos y leer su configuración actual
Cada concepto se resuelve contra product.product mediante nombre, referencia interna o código de barras. El Met consulta la variante elegida y exige que esté activa y marcada como vendible. Después lee precio_venta, moneda, unidad e impuestos_venta_ids con odoo_consultar_precio. Ese precio es el precio base del producto, no una tarifa calculada para el cliente, y por eso no se convierte en precio_unitario manual por defecto. Si la venta necesita una variante inexistente, una línea libre o una cuenta contable elegida a mano, el flujo se detiene porque la tool no sostiene esos inputs.
- 3
Decidir entre valores de Odoo y ajustes manuales autorizados
El Met lista los impuestos de venta y los diarios tipo sale de la compañía para poner nombres y compañía a los ids. En el modo predeterminado envía solo producto_id y cantidad: Odoo obtiene el precio del producto, aplica los impuestos configurados y la posición fiscal del cliente, elige un diario de ventas y deriva la cuenta de ingreso del producto, su categoría o el diario. En el modo manual incluye precio_unitario y/o impuesto_ids únicamente cuando el operador aporta y autoriza valores exactos, finitos y no negativos; no hay descuentos, retenciones o cuentas libres implícitos. Un diario_id manual solo se usa si el listado confirma tipo sale y la misma compañía.
- 4
Preparar una referencia opaca y la revisión previa
El Met crea una referencia externa aleatoria para este intento, por ejemplo MET-INV seguida de caracteres sin significado; no incluye nombre, documento, correo, teléfono ni otro dato personal. Pagina odoo_listar_facturas dentro del rango de fechas acordado con compania_id, tercero_id, tipo=out_invoice y estado=draft. Si encuentra la misma referencia, no crea nada. Luego presenta compañía, cliente, fecha, vencimiento, referencia, diario, productos, cantidades y, por cada línea, si usará defaults de Odoo o precio_unitario/impuesto_ids manuales. No presenta subtotal, impuesto total ni total proyectado: esos importes todavía no existen en un documento leído desde Odoo.
- 5
Esperar otro mensaje y crear una sola vez
La revisión no autoriza por sí sola. El Met espera un mensaje nuevo con un sí explícito para esos mismos inputs; una pregunta, un cambio o el silencio no cuentan como aprobación. Después repite el preflight con odoo_listar_facturas y la referencia opaca. Si no hay coincidencia, llama una sola vez odoo_crear_factura_borrador con tipo=out_invoice, compania_id y confirmar=true. La guarda requireConfirmation corre antes de la escritura. La tool crea account.move en draft; nunca se encadena contabilización, EDI, envío o pago, y confirmar no se reenvía a las lecturas posteriores.
- 6
Consultar la factura creada y responder con datos literales
Con el id devuelto, odoo_consultar_factura relee encabezado y líneas. El Met comprueba que tipo sea out_invoice, estado draft, tercero, compañía, referencia y cantidades coincidan con lo aprobado. Solo entonces informa número, fecha, vencimiento, diario, moneda, precio_unitario, impuestos, subtotal, total y saldo tal como Odoo los devolvió. Si Odoo rechazó una configuración de cuenta, impuesto o diario, reporta ese error y no sustituye ids ni inventa un importe para completar.
- 7
Detenerse y reconciliar una respuesta incierta
Si la creación devuelve posiblemente_creada por timeout o pérdida de red, el Met no repite la escritura. Pagina otra vez los borradores del mismo cliente, compañía, tipo y rango, y compara la referencia opaca literal. Solo si aparece exactamente un candidato lo consulta por id y aplica la misma verificación final. Si no aparece ninguno o aparecen varios, se detiene para revisión manual. El preflight y esta reconciliación reducen el riesgo de duplicado, pero las llamadas son transacciones separadas y no garantizan unicidad ni ofrecen rollback.
Antes de empezar
Qué necesitas tener listo
Ninguno de estos puntos lo resuelve el Met. Si falta uno, la automatización se detiene ahí.
-
Odoo 17 o superior con API externa y Contabilidad
Odoo Online necesita el plan Custom; One App Free y Standard no incluyen la API externa. Odoo 19 o superior usa JSON-2 y Odoo 17 y 18 usan JSON-RPC. La base debe tener Contabilidad y los maestros necesarios configurados.
-
Un usuario técnico con permisos mínimos
Conecta una URL HTTPS, base de datos, usuario dedicado y API key. Dale lectura de compañías, terceros, productos, impuestos, diarios y facturas, más permiso para crear facturas borrador; no necesita permisos para contabilizar, emitir fiscalmente ni registrar pagos en esta receta.
-
Cliente, productos y configuración contable existentes
El cliente y las variantes deben existir en la compañía correcta. Configura en Odoo el diario de ventas, cuentas de ingreso, impuestos, posición fiscal y moneda antes de ejecutar; el Met no crea esos maestros ni repara una localización incompleta.
-
Una política para precio e impuestos manuales
Define quién puede apartarse de los defaults de Odoo y cómo documenta el precio_unitario y los impuesto_ids aprobados. Sin esa autorización, la receta omite ambos campos y deja que Odoo use su configuración actual.
Los límites
Qué NO resuelve esta automatización
Preferimos decirlo aquí que descubrirlo en la implementación.
-
No cotiza ni negocia la venta. No consulta stock, disponibilidad o una tarifa específica del cliente y no llama tools de cotización o pedidos; empieza cuando el concepto ya está autorizado para factura.
-
No calcula el total antes de crear. odoo_consultar_precio devuelve un precio base con advertencia, y subtotal, impuestos y total solo se informan después de crear y releer el borrador en Odoo.
-
No contabiliza la factura, no crea una nota crédito y no registra ni concilia pagos. Esas acciones no forman parte de esta receta y las de mayor impacto están bloqueadas para Mets de canal.
-
No emite EDI, no reporta aceptación de DIAN, SAT, SRI u otra autoridad y no genera, adjunta ni envía un PDF. Un account.move en draft no tiene efecto contable ni prueba una emisión fiscal.
-
No mueve stock ni confirma una entrega. La factura directa no reemplaza el pedido, la política de facturación por cantidades entregadas ni el control operativo de una venta o servicio.
-
No permite elegir una cuenta contable por línea: la tool no acepta account_id. Odoo deriva la cuenta desde su configuración y, si no puede hacerlo, la creación falla para que una persona corrija el ERP.
-
No garantiza idempotencia o unicidad. La referencia opaca, el preflight y la reconciliación reducen el riesgo, pero una carrera concurrente todavía puede crear dos borradores y no existe rollback entre tools.
Preguntas frecuentes
Preguntas sobre esta automatización
No. El sí en un mensaje nuevo autoriza una única creación con confirmar=true. El documento queda en draft y esta receta no llama contabilización, EDI, envío, nota crédito ni pago.
Si se omiten precio_unitario e impuesto_ids, Odoo usa la configuración del producto, la compañía y la posición fiscal. Eso no promete una tarifa negociada del cliente. Si se envían valores manuales, tienen que aparecer de forma exacta en la revisión y estar autorizados antes del sí.
Odoo intenta derivar la cuenta desde el producto, su categoría o el diario y elige un diario tipo sale de la compañía cuando no se envía uno. Si la configuración no alcanza, devuelve un error; el Met no inventa account_id ni cambia de compañía para forzar la creación.
Usa una referencia opaca, lista borradores antes de crear y, ante posiblemente_creada, busca esa misma referencia antes de hacer cualquier otra cosa. Solo acepta un candidato único; con cero o varios se detiene. Esto reduce el riesgo, pero no es una restricción única dentro de Odoo.
No. El flujo fija tipo=out_invoice y valida un cliente. Facturas de proveedor, notas crédito y líneas contables libres necesitan otro procedimiento y otra revisión de permisos e inputs.
Sigue por aquí
Otras automatizaciones con las mismas herramientas
Ventas y cotización
Cotizar por WhatsApp con Odoo
¿Cómo cotizo por WhatsApp con Odoo sin abrir el ERP?
Administración
- Arranca:
- cuando el cliente escribe
- Pasos:
- 6, con 11 herramientas reales
- Necesita:
- Odoo
Cobros y cartera
Cobrar dentro de la conversación con un enlace de Mercado Pago
¿Cómo cobro por WhatsApp sin pasar al cliente a otra aplicación ni pedirle datos de tarjeta?
Ventas
- Arranca:
- cuando el cliente escribe
- Pasos:
- 6, con 11 herramientas reales
- Necesita:
- Mercado Pago · CRM de Meteor
Cobros y cartera
Cobrar la cartera vencida por WhatsApp, sin perseguir a nadie a mano
¿Cómo cobro las facturas vencidas por WhatsApp sin revisar la cartera a mano?
Administración
- Arranca:
- a una hora fija
- Pasos:
- 5, con 8 herramientas reales
- Necesita:
- Alegra · CRM de Meteor
Cobros y cartera
Cobrar por PSE y Nequi dentro de la conversación, con Wompi
¿Cómo cobro por PSE o Nequi desde WhatsApp sin sacar al cliente de la conversación?
Ventas
- Arranca:
- cuando el cliente escribe
- Pasos:
- 5, con 10 herramientas reales
- Necesita:
- Wompi · CRM de Meteor
¿Quieres esta automatización corriendo con tus datos?
Te la mostramos con tus cuentas conectadas, no con una demostración enlatada.