Dostupnostní feed by měl shopsystém generovat sám. Nemělo by být potřeba do něj zasahovat. Mohou ovšem nastat situace, kdy by se Vám automaticky generovaný a aktualizovaný dostupnostní XML feed hodil a nemáte ho. Proto napíši následující “inspiraci”. Klikání to bude více, i když jádro principu je docela jednoduché. Cílem je Vás inspirovat k využití některých prvků. A ukázat, že i toto Mergado umí
O dostupnostních feedech
V současnosti rozlišujeme především Heureka dostupnostní XML feed a Mall Marketplace dostupnostní XML feed. Tyto feedy obsahují vždy identifikátor zboží a informace o doručení zboží zákazníkovi. V našem případě vytvořím v Mergadu feed, který bude obsahovat elementy:
ITEM_ID
identifikátor položky zboží, odpovídáITEM_ID
z produktového feeduDELIVERY_TERM_ORDER
mnou stanovený element, obsahuje termín, do kdy by měli zákazníci učinit objednávku, aby získali zboží viz. následující elementDELIVERY_TERM_GET
termín předpokládaného doručené zboží při dodržení termínu objednávky viz. výše.
Uvedené elementy jsou inspirací z Heureka dostupnostního XML a odpovídají parametru orderDeadline
či hodnotě elementu delivery_time
viz příklad:
<delivery_time orderDeadline="2011-09-10 12:00">2011-09-11 13:00</delivery_time>
Formát je ovšem vlastní. Využiji jej pro další zpracování.
Zpracování produktového feedu
Postup lze rozdělit do čtyřech částí. První tři jsou jednoduché a člověk je připraví za pár minut. Jádro řešení je ve čtvrté části. Nastíním dva možné postupy, jak situaci řešit.
1) Zapnout Bidding Fox Element
Aplikace Bidding Fox Elements obsahuje elementy pro práci s časem, které se nám budou hodit:
BFE_D_CURRENT_DATE
dnešní datum, např. 20. prosince bude obsahovat hodnotu “2021-12-20”BFE_D_DAYS_IN_MONTH
počet dní v aktuálním měsíci, hodnotou je číslo, např. “30”BFE_D_CURRENT_YEAR
aktuální rok, např. “2021”BFE_D_CURRENT_MONTH
aktuální měsíc, číslo - např. v prosinci to bude “12”BFE_D_CURRENT_DAY
aktuální den, např. 20. prosince to bude číslo “20”BFE_D_HOLIDAY_NEXT_DAYS_CZ
počet dní do následujícího státního svátku
Uvedu dva možné postupy řešení situace. V jednom případě budeme potřebovat pouze první element BFE_D_CURRENT_DATE, v druhém případě všechny ostatní elementy. Podle toho, kterou variantu zvolíte dále, Vám stačí zapnout potřebné elementy v tomto kroku.
2) Vytvořit elementy
Pro další práci budu potřebovat elementy. Vytvořím je na stránce Elementy.
DELIVERY_TERM_ORDER
termín, do kdy by měl zákazník objednávku učinitDELIVERY_TERM_GET
termín, do kdy zákazník zásilku obdrží při splnění termínu viz. výšeDELIVERY_TERM_NUMBER
pomocný element (proměnná), se kterou budu dělat výpočty (pouze druhá možnost řešení viz dále). Element na výstupu skryji.
3) Skrýt elementy
V našem případě budu potřebovat pouze elementy ITEM_ID, DELIVERY_TERM_ORDER, DELIVERY_TERM_GET. Ostatní na stránce Elementy skryji. Vy můžete mít záměr jiný - skryjte elementy dle svého uvážení.
4) Výpočet termínů
Nyní se pusťme do jádra věci - stanovení termínů objednávky a doručení. Uvedu inspiraci, jak jsem postupoval já. Bude hodně záležet na tom, jak precizně budete chtít hodnoty stanovit. Lze to udělat triviálně s tím, že informace nebudou moc přesné, nebo se lze “párat” s velmi precizním nastavením. To ovšem zabere hodně času a není snadné postup vymyslet.
Nejlepší by bylo, kdyby data generoval již Váš systém a v exportu byly tyto elementy obsaženy. To bychom skryli vše nepotřebné a ponechali viditelné tyto elementy. V praxi tomu tak ovšem bude zřídka kdy.
4.1) Import z CSV
První cestou je import z připraveného CSV souboru. Ten můžete vytvořit v běžném “Excelu” (LibreOffice Calc, MS Office Excel…), na web uložit např. do aplikace eM Files a do exportu v Mergadu CSV připojit pravidlem datového importu. V exportu by stačilo zapnout element BFE_D_CURRENT_DATE z Bidding Fox Elements. CSV by mělo obsahovat sloupce:
BFE_D_CURRENT_DATE | DELIVERY_TERM_ORDER | DELIVERY_TERM_GET |
---|---|---|
2021-01-01 | 2021-01-03 | 2021-01-03 |
2021-01-02 | 2021-01-04 | 2021-01-04 |
… |
Takto bychom si mohli v Excelu vytvořit tabulku kdy pro každý den definujeme, kdy budou zásilky doručeny. Mohli bychom zohlednit státní svátky, víkendy aj. Mohli bychom vytvořit více sloupců s hodnotami pro různé typy doručení. Výhodou takového postupu je značná flexibilita. Nevýhodou je, že bychom si museli připravit upomínku před termínem, než termíny v naší tabulce skončí, abychom mohli tabulku prodloužit dále do budoucna.
Toto řešení může působit až příliš manuálně, nicméně fungovat může a příprava je poměrně jednoduchá.
4.2) Nastavení pravidly
Já se pokusil vypočítat uvedené termíny pomocí pravidel. K tomu jsem potřeboval:
- elementy z Bidding Fox Elements viz. výše
- pravidla typu “přepsat hodnotu” a “výpočet”
- časový plán pravidel
Princip řešení je jednoduchý. Problém je, že Mergado umí dělat výpočty nad čísly. My přitom potřebujeme ovšem pracovat s datem. Budeme-li chtít udělat řešení chytřeji, budeme muset ošetřit různý počet dní v různých měsících, konec roku a podobně. Základ principu je tento:
- Do elementu
DELIVERY_TERM_NUMBER
zapíši hodnotuBFE_D_CURRENT_DAY
tedy dnešní den. - Stanovím termín nejbližšího svozu objednávek dopravní službou. Zohlednit mohu například: část dne (poslední objednávky balím např. do 12:00, protože ve 14:00 přijede dopravce a další termín je další den 12:00), dny víkendu (sobota, neděle, když dopravní služba přijede až v pondělí), státní svátky… Zde mohu vymyslet celou řadu podmínek a termíny pěkně nadefinovat.
- Zohledním případný konec měsíce mezi dneškem a datem odeslání (mnoho pravidel).
- Zapíši termín odeslání zásilky do
DELIVERY_TERM_ORDER
- Stanovím termín doručení. Může se lišit dle dopravců. Já např. vím, že má dopravní služba doručuje v termínu “t+2 dny”. Dále budu chtít zohlednit skladovou dostupnost
DELIVERY_DATE
. K termínu doručení ji přičtu. Já budu počítat pouze jeden druh dopravy. Mohl by jich však být více. - Zohledním případný konec měsíce a roku viz. bud 3.
- Zapíši termín doručení zásilky do elementu
DELIVERY_TERM_GET
.
V praxi to může vypadat např. takto. Pravidel je vcelku dost. Zejména však kvůli ošetření konců měsíců a roků.
Náhled pravidel funkčního exportu.
Pro inspiraci uvedu příklady pravidel. Princip stojí na tom, že do pomocné proměnné DELIVERY_TERM_NUMBER zapíši dnešní den a přičítám čas. Čas do nejbližšího vyskladnění zásilek a čas doručování zásilky. Pravidla jsem pojmenoval tak, aby bylo jasné, co dělají. Pozor na pořadí pravidel. V jiném pořadí než tomto by nemusela fungovat.
Budu potřebovat dva výběry. Jejich zápis uvedu rovnou v pravidlech. Ty z data detekují zda nejsme na konci měsíce či roku a termín svozu či doručení nespadají již do následujícího období.
Parametr | Hodnota |
---|---|
Pravidlo | Naplnit číslo, výchozí hodnota stejná jako aktuální den v měsíci (hodnota: číslo, např. 18) |
Typ | přepsat |
Element | DELIVERY_TERM_NUMBER |
Hodnota | %BFE_D_CURRENT_DAY% |
Parametr | Hodnota |
---|---|
Pravidlo | Nastavení: odpoledne |
Typ | výpočet |
Element | DELIVERY_TERM_NUMBER |
Výpočet | %DELIVERY_TERM_NUMBER%+1 |
Poznámka | Mocným pomocníkem je časový plánovač pravidla. Toto pravidlo bude aktivní od 12:00 do půlnoci. A to proto, že objednávky přijaté do 12:00 dokáže e-shop odeslat ještě dnes. Objednávky obdržené později odešle až den následující. Pravidlo navýší termín o jeden den. Obdobně mohu navýšit termín o víkendu (v mém případě sobota +2 dny, neděle +1 den), o státních svátcích aj. |
Příklad časového plánu pravidla.
Zohlednění konců měsíců či roků
Následující pravidla jsem “schoval” do této rozbalovací nabídky. Řeší situaci, kdy např. objednávka přijatá 31. ledna má dorazit za tři dny - abychom přepočetli měsíc na únor a datum doručení stanovili na 3 února, nikoliv 34. ledna. Mergado umí počítat s čísly, nikoliv datem. Výpočet jsem proto udělal následujícím způsobem.
Parametr | Hodnota |
---|---|
Pravidlo | Konec měsíce, navýší měsíc o 1 pokud je mezi dneškem a datem expedice nový měsíc |
Výběr | ([DELIVERY_TERM_NUMBER] > [BFE_D_DAYS_IN_MONTH]) |
Typ | výpočet |
Element | BFE_D_CURRENT_MONTH |
Hodnota | %BFE_D_CURRENT_MONTH%+1 |
Poznámka | Výběr zkontroluje, zda není den expedice číslo vyšší než počet dní v měsíci. Pokud ano, navýší číslo měsíce. Úpravu čísla dne či roku mají na starosti pravidla níže. |
Parametr | Hodnota |
---|---|
Pravidlo | Konec měsíce, zpracuje den pokud je mezi dneškem a datem expedice nový měsíc |
Výběr | ([DELIVERY_TERM_NUMBER] > [BFE_D_DAYS_IN_MONTH]) |
Typ | výpočet |
Element | DELIVERY_TERM_NUMBER |
Hodnota | %DELIVERY_TERM_NUMBER%-%BFE_D_DAYS_IN_MONTH% |
Parametr | Hodnota |
---|---|
Pravidlo | Konec roku, navýší rok o 1, pokud je nový rok mezi dneškem a datem expedice |
Výběr | ([BFE_D_CURRENT_MONTH] = “13”) |
Typ | výpočet |
Element | BFE_D_CURRENT_YEAR |
Hodnota | %BFE_D_CURRENT_YEAR%+1 |
Parametr | Hodnota |
---|---|
Pravidlo | Konec roku, upraví měsíc aby byl leden |
Typ | výpočet |
Výběr | ([BFE_D_CURRENT_MONTH] = “13”) |
Element | BFE_D_CURRENT_MONTH |
Hodnota | 1 |
Parametr | Hodnota |
---|---|
Pravidlo | Naplnit datum objednávky |
Typ | přepsat |
Element | DELIVERY_TERM_ORDER |
Hodnota | %BFE_D_CURRENT_YEAR%-%BFE_D_CURRENT_MONTH%-%DELIVERY_TERM_NUMBER% 12:00 |
Parametr | Hodnota |
---|---|
Pravidlo | Vypočte z data expedice datum dodání |
Typ | výpočet |
Element | DELIVERY_TERM_NUMBER |
Hodnota | %DELIVERY_TERM_NUMBER%+%DELIVERY_DATE%+2 |
Poznámka | Já výpočet termín expedice tak, že vím, že dopravní službě trvá dva dny (hodnotu jsem navýšil o +2). Dále jsem přičetl hodnotu z elementu DELIVERY_DATE. U zboží skladem je to nula, u zboží s delší dobou expedice to jsou číselné hodnoty, které vstoupí do výpočtu. V mém takový výpočet dostačuje. Vy ho berte prosím jako příklad. |
Zohlednění konců měsíců či roků - novu, stejné jako viz výše.
Parametr | Hodnota |
---|---|
Pravidlo | Naplnit datum doručení |
Typ | přepsat |
Element | DELIVERY_TERM_GET |
Hodnota | %BFE_D_CURRENT_YEAR%-%BFE_D_CURRENT_MONTH%-%DELIVERY_TERM_NUMBER% 12:00 |
Formát výstupního feedu
Výstupu tohoto exportu bude vypadat takhle:
<SHOPITEM>
<ITEM_ID>47</ITEM_ID>
<DELIVERY_TERM_ORDER>2021-12-21 12:00</DELIVERY_TERM_ORDER>
<DELIVERY_TERM_GET>2021-12-23 12:00</DELIVERY_TERM_GET>
</SHOPITEM>
Pro mé další využití je dostačující. Abychom ho však mohli využít např. do Heureky, bude potřeba výstup přeformátovat. Jak na to, si ukážeme ve zvláštním vlákně.
Účel tohoto příkladu
Možná si říkáte, že uvedený příklad obsahuje hodně pravidel a klikání může trvat. Jak jsem zmínil na začátku - nejlepší je, když dostupnostní feed generuje shopsystém, skladový systém, zkrátka systém k tomu určený. Pokud však nastane situace, že dostupnostní feed nemáte a nutně ho potřebujete, může být automaticky aktualizovaný feed stanovený smysluplným nastavením dostatečně dobrým pomocníkem. V praxi se dostupnostními feedy budeme nadále setkávat. Tedy s potřebou řešit skladové hospodářství. Například proto, že ve feed marketingu zažíváme nástup on-line marketplaces. A tyto informace o skladových zásobách často vyžadují.
Poznámka pod čarou: k důvodu, že dostupnostní feed vygenerovat tímto postupem lze, přidám další. Dříve jsme dostupnostní feed v praxi moc neřešili. Pokud zjistíte, že by Vám jejich jednodušší správa pomohla, napište mi prosím. Buď sem do komentáře, nebo třeba do soukromé zprávy na Mergado support. Mohli bychom připravit jednodušší řešení. Ať už v podobě maker, nebo řešení, kde by bylo možné vše naklikat ještě jednodušeji. Děkuji.