You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Jacques Le Roux (JIRA)" <ji...@apache.org> on 2015/01/09 17:11:34 UTC
[jira] [Closed] (OFBIZ-5767) WebShoppingCart ignores session
currency
[ https://issues.apache.org/jira/browse/OFBIZ-5767?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jacques Le Roux closed OFBIZ-5767.
----------------------------------
Resolution: Invalid
Fix Version/s: (was: 13.07.02)
(was: 12.04.06)
(was: 14.12.01)
> WebShoppingCart ignores session currency
> ----------------------------------------
>
> Key: OFBIZ-5767
> URL: https://issues.apache.org/jira/browse/OFBIZ-5767
> Project: OFBiz
> Issue Type: Bug
> Components: specialpurpose/ecommerce
> Affects Versions: 12.04.04, 12.04.05
> Reporter: Josip Almasi
> Assignee: Jacques Le Roux
> Attachments: shoppingcart-currency.patch
>
>
> This is how WebShoppingCart constructor calls ShoppingCart constructor:
> (currencyUom != null ? currencyUom : ProductStoreWorker.getStoreCurrencyUomId(request)),
> WebShoppingCart constructor is called only from
> getCartObject(HttpServletRequest request, Locale locale, String currencyUom)
> which is called only from
> getCartObject(HttpServletRequest request)
> with null locale and currency.
> So, during WebShoppingCart creation, currency is always set to
> ProductStoreWorker.getStoreCurrencyUomId(request)
> This method in turn calls UtilHttp.getCurrencyUom(), which makes a number of attempts to find proper currency, with first attempt being session attribute "currencyUom".
> This is a chicken-egg problem though: first-time user does not have currencyUom attribute set, and WebShoppingCart is created immediatelly.
> But once created, nothing ever calls ShoppingCart.setCurrency()!
> The bug is in ShoppingCartEvents.getCartObject():
> if (cart == null) {
> cart = new WebShoppingCart(request, locale, currencyUom);
> session.setAttribute("shoppingCart", cart);
> } else {
> if (locale != null && !locale.equals(cart.getLocale())) {
> cart.setLocale(locale);
> }
> if (currencyUom != null && !currencyUom.equals(cart.getCurrency())) {
> Well, currencyUom parameter is always null.
> If null, it needs to be taken from request parameter, or even better, to go thru entire UtilHttp.getCurrency() thing.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)