Kredity
Kredit v EdeeShopu lze uplatnit dvěma způsoby:
- jako sleva z objednávky (ABSOLUTE_ORDER) – výchozí chování,
- jako platba (PAYMENT) – zapíná se v konfiguraci přes
useCreditAsPayment.
Při použití kreditu jako platby:
- v režimu daní poukazů SINGLE se snižuje základ DPH (kredit se chová jako předplacená platba),
- v režimu MULTI se základ DPH nemění,
- volitelně může krýt i dopravu a platbu přes
useCreditToShippingAndPayment.
Poznámka: Jaký je rozdíl mezi slevou a platbou?
- Sleva (ABSOLUTE_ORDER) je rozpočítána mezi položky a vždy snižuje základ DPH položek.
- Platba (PAYMENT) se mezi položky nerozpočítává, ovlivňuje pouze finální částku k úhradě; to, zda sníží základ DPH, závisí na nastavení objednákového modulu, viz
voucherTaxStrategy.
Pořadí uplatnění vůči jiným cenovým politikám (např. dárkovým poukazům) určíte prioritou skupiny cenové politiky v konfiguraci kreditů (pricePolicyPriority). Pokud chcete, aby se nejdříve uplatnil voucher a až poté kredit, nastavte pro kredit nižší prioritu než pro dárkové poukazy (viz také giftConfig.
Kredity se zapínají pomocí elementu <credit/>.
Konfigurační soubor se standardně nachází v adresáři config/module-edeeshop/features/benefit/credit.xml.
Příklad konfigurace
<credit> <allocations> <fixedAdditions> <addition> <code/> <events> <event> <allocationId>event.order.number</allocationId> <amount>100</amount> <catalogCode>event.order.catalogCode</catalogCode> <checkUnique>true</checkUnique> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expireAtEndOfDay>true</expireAtEndOfDay> <expression>event.state.code == 'dispatched-order'</expression> <lang>event.order.lang</lang> <message>texts.get('mail.credit.thanks', event.order.customer)</message> <validity>P365D</validity> </event> </events> </addition> </fixedAdditions> <percentageAdditions> <addition> <code/> <events> <event> <allocationId>event.order.number</allocationId> <catalogCode>event.order.catalogCode</catalogCode> <checkUnique>true</checkUnique> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expireAtEndOfDay>true</expireAtEndOfDay> <expression>event.state.code == 'dispatched-order'</expression> <fromAmount>event.order.totalPriceOfItemsToPay</fromAmount> <lang>event.order.lang</lang> <message>texts.get('mail.credit.thanks', event.order.customer)</message> <percent>10</percent> <rounding>0</rounding> <roundingMode>T(java.math.RoundingMode).DOWN</roundingMode> <validity>P365D</validity> </event> </events> </addition> </percentageAdditions> <reverts> <revert> <code/> <events> <event> <allocationId>event.order.number</allocationId> <catalogCode>event.order.catalogCode</catalogCode> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expression>event.state.code == 'dispatched-order'</expression> </event> </events> </revert> </reverts> </allocations> <currencies> <currency> <code>CZK</code> <minimalOrderAmount>1000</minimalOrderAmount> </currency> </currencies> <expiration>1y</expiration> <notifyBeforeExpiration>7d</notifyBeforeExpiration> <pricePolicyPriority>-1000000</pricePolicyPriority> <useCreditAsPayment>true</useCreditAsPayment> <useCreditToShippingAndPayment>true</useCreditToShippingAndPayment> <catalogSpecific> <catalogCode/> <allocations> <fixedAdditions> <addition> <code/> <events> <event> <allocationId>event.order.number</allocationId> <amount>100</amount> <catalogCode>event.order.catalogCode</catalogCode> <checkUnique>true</checkUnique> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expireAtEndOfDay>true</expireAtEndOfDay> <expression>event.state.code == 'dispatched-order'</expression> <lang>event.order.lang</lang> <message>texts.get('mail.credit.thanks', event.order.customer)</message> <validity>P365D</validity> </event> </events> </addition> </fixedAdditions> <percentageAdditions> <addition> <code/> <events> <event> <allocationId>event.order.number</allocationId> <catalogCode>event.order.catalogCode</catalogCode> <checkUnique>true</checkUnique> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expireAtEndOfDay>true</expireAtEndOfDay> <expression>event.state.code == 'dispatched-order'</expression> <fromAmount>event.order.totalPriceOfItemsToPay</fromAmount> <lang>event.order.lang</lang> <message>texts.get('mail.credit.thanks', event.order.customer)</message> <percent>10</percent> <rounding>0</rounding> <roundingMode>T(java.math.RoundingMode).DOWN</roundingMode> <validity>P365D</validity> </event> </events> </addition> </percentageAdditions> <reverts> <revert> <code/> <events> <event> <allocationId>event.order.number</allocationId> <catalogCode>event.order.catalogCode</catalogCode> <constraint>eq(event.state.code,dispatched-order)</constraint> <currency>event.order.currency</currency> <customer>event.user.login</customer> <eventName>afterNewOrderStateCreatedEvent</eventName> <expression>event.state.code == 'dispatched-order'</expression> </event> </events> </revert> </reverts> </allocations> <currencies> <currency> <code>CZK</code> <minimalOrderAmount>1000</minimalOrderAmount> </currency> </currencies> <expiration>1y</expiration> <notifyBeforeExpiration>7d</notifyBeforeExpiration> <pricePolicyPriority>-1000000</pricePolicyPriority> <useCreditAsPayment>true</useCreditAsPayment> <useCreditToShippingAndPayment>true</useCreditToShippingAndPayment> </catalogSpecific></credit>
Popis
credit
Konfigurace CreditFeature.
Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| allocations | Alokační pravidla, která zajistí automatizované přidělení kreditu na základě konkrétní události a naopak revertování původního přidělení kreditu na základě jiné události. |
|
| |
| currencies/currency | Specifická konfigurace pro konkrétní měny. V případě, že je seznam prázdný, tak jsou kredity povoleny pro všechny měny. V opačném případě jsou kredity povoleny jen pro měny definované v tomto seznamu. | List: currencies/currency |
|
|
| expiration | Časový interval po kterém dojde k vypršení platnosti kredity. Časový interval se počítá od přidělení kreditu. Po vypršení platnosti nelze již kredity uplatnit. |
|
| |
| notifyBeforeExpiration | Časový interval před koncem platnosti kreditu, kdy se mají odeslat upozornění na konec platnosti. |
|
| |
| pricePolicyPriority | Priorita uplatnění cenové politiky pro kredity. Standardně by se kredity měly uplatnit jako poslední, proto je default hodnota velmi nízká. Čím vyšší je priorita, tím dříve se politika uplatní. | Long |
|
|
| useCreditAsPayment | Pokud je povoleno, kredit se uplatní jako platba (PAYMENT) namísto slevy z objednávky (ABSOLUTE_ORDER). Prakticky to znamená:
Výchozí hodnota: false (kvůli zpětné kompatibilitě). | Boolean |
|
|
| useCreditToShippingAndPayment | Pokud je povoleno, kredit použitý jako platba (viz Výchozí hodnota: false. | Boolean |
|
|
| catalogSpecific | Vlastnosti této konfigurace lze specifikovat pro konkrétní katalog. Více zde. |
|
|
allocations
Alokační pravidla, která zajistí automatizované přidělení kreditu na základě konkrétní události a naopak revertování původního přidělení kreditu na základě jiné události.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| fixedAdditions/addition | Seznam pravidel pro přidání fixní částky kreditu. | List: fixedAdditions/addition |
|
|
| percentageAdditions/addition | Seznam pravidel pro přidání procentuální částky kreditu. |
|
| |
| reverts/revert | Seznam pravidel pro zrušení přiděleného kreditu. | List: reverts/revert |
|
|
fixedAdditions/addition
Seznam pravidel pro přidání fixní částky kreditu.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| code | Unikátní kód pravidla, který se používá k identifikaci pravidla v rámci systému. Tento kód se eviduje u přidaného kreditu v atributu | String |
|
|
| events/event | Seznam událostí, na které reaguje toto pravidlo. V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje. Pravidlo vyžaduje alespoň jednu událost. | List: events/event |
|
|
events/event
Seznam událostí, na které reaguje toto pravidlo.
V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje.
Pravidlo vyžaduje alespoň jednu událost.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| allocationId | Výraz (SpEL - Spring Expression Language), který identifikuje zdroj na základě, kterého byly kredity přiděleny. Příkladem může být číslo objednávky. Na základě této hodnoty je pak možné provést např. zrušení přiděleného kreditu v případě storna objednávky. Toto id se eviduje u přidaného kreditu v atributu V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| amount | Výraz (SpEL - Spring Expression Language), který vrací fixní částku kreditu ( V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| catalogCode | Výraz (SpEL - Spring Expression Language), který vyhodnocuje katalog, v rámci kterého bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| checkUnique | Výraz (SpEL - Spring Expression Language), který musí vracet Nepovinná hodnota. Pokud není uvedeno, kontrola se provádí. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova | String |
|
|
| constraint | Pravidlo schválí událost pokud vlastnosti této události splňují požadavky definované podmínky. Podmínka může obsahovat libovolný standardní operátor: and, or, not, eq, isTrue, isFalse atd. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova kód Více na TOBEDONE #1948 odkaz na dokumentaci constraint. | String |
|
|
| currency | Výraz (SpEL - Spring Expression Language), který vyhodnocuje měnu, v rámci které bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| customer | Výraz (SpEL - Spring Expression Language), který vyhodnocuje zákazníka (jeho identifikátor), kterému bude kredit přidán/zrušen. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| eventName | Název aplikační události. Pokud název události odpovídá této hodnotě, aby mohla být podmínka splněna. Pokud není vyplněno, název události se nekontroluje. | String |
|
|
| expireAtEndOfDay | Výraz (SpEL - Spring Expression Language), který musí vracet Nepovinná hodnota. Default hodnota je V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova | String |
|
|
| expression | Výraz (SpEL - Spring Expression Language), který se pro danou událost vyhodnocuje. Podmínka je splněna pokud daný výraz vrací Příklad výrazu pro událost, která poskytuje vlastnosti Nepovinný hodnota. | String |
|
|
| lang | Výraz (SpEL - Spring Expression Language), který vyhodnocuje jazyk v jakém se má nacházet případná zpráva. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. | String |
|
|
| message | Výraz (SpEL - Spring Expression Language), který vyhodnocuje zprávu pro zákazníka, která může být součástí notifikace. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Příklad výrazu Nepovinná hodnota. | String |
|
|
| validity | Výraz (SpEL - Spring Expression Language), který dobu platnosti. Výraz musí vracet string výraz, který dokáže vyhodnotit V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. Pokud není uvedeno aplikuje se default hodnota dle nastavení 'expiration'. | String |
|
|
percentageAdditions/addition
Seznam pravidel pro přidání procentuální částky kreditu.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| code | Unikátní kód pravidla, který se používá k identifikaci pravidla v rámci systému. Tento kód se eviduje u přidaného kreditu v atributu | String |
|
|
| events/event | Seznam událostí, na které reaguje toto pravidlo. V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje. Pravidlo vyžaduje alespoň jednu událost. | List: events/event |
|
|
events/event
Seznam událostí, na které reaguje toto pravidlo.
V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje.
Pravidlo vyžaduje alespoň jednu událost.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| allocationId | Výraz (SpEL - Spring Expression Language), který identifikuje zdroj na základě, kterého byly kredity přiděleny. Příkladem může být číslo objednávky. Na základě této hodnoty je pak možné provést např. zrušení přiděleného kreditu v případě storna objednávky. Toto id se eviduje u přidaného kreditu v atributu V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| catalogCode | Výraz (SpEL - Spring Expression Language), který vyhodnocuje katalog, v rámci kterého bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| checkUnique | Výraz (SpEL - Spring Expression Language), který musí vracet Nepovinná hodnota. Pokud není uvedeno, kontrola se provádí. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova | String |
|
|
| constraint | Pravidlo schválí událost pokud vlastnosti této události splňují požadavky definované podmínky. Podmínka může obsahovat libovolný standardní operátor: and, or, not, eq, isTrue, isFalse atd. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova kód Více na TOBEDONE #1948 odkaz na dokumentaci constraint. | String |
|
|
| currency | Výraz (SpEL - Spring Expression Language), který vyhodnocuje měnu, v rámci které bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| customer | Výraz (SpEL - Spring Expression Language), který vyhodnocuje zákazníka (jeho identifikátor), kterému bude kredit přidán/zrušen. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| eventName | Název aplikační události. Pokud název události odpovídá této hodnotě, aby mohla být podmínka splněna. Pokud není vyplněno, název události se nekontroluje. | String |
|
|
| expireAtEndOfDay | Výraz (SpEL - Spring Expression Language), který musí vracet Nepovinná hodnota. Default hodnota je V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova | String |
|
|
| expression | Výraz (SpEL - Spring Expression Language), který se pro danou událost vyhodnocuje. Podmínka je splněna pokud daný výraz vrací Příklad výrazu pro událost, která poskytuje vlastnosti Nepovinný hodnota. | String |
|
|
| fromAmount | Výraz (SpEL - Spring Expression Language), který vrací částku, ze které se má vypočíst výše kreditu ( V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| lang | Výraz (SpEL - Spring Expression Language), který vyhodnocuje jazyk v jakém se má nacházet případná zpráva. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. | String |
|
|
| message | Výraz (SpEL - Spring Expression Language), který vyhodnocuje zprávu pro zákazníka, která může být součástí notifikace. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Příklad výrazu Nepovinná hodnota. | String |
|
|
| percent | Výraz (SpEL - Spring Expression Language), který vrací procenta ( V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| rounding | Výraz (SpEL - Spring Expression Language), který vrací na kolik (int) desetinných míst se vypočtený kredit zaokrouhlit. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. Default je 0. | String |
|
|
| roundingMode | Výraz (SpEL - Spring Expression Language), který vrací způsob zaokrouhlení (přesněji jednu z hodnot V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. Default je | String |
|
|
| validity | Výraz (SpEL - Spring Expression Language), který dobu platnosti. Výraz musí vracet string výraz, který dokáže vyhodnotit V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Nepovinná hodnota. Pokud není uvedeno aplikuje se default hodnota dle nastavení 'expiration'. | String |
|
|
reverts/revert
Seznam pravidel pro zrušení přiděleného kreditu.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| code | Unikátní kód pravidla, který se používá k identifikaci pravidla v rámci systému. | String |
|
|
| events/event | Seznam událostí, na které reaguje toto pravidlo. V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje. Pravidlo vyžaduje alespoň jednu událost. | List: events/event |
|
|
events/event
Seznam událostí, na které reaguje toto pravidlo.
V případě, že alespoň jedna událost splňuje podmínky pro vypálenou aplikační událost (např. změna stavu objednávky), tak se toto pravidlo aplikuje.
Pravidlo vyžaduje alespoň jednu událost.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| allocationId | Výraz (SpEL - Spring Expression Language), který identifikuje zdroj na základě, kterého byly kredity přiděleny. Příkladem může být číslo objednávky. Na základě této hodnoty je pak možné provést např. zrušení přiděleného kreditu v případě storna objednávky. Toto id se eviduje u přidaného kreditu v atributu V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| catalogCode | Výraz (SpEL - Spring Expression Language), který vyhodnocuje katalog, v rámci kterého bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| constraint | Pravidlo schválí událost pokud vlastnosti této události splňují požadavky definované podmínky. Podmínka může obsahovat libovolný standardní operátor: and, or, not, eq, isTrue, isFalse atd. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova kód Více na TOBEDONE #1948 odkaz na dokumentaci constraint. | String |
|
|
| currency | Výraz (SpEL - Spring Expression Language), který vyhodnocuje měnu, v rámci které bude s kredity manipulováno. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| customer | Výraz (SpEL - Spring Expression Language), který vyhodnocuje zákazníka (jeho identifikátor), kterému bude kredit přidán/zrušen. V rámci výrazu je možné se odkazovat na událost pomocí klíčového slova Povinná hodnota. | String |
|
|
| eventName | Název aplikační události. Pokud název události odpovídá této hodnotě, aby mohla být podmínka splněna. Pokud není vyplněno, název události se nekontroluje. | String |
|
|
| expression | Výraz (SpEL - Spring Expression Language), který se pro danou událost vyhodnocuje. Podmínka je splněna pokud daný výraz vrací Příklad výrazu pro událost, která poskytuje vlastnosti Nepovinný hodnota. | String |
|
|
currencies/currency
Specifická konfigurace pro konkrétní měny.
V případě, že je seznam prázdný, tak jsou kredity povoleny pro všechny měny. V opačném případě jsou kredity povoleny jen pro měny definované v tomto seznamu.
| Vlastnost | Popis | Hodnota | Povinná | Výchozí hodnota |
|---|---|---|---|---|
| code | Kód měny (ISO 4217 - 3 znaky), pro kterou má být tato konfigurace aplikována. Povinný atribut. |
|
| |
| minimalOrderAmount | Hodnota určuje minimální hodnota objednávky, pro kterou lze kredity uplatnit. V případě, že hodnota objednávky nižší, tak kredity nelze uplatnit. | BigDecimal |
|
|
E-mail notifikace
V rámci tohoto rozšíření je možné odesílat notifikace o změně v kreditech.
Tyto notifikace se zapínají pomocí elementu <mailing>. Další nastavení mailingu je popsáno zde.
Příklad:
<credit> <mailing/></credit>