Ir al contenido

Campo Entero en Odoo: Guía Completa

Todo lo que necesitas saber sobre el campo Integer en el modelo de datos de Odoo, desde el uso empresarial hasta la personalización técnica
6 de marzo de 2026 por
Campo Entero en Odoo: Guía Completa
Dasolo
| Sin comentarios aún

Introducción


Si alguna vez has establecido una cantidad en un pedido de venta, has rastreado cuántos días ha estado abierta una tarea, o has configurado una puntuación de prioridad en un lead, has utilizado un campo Entero en Odoo. Es uno de los tipos de campo más comunes en el modelo de datos de Odoo, y sin embargo, a menudo se subestima.


Entender cómo funciona el campo Entero es importante para los usuarios empresariales que configuran formularios, para los desarrolladores que escriben módulos personalizados, y para los consultores que diseñan modelos de datos para sus clientes.


Esta guía cubre lo que almacena el campo Entero, cómo se comporta en el marco e interfaz de Odoo, cómo crearlo o personalizarlo con Odoo Studio o Python, junto con casos de uso prácticos y cosas a tener en cuenta.

¿Qué es el campo Entero en Odoo?


En el ORM de Odoo, el campo Integer está diseñado para almacenar números enteros. Sin decimales, sin fracciones. Se mapea directamente a una columna INTEGER en PostgreSQL, que es un entero con signo de 4 bytes que admite valores de aproximadamente -2 mil millones a +2 mil millones.


Desde la perspectiva del usuario, un campo Integer aparece como una simple entrada numérica en formularios y como una columna numérica en vistas de lista. Es la opción correcta para cualquier cosa que deba contarse en unidades enteras: cantidades, puntuaciones, duraciones en días, números de secuencia o cualquier métrica donde medio unidad no tenga sentido.


Aquí hay una definición típica en un módulo de Python:

from odoo import fields, models

class ProjectTask(models.Model):
    _inherit = 'project.task'

    estimated_hours = fields.Integer(
        string='Horas Estimadas',
        default=0,
    )

El parámetro string controla la etiqueta que se muestra en la interfaz. El parámetro default establece el valor automáticamente cuando se crea un nuevo registro.


En Odoo Studio, este tipo de campo se lista simplemente como Integer. Cuando se crea a través de Studio, recibe un prefijo x_studio_. Cuando se crea a través de Python o la API XML-RPC, eliges el nombre técnico tú mismo.

Cómo funciona el campo


Cuando defines un campo Integer en Odoo, el marco crea automáticamente la columna de base de datos correspondiente durante la instalación o actualización del módulo. No necesitas escribir migraciones SQL manualmente.


A nivel de base de datos, la columna está tipada como INTEGER en PostgreSQL. El ORM de Odoo se encarga de la coerción de tipos, por lo que si el usuario no ingresa nada, el campo devuelve 0 en lugar de None o False. Esta es una distinción importante en comparación con otros tipos de campo como Float o Char, que pueden devolver False cuando están vacíos.


Atributos Clave del Campo

Aquí están las propiedades más importantes que puedes configurar en un campo Integer:

  • string: La etiqueta mostrada a los usuarios en la interfaz.
  • default: El valor asignado automáticamente a nuevos registros. Por defecto es 0 si no se especifica.
  • requerido: Hace que el campo sea obligatorio. Dado que el valor predeterminado ya es 0, esto es más útil cuando deseas bloquear el guardado con un valor cero.
  • solo lectura: Impide que los usuarios editen el valor directamente en la interfaz.
  • índice: Crea un índice de PostgreSQL en la columna, acelerando los filtros y búsquedas en ese campo.
  • calcular: Vincula un método de Python que calcula el valor del campo dinámicamente a partir de otros campos.
  • almacenar: Combinado con calcular, controla si el valor calculado se guarda en la base de datos o se recalcula sobre la marcha.
  • copiar: Controla si el valor se transfiere al duplicar un registro.
  • grupos: Restringe la visibilidad del campo a grupos de usuarios específicos.

Cómo Aparece en las Vistas

En las vistas de formulario, un campo Integer se representa como un cuadro de entrada numérico. Odoo agrega automáticamente separadores de miles para facilitar la lectura al mostrar números más grandes.


En las vistas de lista, los campos Integer aparecen como números simples, alineados a la derecha por convención. En las vistas de búsqueda, admiten filtros de igualdad, mayor que y menor que.


Puedes emparejar un campo Integer con widgets específicos en las vistas para cambiar su apariencia. El widget prioridad, por ejemplo, convierte un campo Integer en estrellas clicables. El widget barra de progreso puede mostrar un valor Integer como una barra de progreso cuando se combina con un valor máximo.


Interacción con el ORM de Odoo

Desde la perspectiva de un desarrollador, leer y escribir campos de tipo Integer es sencillo. El valor es siempre un int de Python. Los campos de tipo Integer vacíos devuelven 0, lo que significa que debes tener cuidado al escribir condiciones que verifiquen la ausencia de un valor. Un cero y un campo vacío se ven iguales a menos que diseñes en torno a ello.


Los campos de tipo Integer también funcionan de manera natural en campos calculados y en filtros de dominio utilizados por vistas, acciones del servidor y acciones automatizadas en todo el marco de Odoo.

Casos de uso empresarial


El campo Integer aparece en casi todos los módulos de Odoo. Aquí hay cinco escenarios prácticos donde juega un papel central.


1. CRM: Puntuación de Leads

Los equipos de ventas a menudo quieren priorizar los leads en función de una puntuación. Puedes agregar un campo Integer personalizado llamado Puntuación de Lead en el modelo de oportunidad del CRM. Los representantes de ventas actualizan la puntuación manualmente, o una acción automatizada la calcula en función de criterios como el tamaño de la empresa, el presupuesto o el nivel de compromiso.

Esto facilita ordenar tu pipeline por puntuación y concentrarte en las oportunidades más prometedoras.


2. Ventas: Cantidades Mínimas de Pedido

En los módulos de Ventas e Inventario, los campos de tipo Integer controlan las cantidades mínimas de pedido en productos o listas de precios. Establecer un mínimo de 10 unidades en un producto asegura que el sistema bloquee pedidos por debajo de ese umbral, ahorrando idas y venidas con los clientes más adelante.


3. Inventario: Reglas de Reabastecimiento

Las reglas de reabastecimiento en Odoo dependen completamente de los campos de tipo Integer para los umbrales de cantidad mínima y máxima. Cuando el stock cae por debajo del mínimo, Odoo activa automáticamente un pedido de reabastecimiento hasta el máximo definido. Obtener estos valores correctamente es crítico para evitar tanto faltantes como excesos de stock.


4. Gestión de Proyectos: Puntos de Historia y Estimaciones de Esfuerzo

Los equipos que utilizan Odoo Project para flujos de trabajo ágiles a menudo añaden un campo Integer personalizado para puntos de historia o horas estimadas. Este campo aparece en las tareas en vista kanban o lista y ayuda al equipo a rastrear la capacidad y la velocidad a lo largo de los sprints.


5. Contabilidad: Días de Términos de Pago

Los términos de pago en Odoo Contabilidad utilizan campos Enteros para definir el número de días permitidos para el pago. Net 30, Net 60, o términos personalizados se configuran a través de valores Enteros. Estos valores se utilizan directamente en los cálculos de la fecha de vencimiento de la factura, lo que hace que la precisión aquí sea importante para la gestión del flujo de caja.

Creación o personalización del campo Entero


Hay dos formas principales de agregar un campo Entero a un modelo de Odoo: utilizando Odoo Studio sin escribir código, o definiéndolo directamente en Python para tener más control.


Usando Odoo Studio

Odoo Studio es la herramienta sin código y de bajo código integrada en Odoo para personalizar campos y vistas. Para agregar un campo Entero a través de Studio:

  1. Abre el formulario donde deseas agregar el campo.
  2. Activa Studio desde el menú superior derecho.
  3. En la lista de campos a la izquierda, arrastra el tipo de campo Entero a tu formulario.
  4. Establece la etiqueta del campo, elige si es obligatorio y configura el valor predeterminado.
  5. Guarda y sal de Studio.

Studio crea el campo con un prefijo x_studio_ automáticamente y almacena la definición en ir.model.fields. El campo está inmediatamente disponible en formularios y vistas de lista.


Usando Python (Personalización Técnica)

Para los desarrolladores que construyen módulos personalizados o realizan desarrollo en Odoo con más control, el campo Integer se define directamente en una clase de modelo de Python:


from odoo import fields, models

class CrmLead(models.Model):
    _inherit = 'crm.lead'

    x_lead_score = fields.Integer(
        string='Puntuación del Lead',
        default=0,
        index=True,
        help='Puntuación de 0 a 100 utilizada para priorizar oportunidades',
    )

Después de definir el campo en el código, ejecuta odoo-bin -u your_module para aplicar los cambios a la base de datos. La columna se crea automáticamente.


Usando la API XML-RPC

También puedes crear un campo Integer de forma remota utilizando la API XML-RPC de Odoo. Esto es útil para implementaciones automatizadas o cuando se trabaja sin acceso directo al servidor:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_lead_score',
        'field_description': 'Puntuación del Lead',
        'model_id': crm_lead_model_id,
        'ttype': 'integer',
        'state': 'manual',
    }]
)

El valor de ttype para los campos Integer es simplemente 'integer'. El state debe ser 'manual' para indicar un campo personalizado en lugar de uno definido por un módulo.


Añadiendo un Campo Integer Computado

Los campos Integer computados son poderosos para derivar valores automáticamente. Por ejemplo, contar el número de tareas vinculadas a un proyecto:


class Project(models.Model):
    _inherit = 'project.project'

    open_task_count = fields.Integer(
        string='Tareas Abiertas',
        compute='_compute_open_task_count',
        store=True,
    )

    def _compute_open_task_count(self):
        for project in self:
            project.open_task_count = self.env['project.task'].search_count([
                ('project_id', '=', project.id),
                ('stage_id.fold', '=', False),
            ])

Establecer store=True guarda el valor en la base de datos, haciéndolo disponible para filtrar y ordenar en vistas de lista sin recalcularlo cada vez.

Mejores prácticas


Aquí hay consejos prácticos para aprovechar al máximo los campos Integer en tu modelo de datos de Odoo.


Utiliza Enteros para Contadores y Cantidades de Unidades Enteras

Elige Entero cuando el valor siempre deba ser un número entero y los decimales no tengan sentido. Para cualquier cosa que involucre dinero, medidas o cantidades que puedan ser fraccionarias, utiliza el tipo de campo Float o Monetario en su lugar.


Establece un Valor Predeterminado Sensato

Los campos Entero tienen como valor predeterminado 0 en Odoo. En muchos casos eso está bien, pero piensa si cero es un valor significativo para tu caso de uso. Si cero significa algo específico (como que aún no se ha asignado una puntuación), es posible que desees manejar eso explícitamente en tu lógica de negocio o agregar un campo Booleano auxiliar para rastrear si el valor ha sido establecido.


Agrega un Índice Cuando Filtras en el Campo

Si planeas filtrar, ordenar o agrupar por un campo Entero con frecuencia, agrega index=True en la definición del campo. Esto crea un índice en la base de datos y puede acelerar significativamente las consultas en grandes conjuntos de datos. La compensación es un pequeño aumento en el almacenamiento y el tiempo de escritura, que casi siempre vale la pena para los campos utilizados en condiciones de búsqueda.


Usa store=True para Campos Enteros Computados

Si defines un campo Entero computado que los usuarios necesitan filtrar o ordenar en vistas de lista, siempre establece store=True. Sin ello, Odoo no puede utilizar el campo en filtros de dominio, y agrupar por él no funcionará como se espera.


Documenta Tus Rangos

Cuando un campo Entero tiene un rango significativo, como una puntuación de 0 a 100, documenta eso en el parámetro help. Este texto aparece como un tooltip en la interfaz y ahorra a los usuarios de adivinar qué valores son válidos.


Piensa Dos Veces Antes de Usar Entero para IDs o Referencias

Si necesitas hacer referencia a otro registro, utiliza un campo Many2one en lugar de almacenar un ID en un campo Entero manualmente. Los campos Many2one te brindan navegación integrada, reglas en cascada y una adecuada integración con ORM. Un Entero que contiene un ID en bruto es frágil y elude el marco de Odoo.

Errores comunes


Estos son los errores que más a menudo surgen al trabajar con campos Integer en Odoo.


Confundir Integer con Float

Un error común es usar un campo Integer donde un campo Float sería más apropiado. Si tus usuarios alguna vez necesitan ingresar 1.5, 0.25 o cualquier valor fraccionario, Integer es la elección incorrecta. Odoo truncará silenciosamente la entrada decimal, lo que lleva a la pérdida de datos y confusión del usuario. Usa Float para cantidades que pueden ser fraccionarias, y Monetary para valores en moneda.


Asumir que cero significa vacío

Debido a que los campos Integer siempre devuelven 0 cuando no están establecidos, no hay forma de distinguir entre un registro donde el campo nunca fue completado y uno donde alguien ingresó intencionalmente cero. Si esta distinción es importante para tu flujo de trabajo, agrega un campo Booleano como has_score junto al Integer, o usa un campo Float con un valor por defecto de False en su lugar.


No agregar un índice en campos filtrados con frecuencia

Si agregas un campo Integer y luego lo usas como filtro en vistas o acciones automatizadas, olvidar agregar index=True puede ralentizar notablemente las vistas de lista en bases de datos más grandes. Es más fácil agregar el índice desde el principio que optimizarlo después.


Usar Integer para almacenar proporciones basadas en decimales

A veces, los desarrolladores almacenan porcentajes como campos Integer, escribiendo 75 para significar 75%. Esto funciona hasta que alguien necesita 72.5%, momento en el cual el campo rompe el requisito. Si hay alguna posibilidad de que un porcentaje o proporción necesite precisión decimal, usa Float desde el principio.


Olvidar store=True en campos computados utilizados en filtros

Este es uno de los errores más comunes en el desarrollo de Odoo. Un campo Integer computado sin store=True no puede ser utilizado en filtros de dominio, acciones automatizadas o operaciones de agrupación en vistas de lista. Siempre piensa en dónde se usará el campo antes de decidir si almacenarlo.

Conclusión


El campo Integer es un bloque de construcción fundamental en el modelo de datos de Odoo. Parece simple, y en la mayoría de los casos lo es. Pero conocer sus comportamientos específicos, como el hecho de que los campos vacíos devuelven 0 y que los campos computados necesitan store=True para funcionar en filtros, te ayuda a evitar los tipos de errores y problemas de diseño que son fáciles de introducir y más difíciles de corregir después.


Ya sea que estés configurando Odoo para un equipo de ventas, construyendo un módulo personalizado o diseñando reglas de reabastecimiento para un almacén, los campos Integer aparecerán en cada paso. Entender cómo funcionan en el ORM de Odoo, cómo crearlos con Studio o Python, y cuándo usarlos en lugar de Float o Monetary es parte de lo que hace que una implementación de Odoo sea sólida y mantenible.


Si estás trabajando en una personalización de Odoo y quieres asegurarte de que tu modelo de datos esté construido de la manera correcta desde el principio, este tipo de conocimiento fundamental vale la pena durante toda la vida del proyecto.

Trabajar con un experto en Odoo


En Dasolo, ayudamos a las empresas a implementar, personalizar y optimizar Odoo en todos los módulos e industrias. Ya sea que necesites diseñar un modelo de datos limpio, construir campos y flujos de trabajo personalizados, o conectar Odoo a sistemas externos a través de la API, traemos la experiencia para hacerlo bien.


Si tienes preguntas sobre tu configuración de Odoo o quieres discutir un proyecto, contacta a nuestro equipo. Estamos felices de ayudar.

Campo Entero en Odoo: Guía Completa
Dasolo 6 de marzo de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario