This question has been flagged
11 Replies
17852 Views

I want to filter last week. I mean if today is Monday, I want to have the date between last week's Monday to last week's Friday, and if today is Tuesday I want to have also the date between last week's Monday to last week's Friday.

I looked at python relativedelta and I succeded the following in python:

datetime.now()+ relativedelta(weeks=-1, weekday=MO)
datetime.now()+ relativedelta(weeks=-1, weekday=FR)

But I can't adapt to openerp v7. I tried with numbers instead of MO, FR, but no success. Please help me.

Thanks, TArpi

Avatar
Discard
Author

Thanks prakash! I saw that post, but that is about "today and 7 days", but I need last week no matter the day we are in this week. I mean I need the date of last week's monday and last week's friday, if we are on today, or tomorrow or so on (in this week). I hope I made myself clear. Sorry for my english. Thanks. TArpi

Author

Any answer?

Best Answer

Try the web_relativedelta module from OCA: https://github.com/OCA/web/tree/7.0/web_relativedelta.

This module brings the "weekday" parameter of relativedelta to work as expected in views and the following code to work:

<filter string="Last week" domain="[('date_order', '&gt;=', ((context_today()+relativedelta(weeks=-2,                                                                                       days=1, weekday=0)).strftime('%%Y-%%m-%%d'))),
                                                                        ('date_order', '&lt;=', ((context_today()+relativedelta(weeks=-1,                                                                                         weekday=6)).strftime('%%Y-%%m-%%d')))]"/>

Note that last monday is (weeks=-2, days=1, weekday=0) and not (week=-1, weekday=0) which would give monday of this week.

Avatar
Discard

Thanks Nicolas !!

Best Answer

try this

<filter icon="terp-go-week"
 string="Last 7 Days"
 domain="[('create_date','<',
 time.strftime('%%Y-%%m-%%d
 23:59:59')),('create_date','>=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d
00:00:00'))]"/>
Avatar
Discard
Author

Thanks, but this is about "the past 7 days" but I need last (past) week, no matter if today is Monday, or Tuesday, etc.

Best Answer

You Can easily add or subtract number of days  , this is an example works with me:

[('x_id_exp_date','<',(context_today()+relativedelta(days=30)).strftime('%%Y-%m-%d'))]


so for your case you can do like this :

[('x_id_exp_date','<',(context_today()+relativedelta(days=-7)).strftime('%%Y-%m-%d'))]

Avatar
Discard

so for your case you can do like this :

[('x_id_exp_date','<',(context_today()+relativedelta(days=-7)).strftime('%%Y-%m-%d'))]

Best Answer

Based on your python code the below code will adapt in openerp xml file

In python,

weekday=0 is equal to Monday 
weekday=4 is equal to Friday

Xml File

<filter icon="terp-document-new" string="Last weeK" name="flastweek"
 domain="[('date_order','&gt;=',((context_today() 
- relativedelta(weekday=0, weeks=-1)).strftime('%Y-%m-%d'))),
  ('date_order','&lt;=',((context_today() 
- relativedelta(weekday=4, weeks=-1)).strftime('%Y-%m-%d')))]"
/>
Avatar
Discard
Author

Thanks, but unfortunately the weekday isn't functioning in Oerp 7. As seen here: http://help.openerp.com/question/27660/weekday-does-not-work-in-relativedelta/ and here: http://stackoverflow.com/questions/22062960/openerp-search-view-how-to-get-current-date-weekday

Best Answer

Try the below code in openerp xml file:-

<filter icon="terp-document-new" string="Last week" name="flastweek"
domain="[('date_order','&gt;=', ((context_today()  + relativedelta(days=-1, weeks=-1)).strftime('%Y-%m-%d'))),
         ('date_order','&lt;=', ((context_today()  + relativedelta(days=3, weeks=-1)).strftime('%Y-%m-%d')))
        ]"/>
Avatar
Discard