Skip to Content

Nikt tego nie kasował, a numer znikał ?!

Zgłoszenie brzmiało prosto: „telefon jest kasowany przez jakiś automat". W firmie z branży usługowo-produkcyjnej numer u jednego z kontrahentów znikał regularnie od kilku tygodni. Ktoś wpisywał go z powrotem, po paru dniach znikał znowu. Pracownicy byli pewni, że to nie oni.

Historia zmian w Odoo mówiła co innego. Sześć zmian w ciągu miesiąca, każda podpisana imieniem i nazwiskiem konkretnej osoby. Ani jedna kontem systemowym.

Podpis użytkownika to nie dowód winy

W Odoo kod uruchomiony z interfejsu zapisuje się pod kontem osoby, która go uruchomiła. Kliknięcie przycisku, kreator, import, integracja — wszystko to zostawia ślad człowieka, nawet gdy zmianę wykonał program. Historia zmian mówi kiedy i czyją sesją, nie co dokładnie ją wywołało.

To rozróżnienie decyduje o kierunku śledztwa. Bez niego rozmowa kończy się na „ktoś musiał kliknąć" i zgłoszenie wraca za miesiąc.

Wykluczanie to nie strata czasu

Przeszliśmy po kolei: reguły automatyzacji, wszystkie aktywne zadania cykliczne, wszystkie akcje serwera zdefiniowane w systemie, moduł zewnętrzny obsługujący dane kontrahentów, scalanie duplikatów, import masowy, edycję grupową, walidację numerów. Nic.

Ten etap zwykle uchodzi za jałowy, a jest odwrotnie: dopiero pusty wynik przesądza, że przyczyny nie ma w konfiguracji — i że dalsze klikanie po ustawieniach niczego nie da.

Jak zmusić system, żeby sam wskazał sprawcę

Kiedy konfiguracja jest czysta, zostaje pułapka. Cztery kroki:

  1. Reguła nasłuchująca. Automatyzacja reagująca na wyczyszczenie konkretnego pola. Nic nie blokuje — dopisuje do historii rekordu notatkę techniczną.
  2. Kontekst wywołania. W notatce zapisujemy kontekst sesji. To on mówi, którym kanałem przyszedł zapis: import pliku, formularz, kreator, zadanie cykliczne.
  3. Wartość sprzed zmiany. Pozwala odróżnić prawdziwe skasowanie od założenia nowego rekordu bez danych. Bez tego połowa trafień to szum.
  4. Wymuszony ślad. Gdy kontekst nie wystarcza, jednorazowo zamieniamy notatkę na błąd techniczny. Odoo zwraca wtedy pełną listę wywołań — z nazwą pliku i numerem linii.

Czwarty krok zamknął sprawę w jednym podejściu. Numer kasowało samo Odoo: przy zakładaniu projektu z szablonu system kopiował zadania, dokładał im kontrahenta i przepisywał puste pole telefonu z szablonu prosto na kontakt.

Na koniec

Dwie rzeczy warte zapamiętania. Pole oznaczone jako wymagane na formularzu nie jest wymagane w bazie — każda inna droga zapisu wpisze pustkę bez ostrzeżenia. I druga: gdy użytkownicy mówią, że czegoś nie robili, zwykle mają rację. Warto zacząć od założenia, że system ich nie oskarża, tylko podpisuje się ich nazwiskiem.

Poprawkę wdrożyliśmy, błąd zgłosiliśmy producentowi. Po dwóch tygodniach obserwacji — ani jednego nawrotu.


CRM, Sprzedaż i Księgowość w Odoo — gdzie kończy się jedna aplikacja, a zaczyna druga