Nákupní proces a objednávky

Nákupní proces a objednávky

Tato kapitola popisuje konfiguraci objednávání produktů a nákupního košíku a správu objednávek.

Zkopírovat odkaz na sekciNákupní proces

Způsob práce s košíkem a jeho případné rozšíření je popsán zde.

Proces vytvoření objednávky z košíku je detailně vysvětlen v samostatné kapitole "Vytvoření objednávky z nákupního košíku".

Ceny v košíku je možné ovlivnit pomocí cenových politik.

Konfigurační soubor se standardně nachází v adresáři config/module-edeeshop/features/order/order.xml.

Způsob zaokrouhlení částky k úhradě je popsán zde.

Zkopírovat odkaz na sekciObjednávka

Objednávka je reprezentována entitou Order. Jedná se o standardní ADAM entitu.

Objednávka obsahuje položky, adresy, uplatněné cenové politiky, dopravu a platbu. Tato data jsou na objednávku navázána jako "metadata-bundly".

Objednávky a i její data jako (položky, dopravy apod.) je možné rozšiřovat pomocí traitů. Traity se musí registrovat pomocí orderModelDescriptor.

java
1 OrderModelDescriptor orderModelDescriptor = orderFeature.getOrderModelDescriptor();2orderModelDescriptor.addTrait(OrderWithVoucher.class); // Trait rozšiřující Order.class3orderModelDescriptor.addTraitForSubModel(OrderItem.class, OrderItemWithEhub.class); // Trait rozšiřující bundle `items`4orderModelDescriptor.addAdvice(CustomAdvice.INSTANCE); // Případné upravené vyhodnocení metod pomocí projektové `one.edee.oss.proxycian.recipe.Advice`, kde `CustomAdvice.INSTANCE` je nějaký staticky singleton

Pro práci s objednávkami je určena třída AbstractOrderService.

Zkopírovat odkaz na sekciModifikace objednávek

Objednávky lze měnit/modifikovat, například přidat/měnit/odebrat položky, měnit stav, fakturační a dodací adresy apod. Možnosti modifikace jsou detailně popsány v kapitole "Modifikace objednávky".

Konfigurační soubor se standardně nachází v adresáři config/module-edeeshop/features/order/order.xml.

Zkopírovat odkaz na sekciPříklad konfigurace

xml
1 <order>2    <numberExpression>'E' + dateFormat('yyyy') + '-' + sequenceNumber(dateFormat('yyyy'),4)</numberExpression>3    <billingCountries>4        <billingCountry>5            <countryCode>CZ</countryCode>6            <region>7                <country>CZ</country>8                <currency>CZK</currency>9                <locale>cs</locale>10            </region>11        </billingCountry>12    </billingCountries>13    <bookingExpirationState>processing-order</bookingExpirationState>14    <cartExpiration>30d</cartExpiration>15    <cartImportKey/>16    <deliveryCountries>17        <deliveryCountry>18            <countryCode>CZ</countryCode>19            <region>20                <country>CZ</country>21                <currency>CZK</currency>22                <locale>cs</locale>23            </region>24        </deliveryCountry>25    </deliveryCountries>26    <maxCartItem>150</maxCartItem>27    <migrateAnonymousOrdersToActivatedUser/>28    <modifications>29        <addressModification/>30        <autoDispatchInterval/>31        <contactModification/>32        <itemModification/>33        <paymentModification/>34        <stateChecks>35            <stateCheck>36                <deliveryToPickupPoint/>37                <orderModificationType/>38                <orderState/>39            </stateCheck>40        </stateChecks>41    </modifications>42    <notificationConfig>43        <notifyQuicklyOnStates>44            <state>new-order</state>45        </notifyQuicklyOnStates>46    </notificationConfig>47    <optionalBillingAddress>48        <type/>49    </optionalBillingAddress>50    <optionalCustomerPhone/>51    <partDispatchConfig>52        <shippingTypeWhitelist/>53    </partDispatchConfig>54    <quantityRoundingDown/>55    <roundingRules>56        <roundingRule>57            <currency>CZK</currency>58            <paymentType/>59            <rounding>0</rounding>60        </roundingRule>61    </roundingRules>62    <voucherTaxStrategy/>63    <catalogSpecific>64        <catalogCode/>65        <numberExpression>'E' + dateFormat('yyyy') + '-' + sequenceNumber(dateFormat('yyyy'),4)</numberExpression>66        <billingCountries>67            <billingCountry>68                <countryCode>CZ</countryCode>69                <region>70                    <country>CZ</country>71                    <currency>CZK</currency>72                    <locale>cs</locale>73                </region>74            </billingCountry>75        </billingCountries>76        <bookingExpirationState>processing-order</bookingExpirationState>77        <cartExpiration>30d</cartExpiration>78        <cartImportKey/>79        <deliveryCountries>80            <deliveryCountry>81                <countryCode>CZ</countryCode>82                <region>83                    <country>CZ</country>84                    <currency>CZK</currency>85                    <locale>cs</locale>86                </region>87            </deliveryCountry>88        </deliveryCountries>89        <maxCartItem>150</maxCartItem>90        <modifications>91            <addressModification/>92            <autoDispatchInterval/>93            <contactModification/>94            <itemModification/>95            <paymentModification/>96            <stateChecks>97                <stateCheck>98                    <deliveryToPickupPoint/>99                    <orderModificationType/>100                    <orderState/>101                </stateCheck>102            </stateChecks>103        </modifications>104        <notificationConfig>105            <notifyQuicklyOnStates>106                <state>new-order</state>107            </notifyQuicklyOnStates>108        </notificationConfig>109        <optionalBillingAddress>110            <type/>111        </optionalBillingAddress>112        <optionalCustomerPhone/>113        <partDispatchConfig>114            <shippingTypeWhitelist/>115        </partDispatchConfig>116        <quantityRoundingDown/>117        <roundingRules>118            <roundingRule>119                <currency>CZK</currency>120                <paymentType/>121                <rounding>0</rounding>122            </roundingRule>123        </roundingRules>124        <voucherTaxStrategy/>125    </catalogSpecific>126</order>

Zkopírovat odkaz na sekciPopis

Zkopírovat odkaz na sekciorder

Konfigurace objednávek.

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

VlastnostPopisHodnotaPovinnáVýchozí hodnota
numberExpression

Výraz (SPeL), který definuje, jakým způsobem bude generováno číslo objednávky.

Dostupné parametry ve SPeLu jsou:

  • data - objekt košíku ()
  • dateFormat(String format) - metoda, která převede aktuální datum na string dle vstupního formátu
  • dateFormat(LocalDateTime date, String format) - metoda, která převede datum na vstupu na string dle vstupního formátu
  • sequenceNumber(String sequenceId, Int length) - metoda, která vrátí další číslo z číselné řady, který je určena parametrem 'sequenceId'. Parameter length určuje délku v řetězce výstupního řetězce, kdy číslo bude doplněno 0.
  • random(Int length) - metoda, která vrátí náhodné číslo. Parameter length určuje délku v řetězce výstupního řetězce.

Například výraz "'E' + dateFormat('yyyy') + '-' + sequenceNumber(dateFormat('yyyy'),4)" vygeneruje kód (pro rok 2022) "E2022-0001", "E2022-0002" atd.

Tento výraz je povinný v případě využití default implementace . V případě, že je na projektu vlastní implementace, tak tento výraz nemusí být povinný.

String

-

billingCountries/billingCountry

Seznam zemí, kam je možné fakturovat.

Pokud není uvedeno, berou se země podle seznamu definovaných a jejich zemí.

List: billingCountries/billingCountry

-

-

bookingExpirationState

Kód stavu objednávky, při kterém dojde k rezervaci zboží na skladě, resp. dojde k aktualizaci (), na základě které přechází rezervace do stavu .

V případě, že rezervace na skladě se váže na jinou událost než stav objednávky, nastavte hodnotu tohoto atributu na none.

Hodnota se pak nastavuje pomocí této modifikace .

Výchozí hodnota: "processing-order".

String

-

processing-order

cartExpiration

Počet dní, po které se uchovávají rozpracované košíku v DB. Po uplynutí této doby jsou "opuštěné" košíku odstraněny.

Výchozí hodnota je 30 dní.

TimeInterval

-

30d

cartImportKey

Atribut podle, kterého se vyhledávají produkty v rámci importu košíku.

Výchozí hodnota je code. Podporován je libovolný filtrovatelný atribut produktu, např. com.fg.cps.eshop.product.model.Product#PROPERTY_CATALOG_NUMBER apod.

String

-

code

deliveryCountries/deliveryCountry

Seznam zemí, kam je možné doručovat.

Pokud není uvedeno, berou se země podle seznamu definovaných a jejich zemí.

List: deliveryCountries/deliveryCountry

-

-

maxCartItem

Maximální počet položek v košíku, kdy nad tento limit již nelze přidat další položky.

V případě překročení je zákazníkovi zobrazena upozorňující hláška (warning). Limit se nevztahuje přidání bonusových produktů, které se přidávají automaticky na základně splněných podmínek.

Výchozí hodnota je 150.

int

-

150

migrateAnonymousOrdersToActivatedUser

Hodnota určuje, zda se mají anonymní objednávky při aktivaci uživatele přesunout pod aktivovaného uživatele na základě shody e-mailu uživatele a e-mailu u objednávky.

Hodnota true (výchozí hodnota) znamená, že se objednávky přesunou. V opačném případě se objednávky nepřesunou.

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

Boolean

-

true

modifications

Konfigurace modifikace objednávky.

modifications

-

-

notificationConfig

Konfigurace notifikací.

notificationConfig

-

-

optionalBillingAddress/type

Seznam typů doprav, pro které je možné mít nepovinné fakturační údaje.

Nepovinné fakturační údaje jsou možné v případě objednávky do 10tis bez DPH v CZK a také v případě, že není nutné znát dodací adresu, např. při osobním odběru.

V případě, že nebudou fakturační údaje uvedeny, nebude generována faktura, ale stačí pokladní doklad (Tisk pokladního dokladu z EdeeShopu není aktuálně podporován, a je nutné to řešit projektově). Případně, že zákazník bude požadovat fakturu později je nutné, aby si to dořešil přímo s provozovatelem e-shopu.

Nepovinná fakturační adresa je podporována pouze pro CZK měnu.

Výchozí je seznam prázdný, tedy fakturační údaje jsou vždy povinné.

List:

  • cPostPickupPoint - Česká pošta - Balík Na poštu
  • cPostBalikovna - Česká pošta - Balík do balíkovny
  • cPost - Česká pošta - Balík Do ruky
  • sPostPickupPoint - Slovenska pošta - Balík na poštu
  • sPostBalikobox - Slovenska pošta - Balík do BalíkoBOXu
  • sPost - Slovenska pošta - Balík na adresu
  • personalPickup - Osobní odběr bez výběru odběrného místa.
  • personalPickupAtPoint - Osobní odběr s výběrem odběrného místa
  • dpd - DPD
  • dpdPickupPoint - DPD Pickup Point
  • ppl - PPL
  • pplParcelShop - PPL ParcelShop
  • zasilkovna - Zásilkovna
  • zasilkovnaToAddress - Zásilkovna - doručení na adresu
  • geis - GEIS
  • gls - GLS
  • glsPickupPoint - GLS ShopDeliveryService
  • oneDelivery - One by Allegro - doručení na adresu (OneDelivery)
  • oneDeliveryPickupPoint - One by Allegro - výdejní místa (OneDelivery)
  • dbSchenker - DB Schenker
  • dhl - DHL
  • email - Typ dopravy, kdy není nutné dopravit zboží fyzicky, ale posílá se emailem
  • other - Jiný dopravce (např. doprava do zahraničí)

-

-

optionalCustomerPhone

Hodnota určuje, zda je kontaktní telefon na zákazníka povinný.

Pokud je hodnota true, telefon je nepovinný. Pokud je false, telefon je povinný. Výchozí hodnota je false.

boolean

-

false

partDispatchConfig

Zapnutí a konfigurace pro částečné expedice.

Tedy objednávku lze částečně přepnout do stavu "částečně expedováno" a "částečně na pobočce" (k vyzvednutí).

Nepovinná hodnota. Pokud není uvedeno, tak částečné expedice nejsou povoleny.

partDispatchConfig

-

-

quantityRoundingDown

Hodnota určuje zaokrouhlení přidaného množství produktů v případě, že požadované množství nevyhovuje .

Pokud je hodnota false (výchozí hodnota), tak se zaokrouhluje směrem nahoru. V opačném případě směrem dolů.

Tedy například produkt lze přidat pouze po 1.5m2 a zákazník požaduje 5m2. Množství v objednávce bude automaticky upraveno na násobek 1.5, tedy ve výchozím nastavení na 6m2.

boolean

-

false

roundingRules/roundingRule

Pravidla pro výpočet úrovně zaokrouhlení finální částky k úhradě.

Pokud nejsou definována žádná pravidla, tak se zohledňuje konfigurace computedPricesRoundedToDecimalPlaces v rámci currencyConfig.

List: roundingRules/roundingRule

-

-

voucherTaxStrategy

Hodnota určuje způsob zpracování poukazů a případně kreditů (přesněji cenových politik typy ) v kontextu uplatnění DPH.

Možné hodnoty jsou:

  • single - jednoúčelový poukaz -
  • multi - víceúčelový poukaz - výchozí hodnota.

Zkopírovat odkaz na sekciJednoúčelový poukaz

  • Podmínkou je, aby všechny položky (produkty, dopravy, platby) měly vždy stejnou sazbu DPH v rámci jedné objednávky.
  • DPH se odvádí při zakoupení dárkové poukazu. Tedy dárkový poukaz se prodává s odpovídající sazbou DPH.
  • Při uplatnění se snižuje základ DPH o hodnotu dárkového poukazu (tak aby nedošlo k dvojímu odvodu DPH).

Zkopírovat odkaz na sekciVíceúčelový poukaz

  • DPH se odvádí při uplatnění dárkového poukazu. Tedy uplatnění dárkového poukazu nesnižuje základ DPH.

String

-

-

catalogSpecific

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

-

-

Zkopírovat odkaz na sekcibillingCountries/billingCountry

Seznam zemí, kam je možné fakturovat.

Pokud není uvedeno, berou se země podle seznamu definovaných a jejich zemí.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
countryCode

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

String

-

-

region

Identifikátor regionu.

Pokud je uvedeno, nastavení platí pouze pro tento region. Pokud není uvedeno, platí pro všechny regiony v aktuálním katalogu.

region

-

-

Zkopírovat odkaz na sekciregion

Identifikátor regionu.

Pokud je uvedeno, nastavení platí pouze pro tento region. Pokud není uvedeno, platí pro všechny regiony v aktuálním katalogu.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
country

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

Povinná hodnota.

String

-

-

currency

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

Povinná hodnota.

currency

-

-

locale

Kód jazyka (ISO 639 - 2 znaky).

Povinná hodnota.

locale

-

-

Zkopírovat odkaz na sekcideliveryCountries/deliveryCountry

Seznam zemí, kam je možné doručovat.

Pokud není uvedeno, berou se země podle seznamu definovaných a jejich zemí.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
countryCode

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

String

-

-

region

Identifikátor regionu.

Pokud je uvedeno, nastavení platí pouze pro tento region. Pokud není uvedeno, platí pro všechny regiony v aktuálním katalogu.

region

-

-

Zkopírovat odkaz na sekciregion

Identifikátor regionu.

Pokud je uvedeno, nastavení platí pouze pro tento region. Pokud není uvedeno, platí pro všechny regiony v aktuálním katalogu.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
country

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

Povinná hodnota.

String

-

-

currency

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

Povinná hodnota.

currency

-

-

locale

Kód jazyka (ISO 639 - 2 znaky).

Povinná hodnota.

locale

-

-

Zkopírovat odkaz na sekcimodifications

Konfigurace modifikace objednávky.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
addressModification

Zapnutí a konfigurace modifikace adres a odběrného místa objednávky.

Pokud není definováno, tak není modifikace povolena.

addressModification

-

-

autoDispatchInterval

Interval, po které dojde k automatickému přepnutí stavu do expedováno v případě, že modifikací došlo ke kompletní expedici objednávky.

Interval představuje ochrannou lhůtu, kdy ještě může dojít k modifikaci objednávky, tedy může dojít k odebrání všech položek k expedici a následně k přidání nové položky.

Výchozí hodnota je "3m".

TimeInterval

-

3m

contactModification

Zapnutí a konfigurace modifikace kontaktních údajů (email + telefon).

Pokud není definováno, tak není modifikace povolena.

contactModification

-

-

itemModification

Zapnutí a konfigurace modifikace položek objednávky.

Pokud není definováno, tak není modifikace povolena.

itemModification

-

-

paymentModification

Zapnutí a konfigurace modifikace platební metody.

Modifikovat platbu je možné přes AR a také je zpřístupněno rest-api pro změnu platební metody na frontend zákazníkem.

Pokud není definováno, tak není modifikace povolena.

paymentModification

-

-

stateChecks/stateCheck

Možnost konfigurace stavů, kdy už není možné objednávku pro daný typ modifikace upravovat.

Pokud není definováno, tak není modifikace povolena.

List: stateChecks/stateCheck

-

-

Zkopírovat odkaz na sekciaddressModification

Zapnutí a konfigurace modifikace adres a odběrného místa objednávky.

Pokud není definováno, tak není modifikace povolena.

Zkopírovat odkaz na sekcicontactModification

Zapnutí a konfigurace modifikace kontaktních údajů (email + telefon).

Pokud není definováno, tak není modifikace povolena.

Zkopírovat odkaz na sekciitemModification

Zapnutí a konfigurace modifikace položek objednávky.

Pokud není definováno, tak není modifikace povolena.

Zkopírovat odkaz na sekcipaymentModification

Zapnutí a konfigurace modifikace platební metody.

Modifikovat platbu je možné přes AR a také je zpřístupněno rest-api pro změnu platební metody na frontend zákazníkem.

Pokud není definováno, tak není modifikace povolena.

Zkopírovat odkaz na sekcistateChecks/stateCheck

Možnost konfigurace stavů, kdy už není možné objednávku pro daný typ modifikace upravovat.

Pokud není definováno, tak není modifikace povolena.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
deliveryToPickupPoint

Hodnota určuje na jaký typ objednávky z hlediska doručení se konfigurace vztahuje.

Pokud je true, tak se konfigurace vztahuje pouze na objednávky, které byly doručeny na výdejní místo. Pokud je false, tak se konfigurace vztahuje pouze na objednávky, které nebyly doručeny na výdejní místo. Pokud je null, tak se konfigurace vztahuje na všechny objednávky.

Boolean

-

-

orderModificationType

Typ modifikace.

Typ odpovídá hodnotě konkrétní implementace.

String

-

-

orderState

Kód stavu. Pokud se v daném stavu objednávka nachází, modifikaci již nelze provést.

String

-

-

Zkopírovat odkaz na sekcinotificationConfig

Konfigurace notifikací.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
notifyQuicklyOnStates/state

Seznam stavů objednávky, pro které ma dojít "k okamžitému" odeslání notifikací (e-mail).

Standardně se notifikace odesílají v intervalu 5 min. Pro některé stavy objednávky (např. "new-order") je vhodné odeslat notifikace co nejdříve.

Hodnota je nepovinná a pokud není uvedeno, tak se k okamžitému odeslání dochází pouze pro stav new-order.

String

-

-

Zkopírovat odkaz na sekcipartDispatchConfig

Zapnutí a konfigurace pro částečné expedice.

Tedy objednávku lze částečně přepnout do stavu "částečně expedováno" a "částečně na pobočce" (k vyzvednutí).

Nepovinná hodnota. Pokud není uvedeno, tak částečné expedice nejsou povoleny.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
shippingTypeWhitelist

Seznam typů doprav, pro které je povolena částečná expedice (nevztahuje se k "částečně na pobočce").

Pokud je seznam prázdný (default), tak je částečná expedice povolena pro všechny typy doprav.

  • cPostPickupPoint - Česká pošta - Balík Na poštu
  • cPostBalikovna - Česká pošta - Balík do balíkovny
  • cPost - Česká pošta - Balík Do ruky
  • sPostPickupPoint - Slovenska pošta - Balík na poštu
  • sPostBalikobox - Slovenska pošta - Balík do BalíkoBOXu
  • sPost - Slovenska pošta - Balík na adresu
  • personalPickup - Osobní odběr bez výběru odběrného místa.
  • personalPickupAtPoint - Osobní odběr s výběrem odběrného místa
  • dpd - DPD
  • dpdPickupPoint - DPD Pickup Point
  • ppl - PPL
  • pplParcelShop - PPL ParcelShop
  • zasilkovna - Zásilkovna
  • zasilkovnaToAddress - Zásilkovna - doručení na adresu
  • geis - GEIS
  • gls - GLS
  • glsPickupPoint - GLS ShopDeliveryService
  • oneDelivery - One by Allegro - doručení na adresu (OneDelivery)
  • oneDeliveryPickupPoint - One by Allegro - výdejní místa (OneDelivery)
  • dbSchenker - DB Schenker
  • dhl - DHL
  • email - Typ dopravy, kdy není nutné dopravit zboží fyzicky, ale posílá se emailem
  • other - Jiný dopravce (např. doprava do zahraničí)

-

-

Zkopírovat odkaz na sekciroundingRules/roundingRule

Pravidla pro výpočet úrovně zaokrouhlení finální částky k úhradě.

Pokud nejsou definována žádná pravidla, tak se zohledňuje konfigurace computedPricesRoundedToDecimalPlaces v rámci currencyConfig.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
currency

Pravidlo je platné pokud je objednávka v této měně (ISO 4217 - 3 znaky). Povinný atribut.

currency

-

-

paymentType

Pravidlo je platné pokud je platba objednávky daného typu. Nepovinný atribut.

  • cash - Platba hotově předem.
  • cashOnDelivery - Platba při převzetí (dobírka).
  • transfer - Platba předem bankovním převodem.

Pro tento typ platby lze definovat bankovní účty, kam lze uhradit objednávku.

  • invoice - Platba na fakturu se splatností.

Zboží se odesílá před uhrazením.

  • proformaInvoice - Platba zálohovou fakturou.

Tento typ platby vyžaduje zálohovou fakturu, která se v rámci notifikace posílá zákazníkovi.

Zboží se odesílá až po zaplacení.

  • payU - Platební brána PayU.

Tato platební metoda vyžaduje zapnutý modul PayU platební brány.

  • gpWebPay - Platební brána GpWebPay.

Tato platební metoda vyžaduje zapnutý modul GpWebPay platební brány.

  • csob - ČSOB Platební brána.

Tato platební metoda vyžaduje zapnutý modul ČSOB platební brány.

  • payPal - PayPal.
  • paysec - PaySec.cz
  • goPay - GoPay platební brána.

Tato platební metoda vyžaduje zapnutý modul GoPay platební brány.

  • iPlatba - iPlatba.cz (Cofidis)
  • comgate - ComGate platební brána.

Tato platební metoda vyžaduje zapnutý modul ComGate platební brány.

  • essox - Platba ESSOX.

Tato platební metoda vyžaduje zapnutý modul Essox platební brány.

  • pays - Pays platební brána.

Tato platební metoda vyžaduje zapnutý modul Pays platební brány.

  • stripe - Stripe platební brána.

Tato platební metoda vyžaduje zapnutý modul Stripe platební brány.

  • twisto - Twisto platební brána.

Tato platební metoda vyžaduje zapnutý modul Twisto platební brány.

-

-

rounding

Hodnota určuje na kolik desetinných míst se má zaokrouhlit částka k úhradě. Povinný atribut.

Integer

-

-

Zkopírovat odkaz na sekciDopravy

Detailní popis konfigurace doprav je k nalezení zde.

Zkopírovat odkaz na sekciPlatby

Detailní popis konfigurace plateb je k nalezení zde.

Zkopírovat odkaz na sekciZměna platební metody zákazníkem

Zákazník může změnit platební metodu pro již vytvořenou objednávkou. Platbu lze změnit pouze pro objednávky, které:

  • nejsou zaplacené,
  • jsou ve stavu nová,
  • původní platební metoda je typu online (platba kartou, platební brány apod)

Seznam alternativních platebních metod, na které může zákazník přepnout, je možné projektově pomocí implementace PaymentMethodOrderFilter.

Zkopírovat odkaz na sekciCross-sale

Rozšíření, který zajišťuje výpočet prodejnosti produktů na základě objednávek. Konfigurace rozšíření je nepovinná a pouze slouží pouze k ovlivnění výchozího chování.

Zkopírovat odkaz na sekciPříklad konfigurace

xml
1 <order>2    <crossSale>3        <sourcesOfOrdersToBeProcessed/>4    </crossSale>5</order>

Zkopírovat odkaz na sekciPopis

Zkopírovat odkaz na sekciorder/crossSale

VlastnostPopisHodnotaPovinnáVýchozí hodnota
sourcesOfOrdersToBeProcessed

Seznam zdrojů objednávek, které mají být zahrnuty do zpracování prodejnosti produktů.

Pokud není uvedeno, tak se zpracují pouze objednávky z košíku, tedy objednávky jejíž zdroj je cart.

String

-

-

Zkopírovat odkaz na sekciSms notifikace

Objednávkový modul je možné rozšířit o odesílání SMS notifikací zákazníkovi, např. při vytvoření objednávky.

Zkopírovat odkaz na sekciPříklad konfigurace

xml
1 <order>2    <sendingSms>3        <sender>4            <login>login</login>5            <messages>6                <message>7                    <conditions>8                        <condition/>9                    </conditions>10                    <messageKey>eshop.sms.NEW_ORDER</messageKey>11                    <mock>false</mock>12                    <sourceKey>eshop.sms.source</sourceKey>13                </message>14            </messages>15            <password>password</password>16            <userSource/>17        </sender>18        <catalogSpecific>19            <catalogCode/>20            <sender>21                <login>login</login>22                <messages>23                    <message>24                        <conditions>25                            <condition/>26                        </conditions>27                        <messageKey>eshop.sms.NEW_ORDER</messageKey>28                        <mock>false</mock>29                        <sourceKey>eshop.sms.source</sourceKey>30                    </message>31                </messages>32                <password>password</password>33                <userSource/>34            </sender>35        </catalogSpecific>36    </sendingSms>37</order>

Zkopírovat odkaz na sekciPopis

Zkopírovat odkaz na sekciorder/sendingSms

Zapnutí a konfigurace SMS notifikací týkající se objednávek.

Pozn.: Tato funkce vyžaduje zapnutý profismsmodule modul.

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

VlastnostPopisHodnotaPovinnáVýchozí hodnota
sender

Konfigurace odesílání SMS zpráv.

sender

-

-

catalogSpecific

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

-

-

Zkopírovat odkaz na sekcisender

Konfigurace odesílání SMS zpráv.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
login

Přihlašovací údaje pro ctomato.

String

-

-

messages/message

Konfigurace zpráv, které se mají případně odeslat v případě splnění podmínek.

V případě, že podmínky splňuje více zpráv, tak se odesílá jen první v pořadí.

List: messages/message

-

-

password

Přihlašovací údaje pro ctomato.

String

-

-

userSource

Libovolná textová data, která budou uložena k SMS.

Nepovinná hodnota.

String

-

-

Zkopírovat odkaz na sekcimessages/message

Konfigurace zpráv, které se mají případně odeslat v případě splnění podmínek.

V případě, že podmínky splňuje více zpráv, tak se odesílá jen první v pořadí.

VlastnostPopisHodnotaPovinnáVýchozí hodnota
conditions/condition

Podmínky toho, zda se tato zpráva odeslat. Je vyžadována minimálně jedna podmínka.

Příklad podmínky:

1 order.catalogCode == 'myCatalog' and notificationType == 'NEW_ORDER'

Podmínka je vyhodnocena jako SpEL výraz, kde jako root je k dispozici .

List: String

-

-

messageKey

Klíč pro tělo zprávy.

Pod tímto klíčem se následně hledá message v properties. Message může obsahovat jeden argument, který představuje číslo objednávky.

String

-

-

mock

Pokud je hodnota true, tak nedojde k reálnému odeslání na bránu, ale pouze k zalogování. Vhodné např. pro vývoj.

Výchozí hodnota je false;

boolean

-

false

sourceKey

Klíč pro číslo nebo textový identifikátor odesílatele.

Pod tímto klíčem se následně hledá properties.

Výchozí hodnotou je prázdný řetězec - SMS bude odeslána z čísla ProfiSMS. Možnou hodnotou je buď telefonní číslo v mezinárodním tvaru, nebo text skládající se z písmen anglické abecedy, číslic a znaků . a - (tečka a pomlčka). V případě textu může být tento maximálně 11 znaků dlouhý, bude-li text delší, nebo bude-li obsahovat nepovolené znaky, potom dojde k jeho automatické úpravě na straně ProfiSMS.

String

-

-

Požadavek na odeslání SMS je možné před samotným odesláním projektově modifikovat. To lze zajistit pomocí implementace com.fg.cps.eshop.order.sms.service.SendSmsRequestSnippet. Tuto implementaci je potřeba zaregistrovat do aplikačního (Spring) kontextu.

Zkopírovat odkaz na sekciE-mail notifikace

V rámci tohoto rozšíření je možné odesílat notifikace týkající se objednávek.

Přehled notifikací je k nalezení zde.

Tyto notifikace se zapínají pomocí elementu <mailing>. Další nastavení mailingu je popsáno zde.

Příklad:

xml
1 <order>2    <mailing/>3</order>