Skip to Content
Menu
This question has been flagged
1 Reply
2151 Views

In some cases, it is necessary to view the records of the day, the filter should be useful in different apps.

Avatar
Discard
Author Best Answer

In some cases, it is necessary to view the records of the day (for example the sales of that day). To achieve this, we can create a filter that shows records from that period.

The base filter we will use is as follows:

["&", ("date", ">=", datetime.datetime.combine(context_today(), datetime.time(0, 0, 0))), ("date", "

Explanation of what the filter does:

  • "Date" = the field to be filtered
  • ">=" = Greater than or equal to
  • datetime.datetime.combine(context_today(), datetime.time(0, 0, 0)) = today’s date from 00:00:00
  • "Date" = the field to be filtered
  • "
  • datetime.datetime.combine(context_today(), datetime.time(23, 59, 59)) = today’s date up to 23:59:59

Note: The "date" field should be changed to the field you need to search.

However, this filter will need to be adjusted according to Greenwich Mean Time (GMT), as Odoo considers time starting from 00:00. If we used the filter as shown above, it would not display the correct information worldwide.

First, identify your user's time zone. You can do this by going to Settings > Users & Companies > Users > Select a user > Preferences > Check Time Zone.

Once you have identified the user's time zone, find the GMT offset for that zone. This is necessary to modify the filter accordingly.

In this case, we are in the GMT-6 time zone, which means that a time filter would look like this:

For example, if we filter by date and want to see all records with a date of 08/22/2024 at 00:00:00, Odoo will display records with a date of 08/22/2024 06:00:00 due to our GMT-6 time zone.

To display the correct time in our filter, we need to add (in the case of GMT-6) the 6-hour "delay" we have. The base filter would look like this:

["&", ("date", ">=", datetime.datetime.combine(context_today(), datetime.time(6, 0, 0))), ("date", "

Explanation of what the filter does:

  • "Date" = the field to be filtered
  • ">=" = Greater than or equal to
  • datetime.datetime.combine(context_today(), datetime.time(6, 0, 0)) = today’s date from 06:00:00
  • "Date" = the field to be filtered
  • "
  • datetime.datetime.combine(context_today() + datetime.timedelta(days=1), datetime.time(5, 59, 59)) = today’s date plus one day up to 05:59:59

Note: In the less than or equal part, the + datetime.timedelta(days=1) moves us to the next day. If we need to subtract it, we should use a minus sign (-).

Documentation: datetime: Python


Exercise 1:

We need to view the sales orders generated today. To do this, modify the base filter by changing the name of the date field and adjusting the time to work in the GMT-6 time zone.

Note: Developer mode must be enabled to use the filter.

This filter can be replicated across various models, countries, and time zones. The important part is understanding the logic of how it works so that it can be adapted to your needs.


Exercise 2:

The manager needs to see the information in real time, he would like to enter the system at the end of the day and see in a graphic way how many products they sold today. 

Create a new dashboard 

Dashboard > Configuration > New 

Name your dashboard as POS reports (or as needed), add a line and publish it 


Go to the Point of Sale app and enter the orders reports, enter your filter and group by product, now you will see how many products you sold today. 

Point of Sale > Reports > Orders


Insert the graphic in a spreadsheet and select the dashboard you want to show the report



It will automatically show you the spreadsheet, you can edit it if you need to. This functionality will let you add more graphics and add text.



Go to the dashboard app and select the “POS reports” board, the graphic will be showing the sales information of today.

Note: You can add as many graphics as you need, depending on the information the manager needs to analyze.


Using this filter allows the customer to quickly gain insight into the company's daily operations. By focusing on records from the current day, users can efficiently track and analyze recent activities, making it easier to stay informed and make timely decisions.

Avatar
Discard
Related Posts Replies Views Activity
0
Jul 25
355
2
Jul 25
424
3
Jul 25
2985
1
Jun 25
1304
5
Jun 25
16340