Author: erwan
Date: Mon Apr 26 08:51:25 2010 New Revision: 937964 URL: http://svn.apache.org/viewvc?rev=937964&view=rev Log: Adding a new display type "accouting-number", which allows to display negatives in parentheses Modified: ofbiz/trunk/applications/accounting/config/arithmetic.properties ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java ofbiz/trunk/framework/widget/dtd/widget-form.xsd ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Modified: ofbiz/trunk/applications/accounting/config/arithmetic.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/arithmetic.properties?rev=937964&r1=937963&r2=937964&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/config/arithmetic.properties (original) +++ ofbiz/trunk/applications/accounting/config/arithmetic.properties Mon Apr 26 08:51:25 2010 @@ -49,3 +49,6 @@ finaccount.roundingSimpleMethod = HalfUp salestax.calc.decimals = 3 salestax.final.decimals = 2 salestax.rounding = ROUND_HALF_UP + +# the default accounting-number format for negatives in parentheses +accounting-number.format = #,##0.00;(#,##0.00) Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java?rev=937964&r1=937963&r2=937964&view=diff ============================================================================== --- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java (original) +++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java Mon Apr 26 08:51:25 2010 @@ -109,6 +109,21 @@ public class UtilFormatOut { return formatCurrency(price.doubleValue(), isoCode, locale, maximumFractionDigits); } + /** Format a decimal number to the pattern given + * @param number The price double to be formatted + * @param pattern pattern apply to format number + * @param locale The Locale used to format the number + * @return A String with the formatted price + */ + public static String formatDecimalNumber(double number, String pattern, Locale locale) { + com.ibm.icu.text.NumberFormat nf = com.ibm.icu.text.NumberFormat.getNumberInstance(locale); + String nbParsing = ""; + ((com.ibm.icu.text.DecimalFormat)nf).applyPattern( pattern ); + ((com.ibm.icu.text.DecimalFormat)nf).toPattern(); + nbParsing = nf.format(number); + return nbParsing; + } + /** Formats a double into a properly formatted currency string based on isoCode and Locale * @param price The price double to be formatted * @param isoCode the currency ISO code Modified: ofbiz/trunk/framework/widget/dtd/widget-form.xsd URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/dtd/widget-form.xsd?rev=937964&r1=937963&r2=937964&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/dtd/widget-form.xsd (original) +++ ofbiz/trunk/framework/widget/dtd/widget-form.xsd Mon Apr 26 08:51:25 2010 @@ -667,6 +667,9 @@ under the License. <xs:enumeration value="image"> <xs:annotation><xs:documentation>Display the image specified in image-location</xs:documentation></xs:annotation> </xs:enumeration> + <xs:enumeration value="accounting-number"> + <xs:annotation><xs:documentation>Display negatives in parentheses</xs:documentation></xs:annotation> + </xs:enumeration> </xs:restriction> </xs:simpleType> </xs:attribute> Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=937964&r1=937963&r2=937964&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Mon Apr 26 08:51:25 2010 @@ -2131,6 +2131,20 @@ public class ModelFormField { retVal = retVal.substring(0,10); } else if ("date-time".equals(this.type) && retVal.length() > 16) { retVal = retVal.substring(0,16); + } else if ("accounting-number".equals(this.type)) { + Locale locale = (Locale) context.get("locale"); + if (locale == null) { + locale = Locale.getDefault(); + } + try { + Double parsedRetVal = (Double) ObjectType.simpleTypeConvert(retVal, "Double", null, locale, false); + String template = UtilProperties.getPropertyValue("arithmetic", "accounting-number.format", "#,##0.00;(#,##0.00)"); + retVal = UtilFormatOut.formatDecimalNumber(parsedRetVal.doubleValue(), template, locale); + } catch (GeneralException e) { + String errMsg = "Error formatting number [" + retVal + "]: " + e.toString(); + Debug.logError(e, errMsg, module); + throw new IllegalArgumentException(errMsg); + } } return retVal; } |
Free forum by Nabble | Edit this page |