EdeeShop · Implementace

Zaokrouhlení částky k úhradě objednávky

Upraveno

Následující kapitola popisuje zaokrouhlení částky k úhradě objednávky. Zaokrouhluje se částka k úhradě spočítaná z dokladu (viz Výpočet ceny objednávky a rozpočítání slev); rozdíly z rozpočítání slev se do zaokrouhlení nepřesouvají.

RoundingStrategy

Částku k zaokrouhlení zajišťuje com.fg.cps.eshop.order.service.RoundingStrategy#roundTotalToPay.

Výchozí implementace jsou dvě: default a skCash.

default

Výchozí implementace, která zaokrouhluje částku k úhradě na počet desetinných míst dle roundingScale, která je na vstupu.

Více viz com.fg.cps.eshop.order.service.DefaultRoundingStrategy.

skCash

Strategie pro zaokrouhlení hotovostních plateb na Slovensku, více viz com.fg.cps.eshop.order.service.SkCashRoundingStrategy.

RoundingScale

Jedná se o hodnotu, která se předává do RoundingStrategy#roundTotalToPay a určuje počet desetinných míst, na které se má částka k úhradě zaokrouhlit. Zda tuto hodnotu strategie využije, záleží na implementaci.

Hodnota roundingScale se vyhodnocuje v rámci metody com.fg.cps.eshop.order.service.AbstractOrderService#getRounding, která je ovlivněna konfigurací (viz roundingRules/roundingRule).

RoundingStrategyResolver

O výběr strategie pro konkrétní objednávku se stará implementace com.fg.cps.eshop.order.service.RoundingStrategyResolver, která vrací kód strategie, která se má pro danou objednávku použít (viz RoundingStrategy#getCode()).

Výchozí implementace je com.fg.cps.eshop.order.service.DefaultRoundingStrategyResolver, který vrací pro hotovostní platby na Slovensku skCash a pro všechny ostatní default.

Projektové rozšíření

V případě potřeby vlastní implementace zaokrouhlení částky k úhradě objednávky je možné vytvořit vlastní implementaci com.fg.cps.eshop.order.service.RoundingStrategy a com.fg.cps.eshop.order.service.RoundingStrategyResolver a následně je registrovat v kontejneru Springu.