Ir al contenido

El Modelo account.move.line: Comprendiendo las Líneas de Asiento en Odoo

Una guía completa sobre el modelo de línea de entrada del diario de Odoo para desarrolladores y consultores funcionales
10 de marzo de 2026 por
El Modelo account.move.line: Comprendiendo las Líneas de Asiento en Odoo
Dasolo
| Sin comentarios aún

Introducción


En Odoo, los modelos definen cómo se estructura y almacena la información en la base de datos. Cada pieza de datos empresariales con la que trabajas, desde pedidos de venta hasta facturas y asientos contables, reside en un modelo.


Entender los modelos de Odoo es esencial tanto para desarrolladores como para consultores funcionales. Los modelos son la base de la arquitectura de datos de Odoo. Definen los campos, relaciones y lógica empresarial de Odoo.

Este artículo se centra en uno de los modelos más importantes en la contabilidad de Odoo: account.move.line. Ya sea que estés creando informes personalizados, integrando sistemas externos o configurando flujos de trabajo de conciliación, trabajarás con este modelo.

¿Qué es el modelo account.move.line?


El modelo account.move.line representa líneas individuales de asientos contables en Odoo. Cada línea es un débito o un crédito en un asiento contable. Juntas, las líneas de un asiento contable deben equilibrarse: los débitos totales deben ser iguales a los créditos totales.


Este modelo en Odoo es utilizado por el módulo de Contabilidad. Es el hijo de account.move, que representa el asiento contable en sí (facturas, gastos, extractos bancarios, asientos contables). Cada asiento contable tiene una o más líneas.


El modelo está definido en el módulo de cuenta. Otros módulos lo extienden a través de la herencia de modelos de Odoo. Ventas añade detalles de líneas de factura. Compras añade detalles de líneas de gastos. Contabilidad analítica añade distribución analítica. Cada módulo añade lo que necesita sin duplicar la estructura central.

Campos clave en el modelo


Aquí están los campos más importantes de Odoo en el modelo account.move.line. Comprender estos te ayudará a trabajar de manera efectiva con asientos contables y datos contables.


1. nombre

Tipo: Char. Este campo almacena la etiqueta o descripción de la línea. Es obligatorio y se muestra típicamente en las vistas de asientos contables y en los informes. Para las líneas de factura, a menudo proviene del nombre del producto o de una descripción personalizada.


2. move_id

Tipo: Many2one (account.move). Vincula la línea a su asiento contable padre. Cada línea pertenece exactamente a un movimiento. Esta es la relación principal en el modelo.


3. account_id

Tipo: Many2one (account.account). La cuenta a la que se publica esta línea. Obligatorio. Debe ser una cuenta no de vista y no cerrada. Se utiliza para informes y agrupaciones del plan de cuentas.


4. débito

Tipo: Float. El monto del débito. El valor predeterminado es 0.0. Para cada línea, se establece ya sea débito o crédito, no ambos. Los débitos aumentan las cuentas de activos y gastos.


5. crédito

Tipo: Flotante. La cantidad de crédito. El valor predeterminado es 0.0. Los créditos aumentan las cuentas de pasivo, patrimonio y ingresos. La suma de todos los débitos debe ser igual a la suma de todos los créditos en un movimiento.


6. saldo

Tipo: Flotante. Un campo calculado: débito menos crédito. Representa el efecto neto de la línea. Positivo para débitos, negativo para créditos. Se utiliza en informes y conciliaciones.


7. partner_id

Tipo: Many2one (res.partner). El cliente, proveedor u otra parte vinculada a esta línea. Se utiliza para el seguimiento de cuentas por cobrar y pagar, informes de antigüedad y conciliaciones.


8. fecha

Tipo: Fecha. La fecha efectiva de la línea. Generalmente heredada del movimiento padre. Se utiliza para el cierre de períodos, informes y antigüedad.


9. fecha_vencimiento

Tipo: Fecha. La fecha de vencimiento para el pago. Relevante para cuentas por cobrar y pagar. Se utiliza para informes de antigüedad y programación de pagos.


10. currency_id

Tipo: Many2one (res.currency). La moneda de la línea. Puede diferir de la moneda de la empresa para entradas en múltiples monedas.


11. amount_currency

Tipo: Flotante. El monto en la moneda de la línea. Se utiliza cuando la entrada del diario está en una moneda extranjera. Junto con currency_id, permite la contabilidad en múltiples monedas.


12. quantity

Tipo: Flotante. Cantidad opcional. Se utiliza para líneas basadas en productos (facturas, facturas de proveedores). Permite informes basados en cantidades y cálculos de precios unitarios.


13. product_id

Tipo: Many2one (product.product). El producto vinculado a esta línea. Se completa cuando la línea proviene de un pedido de venta, un pedido de compra o una línea de factura.


14. product_uom_id

Tipo: Many2one (uom.uom). La unidad de medida para la cantidad. Se utiliza con product_id para una correcta visualización y conversión de cantidades.


15. price_unit

Tipo: Flotante. El precio unitario. Se utiliza con la cantidad para calcular montos en líneas de facturas y facturas de proveedores.


16. tax_ids

Tipo: Many2many (account.tax). Impuestos aplicados a esta línea. Odoo crea líneas adicionales para los montos de impuestos al contabilizar. Se utiliza para cálculos de IVA y otros impuestos.


17. tax_line_id

Tipo: Many2one (account.tax). Para las líneas de impuestos, esto hace referencia al impuesto que generó la línea. Distingue las líneas de impuestos de las líneas de cuenta regulares.


18. analytic_account_id

Tipo: Many2one (account.analytic.account). La cuenta analítica para el seguimiento de costos e ingresos. Se utiliza cuando la contabilidad analítica está habilitada.


19. analytic_distribution

Tipo: Json o Texto. Almacena la distribución analítica a través de múltiples cuentas analíticas. Reemplaza analytic_account_id en versiones más nuevas de Odoo al usar planes analíticos.


20. ref

Tipo: Char. Generalmente relacionado con el movimiento padre. Referencia externa o nota. Se muestra en informes y se utiliza para la conciliación.


21. narration

Tipo: Texto. Generalmente relacionado con el movimiento padre. Nota interna o memo. No se imprime en documentos dirigidos al cliente por defecto.


22. journal_id

Tipo: Many2one (account.journal). El diario del movimiento padre. Se utiliza para filtrar e informar por diario.


23. company_id

Tipo: Many2one (res.company). La empresa. En configuraciones de múltiples empresas, cada línea pertenece a una empresa. Afecta la visibilidad de los registros y la consolidación.


24. reconciled

Tipo: Booleano. Indica si la línea ha sido completamente reconciliada. Se utiliza para filtrar elementos no reconciliados en las vistas de reconciliación.


25. full_reconcile_id

Tipo: Many2one (account.full.reconcile). Vincula todas las líneas que fueron reconciliadas juntas. Permite rastrear grupos de reconciliación.


26. payment_id

Tipo: Many2one (account.payment). Para líneas de pago, vincula al registro de pago. Se utiliza al reconciliar facturas con pagos.


27. statement_id

Tipo: Many2one (account.bank.statement). Para líneas de extracto bancario, vincula al extracto. Se utiliza en la reconciliación bancaria.


28. statement_line_id

Tipo: Many2one (account.bank.statement.line). Vincula a la línea específica del extracto bancario. Se utiliza al emparejar movimientos con transacciones bancarias.


29. display_type

Tipo: Selección. Puede ser 'line_section' o 'line_note' para encabezados de sección y notas en la entrada del diario. Estas líneas no tienen débito ni crédito y son solo para visualización.


30. create_date

Tipo: Fecha y hora. Almacena cuándo se creó el registro. Gestionado automáticamente por Odoo. Útil para auditorías.


31. write_date

Tipo: Fecha y hora. Almacena cuándo se modificó por última vez el registro. Gestionado automáticamente. Ayuda a rastrear cambios a lo largo del tiempo.

Cómo se utiliza este modelo en los flujos de trabajo empresariales


1. Facturación de Clientes

Cuando confirmas una factura, Odoo crea registros account.move.line. Las líneas de ingresos van a cuentas de ingresos. Las líneas por cobrar van a la cuenta por cobrar del cliente. Se crean líneas de impuestos para cada impuesto. El partner_id se vincula al cliente para el envejecimiento y la conciliación.


2. Facturas de Proveedores

Las facturas crean líneas para gastos, IVA soportado y cuentas por pagar. Cada línea tiene un account_id, débito o crédito, y partner_id. La estructura refleja las facturas de clientes pero con diferentes tipos de cuentas.


3. Conciliación Bancaria

Las líneas del estado de cuenta bancario se emparejan con las líneas de movimiento a través de statement_line_id. Cuando concilias, Odoo vincula las líneas a través de full_reconcile_id. El campo reconciliado se establece en Verdadero.


4. Entradas de Diario Manuales

Los usuarios crean entradas de diario con múltiples líneas. Cada línea tiene una cuenta, un débito o un crédito, y un socio opcional. Odoo exige que los débitos sean iguales a los créditos antes de publicar.



5. Informes Analíticos y de Costos

Cuando la contabilidad analítica está habilitada, las líneas llevan analytic_account_id o analytic_distribution. Los informes se agrupan por cuenta analítica para mostrar costos e ingresos por proyecto, departamento u otra dimensión.

Cómo los desarrolladores extienden este modelo


Los desarrolladores extienden account.move.line utilizando varios patrones. La herencia de modelos de Odoo es el principal mecanismo.


Herencia de Modelos

Utiliza _inherit = 'account.move.line' para extender el modelo. Agrega nuevos campos de Odoo, sobrescribe métodos o añade restricciones. El modelo heredado en Odoo mantiene tus cambios en un módulo separado para facilitar las actualizaciones.


Añadiendo Campos

Define nuevos campos de Odoo en tu modelo heredado. Utiliza el tipo de campo correcto: Char, Many2one, Boolean, Integer, Text, Selection. Considera campos dependientes de la empresa para multiempresa. Ten cuidado con los campos computados y sus dependencias.


Extensiones de Python

Sobrescribe create, write o unlink para añadir lógica. Utiliza super() para llamar al original. Evita romper la invariante de que el débito es igual al crédito. El modelo API en Odoo expone estos métodos para integraciones externas.


Odoo Studio

Odoo Studio te permite añadir campos a account.move.line sin código. Es bueno para personalizaciones rápidas como etiquetas o tags adicionales. Para lógica compleja o reglas de conciliación, los módulos personalizados son más mantenibles.

Mejores prácticas


  • Nunca crees o modifiques líneas de movimiento directamente sin pasar por el movimiento. Utiliza la API del movimiento (por ejemplo, line_ids) para que Odoo pueda mantener la consistencia y ejecutar todas las comprobaciones.
  • Al construir informes, filtra por move_id.state = 'posted' para excluir borradores y entradas canceladas.
  • Utiliza account_id con el tipo de cuenta correcto (cobrar, pagar, etc.) para un comportamiento adecuado de envejecimiento y conciliación.
  • Al integrar a través de la API, crea primero el movimiento, luego añade líneas. Asegúrate de que los débitos sean iguales a los créditos antes de publicar.
  • Para campos personalizados, utiliza el prefijo x_ o un prefijo de módulo para evitar conflictos con futuras versiones de Odoo.

Errores comunes


  • Establecer tanto el débito como el crédito en la misma línea. Cada línea debe tener o débito o crédito, no ambos.
  • Crear movimientos no equilibrados. La suma de los débitos debe ser igual a la suma de los créditos. Odoo valida esto al publicar.
  • Modificar líneas publicadas sin utilizar el flujo de trabajo adecuado de reversión o ajuste. Las entradas publicadas deben ajustarse a través de nuevos movimientos, no mediante ediciones directas.
  • Olvidar establecer partner_id en líneas de cobrar y pagar. Esto rompe los informes de envejecimiento y la conciliación.
  • Sobrescribir métodos centrales sin llamar a super(). Esto puede romper la conciliación, el bloqueo u otros módulos.

Conclusión


El modelo account.move.line es central para la contabilidad de Odoo. Almacena cada débito y crédito en asientos contables, facturas y facturas. Comprender sus campos y cómo los módulos lo extienden te ayudará a configurar, personalizar e integrar Odoo de manera efectiva.

Ya sea que seas un consultor funcional mapeando flujos de trabajo contables o un desarrollador creando informes e integraciones personalizados, un sólido dominio de account.move.line te ahorrará tiempo y evitará errores.

¿Necesitas ayuda con tu implementación de Odoo?


Dasolo ayuda a las empresas a implementar, personalizar y optimizar Odoo. Nos especializamos en integraciones de API y desarrollo de Odoo. Nuestro equipo tiene una profunda experiencia con la arquitectura de datos de Odoo y modelos como account.move.line.


Si necesitas ayuda con tu implementación de Odoo, módulos personalizados o integraciones, estamos aquí para ayudar. Reserva una demostración para discutir tu proyecto.

El Modelo account.move.line: Comprendiendo las Líneas de Asiento en Odoo
Dasolo 10 de marzo de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario