Zaukúhľovanie cien vo feede smerom hore

regulární-výrazy

#1

Dobrý deň,
riešime momentálne nasledujúcu situáciu:
Ceny vo feede sa nezhodujú s cenami na webe. Ceny na webe sú vždy zaokrúhlené na jednotky smerom hore (čiže cena vo feede 2,13 je na webe uvedená ako 3). Pre FB produktový feed chceme docieliť, aby sa ceny rovnali a teda vo feede aby boli také isté ako na webe.

Navrhli sme nasledovný postup:
Urobili by sme dva výbery produktov. Prvý výber by obsahoval všetky produkty, ktorých cena obsahuje údaje za desatinnou čiarkou v rozmedzí ,50 až ,99 vrátane ,00. Na tieto by sme použili klasické pravidlo zaokrúhliť. Druhý výber by obsahoval všetky produkty, ktorých cena obsahuje údaje za desatinnou čiarkou v rozmezí ,01 až ,49. Na tieto by bolo potrebné najprv aplikovať pravidlo, ktoré pripočíta hodnotu +1 na element PRICE a následne by sme použili pravidlo zaokrúhliť.

Je tento postup správny? Je toto možné vyriešiť nejakým jednoduchším spôsobom? Dá sa výber produktov definovať inak, ako že uvedieme, aby produkt obsahoval v elemente PRICE výraz “,50” or “,51” or “,52” a takto vypíšeme všetky?

Ďakujem a prajem pekný deň :slight_smile:


#2

@ptagroup Na tu druhou část můžete pro výběr použít regulární výraz.
Zkuste něco jako

,[1-4]+|0[1-9]*

Více o regulárních výrazech na blogu http://www.mergado.cz/tema/regularni-vyrazy


#3

Mělo by stačit toto:

  1. vytvořit si v Mergadu výběr, který nebude obsahovat celá čísla (tj. bez desetin) ani “nulové desetiny”: ,00…
    Pro podmínku k dohledání produktů lze u výběru použít regulární výraz: \.(0?)*[1-9]+(0?)*

  2. vytvořit si pravidlo typu “Najít a nahradit”, aplikované na výběr z 1. bodu, které odstraní desetiny.
    Hledat se bude regulární výraz: \..* a nahrazovat za “nic”.
    Tím jsme odsekli desetiny 0.0001-0.9999…

  3. vytvořit si pravidlo typu Výpočet, aplikované na výběr z 1. bodu, které k ceně přičte 1 :wink: