W Odoo v16 w domenie filtru można wpisać tylko konkretna datę w postaci dzień-miesiąc-rok. Jeśli dziś ustawimy filtr, aby pokazywał nam tylko FV z terminem dziś, to użycie tak przygotowanego filtru za tydzień, pokaże mi FV, które były do zapłacenia tydzień temu a nie dziś.
Aby dany filtr był zawsze aktualny na dziś należy skorzystać z funkcji Pythona, która zwraca nam aktualny czas
datetime.datetime.now()
Niestety ręczne wpisanie w Odoo funkcji datetime.datetime.now() nie zadziała, ponieważ funkcja wykona się od razu przy zapisie i zwróci aktualną datę i godzinę. Aby nie została ona nadpisana, trzeba wykonać pewien trick.
Należy wyeksportować dany filtr, wyedytować go w zewnętrznym programie, a następnie zaimportować ponownie do Odoo. Po zaimportowaniu wyedytowanego filtra nie można edytować domeny, ponieważ spowoduje to wykonanie się wpisanej funkcji i wpisanie jej wyniku.
Zaczynamy od stworzenia własnego filtra który będziemy edytować:
1. Otwieramy dowolny model (np:Faktury) z oknem wyszukiwania w widoku Listy
2. Przygotowujemy własny filtr
3. Zapisujemy aktualnie wyświetlany filtr do ulubionych
4. Otwieramy menu trybu deweloperskiego i wybieramy Zarządzaj filtrami
5. Wybieramy zapisany wcześniej ulubiony filtr
Następnie eksportujemy stworzony przed chwilą własny filtr:
1 Zaznaczamy wybrany filtr w widoku Zarządzaj filtrami
2 Z menu Akcja wybieramy Eksport
Zawsze gdy będziemy chcieli ponownie zaimportować dane do odoo należy zaznaczyć przy eksporcie Chcę zaktualizować dane (eksport zgodny z importem).
Podmieniamy w programie zewnętrznym wartość daty na funkcję datetime.datetime.now().
Importujemy nasz zaktualizowany filtr do Odoo. Nie edytujemy już zaimportowanej domeny, spowoduje to wstawieniem aktualnej daty w miejsce naszej funkcji.
Jeśli potrzebujemy wyfiltrować dane z datą jutrzejszą, czyli dzień dzisiejszy +1 dzień należy skorzystać z funkcji:
datetime.datetime.now() + datetime.timedelta(days = 1)
Analogicznie do tej metody można wyfiltrować dane za tydzień datetime.timedelta(days = 7), lub dowolną ilość dni. Dodając do tego kombinacje porównania < i > można utworzyć zaawansowane wyszukiwania w zależności od potrzeb.