Help

4

Filter by date of today with a delay

Avatar
Wided

Hello, When creating a filter in the client, how can I indicate in the domain to filter on the stock moves before (the date of today - 10 days) for example? I tried different expressions but that didn't work. Thanks.

1 Comment
Avatar
Discard
Avatar
Wided
-

Now, I'd like to use this filter in a campaign segment. When I click on the "synchronize" button, I get an error "NameError: name 'context_today' is not defined". I don't understand why does this work only in sale order line view. Do you have any idea?

3 Answers
8
Avatar
Andreas Brueckl
Best Answer

The model stock.move uses a timestamp value for field date. The following domain should return all moves where the date is earlier than today - 10 days:

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

I assume, that you use the domain in a window action. If you want to use it in a view, you should use &lt;= instead of <=.

6 Comments
Avatar
Discard
Avatar
Wided
-

Thank you very much, that worked.

Avatar
Camptocamp SA
-

+1 for this good answer As said Francesco, in a view you need to escape the % using %%

Avatar
Gustavo
-

Hello, you used the context_today () like domain in the model and it works perfectly, but I try to do it with a datetime field and shows me an error message.

The code I use is

'agenda_id': fields.many2one ('delphos.citamedica.agenda', 'Agenda', required = True, domain = "[('doctor_id', '=', doctor_id), ('date', '> =', ((context_today ()). strftime ('% Y-% m-% d% H:% m:% S'))), ('date_deadline', '<=', ((context_today ()). strftime ('% Y-% m-% d% H:% m:% S')))] "),

The error message says: Uncaught Error: ValueError: No known conversion for% H

That could be my mistake?

Avatar
Wided
-

probably there should not be a space between "%" and "H"?

Avatar
P.V.Anthony
-

Thank you very much for sharing this solution. It has helped me very much.

Avatar
Aron Lorincz
-

How great it is that the documentation says almost nothing about this.

4
Best Answer

Try this:

[('date', '&gt;=', (context_today() - datetime.timedelta(10)).strftime('%%Y-%%m-%%d') )]
5 Comments
Avatar
Discard
Avatar
Wided
-

Unfortunately, that doesn't work.

Avatar
Francesco OpenCode
-

If you share the error we can help you. Why this code doesn't work?

Avatar
Wided
-

There's no error, it's a filter I'm creating in a view, when I use it I don't get my lines filtered. This is probably because filters in the views differ from the other filters. Anyway, thanks for your answer.

Avatar
Camptocamp SA
-

+1 for the format for views

Avatar
Andres Brigard
-

It worked fine with just one %.

[('date', '&gt;=', (context_today() - datetime.timedelta(10)).strftime('%Y-%m-%d') )]

1
Avatar
Wided
Best Answer

The only expression that works is:

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

I don't know how to integrate delay in it.

3 Comments
Avatar
Discard
Avatar
Mihai Marius
-

Thanks for the update. it works :). For your question you can find in search view for crm.lead examples for delays. Hope this is not too late. Cheers!

Avatar
Wided
-

Thanks, but I didn't find the example you've mentioned in the crm.lead search view. Can you give the line number, please?

Avatar
Mihai Marius
-

Hi, In view "crm.lead.report.select" first 3 or 4 lines are filter buttons which are using domain filters in views for current year, month or last month.