Skąd bierze się zapotrzebowanie na materiały

Zamówienia klientów i zlecenia produkcyjne

Planowanie zakupów materiałowych zaczyna się przed zamówieniem do dostawcy, w miejscu, gdzie powstaje potrzeba. Według opisu HermesSQL analizuje przyjęte zamówienia klientów oraz zaplanowane zlecenia produkcyjne i na tej podstawie wylicza, jakie surowce są potrzebne i w jakiej ilości. To ujęcie odróżnia planowanie od zwykłego uzupełniania zapasów: zakup wynika z konkretnego popytu, a nie tylko z przekroczenia progu na półce.

Ta strona opisuje etap od wyliczenia potrzeb do zamówienia zakupu. Rejestrację dokumentu zakupu wraz z korektami omawia osobny tekst o zakupach w HermesSQL. Bilans zamówień klientów i rezerwacji, który dostarcza część danych wejściowych, ma własny opis w artykule o bilansie zamówień i rezerwacji.

Źródło potrzebyDane wejścioweMoment powstania potrzeby
Zlecenie produkcyjneStruktura wyrobu i ilość do wytworzeniaPoczątek operacji zużywającej materiał
Zamówienie klienta na towar handlowyIlość i termin realizacjiTermin wysyłki pomniejszony o czas kompletacji
Zapas minimalnyPróg zdefiniowany przy kartotece towaruChwila, gdy stan dostępny spada poniżej progu

Rozwinięcie struktury wyrobu na materiały

W produkcji zapotrzebowanie na materiał wylicza się przez rozwinięcie struktury wyrobu. Wyrób gotowy składa się z podzespołów, a te z surowców, więc zlecenie na sto sztuk generuje potrzeby na każdym poziomie struktury, przeliczone przez normy zużycia. Sposób zapisu takich struktur opisuje tekst o technologiach BOM w HermesSQL, a zasady planowania w czasie omawia artykuł o planowaniu produkcji. Ogólną logikę zależnych potrzeb materiałowych wyjaśnia strona o systemie MRP II.

Reguła: potrzeba brutto liczy się od terminu użycia materiału w produkcji, nie od terminu zlecenia. Zamówienie złożone według daty zlecenia dociera za wcześnie albo za późno.

Prognoza i zamówienia potwierdzone

Nie każda potrzeba ma to samo pewne pokrycie w zamówieniu klienta. Zlecenie oparte na potwierdzonym zamówieniu jest twardą podstawą zakupu, natomiast zlecenie z planu sprzedaży opiera się na prognozie. Zakup pod prognozę zwiększa ryzyko zapasu, dlatego planista rozdziela oba źródła i porównuje je w raporcie. Sposób budowy planów opisuje tekst o planach sprzedaży w HermesSQL.

Praktyczny skutek jest prosty. Materiały o długim czasie dostawy kupuje się pod prognozę, bo czekanie na zamówienie klienta zablokowałoby produkcję. Materiały dostępne od ręki kupuje się dopiero po potwierdzeniu popytu.

Bilans materiału i potrzeby netto

Stan dostępny i dostawy w drodze

Potrzeba netto jest potrzebą brutto pomniejszoną o to, co już jest albo niebawem dotrze. Od strony magazynu składają się na to stan dostępny oraz dostawy w drodze, czyli ilości z otwartych zamówień do dostawców. Stan dostępny nie obejmuje towaru zablokowanego ani zarezerwowanego pod inne zlecenia, o czym szerzej pisze tekst o stanach magazynowych. Po odjęciu tych ilości od potrzeby uzyskuje się ilość, którą trzeba dopiero zamówić.

Zapas minimalny działa w tym rachunku jako dodatkowy składnik potrzeby. Według opisu system uwzględnia minimalne stany magazynowe przy generowaniu zapotrzebowania, więc materiał, którego stan po realizacji zleceń spadłby poniżej progu, trafia na listę zakupów wcześniej.

WITH Potrzeby AS (
    SELECT MaterialId, SUM(Ilosc) AS Brutto
    FROM dbo.PotrzebaMaterialowa
    WHERE TerminPotrzeby <= @Horyzont
    GROUP BY MaterialId
),
Dostawy AS (
    SELECT MaterialId, SUM(IloscPozostala) AS WDrodze
    FROM dbo.ZamowienieZakupuPozycja
    WHERE TerminDostawy <= @Horyzont
    GROUP BY MaterialId
)
SELECT p.MaterialId,
       p.Brutto + m.StanMinimalny
         - ISNULL(s.Ilosc, 0) - ISNULL(d.WDrodze, 0) AS Netto
FROM Potrzeby AS p
JOIN dbo.Material AS m ON m.MaterialId = p.MaterialId
LEFT JOIN dbo.StanMagazynowy AS s ON s.MaterialId = p.MaterialId
LEFT JOIN Dostawy AS d ON d.MaterialId = p.MaterialId
WHERE p.Brutto + m.StanMinimalny
      - ISNULL(s.Ilosc, 0) - ISNULL(d.WDrodze, 0) > 0;

Nazwy tabel i kolumn w przykładzie są umowne. Wyrażenia tablicowe CTE porządkują zapytanie na trzy niezależne kroki, a ich składnię opisuje dokumentacja WITH common_table_expression. Parametr @Horyzont wyznacza dzień, do którego sumuje się potrzeby i dostawy.

Zapas bezpieczeństwa

Zapas minimalny bywa wyliczany z rozkładu popytu w czasie dostawy. Dla popytu o rozkładzie zbliżonym do normalnego zapas bezpieczeństwa równa się iloczynowi współczynnika poziomu obsługi i odchylenia standardowego popytu w czasie dostawy. Wyższy poziom obsługi oznacza większy zapas, a koszt rośnie szybciej niż zysk, więc dla materiałów drogich stosuje się niższe poziomy niż dla tanich i krytycznych dla produkcji.

Horyzont planowania

Zbyt krótki horyzont ukrywa potrzeby, których czas dostawy jest dłuższy niż okres planowania. Zbyt długi zasypuje zakupy propozycjami zależnymi od zleceń, które jeszcze się zmienią. Praktyczna zasada zakłada horyzont równy najdłuższemu czasowi dostawy z listy materiałów planowanych plus okres zamrożenia.

Ilustracja zestawienia stanów magazynowych materiałów porównywanych z potrzebami produkcji
Stan dostępny materiału jest jednym ze składników bilansu, z którego wynika potrzeba netto

Parametry dostawcy i wielkość zamówienia

Minimalna ilość zakupowa i partia ekonomiczna

Opis systemu wymienia cztery parametry zapisane przy dostawcy: minimalną ilość zakupową i średni czas dostawy, a także partię zakupową i częstotliwość dostaw. Minimalna ilość wyznacza dolną granicę zamówienia. Partia zakupowa jest krokiem, którym ilość rośnie powyżej minimum, na przykład paleta lub opakowanie zbiorcze.

Pojęcie partii ekonomicznej pochodzi z ogólnej teorii zapasów. Klasyczny wzór EOQ ma postać pierwiastka z dwukrotności iloczynu rocznego popytu i kosztu jednego zamówienia, podzielonej przez roczny koszt utrzymania jednostki zapasu. Wynik wskazuje wielkość zamówienia, przy której suma kosztów zamawiania i przechowywania jest najmniejsza. W praktyce wynik zaokrągla się do partii zakupowej dostawcy, bo dostawca nie sprzeda ułamka palety.

Parametr dostawcyWpływ na zapotrzebowanie
Minimalna ilość zakupowaPodnosi zamówienie do progu opłacalności
Partia zakupowaZaokrągla ilość w górę do wielokrotności
Średni czas dostawyPrzesuwa termin złożenia zamówienia wstecz
Częstotliwość dostawOgranicza dni, w których dostawca realizuje zamówienia

Czas dostawy i termin złożenia zamówienia

Termin zamówienia wynika z odjęcia od daty potrzeby czasu dostawy i bufora bezpieczeństwa. Średni czas dostawy jest wartością statystyczną, więc bufor pokrywa odchylenia. Kolejny przykład łączy oba parametry z zaokrągleniem do partii.

SELECT n.MaterialId,
       d.DostawcaId,
       DATEADD(DAY, -(d.CzasDostawyDni + d.BuforDni), n.TerminPotrzeby)
           AS TerminZamowienia,
       CASE WHEN n.Netto < d.MinIlosc THEN d.MinIlosc
            ELSE CEILING(n.Netto / CAST(d.Partia AS DECIMAL(18,3))) * d.Partia
       END AS IloscDoZamowienia
FROM dbo.PotrzebaNetto AS n
JOIN dbo.DostawcaMaterial AS d ON d.MaterialId = n.MaterialId;

Rzutowanie dzielnika na DECIMAL jest tu konieczne. Gdy obie kolumny są całkowite, SQL Server wykonuje dzielenie całkowite i CEILING zaokrągla wynik już obcięty. Funkcje opisują strony o CEILING i DATEADD w dokumentacji Microsoft.

Zamienniki i wielu dostawców

Ten sam materiał można kupić u kilku dostawców, a część pozycji ma zamienniki technologiczne. Wtedy planowanie wybiera źródło według reguły: dostawca podstawowy dopóki mieści się w terminie, dostawca zapasowy przy przekroczeniu. Reguła musi być jawna, bo automatyczne przełączenie na droższe źródło zmienia koszt zlecenia i powinno pozostawić ślad w dokumencie.

Częstotliwość dostaw i okres zamrożenia

Dostawca, który wysyła towar we wtorki i czwartki, nie dowiezie materiału w środę, choć czas dostawy tego by nie wykluczał. Termin dostawy trzeba więc przesunąć na najbliższy dzień realizacji. Okres zamrożenia działa odwrotnie: chroni zamówienia bliskie realizacji przed zmianami, bo dostawca już je skompletował lub wysłał.

Harmonogram dostaw materiałów

Terminy cząstkowe i priorytety

Opis wspomina o harmonogramowaniu dostaw zgodnie z rzeczywistymi potrzebami produkcyjnymi oraz o priorytetach dostaw. Przy większej liczbie zleceń materiał rzadko przychodzi w całości. Zamówienie dzieli się na terminy cząstkowe, a każdy z nich ma własną datę i ilość powiązaną ze zleceniem, które go pierwsze zużyje.

Priorytet rozstrzyga, które zlecenie dostanie materiał, gdy dostawa nie pokrywa wszystkich potrzeb. Najczęściej decyduje termin realizacji zamówienia klienta, a przy równych terminach marża lub kara umowna za opóźnienie.

Przesunięcie dostawy i jego skutki

Dostawca zmienia termin, a system musi ustalić, które zlecenia na tym cierpią. Przesunięcie o dwa dni nie zatrzymuje produkcji, jeśli zlecenie zużywające materiał zaczyna się tydzień później. To samo przesunięcie wstrzymuje linię, gdy materiał jest potrzebny jutro. Odpowiedź daje zestawienie zleceń powiązanych z zamówieniem, uszeregowane według daty pierwszego zużycia.

Po ustaleniu skutku planista przesuwa zlecenie albo kupuje ilość uzupełniającą u dostawcy zapasowego. Trzecia droga to przyspieszenie dostawy u dotychczasowego dostawcy. Każda z nich zmienia bilans i uruchamia nowy przebieg planowania w zakresie danego materiału.

Awizacja i kontrola terminu

Harmonogram planuje się na papierze, a realizuje na rampie. Dostawa zapowiedziana w systemie awizacyjnym ma przypisane okno czasowe, więc planista widzi, czy materiał dotrze przed rozpoczęciem operacji. Przebieg tego etapu opisuje tekst o awizacjach dostaw do magazynu, a zasady planowania po stronie magazynu zbiera strona o planowaniu dostaw do magazynu. Okna czasowe rezerwuje się w module opisanym na stronie zarządzania oknami czasowymi.

Ilustracja integracji harmonogramu dostaw materiałów z łańcuchem dostaw i magazynem
Harmonogram dostaw wiąże potrzebę materiałową z terminem, w którym dostawa faktycznie trafia na magazyn

Od propozycji do zamówienia do dostawcy

Grupowanie potrzeb według dostawcy

Lista potrzeb netto obejmuje setki materiałów, a zamówienia składa się do dostawców. Propozycje grupuje się więc według dostawcy i terminu, aby jedno zamówienie zawierało wszystkie pozycje z tego samego dnia. Łączenie zamówień obniża koszt transportu, lecz wydłuża zapas, jeśli grupuje się pozycje o odległych terminach.

  • Grupowanie po dostawcy - jedno zamówienie dla wszystkich pozycji z tym samym terminem wysyłki.
  • Okno łączenia - liczba dni, w których dwie potrzeby traktuje się jako jedną.

Zamówienie ramowe i odwołania

Przy materiałach o stałym zużyciu firmy zawierają zamówienie ramowe na okres, a poszczególne dostawy wywołuje się odwołaniami z konkretnymi datami. Zamówienie ramowe ustala cenę i łączną ilość, natomiast harmonogram odwołań podlega planowaniu jak zwykłe zamówienie. Dzięki temu propozycje zakupów dotyczą wyłącznie odwołań, a nie kolejnych negocjacji.

Zatwierdzenie propozycji przez planistę

Propozycja zamówienia jest podpowiedzią. Planista weryfikuje ilości i w razie potrzeby odracza zakup, zanim system wygeneruje dokument. Po zatwierdzeniu powstaje zamówienie do dostawcy, a jego pozycje wchodzą do bilansu jako dostawy w drodze. Ta pętla powoduje, że ta sama potrzeba nie zostanie zamówiona drugi raz przy kolejnym przebiegu planowania.

Według opisu system kontroluje też realizację zamówień i wspiera rozliczanie poszczególnych procesów. Powiązanie zamówienia z przyjęciem i fakturą opisuje strona o rejestracji zakupów.

Kontrola realizacji i analiza zakupów

Terminowość dostaw

Parametry dostawcy zapisane w kartotece z czasem tracą aktualność. Średni czas dostawy z poprzedniego roku nie odpowiada czasowi, który dostawca realizuje dzisiaj. Porównanie daty potwierdzonej z datą faktycznego przyjęcia pokazuje rozrzut i pozwala skorygować bufor w kartotece.

Wnioski z porównania terminów przekładają się na konkretne działania. Każda reakcja ma inny koszt, więc dobiera się ją do wielkości i częstości opóźnień.

ObserwacjaDziałanie w planowaniu
Stałe opóźnienie o kilka dniZwiększenie czasu dostawy w kartotece dostawcy
Duży rozrzut terminówWiększy bufor albo dostawca zapasowy
Niekompletne dostawyPodniesienie zapasu minimalnego dla materiału
Zmiany ceny przy każdym zamówieniuZamówienie ramowe z ceną ustaloną na okres
SELECT dz.DostawcaId,
       COUNT(*) AS Pozycje,
       SUM(CASE WHEN pr.DataPrzyjecia <= dz.TerminPotwierdzony
                THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS ProcentTerminowych,
       AVG(DATEDIFF(DAY, dz.TerminPotwierdzony, pr.DataPrzyjecia)) AS SredniePoslizg
FROM dbo.ZamowienieZakupuPozycja AS dz
JOIN dbo.PrzyjeciePozycja AS pr ON pr.ZamowieniePozId = dz.Id
GROUP BY dz.DostawcaId;

Wynik pokazuje dla każdego dostawcy udział pozycji przyjętych w terminie oraz średni poślizg w dniach. Wartość ujemna średniego poślizgu oznacza, że dostawy przychodzą przed terminem, co również kosztuje, bo zajmuje miejsce na magazynie. Dane z takiego zapytania zasilają bufor bezpieczeństwa opisany w części o czasie dostawy.

Wskaźniki do raportu zakupowego

Opis podkreśla bieżącą analizę efektywności działań zakupowych. Do takiej analizy nadają się cztery wskaźniki liczone na widoku SQL, a udostępniane w raportach opisanych na stronie o raportowaniu HermesSQL.

  • Terminowość - odsetek pozycji przyjętych nie później niż w potwierdzonym terminie.
  • Kompletność - stosunek ilości przyjętej do zamówionej w pierwszej dostawie.
  • Rotacja zapasu materiałów - liczba obrotów zapasu w okresie, którą uzupełnia analiza z tekstu o rotacji i zaleganiu towarów.
  • Odchylenie ceny - różnica między ceną zamówienia a ceną z faktury.

Ogólny obraz systemu i jego modułów daje strona o rozwiązaniu HermesSQL dla produkcji.