Skip to content

Objednávky

Stav k 2026-06-21


Tabulky

eshop_objednavky — hlavní tabulka

Každá objednávka má dvě čísla:

Pole Popis
cislo_objednavky interní číslo ve formátu {pohoda_rada}{pohoda_poradi} (např. FV50001) nebo {kod_rok}-{kod_poradi}
cislo_objednavky_jen_cislo jen číslice — variabilní symbol pro platbu
pohoda_rada řada v Pohodě (FV, ZF, …)
pohoda_poradi pořadí v rámci řady, startuje od 50001
status stav objednávky (viz níže)
exportovano příznak exportu do Pohody
zasilka způsob dopravy (název z eshop_platebni_metody)
osobni_odber 1 = osobní odběr / výdejní místo
mena CZK nebo EUR
kurz kurz EUR v době objednávky
bez_dph SK B2B zákazníci s DIČ — faktura bez DPH
jazyk jazyk zákazníka při objednávce
celkovy_zisk zisk (dopočítáno z položek)
neprectena 1 = nová, nepřečtená objednávka v adminu

Adresy: dvě sady jako u zákazníka — fakturační a doručovací. Kopírují se z registrace v době objednávky (snapshot).

Stavy objednávky (status)

Kód Název Popis
O Objednáno výchozí stav po přijetí
P Přijato potvrzeno obsluhou
Z Zjišťování dostupnosti čeká se na potvrzení skladu/dodavatele
V Vyřízeno odesláno zákazníkovi
S Stornováno zrušená objednávka

Změna statusu = záznam v eshop_objednavky_stavy + volitelný e-mail/SMS zákazníkovi.

eshop_objednavky_polozky — položky

Pole Popis
produkt_id kód produktu (varchar — může být variant kód)
varianta_id id varianty (0 = bez varianty)
cena cena za kus v době objednávky (snapshot)
cena_typ typ ceny: prázdné / AKCE / VYPR (výprodej) / NARO (narozeniny)
sleva hodnota slevy z kupónu
pridat_do_pohody 1 = tato položka se exportuje do Pohody
marze, zisk marže a zisk v Kč (dopočítáno při vytvoření)
cena_nakup nákupní cena v době objednávky

eshop_objednavky_stavy — log stavů

Každá změna stavu = řádek: stav (textový popis), cas_zmeny, uzivatel (kdo změnil).

eshop_objednavky_komunikace — vzory zpráv ke stavům

Šablony e-mailů a SMS vázané na stav_id. Při změně stavu se odešle příslušný vzor.

eshop_kosik — dočasný košík

Session-based košík. Každá položka = řádek se session ID, user_id, cenou, množstvím, variantou, barvou, PHE poplatkem, voucher jmény. Při dokončení objednávky se košík smaže.

eshop_order_draft — JSON draft objednávky

Uložený stav rozdělaného nákupního procesu (JSON). Umožňuje pokračovat v objednávce po návratu. Vázáno na session_id nebo user_id.

eshop_platebni_metody — platební a dopravní metody

Jedna tabulka pro oboje (platba i doprava). Pole cena (CZK) a eur (EUR) — přímé EUR ceny, ne konverze. Překlady názvů a popisů pro všechny jazykové mutace.


Číslo objednávky a Pohoda

Číslo se přiděluje při finalizaci objednávky:

  1. Systém zjistí Pohoda řadu (pohoda_rada) podle skladu / pobočky
  2. MAX(pohoda_poradi) + 1 — se zámkem (3 pokusy) proti race condition
  3. Startuje od 50001
  4. cislo_objednavky = pohoda_rada + pohoda_poradi (např. FV50001)
  5. cislo_objednavky_jen_cislo = jen číslice, bez písmen řady = variabilní symbol

Export do Pohody

Viz pohoda-export.md — vlastní stránka.


Dopad na migraci do Sylius

Celý nákupní proces bude jiný

Sylius má vlastní checkout flow, košík, stavy objednávek a platební brány. Žádná z těchto tabulek se přímo nemigruje — migrace se týká pouze historických objednávek jako archiv.

Čísla objednávek a Pohoda řady

Sylius generuje čísla objednávek vlastním způsobem. Propojení na Pohoda řady (FV, ZF, …) musí být implementováno jako custom extension nebo přes API adaptér.

Položky — snapshot cen

eshop_objednavky_polozky ukládá kompletní snapshot ceny, marže, zisku v době objednávky. Sylius OrderItem taky snapshottuje cenu — ale marže/zisk je nutno řešit custom (Sylius to nativně neukládá).

Recyklační poplatek (RP/PHE) a montáž

Košík obsahuje položky s recyklačním poplatkem — v kódu phe_kod, phe_poplatek (PHE = RP = recyklační poplatek). A montáží (cena_montaze). V Sylius se toto řeší jako OrderItemUnit adjustments nebo separátní položky — nutno navrhnout.

Historické objednávky zákazníků

Zákazníci očekávají přístup k historii objednávek po migraci. To znamená buď:

  • Import do Sylius — komplexní mapování na Order / OrderItem / OrderItemUnit; schema je výrazně odlišné, marže/zisk/PHE nemají přímý ekvivalent
  • Read-only archiv — historické objednávky zůstanou v oddělené DB nebo admin pohledu, v Sylius zákazník uvidí jen objednávky od data migrace

Toto rozhodnutí musí padnout před migrací — ovlivňuje architekturu zákaznické sekce i rozsah migračního skriptu.