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

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

I reverted in
trunk r1650583 
R14.12 r1650584
R13.07 r1650585
R12.04 r1650586




> 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
>             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)

Reply via email to