Práce s dopravou v MERGADU 2

V tomto příspěvku si povíme, jak se změnila práce s dopravou v MERGADU 2 oproti MERGADU 1. Máte-li připomínky nebo dotazy, napište nám je prosím!

Shrnutí

Práce s dopravou se v MERGADU 2 podstatně liší oproti MERGADU 1, jelikož se jednotlivé dopravy neberou jako elementy (např. element DELIVERY_PRICE|CESKA_POSTA s hodnotou 89). Nyní se berou jako balíček specifických elementů pro dopravu s jejich hodnotami, tzn. jednu dopravu bereme jako např. skupinu 4 elementů DELIVERY, DELIVERY_ID, DELIVERY_PRICE a DELIVERY_PRICE_COD:

<DELIVERY>
  <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
  <DELIVERY_PRICE>89</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>113</DELIVERY_PRICE_COD>
</DELIVERY>

A od toho se odvíjí i veškerá práce s dopravou.

Jak vnímáme dopravu?

V MERGADU 1
se s dopravou pracuje jako s ostatními elementy
. My jako uživatelé s nimi tak pracujeme, ale i samotné MERGADO (v kódu) s nimi tak pracuje. Tedy máme-li ve vstupním feedu např. dopravu od České pošty

<DELIVERY>
  <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
  <DELIVERY_PRICE>89</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>113</DELIVERY_PRICE_COD>
</DELIVERY>

uloží se do MERGADA 1 jako 2 elementy: DELIVERY_PRICE|CESKA_POSTA s hodnotou elementu 89 a DELIVERY_PRICE_COD|CESKA_POSTA s hodnotou 113. Dále s těmito elementy pracujeme jako s ostatními běžnými elementy. Na základě toho jde v MERGADU 1 s dopravou dělat úplně všechno, co s běžnými elementy - najdeme je na stránce Elementy, dají se skrýt atd.

Všimněme si, že ve vstupním feedu ale není žádný element <DELIVERY_PRICE|CESKA_POSTA>89</DELIVERY_PRICE|CESKA_POSTA>.

MERGADO 2
kopíruje strukturu XML
, tj. všechny elementy ze vstupního feedu převezme jako elementy i k sobě a pracuje s nimi tak. Tedy máme-li ve vstupním feedu např. dopravu České pošty

<DELIVERY>
  <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
  <DELIVERY_PRICE>89</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>113</DELIVERY_PRICE_COD>
</DELIVERY>

uloží se do MERGADA 2 jako 4 elementy:

  • DELIVERY,
  • DELIVERY_ID (zanořený pod elementem DELIVERY)
  • DELIVERY_PRICE a
  • DELIVERY_PRICE_COD.

Každý z těchto 4 elementů má vlastní hodnoty elementu:

  • DELIVERYprázdnou hodnotu,
  • DELIVERY_ID má hodnotu CESKA_POSTA,
  • DELIVERY_PRICE má hodnotu 89 a
  • DELIVERY_PRICE_COD má hodnotu 113.

Je důležité si uvědomit, že žádný element DELIVERY_PRICE|CESKA_POSTA už v MERGADO 2 neexistuje. Místo toho jsou výše zmíněné 4 elementy.

Pokud máme ve feedu více doprav (např. dvě)

<DELIVERY>
  <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
  <DELIVERY_PRICE>89</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>113</DELIVERY_PRICE_COD>
</DELIVERY>
<DELIVERY>
  <DELIVERY_ID>PPL</DELIVERY_ID>
  <DELIVERY_PRICE>129</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>153</DELIVERY_PRICE_COD>
</DELIVERY>

v tom případě řekneme, že element DELIVERY_ID má více hodnot: CESKA_POSTA a PPL. Jedná se o tzv. vícenásobný element. To stejné platí pro element DELIVERY_PRICE s hodnotami 89 a 129 a element DELIVERY_PRICE_COD s hodnotami 113 a 153.
Jak ale v MERGADU 2 napodobit tvar DELIVERY_PRICE|CESKA_POSTA MERGADA 1, tedy získat cenu dopravy České pošty? Pro dostatečně vysvětlující odpověď doporučuji přečíst si specifikaci Element-Path. Krátká odpověď zní: Pište DELIVERY { DELIVERY_ID = “CESKA_POSTA” } | DELIVERY_PRICE místo DELIVERY_PRICE|CESKA_POSTA.

Pro srovnání, vezmeme-li si třeba element DESCRIPTION, tj. na vstupu

<DESCRIPTION>popisek</DESCRIPTION>

tak se do MERGADA 2 uloží jako jeden element DESCRIPTION s hodnotou popisek, protože ve vstupním XML feedu je tam taky jako jeden element s hodnotou. Vidíme, že oproti běžným elementům je doprava opravdu složitější záležitost právě kvůli její struktuře (4 elementy závisejících na sobě).

Podívejme se teď na konkrétní případy práce s dopravou a potenciální problémy, na které bychom mohli cestou narazit.

Konkrétní případy práce s dopravou

Zobrazení seznamu dopravy

V MERGADU 1
se doprava, tedy elementy začínající na DELIVERY_PRICE| nebo DELIVERY_PRICE_COD|, např. DELIVERY_PRICE|CESKA_POSTA, vypisují na stránce Elementy (protože je MERGADO 1 bere jako elementy).

V MERGADU 2
se doprava, tedy hodnoty elementu DELIVERY_ID, ukazují na stránce hodnot elementu DELIVERY_ID. Tam se dostaneme klikem na element DELIVERY_ID na stránce Elementy.

Zobrazení cen konkrétní dopravy

MERGADO 1
Na stránce Elementy se klikne na daný element DELIVERY_PRICE|... nebo DELIVERY_PRICE_COD|... a to nám otevře stránku s hodnotami daného elementu.

MERGADO 2
Mohlo by nás napadnout, že by stačilo na stránce Elementy kliknout třeba na element DELIVERY_PRICE, zanořený pod elementem DELIVERY.

Tím se nám zobrazí stránka hodnot elementu DELIVERY | DELIVERY_PRICE. Tato stránka obsahuje úplně všechny ceny (platba převodem) všech doprav. Naším cílem je ale podívat se na ceny nějaké konkrétní dopravy. Dosáhneme toho následovně:

  1. Na stránce Elementy klikneme na element DELIVERY_ID, přejdeme tak na stránku jeho hodnot (seznam doprav),
  2. vpravo ve sloupci Související hodnoty klikneme na DELIVERY_PRICE.

Vybrání konkrétní ceny dopravy

MERGADO 1
Dopravu vybereme jako běžný element. Takže např. následovně

MERGADO 2
Po celém MERGADU 2 se v rámci různých inputů, kde vybíráme element, nachází po pravé straně tlačítko se štítkem, které otevře seznam dopravy (a parametrů). Stačí si pak jen vybrat dopravu a kliknout na ni. Odpovídající element-path se pak doplní do inputu.

Inputy s tlačítky se štítkem se nacházejí:

Pokud jsme více znalí, můžeme si element-path do inputu napsat sami a netřeba klikat na tlačítko se štítkem.

Našeptání dopravy ve Vlastním MQL dotazu

MERGADO 1
Stejně jako se všemi ostatními elementy, napíšeme [ a začneme psát např. DELIVERY_PRICE|.

MERGADO 2
V MERGADU 2 se momentálně dopravy nenašeptávají a je potřeba vypsat si jejich element-path ručně. Ruční psaní se dá trochu obejít - stačí si např. v inputu u řazení produktů kliknout na tlačítko se štítkem, vybrat si dopravu, zkopírovat si element-path dopravy a vložit ho do Vlastního MQL dotazu.

Pracujeme na tom! Víme o aktuální neoptimální situaci a pracujeme na možnosti našeptávání dopravy ve Vlastním MQL dotazu.

Našeptání dopravy ve formuláři pravidel přes %

MERGADO 1
Stejně jako se všemi ostatními elementy, napíšeme % a začneme psát např. DELIVERY_PRICE|.

image

MERGADO 2
Stejně jako u našeptávání ve Vlastním MQL dotazu, ani tady se v MERGADU 2 momentálně dopravy nenašeptávají a je potřeba vypsat si jejich element-path ručně.

Pracujeme na tom! Víme o aktuální neoptimální situaci a pracujeme na možnosti našeptávání parametrů ve formuláři pravidel přes %.

Vytvoření nové dopravy a naplnění jejích cen hodnotou

MERGADO 1
Většina uživatelů si vytvoří nový element, např. DELIVERY_PRICE|CESKA_POSTA, na stránce Elementy a následně na daný element použije pravidlo Přepsat.

Už ale málokdo ví, že stejného výsledku lze dosáhnout pravidlem Nastavení ceny dopravy. Postup je popsán níže, jelikož platí jak pro MERGADO 1, tak pro MERGADO 2.

MERGADO 2
V pravidle Nastavení ceny dopravy zadáme na levé straně názvy dopravy, které chceme vytvořit, a na pravé straně zadáme odpovídající ceny, které jim chceme přiřadit. Po aplikaci pravidel se nám nové dopravy vytvoří a naplní danými cenami.

Přepsání ceny dopravy

MERGADO 1
Pro přepsání ceny dopravy opět většina uživatelů použije pravidlo Přepsat na daný element, např. DELIVERY_PRICE|CESKA_POSTA. Ukázku najdeme v předchozí části.

MERGADO 2
Na přepsání ceny dopravy použijeme pravidlo Nastavení ceny dopravy. Postupujeme stejně jako v předchozí části.

Přejmenování názvu dopravy

MERGADO 1
Pokud se doprava naimportovala ze vstupního feedu, skryjeme ji a vytvoříme novou dopravu (viz část Vytvoření nové dopravy a naplnění jejích cen hodnotou).

Jestliže byla doprava vytvořena uvnitř MERGADA 1, stačí nám upravit její název - ať už na stránce Elementy jako element, anebo v pravidle Nastavení ceny dopravy (tady jde vybírat jen z připraveného seznamu dopravců).

MERGADO 2
V MERGADU 2 použijeme na přejmenování dopravy pravidlo Přepsat, kde jako cílový element napíšeme element-path ve tvaru DELIVERY { DELIVERY_ID = "CESKA_POSTA" } | DELIVERY_ID (pokud chceme změnit název dopravy CESKA_POSTA). Pro jiné názvy stačí přepsat slovo CESKA_POSTA na odpovídající název dopravy. (v ukázce 123 kurýr)

Smazání dopravy

MERGADO 1
Na stránce Elementy smažeme příslušný element, např. DELIVERY_PRICE|CESKA_POSTA, kliknutím na ikonu popelnice.

MERGADO 2
Vytvoříme si celkem 3 pravidla Přepsat. Prvními dvěma smažeme hodnoty elementů DELIVERY_PRICE a DELIVERY_PRICE_COD příslušných doprav DELIVERY_ID. Tedy máme-li např.

<DELIVERY>
  <DELIVERY_ID>CESKA_POSTA</DELIVERY_ID>
  <DELIVERY_PRICE>89</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>113</DELIVERY_PRICE_COD>
</DELIVERY>
<DELIVERY>
  <DELIVERY_ID>PPL</DELIVERY_ID>
  <DELIVERY_PRICE>129</DELIVERY_PRICE>
  <DELIVERY_PRICE_COD>153</DELIVERY_PRICE_COD>
</DELIVERY>

a chceme obě dopravy CESKA_POSTA a PPL smazat, vyplníme v prvním pravidle do inputu pro element DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_PRICE a v druhém pravidle DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_PRICE_COD. Do inputu pro obsah necháme nevyplněno.

Třetím pravidlem Přepsat smažeme hodnoty samotných elementů DELIVERY_ID - do inputu pro element vyplníme DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_ID a do inputu pro obsah necháme opět nevyplněno.

A hotovo! Po aplikaci pravidel se nám všechny zmíněné dopravy smažou. Ještě podotkněme, že záleží na pořadí pravidel, tedy aby pravidla na smazání hodnot DELIVERY_PRICE a DELIVERY_PRICE_COD byla nad pravidlem na smazání hodnot DELIVERY_ID.

Pracujeme na tom! Víme, že postup je zbytečně obtížný. Pracujeme na možných vylepšeních.

Skrytí dopravy

MERGADO 1
Na stránce Elementy klikneme u příslušného elementu na ikonu přeškrtnutého oka a tím element skryjeme ve všech produktech. V ukázce skrýváme element DELIVERY_PRICE|123 kurýr.

MERGADO 2
Skrývání dopravy v MERGADU 2 je to stejné jako jejich mazání, viz výše. Pokud bychom chtěli dopravy odmazat/odkrýt, stačí smazat příslušné dopravy ve výčtu v pravidlech. Takže pro odkrytí např. dopravy CESKA_POSTA, smažeme text CESKA_POSTA z

  • DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_PRICE,
  • DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_PRICE_COD a
  • DELIVERY { DELIVERY_ID IN ("CESKA_POSTA"; "PPL") } | DELIVERY_ID.

Dostaneme tak

  • DELIVERY { DELIVERY_ID IN ("PPL") } | DELIVERY_PRICE,
  • DELIVERY { DELIVERY_ID IN ("PPL") } | DELIVERY_PRICE_COD a
  • DELIVERY { DELIVERY_ID IN ("PPL") } | DELIVERY_ID.

A po aplikaci pravidel se nám doprava CESKA_POSTA odkryje.

Kdybychom chtěli odkrýt všechny dopravy, stačí příslušná pravidla vypnout.

1 Like