EdeeShop · Implementace

Konfigurace e-shopu

Upraveno

Konfigurace modulu probíhá v souboru config/module-edeeshop/module-edeeshop.xml v elementu <module customName="edeeShop" classname="com.fg.cps.eshop.cps.EdeeShopModule">.

V rámci této sekce je povinná konfigurace pro katalogy.

Dále je také nutné nastavit jednotlivá rozšíření, tzv. features.

Katalogy

Jedno z nejdůležitějších nastavení je konfigurace katalogů, které je povinné a probíhá v rámci elementu module/config v souboru config/module-edeeshop/module-edeeshop.xml.

EdeeShop modul vyžaduje minimálně jeden katalog. Pro katalogy je dále možné specifikovat profily.

Příklad

xml
<catalogConfig>    <catalogs>        <catalog>            <basicPriceList>basic</basicPriceList>            <code/>            <country/>            <currency/>            <locale/>            <name/>            <profile/>            <referencePriceList>reference</referencePriceList>            <regions>                <region>                    <basicPriceList>basic_eur</basicPriceList>                    <country>CZ</country>                    <currency>CZK</currency>                    <locale>cs</locale>                    <referencePriceList>reference_eur</referencePriceList>                </region>            </regions>        </catalog>    </catalogs>    <defaultCatalogCode/></catalogConfig>

Popis

catalogConfig

Konfigurace katalogů.

Funkce katalogů je popsána zde.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
catalogs/catalog

Definice katalogů produktů. Jeden katalog odpovídá typicky jedné doméně. Z pohledu administrace produktů je unikátní kód produktu a katalog je vždy povinný. Není tak možné mít zařazený produkt s jedním kódem ve více katalozích. Při nabíhání modulu jsou v DB vytvořeny odpovídající záznamy v tabulce T_EDEESHOP_CATALOG

List: catalogs/catalog

-

-

defaultCatalogCode

Obsahuje kód výchozího katalogu (bude zobrazen primárně v Edee při kliku na záložku e-shop). Pokud není definováno, bere se první katalog ze seznamu jako výchozí.

String

-

-

catalogs/catalog

Definice katalogů produktů. Jeden katalog odpovídá typicky jedné doméně. Z pohledu administrace produktů je unikátní kód produktu a katalog je vždy povinný. Není tak možné mít zařazený produkt s jedním kódem ve více katalozích. Při nabíhání modulu jsou v DB vytvořeny odpovídající záznamy v tabulce T_EDEESHOP_CATALOG

VlastnostPopisHodnotaPovinnáVýchozí hodnota
basicPriceList

Kód základního (prodejního) ceníku katalogu.

Nepovinná hodnota, výchozí je basic (u alias katalogu automatický kód aliasu). Slouží zároveň jako výchozí hodnota pro regiony, které nemají vlastní regions/region/basicPriceList. Po změně je nutné znovu publikovat produkty, platby a dopravy.

String

-

basic

code

Unikátní kód katalogu.

String

✔

-

country

Výchozí kód země (ISO 3166 - 2 znaky).

String

✔

cz

currency

Výchozí měna katalogu ( ISO 4217 - 3 znaky)

currency

✔

CZK

locale

Výchozí locale katalogu

locale

✔

-

name

Název katalogu.

String

-

-

profile

Kód profilu katalogu.

Nastavený profil ovlivňuje chování e-shopu dle aktuálního katalogu.

Pokud není definováno, aplikuje se výchozí profil. Více o profilech zde.

String

-

-

referencePriceList

Kód referenčního ceníku (běžné, přeškrtnuté ceny) katalogu.

Nepovinná hodnota, výchozí je reference (u alias katalogu automatický kód aliasu). Slouží zároveň jako výchozí hodnota pro regiony, které nemají vlastní regions/region/referencePriceList. Po změně je nutné znovu publikovat produkty, platby a dopravy.

String

-

reference

regions/region

Seznam regionů (lokalizací / zemí / měn) v tomto katalogu. Více o regionech zde.

Hodnota je nepovinná. Tedy pokud není nastavený žádný region, tak se katalog tváří, že má pouze jeden region v jazyku, v zemi a měně, které jsou nastavené přímo u katalogu.

regions/region

-

-

regions/region

Seznam regionů (lokalizací / zemí / měn) v tomto katalogu. Více o regionech zde.

Hodnota je nepovinná. Tedy pokud není nastavený žádný region, tak se katalog tváří, že má pouze jeden region v jazyku, v zemi a měně, které jsou nastavené přímo u katalogu.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
basicPriceList

Kód základního (prodejního) ceníku regionu.

Nepovinná hodnota. Pokud není uvedena, použije se základní ceník katalogu (basicPriceList katalogu). Ceník regionu nelze smazat a je vždy aktivní, na rozdíl od ceníku katalogu ale smí mít podmínky použití (typicky omezení na zemi regionu). Po změně je nutné znovu publikovat produkty, platby a dopravy.

String

-

-

country

Kód země (ISO 3166 - 2 znaky).

Povinná hodnota.

String

-

-

currency

Měna regionu ( ISO 4217 - 3 znaky).

Povinná hodnota.

currency

-

-

locale

Lokalizace regionu.

locale

-

-

referencePriceList

Kód referenčního ceníku (běžné, přeškrtnuté ceny) regionu.

Nepovinná hodnota. Pokud není uvedena, použije se referenční ceník katalogu (referencePriceList katalogu). Ceny z tohoto ceníku se publikují jako neprodejní. Po změně je nutné znovu publikovat produkty, platby a dopravy.

String

-

-

Nastavení měn

Nastavení měn ovlivňuje chování systému z pohledu měny. Především co se týká zaokrouhlování cen nebo vypočtených částek.

Toto nastavení je povinné. Význam hodnot je popsán níže.

Příklad konfigurace

xml
<currencyConfig>    <computedPricesRoundedToDecimalPlaces>0</computedPricesRoundedToDecimalPlaces>    <maximumDecimalPlaces>2</maximumDecimalPlaces>    <currencies>        <currency>            <computedPricesRoundedToDecimalPlaces/>            <currency/>            <maximumDecimalPlaces/>        </currency>    </currencies>    <catalogSpecific>        <catalogCode/>        <computedPricesRoundedToDecimalPlaces>0</computedPricesRoundedToDecimalPlaces>        <maximumDecimalPlaces>2</maximumDecimalPlaces>        <currencies>            <currency>                <computedPricesRoundedToDecimalPlaces/>                <currency/>                <maximumDecimalPlaces/>            </currency>        </currencies>    </catalogSpecific></currencyConfig>

Popis

currencyConfig

Nastavení systému v kontextu měny.

Pokud není uvedeno, použije se výchozí nastavení, které je:

Pro CZK

  • 'maximumDecimalPlaces' = 2
  • 'computedPricesRoundedToDecimalPlaces' = 0

Pro ostatní měny

  • 'maximumDecimalPlaces' = 2
  • 'computedPricesRoundedToDecimalPlaces' = 2

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
computedPricesRoundedToDecimalPlaces

Počet desetinných míst, na které budou zaokrouhlovány ceny, pokud výpočet ceny probíhá na straně EdeeShop. Zároveň se jedná o výchozí hodnotu v případě, že neexistuje konfigurace pro danou měnu. Pro konkrétní měnu lze hodnotu specifikovat pomocí elementu currencies/currency.

Používá se:

  • V případě výpočtu cen virtuálních ceníků.
  • K zaokrouhlení celkové ceny k úhradě při tvorbě objednávky.

Např. pro CZK je typicky nastaveno 0. Tedy vypočtené ceny se evidují na celá čísla. Pro EUR dává smysl hodnota 2.

Integer

✔

-

maximumDecimalPlaces

Hodnota vyjadřuje maximální počet povolených desetinných míst u ceny. Zároveň se jedná o výchozí hodnotu v případě, že neexistuje konfigurace pro danou měnu. Pro konkrétní měnu lze hodnotu specifikovat pomocí elementu currencies/currency. Používá se při kontrole i při zadávání cen do systému (přes AR nebo API).

Např. pro CZK nebo EUR je typicky nastaveno 2. Tedy ceny v systému se evidují na dvě desetinná místa.

Integer

✔

-

currencies/currency

Konfigurace pro konkrétní měny. Seznam je nepovinný a v případě, že nebude nic uvedeno, tak se pro všechny měny použijí hodnoty maximumDecimalPlaces a computedPricesRoundedToDecimalPlaces.

List: currencies/currency

-

-

catalogSpecific

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

-

-

currencies/currency

Konfigurace pro konkrétní měny. Seznam je nepovinný a v případě, že nebude nic uvedeno, tak se pro všechny měny použijí hodnoty maximumDecimalPlaces a computedPricesRoundedToDecimalPlaces.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
computedPricesRoundedToDecimalPlaces

Počet desetinných míst, na které budou zaokrouhlovány ceny, pokud výpočet ceny probíhá na straně EdeeShop. Povinná hodnota.

Používá se:

  • V případě výpočtu cen virtuálních ceníků.
  • K zaokrouhlení celkové ceny k úhradě při tvorbě objednávky.
  • Zaokrouhlení procentuální slevy u slevových poukazů, pokud není definováno přímo u slev.

Např. pro CZK nebo EUR je typicky nastaveno 2. Tedy ceny v systému se evidují na dvě desetinná místa.

Integer

-

-

currency

Kód měny pro toto nastavení (ISO 4217 - 3 znaky). Povinná hodnota.

currency

-

-

maximumDecimalPlaces

Hodnota vyjadřuje maximální počet povolených desetinných míst u ceny. Povinná hodnota. Používá se při kontrole i při zadávání cen do systému (přes AR nebo API).

Např. pro CZK je typicky nastaveno 0. Tedy vypočtené ceny se evidují na celá čísla. Pro EUR dává smysl hodnota 2.

Integer

-

-

Nastavení cen

Příklad konfigurace

xml
<priceConfig>    <keyUserProperties>        <property>userForm</property>    </keyUserProperties>    <unlockBasicPriceListValidity/>    <userPriceListCacheValidityInMinutes/>    <catalogSpecific>        <catalogCode/>        <keyUserProperties>            <property>userForm</property>        </keyUserProperties>        <unlockBasicPriceListValidity/>        <userPriceListCacheValidityInMinutes/>    </catalogSpecific></priceConfig>

Popis

priceConfig

Konfigurace cen a ceníků.

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
keyUserProperties/property

Specifikuje seznam vlastností (properties) uživatelského objektu (com.fg.registration.model.user.User), které mají vliv na výběr ceníků (typicky id uživatele, pokud existují ceníky vázané na uživatele nebo id skupiny uživatele, pokud existují ceníky vázané na skupiny uživatelů)

String

-

-

unlockBasicPriceListValidity

Umožňuje otevřít k editaci platnost od-do cen pro základní a referenční ceník.

boolean

-

false

userPriceListCacheValidityInMinutes

Specifikuje čas po který jsou maximálně uchovány data o cenících na FE. Po uplynutí tohoto času jsou data označena za zastaralé a dojde k opětovnému dotazu na REST API.

Tato doba by měla být uzpůsobena danému prostředí, pro dynamický projekt s častými změnami v cenících a cenových politikách lze interval zmenšit.

int

-

30

catalogSpecific

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

-

-

Nastavení frontstore indexu evitaDB

Data z primárního úložiště se indexují do no-sql databáze evitaDB pomocí asynchronních úloh Úplná reindexace publikované databáze do Evita a Inkrementální indexace publikované databáze do Evita. Jeden EdeeShop katalog je publikován do samostatného katalogu (schématu) v evitaDB databázi (pokud je publikace do toho katalogu konfiguračně zapnuta). Katalog v evitaDB je tzv. samonosný a obsahuje všechny potřebné informace pro zobrazení produktů v e-shopu. Pokud jsou nějaké informace děděny / přebírány z origin katalogu, jsou v rámci publikace do evitaDB zkopírovány a uloženy v cílovém alias katalogu.

Příklad konfigurace

xml
<evita>    <allowSameUrlInDifferentLocales/>    <certificateDirectory/>    <embedded/>    <exportDirectory/>    <fullReindexMinimalCompletenessPercent/>    <host/>    <indexedDecimalPlaces/>    <port/>    <publishEntities/>    <publishEntitiesBatchSize/>    <publishOnlyEntitiesWithTranslations/>    <publishIntervalParametersAsAttributes/>    <storageDirectory/>    <timeoutForPublishing/>    <tlsEnabled/>    <trustedCertificate/>    <waitForClose/>    <catalogSpecific>        <catalogCode/>        <allowSameUrlInDifferentLocales/>        <fullReindexMinimalCompletenessPercent/>        <indexedDecimalPlaces/>        <publishEntities/>        <publishEntitiesBatchSize/>        <publishOnlyEntitiesWithTranslations/>        <publishIntervalParametersAsAttributes/>    </catalogSpecific></evita>

Popis

evita

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
allowSameUrlInDifferentLocales

Pokud je nastaveno na TRUE, tak je povoleno stejné url u různých entit v různých jazycích. Nicméně stále je zakázáno mít stejnou url u dvou různých entit ve stejném jazyce.

Výchozí hodnota je FALSE - tj. URL musí být unikátní pro každou entitu v rámci celého katalogu a všech jazyků.

boolean

-

false

certificateDirectory

Vrací umístění adresáře, kam má evitaDB ukládat data o certifikátech.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

String

-

-

embedded

Pokud se nastaví na TRUE EdeeShop instanciuje Evitu jako interní komponentu a nebude se na ni napojovat jako na samostatný proces běžící v jiném JVM.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

boolean

-

false

exportDirectory

Vrací umístění adresáře, kam má evitaDB ukládat exportovaná data v případě, že #isEmbedded() je true. Pokud není zadáno, ukládají se data do temp adresáře operačního systému.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

String

-

-

host

IP adresa nebo název hostitele, kde server gRPC naslouchá.

Hodnota je povinná, pokud embedded = false.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

String

-

-

indexedDecimalPlaces

Hodnota určuje na kolik desetinných míst se má zaokrouhlit cena, která se používá pro indexaci, tedy cena určená pro vyhledávání a filtraci ve seznamech.

Např. cenu v detailu produktu nebo cenu za kterou se produkt prodává to neovlivňuje.

Pokud není uvedeno, použije se globální nastavení maximumDecimalPlaces v konfiguraci modulu (v sekci 'currencyConfig').

Integer

-

-

port

Port, na kterém server gRPC naslouchá.

Hodnota je povinná, pokud embedded = false.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

Integer

-

-

publishEntities

Pokud je nastaveno pro konkrétní katalog na hodnotu true, publikují se jeho data do evitaDB databáze. U systémových katalogů se tato hodnota nastavuje na false.

boolean

-

false

fullReindexMinimalCompletenessPercent

Minimální počet entit v nově postaveném indexu, vyjádřený v procentech počtu entit v aktuálně živém indexu, který musí být dosažen, aby full reindex směl živý index nahradit. Obě čísla se zjišťují dotazem do evitaDB až v okamžiku rozhodování, takže entity, které se do indexu legitimně nedostávají (nepřeložené, bez aktivní URL, …), chybí na obou stranách poměru a práh nezkreslují.

Nedosažení prahu ukončí běh chybou, intermediate katalog se smaže a živý index zůstane nedotčen. Pokud živý katalog neexistuje, je prázdný nebo poškozený, není s čím poměřovat a nový index se použije vždy.

Hodnota 0 pojistku vypíná. Hodnota vyšší než 100 je chyba konfigurace (nesplnitelný požadavek) — pro daný běh se ořízne na 100 a nahlásí se jako ERROR s uvedením katalogu a zadané hodnoty.

Integer

-

90

publishEntitiesBatchSize

Nastavuje velikost dávky pro publikaci entit do evitaDB databáze.

Integer

-

-

publishOnlyEntitiesWithTranslations

Nastavuje chování publikačního procesu per katalog pro lokalizované atributy. Pokud se zjistí, že entita má vypublikovaný pouze systémový název / URL v daném jazyku, tak se tyto atributy vyloučí a entita se považuje za nepřeloženou.

boolean

-

false

publishIntervalParametersAsAttributes

Nastavuje chování publikačního procesu per katalog pro intervalové parametry. Pokud se zjistí, že entita má intervalový parametr, tak se jeho hodnoty publikují jako atributy s názvem daného parametru.

boolean

-

false

storageDirectory

Vrací umístění adresáře, kam má evitaDB ukládat data v případě, že #isEmbedded() je true. Pokud není zadáno, ukládají se data do temp adresáře operačního systému.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

String

-

-

timeoutForPublishing

Časový interval pro dlouhé publikační procesy.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

TimeInterval

-

-

tlsEnabled

Je nutné nastavit na FALSE, pokud je server gRPC spuštěný bez šifrování. Výchozí hodnota je TRUE.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

Boolean

-

-

trustedCertificate

Je nutné nastavit na TRUE, pokud je certifikát používaný evita serverem důvěryhodný - tj. např. vystavený Let's Encrypt autoritou. Výchozí hodnota je FALSE a specifikuje tzv. self-signed certifikát, který není Javou běžně důvěřován.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

boolean

-

false

waitForClose

Časový interval, který by měl klient počkat na standardní ukončení otevřeného spojení, než je násilně ukončí.

Tuto vlastnost nelze nastavit specificky pro konkrétní katalog. Více zde.

TimeInterval

-

-

catalogSpecific

Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.

-

-

Features

Konfigurace dále zahrnuje konfigurace jednotlivých features. Tyto konfigurace jsou zde pro přehlednost řešeny odkazem pomocí elementu <include path=""/> , kde path je relativní cesta ke konfiguračnímu souboru dané feature.

Tyto odkazy není nutné běžně měnit, protože konfigurace samotných features se mění až v nich. Odkazy je nutné přidat pouze v případě přidání nové feature, typicky při upgradu.

Popis konfigurace jednotlivých features naleznete zde.

Lokalizace

TODO MKO - tady nejspíš bude nějaký odkaz na obecnou konfiguraci modulů a přidání lokalizací; toto bude platit pro další elementy jako je <injectedResources/>, <metamodelExtension/> nebo <mailing/>

Systémové řazení entit

Seznam entit s podporou řazení a možnost vypnutí systémového řazení entit je dostupná zde.

Oprávnění

Oprávnění jsou popsány v samostatném dokumentu zde.