Jak ustawić filtr, aby pokazywał datę na dziś.

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.

Udostępnij ten artykuł
Znaczniki
Zaloguj się by zostawić komentarz
Jak w łatwy sposób tworzyć domeny