Filtros Dinámicos EN ODOO V8

Ejemplos con la fecha del día

Valentín Vinagre

   En Modo desarrollador seleccionaremos 'Gestionar filtros' en la vista donde se desee crear el filtro.

Creamos un filtro nuevo y rellenamos los campos correspondientes al modelo. Si no estamos del todo seguros como deberían ser, siempre podemos crear un filtro desde la vista tree o kanbas, guardar ese filtro, como favorito, y modificar el dominio o copiar los datos de otro filtro que tengamos.

Una vez completada la creación del filtro tendremos que rellenar el campo ‘Dominio’ según nuestras preferencias.

Filtros

Un filtro simple se compone de:

[(Campo de modelo, tipo de comparación, valor o función para la comparación)]

Ejemplo que filtra los registros donde el campo 'date' es la fecha actual:

[('date','=', ((context_today()).strftime('%Y-%m-%d')))]

  • Hasta la primera coma es el campo fecha del modelo.
  • El segundo parámetro (signo de comparación) puede ser ‘=’,’<’,’<=’,’>=’,’>’,etc según lo que precisemos.
  • El tercer parámetro será la fecha dinámica (una función):
    • Context_today() se refiere al día actual del sistema, como nos lo pasa en formato fecha y el sistema lo guarda en formato texto lo tenemos que transformar a texto con él .strftime('%Y-%m-%d') donde el %Y es el año, %m el mes y %d el día.

Si por ejemplo queremos que nos ponga los que son mayores al mes en curso (desde el día 1)

[('date','>=', ((context_today()).strftime('%Y-%m-01’)))]

Operaciones con filtros

A los filtros se les puede aplicar diferentes operaciones matemáticas.

Ejemplo de filtro que muestra los registros cuya fecha sea menor a la fecha actual + 10 días

[('date','<=', ((context_today()+datetime.timedelta(days=10)).strftime('%Y-%m-%d')))]

Filtros compuestos

Hasta ahora todos los filtros eran simples, es decir, solamente tenían una condición para que se cumpliera. Al crear filtros que requieran más de una condición para su funcionamiento, se deberán tener en cuenta si se requiere que se cumplan o no y de qué manera las diferentes condiciones.

Tipos de condicionales:

  • ‘&’ este condicional indica que se tienen que cumplir las dos siguientes expresiones.
  • ‘|’ este condicional indica que se debe de cumplir una de las dos condiciones o las dos.

Los condicionales siempre deben ir delante de las dos condiciones donde se requiera aplicar.

En el siguiente ejemplo le indicamos que nos muestre los registros que están creados con fecha entre el día 01 – 05 del mes en curso ambos incluidos.


['&',('date','>=', ((context_today()).strftime('%Y-%m-01'))),('date','<=', ((context_today()).strftime('%Y-%m-05')))]