Hi Jacopo
I've attached the patch
I haven't really looked at Leon's solution but I believe it's a different
approach.
Regards
Scott
On 22/05/07, Jacopo Cappellato <[EMAIL PROTECTED]> wrote:
Scott,
do you have a patch for this? I'm sorry but I can't find it.
Is the solution proposed by Leon different from your?
https://issues.apache.org/jira/browse/OFBIZ-1007
Jacopo
David E Jones wrote:
>
> I think it is good for now. The result will be more complaints about
> digits existing that shouldn't be there, which is great because that
> will expose the places where rounding should be done but isn't being
done.
>
> -David
>
>
>
> Jacopo Cappellato wrote:
>> David, Scott, all,
>>
>> is it ok to commit Scott's patch only in the trunk (not in the release
>> branch) as a temporary change to help us to figure out all the areas
>> where rounding needs to be fixes?
>>
>> Jacopo
>>
>> David E Jones wrote:
>>>
>>> It's a good point... we shouldn't need to round in the UI because
>>> what is underneath should have things rounded in advance.
>>>
>>> What do others think? Should we display full values everywhere, or
>>> selectively, or perhaps just in the Entity Data Maint stuff in
>>> WebTools, or something else?
>>>
>>> -David
>>>
>>>
>>> Scott Gray wrote:
>>>> Hi David
>>>>
>>>> The reason I wanted to do get rid of the ui performing any rounding
>>>> was that
>>>> I couldn't see why it was necessary when it is the responsibility of
>>>> the
>>>> logic supplying the numbers to make sure they are correct in the
first
>>>> place.
>>>>
>>>> If for some strange reason an order total is being worked out to
>>>> $97.3459 do
>>>> we want the ui to hide that from us?
>>>>
>>>> Initially I created a patch to allow us to specify the decimal
>>>> places using
>>>> ofbizCurrencyTransform in ftl's (
>>>> https://issues.apache.org/jira/browse/OFBIZ-939) but then I started
>>>> wondering why we need the ui to do any rounding for us.
>>>>
>>>> Regards
>>>> Scott
>>>>
>>>> On 09/05/07, David E Jones <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>
>>>>> Do we really want to commit this patch, and have OFBiz display all
>>>>> currency values with 10 decimal figures?
>>>>>
>>>>> My opinion is: definitely no.
>>>>>
>>>>> If we want to display more decimal digits in certain places we
>>>>> should add
>>>>> an optional attribute/parameter to the transform and then specify it
>>>>> explicitly in certain spots, like 3 or 4 or based on db data number
of
>>>>> digits.
>>>>>
>>>>> -David
>>>>>
>>>>>
>>>>> Scott Gray wrote:
>>>>> > I've committed the changes in rev. 535415
>>>>> >
>>>>> > As I mentioned above, someone with framework commit privileges
>>>>> needs to
>>>>> > look at the rounding of displayed currency. I've attached a
>>>>> patch with
>>>>> > the changes I think are needed. If it doesn't see any action in
the
>>>>> > short term I'll throw it in the jira.
>>>>> >
>>>>> > Regards
>>>>> > Scott
>>>>> >
>>>>> > On 05/05/07, *Scott Gray* <[EMAIL PROTECTED]
>>>>> <mailto:[EMAIL PROTECTED]>>
>>>>> > wrote:
>>>>> >
>>>>> > I had planned on working the patch in this weekend, I just
>>>>> need to
>>>>> > clean it up a bit.
>>>>> >
>>>>> > One thing I need a framework guy to look at is the rounding
>>>>> currency
>>>>> > formatting in widgets and the freemarker transform, I think
>>>>> we need
>>>>> > to set the default to something like 10 decimal places
>>>>> instead of
>>>>> > the currency's default. That way any rounding problems aren't
>>>>> > hidden by the display code and it also allows us to display
tax
>>>>> > items to 3 decimal places (or whatever the
>>>>> arithmetic.properties has
>>>>> > set).
>>>>> >
>>>>> > Also, salestax.calc.decimals is a bit of misnomer considering
>>>>> the
>>>>> > best we can do when storing intermediate tax is
>>>>> currency-precise at
>>>>> > 3 decimal places.
>>>>> >
>>>>> > And yes I did get paid (tax free, for the moment at least) :-)
>>>>> >
>>>>> > Regards
>>>>> > Scott
>>>>> >
>>>>> >
>>>>> > On 05/05/07, *Jacopo Cappellato* < [EMAIL PROTECTED]
>>>>> > <mailto:[EMAIL PROTECTED]>> wrote:
>>>>> >
>>>>> > Yes,
>>>>> >
>>>>> > and, Scott, did you get your 500$ ? :-)
>>>>> >
>>>>> > Jacopo
>>>>> >
>>>>> > David E Jones wrote:
>>>>> > >
>>>>> > > Scott,
>>>>> > >
>>>>> > > Did this ever make it into OFBiz? I only reviewed it
>>>>> briefly,
>>>>> > but if it
>>>>> > > is fixing this problem then it would be great to have
>>>>> it in
>>>>> > the ofbiz
>>>>> > > trunk.
>>>>> > >
>>>>> > > -David
>>>>> > >
>>>>> >
>>>>> >
>>>>> >
>>>>>
>>>>
>>
Index: framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
===================================================================
--- framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (revision 535400)
+++ framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (working copy)
@@ -1742,7 +1742,7 @@
}
try {
Double parsedRetVal = (Double) ObjectType.simpleTypeConvert(retVal, "Double", null, locale, false);
- retVal = UtilFormatOut.formatCurrency(parsedRetVal, isoCode, locale);
+ retVal = UtilFormatOut.formatCurrency(parsedRetVal, isoCode, locale, 10);
} catch (GeneralException e) {
String errMsg = "Error formatting currency value [" + retVal + "]: " + e.toString();
Debug.logError(e, errMsg, module);
Index: framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
===================================================================
--- framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java (revision 535400)
+++ framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java (working copy)
@@ -115,12 +115,12 @@
BeanModel req = (BeanModel) env.getVariable("request");
if (req != null) {
HttpServletRequest request = (HttpServletRequest) req.getWrappedObject();
- out.write(UtilFormatOut.formatCurrency(amount, isoCode, UtilHttp.getLocale(request)));
+ out.write(UtilFormatOut.formatCurrency(amount, isoCode, UtilHttp.getLocale(request), 10));
} else {
- out.write(UtilFormatOut.formatCurrency(amount, isoCode, env.getLocale()));
+ out.write(UtilFormatOut.formatCurrency(amount, isoCode, env.getLocale(), 10));
}
} else {
- out.write(UtilFormatOut.formatCurrency(amount.doubleValue(), isoCode, new Locale(locale)));
+ out.write(UtilFormatOut.formatCurrency(amount.doubleValue(), isoCode, new Locale(locale), 10));
}
} catch (TemplateModelException e) {
throw new IOException(e.getMessage());