Feedy - Konfigurátor - Dopravy a jejich omezení

Třetí strany, např. Google, mohou mít problém s chybnou minimální cenou za dopravu, pokud položka nelze danou dopravou přepravit. Typicky je to z důvodu přiliš vysoké hmotnosti nebo překročením povolených rozměrů. Rozlišujeme dvě úrovně omezení doprav. Hard a Soft.

Hard omezení kontroluje země, uživatelské skupiny, uživatelské typy, měnu a jazyk. Dopravy dostupné v poli deliveries v konfigurátoru feedu automaticky splňují Hard omezení. V poli deliveries_all se nachází všechny dopravy bez omezení.

Soft omezení zahrnují rozměrové limity, limity hmotnosti, objemu a hodnoty objednávky. Kontrola Soft omezení je však výpočetně náročnější, a proto se v našich výchozích šablonách feedů nekontrolují. V případě potřeby lze kontrolu vynutit úpravou konfigurace feedu. Jedná se o metodu checkRestrictions() na objektu dopravy. Metoda kontroluje dopravu v kontextu dané produktové položky a vrací true, pokud doprava limity splňuje, jinak vrací false. Díky této metodě lze nepřípustné dopravy u konkrétních položek feedu vynechat.

Následuje ukázka JS kódu, který vytvoří tři globální (per položka feedu) proměnné:

  • deliveriesStrict - seznam doprav splňující Hard i Soft omezení,
  • lowestPriceStrict - nejnižší cena dopravy splňující Hard i Soft omezení,
  • lowestPriceCodStrict - nejnižší cena dopravy s dobírkou splňující Hard i Soft omezení.

Kód níže můžete vložit do víceřádkového bloku na začátek konfigurace. Proměnné pak lze využívat kdekoliv níže v konfiguraci. Seznam deliveriesStrict lze používat stejným způsobem jako běžně dostupný seznam deliveries, a to včetně indexů (ID dopravy).

deliveriesStrict = utils.filter(deliveries, (d) => d.checkRestrictions(), false);
lowestPriceStrict = null;
lowestPriceCodStrict = null;
for (const [key, d] of Object.entries(deliveriesStrict)) {
    if (d.final_price !== null && (lowestPriceStrict === null || lowestPriceStrict > d.final_price)) {
        lowestPriceStrict = d.final_price;
    }
    if (d.final_price_with_cod !== null && (lowestPriceCodStrict === null || lowestPriceCodStrict > d.final_price_with_cod)) {
        lowestPriceCodStrict = d.final_price_with_cod;
    }
}

Alternativně lze problém řešit např. pomocí štítku Nadrozměr. V konfiguraci feedu lze potom u položek s tímto štítkem omezit dopravy třeba na jednu konkrétní.

Pomohli jsme tímto vyřešit vaši otázku? Děkujeme za zpětnou vazbu Nepodařilo se odeslat zpětnou vazbu. Zkuste to prosím znovu.