Firma handlowa importująca surowce przez lata pracowała na jednym magazynie w Polsce. Przyszło pytanie, które brzmiało niewinnie: „Mamy towar w zagranicznym składzie celnym, jak założyć nowy magazyn w Odoo?”. Założenie magazynu to kwadrans pracy. Wycena zapasu w tym magazynie zajęła o wiele więcej, jeden dedykowany moduł i audyt sald, który wykazał coś, czego nikt się nie spodziewał.
Jedno pytanie, dwie odpowiedzi
Magazyn w Odoo to obiekt logistyczny: własne typy operacji, własna numeracja dokumentów, własny adres. Odpowiedź na pytanie „jak go założyć” jest prosta.
Ważniejsze było drugie pytanie, które zadaliśmy biuru rachunkowemu klienta: czy wartość zapasu ma być widoczna osobno dla każdego miejsca składowania? Odpowiedź przyszła jednoznaczna. Tak, każdy magazyn na odrębnym koncie, bo od tego zależy uzgadnianie stanów i rozliczanie inwentaryzacji.
Wkrótce magazynów było już siedem: magazyn główny i składy celne w trzech krajach Unii. Biuro rachunkowe założyło dla każdego osobne konto zapasu w planie kont.
Co daje standard Odoo
W standardzie Odoo, przy wycenie automatycznej (perpetual), konta wyceny są przypisane do kategorii produktu, a nie do magazynu. W praktyce:
- przyjęcie w składzie zagranicznym i przyjęcie w magazynie głównym księgują się na to samo konto zapasu,
- przesunięcie towaru między dwoma magazynami jednej spółki nie tworzy żadnego zapisu księgowego — dla księgi głównej towar nigdzie się nie ruszył,
- wartość zapasu per magazyn widać w raporcie wyceny magazynowej, ale nie na kontach.
Jest też pułapka. Na kartotece lokalizacji Odoo ma pola kont wyceny dla wejścia i wyjścia. Wyglądają na gotowe rozwiązanie. W Odoo 17 działają jednak tylko dla lokalizacji niewewnętrznych (np. produkcja, inwentaryzacja). Dla lokalizacji wewnętrznych magazynu nie mają wpływu na księgowanie. Sama konfiguracja nie wystarczy.
Co dobudowaliśmy
Przygotowaliśmy moduł, który przenosi konto zapasu z kategorii produktu na magazyn. Działa według prostych reguł:
| Dokument | Standard Odoo | Z modułem |
| Przyjęcie od dostawcy (PZ) | Wn konto zapasu z kategorii | Wn konto magazynu przyjęcia |
| Wydanie do klienta (WZ) | Ma konto zapasu z kategorii | Ma konto magazynu wydania |
| Przesunięcie między magazynami (MM) | brak zapisu | Wn konto magazynu docelowego / Ma konto magazynu źródłowego |
| Przesunięcie wewnątrz jednego magazynu | brak zapisu | brak zapisu |
| Różnica inwentaryzacyjna | konto zapasu z kategorii | konto magazynu, w którym ją stwierdzono |
| Korekta ceny z faktury zakupu | konto zapasu z kategorii | konta magazynów, w których towar jest w dniu księgowania faktury, proporcjonalnie do ilości |
Magazyn bez przypisanego konta dalej księguje na konto z kategorii produktu, więc moduł nie wymusza zmian tam, gdzie nie są potrzebne.
Przed uruchomieniem biuro rachunkowe rozstrzygnęło cztery kwestie, które standard Odoo zostawia otwarte:
- Korekta z faktury zakupu trafia na magazyn, w którym towar jest w dniu księgowania faktury, a nie na magazyn przyjęcia. Saldo konta zgadza się wtedy ze stanem fizycznym.
- Wartość przesunięcia to koszt jednostkowy partii na stanie. Każda partia towaru jest przyjmowana jednorazowo, więc w praktyce to cena tej partii.
- Jeden dziennik dla wszystkich magazynów, z możliwością rozdzielenia w przyszłości.
- Data zapisu przesunięcia to data zatwierdzenia dokumentu MM w Odoo.
Audyt, który pokazał więcej niż miał
Moduł działa od dnia uruchomienia i nie przeksięgowuje historii. Biuro rachunkowe poprosiło więc o zestawienie wartości zapasu per magazyn na dzień startu, żeby samodzielnie rozdzielić saldo historyczne.
Zestawienie zgodziło się co do grosza z sumą warstw wyceny magazynowej Odoo. Przy okazji porównaliśmy jednak wycenę magazynową z saldami kont zapasu. Wynik:
- na nowych składach saldo księgowe było równe wartości zapasu — mechanizm działał,
- na głównym koncie zapasu saldo było ujemne, a różnica między księgami a rzeczywistą wyceną przekraczała całą wartość zapasu spółki.
Źródło leżało poza nowym modułem. Część historycznych przyjęć zatwierdzono z ceną zero. Odoo utworzyło wtedy zerowe warstwy wyceny FIFO, a przy sprzedaży zdjęło z konta wartość, której wcześniej na nie nie wprowadzono. Przekazaliśmy dane źródłowe. Ocena księgowa i sposób korekty zostały po stronie biura rachunkowego.
Po weryfikacji zapisów z nowych magazynów biuro rachunkowe potwierdziło, że operacje magazynowe księgują się na poprawne konta.
Wnioski dla firm z wieloma magazynami
- Zanim założysz drugi magazyn, zapytaj księgowość. Jeśli wystarczy jedna łączna wartość zapasu, standard Odoo wystarczy. Jeśli potrzebne są osobne konta, trzeba to zaprojektować przed pierwszym przyjęciem.
- Przesunięcie między magazynami to też księgowanie. W standardzie nie powstaje, a przy osobnych kontach jest niezbędne.
- Nie ufaj polom, które „wyglądają na właściwe”. Konto na lokalizacji wewnętrznej w Odoo 17 nie robi tego, co sugeruje nazwa.
- Uzgodnij wycenę magazynową z księgą. Raport wyceny Odoo i saldo konta 330 to dwa niezależne źródła. Jeśli się rozjeżdżają, problem zwykle leży w zerowych cenach na przyjęciach.
- Zostaw księgowości ostatnie słowo. Odoo odpowiada za mechanizm. O tym, co jest poprawnym zapisem, decyduje osoba, która podpisuje sprawozdanie.
Na koniec
Nowy magazyn w Odoo zakłada się w kilka minut. Wycenę zapasu w tym magazynie projektuje się razem z księgowością, bo to ona ustala, co ma być widać w bilansie. Osobne konto per magazyn daje to, czego oczekuje biuro rachunkowe: saldo, które można uzgodnić ze stanem bez arkusza pośredniego.
FAQ
Czy Odoo pozwala ustawić osobne konto zapasu dla każdego magazynu? Nie w standardzie. Konta wyceny są przypisane do kategorii produktu. Rozdzielenie per magazyn wymaga dodatkowego modułu.
Czy przesunięcie między magazynami w Odoo tworzy zapis księgowy? W standardzie nie, jeśli oba magazyny należą do tej samej spółki. Z modułem SoniqSoft powstaje zapis Wn konto magazynu docelowego / Ma konto magazynu źródłowego.
Czy przesunięcie towaru między magazynami jednej spółki to sprzedaż z VAT? Wewnątrz jednej spółki w Polsce nie — to ruch wewnętrzny bez przychodu i kosztu. Przy przemieszczeniu własnego towaru między krajami UE obowiązki VAT ocenia doradca podatkowy.
Skąd ujemne saldo konta zapasu przy dodatnim stanie magazynu? Najczęściej z przyjęć zatwierdzonych z ceną zero. Odoo tworzy wtedy zerowe warstwy wyceny FIFO, a przy wydaniu zdejmuje z konta wartość, której nie było.