Uso y creación de secuencias

Las secuencias (ir.sequence) en Odoo son un mecanismo fundamental para generar códigos únicos y consecutivos, como: • Referencias de movimiento de almacen (WH/OUT/0001). • Referencias de pedidos (SO/001). • Códigos de productos (PROD-1000). Odoo V18 Pack de Exdoo

Carlos Blanco

5/16/20252 min read

Cada secuencia en Odoo tiene:

  • Prefijo/Sufijo: Ej: "INV/" + "/2023".

  • Relleno (padding): Número de dígitos (ej: 0001 usa padding=4).

  • Incremento: Paso (por defecto 1).

Las secuencias pueden ser creadas por código o manuales, para crearlas manuales se debe ingresar al menú Ajustes -> Técnico -> Secuencias -> Secuencias.

Los atributos de las secuencias funcionan de la siguiente forma:

  • Código de la secuencia: Identificador único para referenciar la secuencia desde código Python u otros modelos. Debe ser único en la base de datos y se utiliza para llamar a la secuencia con el método next_by_code().

  • Prefijo: Texto estático o dinámico que se añade al inicio del número generado. Ejemplo: PER o PER/%(year)s/.

  • Sufijo: Texto estático o dinámico que se añade al final del número. Ejemplo: /%(month)s (mes actual en formato 01-12).

  • Tamaño de la secuencia: Número de dígitos que se rellena con ceros a la izquierda. Por ejemplo, si el tamaño es 4, el número obtenido sería 0004.

  • Paso: Incremento entre dos números consecutivos. Por defecto, se usa 1 para obtener números consecutivos, pero puede configurarse para generar secuencias separadas por 2 números o más. Si el paso es 2, la secuencia sería: 0001, 0003, 0005.

  • Uso de subsecuencias por date_range: Crea sub-secuencias independientes por período (año, mes, etc.). Ideal para reiniciar conteos anuales. Por ejemplo:

    • Secuencia del año 2023: INV/2023/0001, INV/2023/0002.

    • Al cambiar al año 2024: INV/2024/0001.

  • Implementación: Existen dos métodos de implementación:

    • Estándar: Almacena el contador en la base de datos y se utiliza en modelos con poca actividad. Odoo incrementa el valor de number_next sin bloqueos estrictos, lo que podría ocasionar que, si dos procesos solicitan un número simultáneamente, se generen duplicados o saltos en la secuencia.

    • Sin espacios (no_gap): Garantiza que no haya saltos entre números, usando bloqueos de base de datos hasta que se complete la transacción.

Ejemplo para crear secuencias:

Para obtener la secuencia dentro de un modelo en Odoo, se usa el siguiente código:

Para crear una secuencia con rango de fechas, el XML debe ser definido con date_range_ids.

Si tiene dudas, no dude en ponerse en contacto con nosotros a través del correo: info@exdoo.mx.

En Exdoo podemos desarrollar cualquier módulo para Odoo en México, implementamos tu ERP con consultores experimentados no solo en Odoo sino en procesos de negocios, tenemos 10 años trabajando solamente con Odoo en México y otros países.