Filtrando búsquedas por el mes actual en odoo
Muchas veces en Odoo necesitamos mostrar en las vistas lista (o tree, como le dicen en Odoo anda a saber porque) las facturas, pedidos de venta/compra, remitos, etc. los registros del mes actual. Por ejemplo facturas que vencen el presente mes, pedidos creados el mes corriente, etc. Ahora, es una vista dínamica porque el mes corriente cambia (al igual que el año, o día). Como lo hacemos en las vistas de Odoo?
Se debe modificar/crear la vista de búsqueda y agregar un filtro predeterminado. En ese filtro vamos a hacer uso de la variable context_today que nos devuelve el día de hoy. Lo que es fantástico. Un ejemplo, puede ser el siguiente (en un objeto obligación negociable filtrando las obligaciones negociables que tienen fecha de vencimiento en el mes actual):
<filter name="investments_to_expire" string="ON a vencer" domain="[('fecha_vencimiento_capital','>=', context_today().strftime('%%Y-%%m-01')),('fecha_vencimiento_capital','<', (context_today()+relativedelta(months=1)).strftime('%%Y-%%m-01'))]" />
Como podran ver en forma dinámica se compara una columna fecha_vencimiento_capital con el primer día del mes corriente y el primer día del mes siguiente. Se usa la variable de contexto context_today que devuelve un datetime con la fecha/hora de hoy. Y la misma se transforma a string para compararla con la columna. Tambien se usa el timedelta para agregar un mes y realizar la comparación del primero del mes siguiente.
Este código pensé que les sería de utilidad, a mi me ahorró mucho tiempo el día de ayer. Por otra parte, se anunció el Odoo Experience 2021. Es en Octubre, lo que nos brinda un pantallazo sobre el optimismo sobre como avanzará la vacunación y la pandemia en Europa para esa época del año. Va a ser un 2021 muy largo (y ya casi estamos en Marzo!)
Acerca de:
Gustavo Orrillo
Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.