You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Ashish Vijaywargiya (JIRA)" <ji...@apache.org> on 2014/12/20 09:52:14 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 ]

Ashish Vijaywargiya closed OFBIZ-5767.
--------------------------------------
    Resolution: Fixed

Thanks Josip for the contribution. Your changes are committed on following revisions: 

- trunk - 1646926
- R13.07 - 1646927
- R12.04  - 1646928

> 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: Upcoming Branch, Trunk, Release Branch 13.07, Release Branch 12.04
>
>         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)