This question has been flagged
4 Replies
8202 Views

Use case : In the CRM app, I want to be able to filter on the task changed this week/last24H/no change in the past 30 days.


How to :


1. Create a new filter with the date you want to filter in Odoo with studio (search view). Any filter would work, we just need Studio to create a view. 


2. Open the studio view that was created (Odoo Studio: MODEL.search.inherit.VIEW customization) 


3. Change the domain :


CHANGED THIS WEEK : 

domain="[('date','<',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d 00:00:00'))]"


CHANGED THIS DAY  : 

domain="[('date','<',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','>=',(datetime.date.today()-datetime.timedelta(hours=24)).strftime('%%Y-%%m-%%d 00:00:00'))]"


NO CHANGE LAST 30 DAYS

domain="[('date','<',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d 00:00:00'))]"


'date' = update this field and use the name of field you need to filter.


********

Example : 

<xpath expr="//filter[@name='activities_upcoming_all']" position="after">

<separator/>

<filter name="stage_change_week" string="Stage Changed This Week"  domain="[('date_last_stage_update','&lt;',time.strftime('%%Y-%%m-%%d 23:59:59')),('date_last_stage_update','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d 00:00:00'))]"/>

<filter name="stage_change_day" string="Stage Changed 24 Hrs" domain="[('date_last_stage_update','&lt;',time.strftime('%%Y-%%m-%%d 23:59:59')),('date_last_stage_update','>=',(datetime.date.today()-datetime.timedelta(hours=24)).strftime('%%Y-%%m-%%d 00:00:00'))]"/>

<filter name="no_stage_change_month" string="No Stage Change 30 Days" domain="[('date_last_stage_update','&lt;',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d 00:00:00'))]"/>

</xpath>

Avatar
Discard
Best Answer

Marked as solved

Avatar
Discard
Best Answer

Doesn't work anymore on v17,


Anytips ?

Avatar
Discard
Best Answer

I have used this example to make a filter for vendor bills that are due in the coming week. Thanks a lot!

domain="[('invoice_date_due','<',(datetime.date.today()+datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d 00:00:00')),'&', ('state', '=', 'posted'), ('payment_state', 'not in', ('paid', 'in_payment','reversed'))]"/>

Avatar
Discard
Best Answer

Interesting, but why this is not embedded in Odoo directly? It's useful for dashboards...

Avatar
Discard