„System sam zmienia miejsce dodawanego asortymentu" — takie zgłoszenie brzmi jak błąd. Zwykle to nie błąd, lecz szczegół projektowy Odoo, o którym łatwo nie wiedzieć. Co ciekawe, za dwiema z pozoru różnymi prośbami — „zablokujcie przestawianie pozycji" i „dodajcie widoczny numer pozycji" — stała jedna, wspólna przyczyna.
Objaw
Duża faktura zakupu, kilkadziesiąt pozycji zaciąganych z zamówień albo wczytywanych przez OCR. Przy dodaniu kolejnej partii pozycje przeskakują — kolejność przestaje odpowiadać dokumentowi dostawcy. Ręczne układanie dziesiątek linii jest żmudne i zawodne, a przy następnym imporcie i tak się rozjeżdża.
Mechanizm
Odoo sortuje linie faktury po polu sekwencja (sequence). Klucz jest tu jeden: dla wszystkich linii produktowych to pole ma domyślnie tę samą wartość — jest wyliczane wyłącznie z typu linii, nie z kolejności źródła. Skoro wszystkie linie remisują, o realnej kolejności decyduje moment dodania do bazy. Nowa partia z zamówienia lub ponowny odczyt OCR wstawia linie „gdzie popadnie". Ani autouzupełnianie z zamówienia, ani import OCR nie zapisują kolejności z dokumentu źródłowego.
Jak z tym pracować
- Zrozum, że to nie awaria. Brakuje jednego zapisu — świadomej sekwencji — a nie „coś się zepsuło".
- Rozwiązanie jest po stronie danych, nie klikania. Przy zaciąganiu pozycji warto nadać im rosnącą sekwencję zgodną ze źródłem. To pole jest zapisywane i edytowalne — jawnie podana wartość nie zostaje nadpisana przez mechanizm.
- Widoczna numeracja (LP) to pochodna tej samej sekwencji — kolumna licząca po sekwencji porządkuje listę i ułatwia kontrolę zgodności z dokumentem dostawcy.
- Zmianę trzymaj w warstwie własnej (dziedziczenie w custom-addons), nie w rdzeniu — rdzeń zostaje nietknięty i aktualizowalny.
Wniosek
Objaw wyglądał na kaprys systemu, a był konsekwencją jednego, niewidocznego pola. Najtrwalsze rozwiązania w Odoo rzadko polegają na walce z zachowaniem programu. Częściej sprowadzają się do uzupełnienia tego, czego mechanizm nie zapisał — świadomie, w warstwie własnej, z rdzeniem nietkniętym. A jedna dobrze zrozumiana przyczyna potrafi zamknąć dwa różne zgłoszenia naraz.