[jira] [Commented] (OFBIZ-5767) WebShoppingCart ignores session currency

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Commented] (OFBIZ-5767) WebShoppingCart ignores session currency

Nicolas Malin (Jira)

    [ https://issues.apache.org/jira/browse/OFBIZ-5767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14266498#comment-14266498 ]

Jacques Le Roux commented on OFBIZ-5767:
----------------------------------------

From what I found I'm tempted to revert. From a store POV the currency is set within setDefaultStoreSettings() where the session value is also initialised. It's only way to set this value with the setSessionCurrencyUom ecommerce request.

Josip what was the use case which leaded you to this solution taking into account that the setSessionCurrencyUom ecommerce request is never used OOTB?

> 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: Ashish Vijaywargiya
>             Fix For: 14.12.01, 12.04.06, 13.07.02
>
>         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)