Jak český řetězec potravin snížil plýtvání mlékem o 40 %
Regionální řetězec potravin ve středních Čechách vyhazoval každý pátý mléčný výrobek. Příčinou nebylo špatné mléko — problémem byla jednotná pravidla doplňování zásob aplikovaná na 12 prodejen s naprosto odlišnou poptávkou a rychlostí dodávek. Individuálně vypočítané objednací body pro každou prodejnu snížily plýtvání z 21 % na 12 % během šesti měsíců.
Klient
Regionální řetězec potravin provozující 12 prodejen ve středních Čechách — od frekventovaných pražských lokalit po maloměstské obchody poblíž Kutné Hory. Přibližně 200 chlazených mléčných SKU (mléko, jogurty, smetana, sýry) od tří místních družstev, s denními nebo obdenními dodávkami. Zásoby a nákup spravovány v Odoo.
Problém: Jeden tabulkový procesor pro 12 prodejen
Plýtvání mléčnými výrobky dosahovalo 18–22 % v celém řetězci. Vedoucí prodejen nastavovali objednací body kopírováním hodnot ze sdílené tabulky: min_qty=50, max_qty=100 pro mléko na všech pobočkách. Žádné rozlišení mezi pražskou prodejnou prodávající 80 kartonů denně a maloměstským obchodem prodávajícím 15.
Dodací lhůty se lišily podle lokality, ale v Odoo byla uložena jediná statická hodnota — “2 dny” — pro všechny prodejny. Nikdo neměřil skutečný poměr plýtvání k poptávce na úrovni jednotlivých prodejen. Odpad byl považován za nevyhnutelný náklad podnikání.
Krok 1: Analýza dodacích lhůt
Z Odoo jsme extrahovali 18 měsíců dat o příjmu objednávek a sestavili empirická rozdělení dodacích lhůt podle dodavatele a lokality prodejny. Stejné mlékárenské družstvo vykazovalo dramaticky odlišné vzorce dodávek v závislosti na zeměpisné poloze:
Pražské prodejny dostávaly čerstvé mléčné výrobky během několika hodin (P90: 0,4 dne). Prodejny podél koridoru D11 měly P90 1,4–2,2 dne. Východní prodejny u Kutné Hory dosahovaly P90 2,8–3,8 dne — až 7× pomaleji než Praha u stejného produktu od stejného družstva.
Vedoucí prodejen o ničem z toho nevěděli. V Odoo bylo “2 dny” pro všechny lokality. Pro Prahu to bylo příliš konzervativní. Pro východní prodejny příliš optimistické.
Krok 2: Rychlost poptávky na úrovni prodejny
Vypočítali jsme průměrnou denní poptávku pro každé mléčné SKU a prodejnu z 12 měsíců prodejních dat. Poptávka se pohybovala od 8 kusů/den (malá prodejna, ochucené mléko) po 120 kusů/den (velká prodejna, plnotučné mléko 1L). Přesto sdílená tabulka měla min_qty=50 pro mléko plošně — některé prodejny přezásobovala a jiným nedodávala dostatek.
Krok 3: Objednací body s omezením trvanlivosti
Standardní vzorec objednacího bodu je min_qty = avg_daily_demand × lead_time_P90. Ale u zboží podléhajícího zkáze s trvanlivostí 5–7 dní existuje tvrdý strop: nelze objednat více, než prodejna stihne prodat před vypršením data spotřeby.
Pro prodejnu prodávající 20 kartonů/den plnotučného mléka (trvanlivost 6 dní, dodací lhůta P90 2,8 dne): strop plýtvání omezuje max_qty na 64 kusů. Stará tabulka měla 100 — při každé objednávce se objednávalo o 36 kartonů více, než prodejna stihla prodat před vypršením data spotřeby.
Krok 4: Vypočítané objednací body
Vypočítali jsme objednací body pro každou prodejnu a SKU tak, aby odrážely skutečnou rychlost poptávky dané lokality, rozdělení dodacích lhůt dodavatele a omezení trvanlivosti.
Stejný produkt dostane min_qty 7 v rychlé pražské prodejně a 219 v pomalé východní prodejně — protože to odpovídá dodacím lhůtám a poptávce. Stará jednotná hodnota 50 byla špatná pro obě: příliš vysoká pro Prahu (plýtvání), příliš nízká pro východ (výpadky zásob).
Řešení
Optimalizované hodnoty product_min_qty a product_max_qty se zapisují přímo do objednacích bodů v Odoo prostřednictvím automatizované týdenní synchronizace. Každá prodejna má pravidla specifická pro svou lokalitu. Dodací lhůty a poptávka se přepočítávají každé pondělí z nejnovějších dat; nové objednací body se nahrají do Odoo do úterního rána. Vedoucí prodejen mohou stále zasáhnout, ale systém standardně používá vypočítané hodnoty.
Výsledky
| Metrika | Před | Po | Změna |
|---|---|---|---|
| Míra plýtvání mléčnými výrobky | 21% | 12% | -40% |
| Výpadky zásob (mléčné/týden) | 14 | 5,5 | -60% |
| Průměrná hodnota zásob mléčných výrobků | základ | 85% | -15% |
| Frekvence objednávek | beze změny | beze změny | optimalizovaná množství |
Při přibližně 2 mil. Kč/měsíc za nákup mléčných výrobků snížení plýtvání z 21 % na 12 % přineslo úsporu přibližně 180 000 Kč měsíčně — tedy zhruba 2,2 mil. Kč ročně.