Filtrando búsquedas por el mes actual
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
Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.