Dostupnost a sklad¶
Stav k 2026-06-21.
Dostupnostní číselník (eshop_produkty_dostupnost)¶
Každá hodnota dostupnosti = počet dní + titulek (např. "Skladem", "3–5 pracovních dní", "Na objednávku").
Produkt nese dvě dostupnostní hodnoty:
| Pole | Popis |
|---|---|
dostupnost |
dostupnost z vlastního skladu Pecky |
dostupnost_dodavatel |
dostupnost u dodavatele |
na_ceste |
datum, kdy zboží dorazí (pro "Na cestě" stav) |
Zobrazovaná dostupnost = minimum z obou hodnot (lepší z vlastního skladu vs. dodavatel).
Resetovací logika dostupnosti u dodavatele viz pole od_puvodni.
Sklady (eshop_sklady + eshop_produkty_sklady_mnozstvi)¶
eshop_sklady
id, zkratka, nazev
eshop_produkty_sklady_mnozstvi
produkt_id, sklad_id, mnozstvi
Každý produkt může mít množství ve více skladech. Klíčové sklady:
SZLAT— centrální sklad (zlatnická)KOM— komisionální sklad
VIEW eshop_produkty_sklad_centrala = množství na SZLAT.
VIEW eshop_produkty_aktualni_dostupnost = agregovaná dostupnost + množství přes všechny sklady + dostupnostní kódy.
Zobrazení dostupnosti — rozhodovací strom¶
Šablony v tags/eshop/dostupnost/ — 5 variant pro různé kontexty (detail produktu, přehled, košík, blok poboček).
Společná proměnná nezobrazovat_dostupnost — pokud je nastavena, celý blok dostupnosti se nezobrazí (pro služby, produkty na dotaz apod.).
Klíčové proměnné¶
| Proměnná | Zdroj | Popis |
|---|---|---|
mnozstvi |
eshop_produkty_sklady_mnozstvi SUM |
celkové množství ve vlastních skladech |
skladem |
totéž | alias, používá se v přehledu |
skladem_centrala |
VIEW eshop_produkty_sklad_centrala |
množství na centrále (Nademlejnská) |
mnozstvi_na_skladech |
per-sklad join | pro detail produktu — tabulka per prodejna |
dostupnost |
eshop_produkty.dostupnost |
dodací lhůta z vlastního skladu (číselník) |
dostupnost_dodavatel |
eshop_produkty.dostupnost_dodavatel |
dodací lhůta u dodavatele (číselník) |
na_ceste |
eshop_produkty.na_ceste |
datum příjmu zboží na sklad |
Rozhodovací logika (detail produktu #produkt.tpl)¶
nezobrazovat_dostupnost = true → nic nezobrazovat
mnozstvi > 5 → "Skladem více než 5 ks"
mnozstvi > 0 → "Skladem X ks"
dostupnost_dodavatel > 0
nebo dostupnost > 0 → "Skladem" (u dodavatele)
+ vypoctiDenDodani(1) "na prodejně"
+ vypoctiDenDodani(2) "může být u Vás"
na_ceste → "Na cestě, předpoklad naskladnění DATE"
jinak → "Dočasně nedostupné"
Speciální případ pro dodavatele Pelikán, Corfix, Modelimex, Special Hobby (v od nebo od_puvodni): použijí se jejich dodací lhůty místo vypoctiDenDodani.
Rozlišení centrála vs. pobočka (#produkty-prehled-2.tpl)¶
skladem_centrala > 0 → vypoctiDenDodani(1) ← zítřek (centrální sklad)
skladem > 0 → vypoctiDenDodani(2, 2) ← pozítří (pobočkový sklad)
max = 2 u pobočky zabrání zobrazení delšího termínu — vždy "nejpozději pozítří".
vypoctiDenDodani($diff, $max, $patch)¶
Funkce lib/eshop/function.eshop.php:290 — vrátí datum dodání jako string:
$diff= počet pracovních dní od dnes- přidá +1 den pokud je po 13:00 (cut-off)
- přeskočí víkendy a státní svátky (
jeStatniSvatek(),jeVolnyDen()) - pokud
$patch = truea$diff = 1→ patch pro dodavatele (+1 navíc) - vrátí "Zítra" / "Pondělí" / "5.6." dle lokálu a blízkosti
Reálná složitost výpočtu
vypoctiDenDodani() je netriviální — pracovní dny, cut-off 13:00, státní svátky. Ale ani to nestačí: dodavatelé jako Pelikán nebo Astra mají vlastní prázdniny (vánoční přestávky, letní uzávěrky), které se nedají obecně vyřešit. Proto jsou v šablonách hardcoded výjimky na konkrétní data (viz date('Ymd') < '20260102' v templates). V Sylius bude nutno tento mechanismus řešit per-dodavatel konfigurací nebo manuálními výjimkami.
Dopad na migraci do Sylius¶
Sylius StockableInterface
Sylius má nativní správu zásob per ProductVariant + Warehouse. Mapování: eshop_sklady → Sylius Warehouse, eshop_produkty_sklady_mnozstvi → Sylius ProductVariantInventory (nebo StockItem).
Dvě hodnoty dostupnosti
Sylius nerozlišuje "vlastní sklad" a "dostupnost u dodavatele" jako dvě samostatné hodnoty. Logika "zobrazuj dodavatelskou dostupnost pokud není skladem" musí být custom.
Dostupnostní číselník
eshop_produkty_dostupnost (dni → titulek) nemá přímý ekvivalent — v Sylius se dostupnostní texty řeší přes šablony nebo custom atributy.