Przejdź do zawartości

Model stock.picking w Odoo: Jak działają transfery i operacje magazynowe

Kompletny przewodnik po centralnym modelu przesunięć w Odoo dla zarządzania zapasami i magazynem
10 marca 2026 przez
Model stock.picking w Odoo: Jak działają transfery i operacje magazynowe
Dasolo
| Brak komentarzy na ten moment

Wprowadzenie


W Odoo modele określają strukturę danych zapisywanych w bazie. Każdy element działalności — zamówienie sprzedaży, przesunięcie magazynowe, operacja magazynowa — ma swoje odwzorowanie w modelu, który zarządza polami, relacjami i zachowaniem tych danych.


Znajomość modeli Odoo jest niezbędna zarówno dla konsultantów funkcjonalnych, jak i programistów. To one stanowią trzon architektury danych: definiują jakie informacje są przechowywane, jak się łączą i jakie reguły biznesowe obowiązują.


Ten artykuł skupia się na jednym z najważniejszych modeli w aplikacji Magazyn — stock.picking. Niezależnie od tego, czy tworzysz moduły magazynowe na zamówienie, integrujesz zewnętrzne systemy czy konfigurujesz procesy, prędzej czy później trafisz na ten model.

Czym jest model stock.picking


Model stock.picking w Odoo odwzorowuje przesunięcia towarów. To centralny rekord, w którym śledzone są operacje magazynowe — każda pozycja to pojedynczy transfer z jednej lokalizacji do drugiej.


W module magazynowym stock.picking pojawia się przy przyjęciach, wydaniach i przemieszczeniach wewnętrznych. Potwierdzenie zamówienia sprzedaży, zaksięgowanie przyjęcia od dostawcy czy przemieszczenie pomiędzy magazynami generuje lub aktualizuje zapis stock.picking.


Model jest zdefiniowany w module stock, a pozostałe moduły go rozszerzają przez dziedziczenie modeli. Moduł Sprzedaż doda pola związane z dostawą, Zakupy — obsługę przyjęć, Produkcja — ruchy surowców i wyrobów. Dzięki temu rdzeń pozostaje wspólny, a nowe funkcje są doklejane modułowo.


stock.picking dziedziczy po mail.thread i mail.activity.mixin, co pozwala na śledzenie zmian, korzystanie z chattera oraz umawianie aktywności bezpośrednio na przesyłkach.

Kluczowe pola w modelu


Poniżej znajdziesz przegląd najważniejszych pól modelu stock.picking. Zrozumienie ich znaczenia ułatwi pracę z zamówieniami, rezerwacjami i operacjami magazynowymi.


1. name

Typ: Char. Numer referencyjny przesyłki. Zwykle generowany automatycznie przez sekwencję (np. WH/OUT/00001). Pokazywany w nagłówku dokumentu i służy jako główny identyfikator przemieszczenia.


2. origin

Typ: Char. Oznaczenie dokumentu źródłowego — na przykład numer zamówienia sprzedaży lub zakupu. Ułatwia śledzenie, skąd pochodzi dana przesyłka.


3. state

Typ: Selection. Status przesyłki. Możliwe wartości: Draft, Waiting Another Operation, Waiting, Ready, Done, Cancelled. Od stanu zależą dostępne akcje; wartość jest wyprowadzana na podstawie powiązanych ruchów magazynowych.


4. picking_type_id

Typ: Many2one (stock.picking.type). Typ operacji — przyjęcie, wydanie lub przemieszczenie wewnętrzne. Pole wymagane; każdy typ ma domyślne lokalizacje źródłową i docelową.


5. move_ids

Typ: One2many (stock.move). Ruchy magazynowe — każda linia opisuje produkt i ilość do przemieszczenia. To sedno przesyłki; na tych rekordach działa logika rezerwacji i dostępności.


6. move_line_ids

Typ: One2many (stock.move.line). Szczegółowe operacje: numery partii, numery seryjne, konkretne miejsca i opakowania. Wykorzystywane przy kompletacji, pakowaniu i walidacji.


7. location_id

Typ: Many2one (stock.location). Lokalizacja źródłowa — skąd pobierane są produkty. Pole wymagane; dla wydania zazwyczaj magazyn, dla przyjęcia — lokalizacja dostawcy.


8. location_dest_id

Typ: Many2one (stock.location). Lokalizacja docelowa — gdzie trafiają produkty. Pole wymagane; dla wydania to lokalizacja klienta, dla przyjęcia — magazyn.


9. partner_id

Typ: Many2one (res.partner). Kontrahent powiązany z przesyłką — klient przy wydaniu, dostawca przy przyjęciu. Wpływa na adresy dokumentów i integrację z przewoźnikami.


10. scheduled_date

Typ: Datetime. Zaplanowana data realizacji przesyłki. Służy do planowania i priorytetyzacji — ustawienie jej ustawia przewidywany termin dla powiązanych ruchów.


11. date_deadline

Typ: Datetime. Termin wykonania — często pochodzi z zamówienia sprzedaży lub zakupu. Przydatne w raportowaniu opóźnień i obietnicach dostaw dla klientów.


12. date_done

Typ: Datetime. Data zatwierdzenia lub anulowania przesyłki. Pole tylko do odczytu — wypełniane automatycznie po wykonaniu.


13. priority

Typ: Selection. Poziom priorytetu. Przy rezerwacji to transfery z wyższym priorytetem mają pierwszeństwo — używane przy obsłudze pilnych zamówień.


14. move_type

Typ: Selection. Polityka wysyłki — As soon as possible (częściowe dostawy dozwolone) lub When all products are ready (wszystko albo nic). Wpływa na moment, kiedy przesyłka może być realizowana.


15. user_id

Typ: Many2one (res.users). Użytkownik odpowiedzialny. Przydatne do rozdziału zadań i śledzenia obciążenia pracą; domyślnie ustawione na twórcę rekordu.


16. company_id

Typ: Many2one (res.company). Firma, do której należy przesyłka. W konfiguracjach wielofirmowych określa właściciela operacji i polityki księgowe/magazynowe.


17. group_id

Typ: Many2one (procurement.group). Grupa zamówień/procurements łącząca powiązane ruchy. Przydatne, gdy kilka przesyłek pochodzi z tego samego zamówienia.


18. backorder_id

Typ: Many2one (stock.picking). Link do oryginalnej przesyłki, gdy tworzony jest dokument uzupełniający (backorder) po częściowym zatwierdzeniu.


19. backorder_ids

Typ: One2many (stock.picking). Lista backorderów stworzonych z tego dokumentu — używana, gdy część towarów została zrealizowana, a reszta wymaga osobnej operacji.


20. return_id

Typ: Many2one (stock.picking). Jeżeli przesyłka jest zwrotem, to pole wskazuje pierwotną przesyłkę — istotne w procesach reklamacyjnych i zwrotach.


21. note

Typ: Html. Notatki wewnętrzne widoczne dla użytkowników magazynu — instrukcje specjalne, uwagi dotyczące obsługi przesyłki itp.


22. signature

Typ: Image. Podpis zarejestrowany przy odbiorze dostawy — dowód doręczenia przechowywany jako załącznik.


23. is_signed

Typ: Boolean. Pole obliczane na podstawie obecności podpisu — informuje, czy przesyłka została opatrzona podpisem.


24. owner_id

Typ: Many2one (res.partner). Właściciel towaru przypisywany przy walidacji — używane przy konsygnacji lub gdy towar należy do strony trzeciej.


25. package_level_ids

Typ: One2many (stock.package_level). Poziomy pakowania przy korzystaniu z funkcji "put in pack" — grupowanie linii ruchów w opakowania.


26. create_date

Typ: Datetime. Data utworzenia rekordu. Automatycznie zarządzana przez Odoo; pole bazowe.


27. write_date

Typ: Datetime. Data ostatniej zmiany rekordu. Automatycznie aktualizowana; przydatna do audytu.


28. active

Typ: Boolean. Flaga archiwizacji — gdy False, rekord jest zarchiwizowany zamiast usuwany. Pole dziedziczone z modelu bazowego.

Jak model wykorzystuje się w procesach biznesowych


1. Sprzedaż i wydania

Po potwierdzeniu zamówienia sprzedaży system generuje dokument wydania (stock.picking), powiązany z zamówieniem poprzez origin. Magazyn kompletuje i pakuje towary, a stan dokumentu przechodzi od draft przez ready do done po walidacji.


2. Zakupy i przyjęcia

Po zatwierdzeniu zamówienia zakupu powstaje przyjęcie przychodzące — przesyłka, która przenosi towar z lokalizacji dostawcy do magazynu. partner_id wskazuje dostawcę, a zatwierdzenie aktualizuje stany magazynowe.


3. Przemieszczenia wewnętrzne

Transfery między magazynami lub lokalizacjami generują wewnętrzne pickingi; picking_type_id ma typ 'internal', a oba miejsca (źródło i cel) to lokalizacje wewnętrzne.


4. Zwroty i backordery

W przypadku zwrotu sprzedaży tworzony jest dokument zwrotny powiązany polem return_id z oryginalnym wydaniem. Gdy przesyłka jest częściowo zrealizowana, resztę pracy reprezentują backorder_ids.


5. Produkcja i wytwarzanie

Zamówienia produkcyjne tworzą przesyłki dla pobrań surowców i przyjęć wyrobów. Moduł Produkcja rozszerza model stock.picking, aby obsłużyć specyfikę przepływu materiałów i gotowych produktów.

Jak programiści rozszerzają ten model


Programiści rozszerzają stock.picking stosując kilka sprawdzonych wzorców; podstawowym narzędziem jest dziedziczenie modeli w Odoo.


Dziedziczenie modelu

W praktyce używasz _inherit = 'stock.picking' by dodać własne pola, nadpisać metody lub dodać ograniczenia. Dzięki temu modyfikacje pozostają w osobnym module, co ułatwia późniejsze aktualizacje systemu.


Dodawanie pól

W rozszerzonym modelu deklarujesz nowe pola zgodnie z ich przeznaczeniem: Char, Many2one, Boolean, Integer, Text, Selection. Przy projektowaniu pamiętaj o polach zależnych od firmy w konfiguracjach wielofirmowych.


Rozszerzenia w Pythonie

Nadpisuj metody takie jak button_validate, action_assign czy _create_backorder, jeśli chcesz dopiąć logikę biznesową. Zawsze wywołuj super(), aby zachować oryginalne zachowanie — szczególnie tam, gdzie Odoo zarządza przejściami stanów i tworzeniem ruchów.


Odoo Studio

Odoo Studio umożliwia dodawanie pól bez pisania kodu — szybkie rozwiązanie na mniejsze potrzeby, jak dodatkowe notatki czy etykiety. Dla zaawansowanych integracji lub złożonej logiki lepszym wyborem są moduły customowe.

Dobre praktyki


  • Zawsze ustawiaj picking_type_id przy ręcznym tworzeniu przesyłek — to od niego zależą domyślne lokalizacje i zachowanie dokumentu.
  • Korzystaj z pola origin do śledzenia dokumentu źródłowego — ułatwia to raportowanie i debugowanie procesów.
  • Przy integracjach przez API model stock.picking jest w pełni dostępny — twórz ruchy przez relację move_ids, ale unikaj tworzenia pustych picków bez ruchów.
  • Wykorzystuj scheduled_date do planowania realizacji — wpływa ona na rezerwacje i priorytetyzację operacji.
  • Dla własnych pól stosuj prefiks x_ lub prefiks modułu, aby zmniejszyć ryzyko konfliktów z przyszłymi wydaniami Odoo.

Częste błędy


  • Tworzenie przesyłek bez ustawienia picking_type_id — może prowadzić do błędnych domyślnych lokalizacji i nieprawidłowego zachowania.
  • Modyfikowanie move_ids po potwierdzeniu bez zrozumienia maszyny stanów — przejścia stanowe i tworzenie ruchów są złożone i łatwo wprowadzić niespójności.
  • Zapominanie o ustawieniu partner_id przy wydaniach — brak kontrahenta może uniemożliwić integrację z przewoźnikami i poprawne generowanie dokumentów.
  • Nadpisywanie button_validate bez wywołania super() — ryzyko zepsucia tworzenia backorderów i kolizji z innymi modułami.
  • Zakładanie, że move_ids i move_line_ids zawsze będą zsynchronizowane — linie ruchu powstają przy rezerwacji lub przy operacjach szczegółowych, więc ich stan może się różnić.

Podsumowanie


Model stock.picking to serce modułu magazynowego w Odoo — przechowuje wszystkie przesunięcia, wydania i przyjęcia. Znajomość jego pól i sposobu rozszerzania pozwala lepiej konfigurować, dostosowywać i integrować system.


Czy jesteś konsultantem mapującym procesy magazynowe, czy programistą tworzącym rozszerzenia — solidne zrozumienie stock.picking oszczędzi czas i ograniczy ryzyko błędów.

Gotowy zoptymalizować magazyn w Odoo?


Dasolo wspiera firmy we wdrożeniach, dostosowaniach i optymalizacji Odoo. Specjalizujemy się w integracjach API i rozwoju modułów — mamy szerokie doświadczenie w architekturze danych Odoo oraz pracy z modelami jak stock.picking.


Jeśli potrzebujesz wsparcia przy wdrożeniu Odoo, tworzeniu niestandardowych modułów magazynowych lub integracji systemów, chętnie pomożemy. Umów demo aby omówić Twój projekt.

Model stock.picking w Odoo: Jak działają transfery i operacje magazynowe
Dasolo 10 marca 2026
Udostępnij ten artykuł
Zaloguj się by zostawić komentarz