Skip to content

Checkout a objednávky — speciality vs. Sylius

Stav k 2026-06-21.

Sylius má kompletní checkout flow (košík → adresa → doprava → platba → potvrzení) a order state machine. Tohle neřešíme — to dostaneme zdarma. Otázka je, co se musí ohne, aby fungovaly věci specifické pro tento e-shop.


Co Sylius vyřeší bez práce

  • Košík, checkout kroky, potvrzení objednávky
  • Stavy objednávky (nová → potvrzená → expedovaná → hotová / stornovaná)
  • Zákaznický účet, přihlášení, hesla
  • Platební metody a dopravy jako konfigurovatelný model
  • Základní slevové kupóny (fixní částka, procento, min. nákup)
  • Multi-měna přes Channel (CZK / EUR)
  • Multi-warehouse zásoby

Speciality — co se bude ohýbat

1. "Dotaz na dostupnost" místo tlačítka Koupit

Současný stav: Pokud je produkt nedostupný a pochází od Astry, Pelikána nebo Corfix (kontroluje od i od_puvodni), zobrazí se místo "Koupit" tlačítko "Poslat dotaz na dostupnost" → popup formulář.

Sylius: Nezná koncept "produkt je v katalogu, ale nejde koupit — jen se na něj zeptat". Sylius buď umožní přidat do košíku, nebo zobrazí "out of stock".

Řešení: Custom ProductAvailabilityChecker + custom šablona tlačítka. Podmínka musí znát od/od_puvodni → custom produkt atribut.


2. Watchdog — hlídat dostupnost

Současný stav: Zákazník vyplní e-mail, systém ho upozorní jakmile se produkt naskladní. Tabulka watchdog s logikou v importních skriptech.

Sylius: Neexistuje. Plugin třetí strany nebo vlastní implementace: subscriber na stock change event → odeslat notifikaci z fronty.


3. Narozeninová sleva (sleva_typ NARO)

Současný stav: V určité době kolem narozenin zákazníka dostane slevu. Zobrazuje se jako badge "narozeniny" na produktu a ovlivňuje cena_typ = NARO v položkách košíku.

Sylius: Promotion system nezná "birthday" jako trigger. Nutno custom PromotionRuleChecker který zkontroluje datum narození zákazníka ze zákaznického profilu.


4. Recyklační poplatek (RP/PHE) jako položka košíku

Současný stav: Produkt s phe_kod automaticky přidá do košíku druhý produkt (RP poplatek) jako samostatnou položku. Viditelné v košíku, faktuře i exportu do Pohody.

Sylius: Sylius OrderProcessor umí přidávat adjustment položky, ale ne plnohodnotné OrderItem. Možnosti: - Custom CartSubscriber který při přidání produktu s RP přidá RP jako další OrderItem - Nebo RP jako OrderAdjustment (méně viditelné na faktuře)

Pohoda export

RP položka musí mít v Pohoda exportu vlastní kód (FOXRP...) a správnou DPH sazbu. Řešení musí být konzistentní s tím, co Pohoda očekává.


5. Odhad data doručení — vypoctiDenDodani()

Současný stav: Na detailu produktu a v košíku se zobrazuje konkrétní datum "může být u Vás". Výpočet zohledňuje pracovní dny, státní svátky a cut-off 13:00. Dodavatelé jako Pelikán nebo Astra mají vlastní prázdniny (vánoce, letní uzávěrky) — řeší se hardcoded výjimkami v šablonách.

Sylius: Shipping estimator v Syliusu vrátí "X dní", ne konkrétní datum. A nezná výjimky per dodavatel.

Řešení: Custom shipping estimator service. Dodavatelské výjimky musí být konfigurovatelné (ne hardcoded), jinak se opakuje dnešní situace.


6. Per-prodejna dostupnost

Současný stav: Na detailu produktu se zobrazuje tabulka per-sklad/pobočka s přesným množstvím. Zboží na centrálním skladu = doručení zítra, na pobočce = pozítří.

Sylius: Multi-warehouse zásoby existují, ale UI per-sklad v produktovém detailu je zcela custom. Sylius admin zobrazí stock per warehouse, ale frontend šablony musí zobrazit "na prodejně Nademlejnská: 3 ks".


7. Maximální množství v objednávce (max_obj_mnozstvi)

Současný stav: Pole na produktu, zobrazí se "Limitovaný nákup: max. X ks" a košík hlídá toto omezení.

Sylius: ProductVariantmaximumQuantity — existuje nativně. Stačí mapovat při importu.

Toto Sylius zvládne.


8. Cena na dotaz (cena_na_dotaz)

Současný stav: Produkt nemá zobrazenou cenu, jen tlačítko "Poptávkový formulář".

Sylius: Sylius vždy zobrazuje cenu z ChannelPricing. Nutno custom logika: pokud cena_na_dotaz = true, skrýt cenu a nahradit CTA. Custom šablona + custom atribut.


9. Slovenská DPH a B2B bez DPH

Současný stav: SK mutace používá EUR ale se slovenskou DPH sazbou. SK firmy s DIČ formátu SK[10 číslic] dostanou fakturu bez DPH. Logika v skCenaDPH() a objSKbezDPH flag v session.

Sylius: Tax zones + customer tax category to umí. SK Channel bude mít vlastní tax zone se SK DPH. B2B bez DPH → CustomerGroup s TaxExempt nebo custom TaxCalculator.

⚠️ Proveditelné, ale vyžaduje správné nastavení tax zones a customer groups — testovat důkladně.


10. Doprava zdarma jen pro CZ

Současný stav: Badge "Doprava zdarma" se zobrazuje jen pro LANG == 'cs'. Logika podmínky je v šabloně, ne v Promotion rule.

Sylius: Promotion HasChannel rule — doprava zdarma jako Promotion platná jen pro CZ Channel. ✅ Tohle Sylius umí čistě.


Shrnutí — rizika

Specialita Složitost Sylius nativně
Dotaz místo Koupit 🔴 Vysoká
Watchdog 🔴 Vysoká
Narozeninová sleva 🟡 Střední ✗ (custom rule)
RP/PHE jako košíková položka 🔴 Vysoká ✗ (custom OrderProcessor)
Odhad data doručení 🔴 Vysoká ✗ (custom estimator)
Per-prodejna dostupnost 🟡 Střední částečně (warehouses existují)
Max. množství 🟢 Nízká maximumQuantity
Cena na dotaz 🟡 Střední ✗ (custom atribut + šablona)
SK DPH a B2B bez DPH 🟡 Střední ✅ tax zones + customer groups
Doprava zdarma CZ 🟢 Nízká ✅ HasChannel promotion rule