svn commit: r721986 [13/13] - in /ofbiz/branches/typecheckcleanup200810: applications/accounting/script/org/ofbiz/accounting/olap/ applications/order/entitydef/ applications/order/script/org/ofbiz/order/order/ applications/order/script/org/ofbiz/order/...

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

svn commit: r721986 [13/13] - in /ofbiz/branches/typecheckcleanup200810: applications/accounting/script/org/ofbiz/accounting/olap/ applications/order/entitydef/ applications/order/script/org/ofbiz/order/order/ applications/order/script/org/ofbiz/order/...

lektran
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/widget/catalog/ProductScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/widget/catalog/ProductScreens.xml?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/widget/catalog/ProductScreens.xml (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/widget/catalog/ProductScreens.xml Sun Nov 30 22:51:11 2008
@@ -1154,7 +1154,7 @@
                 <property-to-field field="defaultCurrencyUomId" resource="general" property="currency.uom.id.default" default="USD" />
 
                 <set field="productId" from-field="parameters.productId"/>
-                <set field="minimumOrderQuantity" from-field="parameters.minimumOrderQuantity" type="Double"/>
+                <set field="minimumOrderQuantity" from-field="parameters.minimumOrderQuantity" type="BigDecimal"/>
 
                 <set field="orderBy" from-field="parameters.orderBy" default-value="partyId"/>
                 <entity-one entity-name="Product" value-name="product"/>

Modified: ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilFormatOut.java Sun Nov 30 22:51:11 2008
@@ -18,6 +18,7 @@
  */
 package org.ofbiz.base.util;
 
+import java.math.BigDecimal;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.ParseException;
@@ -75,7 +76,7 @@
      * @param maximumFractionDigits The maximum number of fraction digits used; if set to -1 than the default value for the locale is used
      * @return A String with the formatted price
      */
-    public static String formatCurrency(double price, String isoCode, Locale locale, int maximumFractionDigits) {
+    public static String formatCurrency(BigDecimal price, String isoCode, Locale locale, int maximumFractionDigits) {
         //Debug.logInfo("formatting currency: " + price + ", isoCode: " + isoCode + ", locale: " + locale, module);
         com.ibm.icu.text.NumberFormat nf = com.ibm.icu.text.NumberFormat.getCurrencyInstance(locale);
         if (isoCode != null && isoCode.length() > 1) {
@@ -95,31 +96,10 @@
      * @param locale The Locale used to format the number
      * @return A String with the formatted price
      */
-    public static String formatCurrency(double price, String isoCode, Locale locale) {
+    public static String formatCurrency(BigDecimal price, String isoCode, Locale locale) {
         return formatCurrency(price, isoCode, locale, -1);
     }
 
-    /** 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
-     * @param locale The Locale used to format the number
-     * @param maximumFractionDigits The maximum number of fraction digits used; if set to -1 than the default value for the locale is used
-     * @return A String with the formatted price
-     */
-    public static String formatCurrency(Double price, String isoCode, Locale locale, int maximumFractionDigits) {
-        return formatCurrency(price.doubleValue(), isoCode, locale, maximumFractionDigits);
-    }
-
-    /** 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
-     * @param locale The Locale used to format the number
-     * @return A String with the formatted price
-     */
-    public static String formatCurrency(Double price, String isoCode, Locale locale) {
-        return formatCurrency(price.doubleValue(), isoCode, locale, -1);
-    }
-
     /** Formats a Double into a properly spelled out number string based on Locale
      * @param amount The amount Double to be formatted
      * @param locale The Locale used to format the number

Modified: ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilParse.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilParse.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilParse.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/UtilParse.java Sun Nov 30 22:51:11 2008
@@ -18,6 +18,8 @@
  *******************************************************************************/
 package org.ofbiz.base.util;
 
+import java.math.BigDecimal;
+
 /**
  * <p/>
  * <p>
@@ -25,25 +27,24 @@
  * </p>
  * <br/>
  * <br/>
- * Created on Oct 2, 2004 by dustin
  */
 public class UtilParse {
 
     /**
      * return nulls for empty strings, as the entity engine can deal with nulls. This will provide blanks
      * in fields where doubles display. Blank meaning null, vs. 0 which means 0
-     * @param doubleString
+     * @param bigDecimalString
      * @return
      */
-    public static Double parseDoubleForEntity(String doubleString) throws NumberFormatException {
-        if (doubleString == null) {
+    public static BigDecimal parseBigDecimalForEntity(String bigDecimalString) throws NumberFormatException {
+        if (bigDecimalString == null) {
             return null;
         }
-        doubleString = doubleString.trim();
-        doubleString = doubleString.replaceAll(",", "");
-        if (doubleString.length() < 1) {
+        bigDecimalString = bigDecimalString.trim();
+        bigDecimalString = bigDecimalString.replaceAll(",", "");
+        if (bigDecimalString.length() < 1) {
             return null;
         }
-        return Double.valueOf(doubleString);
+        return new BigDecimal(bigDecimalString);
     }
 }

Modified: ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/base/src/org/ofbiz/base/util/string/FlexibleStringExpander.java Sun Nov 30 22:51:11 2008
@@ -19,6 +19,7 @@
 package org.ofbiz.base.util.string;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -317,7 +318,7 @@
             Object obj = fma.get(context, locale);
             if (obj != null) {
                 String currencyCode = this.codeExpr.expandString(context, timeZone, locale);
-                buffer.append(UtilFormatOut.formatCurrency(Double.valueOf(obj.toString()), currencyCode, locale));
+                buffer.append(UtilFormatOut.formatCurrency(new BigDecimal(obj.toString()), currencyCode, locale));
             }
         }
     }

Modified: ofbiz/branches/typecheckcleanup200810/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/entity/src/org/ofbiz/entity/condition/EntityExpr.java Sun Nov 30 22:51:11 2008
@@ -220,7 +220,7 @@
     }
     
     public void checkRhsType(ModelEntity modelEntity, GenericDelegator delegator) {
-        if (this.rhs == null || modelEntity == null) return;
+        if (this.rhs == null || this.rhs == GenericEntity.NULL_FIELD || modelEntity == null) return;
 
         Object value = this.rhs;
         if (this.rhs instanceof EntityFunction) {

Modified: ofbiz/branches/typecheckcleanup200810/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/webapp/src/org/ofbiz/webapp/ftl/OfbizCurrencyTransform.java Sun Nov 30 22:51:11 2008
@@ -20,6 +20,7 @@
 
 import java.io.IOException;
 import java.io.Writer;
+import java.math.BigDecimal;
 import java.util.Locale;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
@@ -63,7 +64,7 @@
         return result;
     }
 
-    private static Double getAmount(Map args, String key) {
+    private static BigDecimal getAmount(Map args, String key) {
         if (args.containsKey(key)) {
             Object o = args.get(key);
 
@@ -73,21 +74,13 @@
             }
             if (Debug.verboseOn()) Debug.logVerbose("Amount Object : " + o.getClass().getName(), module);
 
-            if (o instanceof NumberModel) {
-                NumberModel s = (NumberModel) o;
-                return s.getAsNumber().doubleValue();
-            }
-            if (o instanceof SimpleNumber) {
-                SimpleNumber s = (SimpleNumber) o;
-                return s.getAsNumber().doubleValue();
-            }
             if (o instanceof SimpleScalar) {
                 SimpleScalar s = (SimpleScalar) o;
-                return Double.valueOf( s.getAsString() );
+                return new BigDecimal(s.getAsString());
             }
-            return Double.valueOf( o.toString() );
+            return new BigDecimal(o.toString());
         }
-        return 0.00;
+        return BigDecimal.ZERO;
     }
 
     private static Integer getInteger(Map args, String key) {
@@ -120,7 +113,7 @@
     public Writer getWriter(final Writer out, Map args) {
         final StringBuilder buf = new StringBuilder();
 
-        final Double amount = OfbizCurrencyTransform.getAmount(args, "amount");
+        final BigDecimal amount = OfbizCurrencyTransform.getAmount(args, "amount");
         final String isoCode = OfbizCurrencyTransform.getArg(args, "isoCode");
         final String locale = OfbizCurrencyTransform.getArg(args, "locale");
 
@@ -154,7 +147,7 @@
                             out.write(UtilFormatOut.formatCurrency(amount, isoCode, env.getLocale(), rounding)); // we set the max to 10 digits as an hack to not round numbers in the ui
                         }
                     } else {
-                        out.write(UtilFormatOut.formatCurrency(amount.doubleValue(), isoCode, new Locale(locale), rounding)); // we set the max to 10 digits as an hack to not round numbers in the ui
+                        out.write(UtilFormatOut.formatCurrency(amount, isoCode, new Locale(locale), rounding)); // we set the max to 10 digits as an hack to not round numbers in the ui
                     }
                 } catch (TemplateModelException e) {
                     throw new IOException(e.getMessage());

Modified: ofbiz/branches/typecheckcleanup200810/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/branches/typecheckcleanup200810/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Sun Nov 30 22:51:11 2008
@@ -2145,9 +2145,9 @@
                     isoCode = this.currency.expandString(context);
                 }
                 try {
-                    Double parsedRetVal = (Double) ObjectType.simpleTypeConvert(retVal, "Double", null, (TimeZone) context.get("timeZone"), (Locale) context.get("locale"), true);
+                 BigDecimal parsedRetVal = new BigDecimal(retVal);
                     retVal = UtilFormatOut.formatCurrency(parsedRetVal, isoCode, locale, 10); // we set the max to 10 digits as an hack to not round numbers in the ui
-                } catch (GeneralException e) {
+                } catch (NumberFormatException e) {
                     String errMsg = "Error formatting currency value [" + retVal + "]: " + e.toString();
                     Debug.logError(e, errMsg, module);
                     throw new IllegalArgumentException(errMsg);

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/ebay/src/org/ofbiz/ebay/ImportOrdersFromEbay.java Sun Nov 30 22:51:11 2008
@@ -23,6 +23,7 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.math.BigDecimal;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.sql.Timestamp;
@@ -740,10 +741,10 @@
             }
             
             String amountStr = (String) parameters.get("amountPaid");
-            Double amountPaid = new Double(0);
+            BigDecimal amountPaid = BigDecimal.ZERO;
             
             if (UtilValidate.isNotEmpty(amountStr)) {
-                amountPaid = new Double(amountStr);
+                amountPaid = new BigDecimal(amountStr);
             }
             
             // add the payment EXT_BAY for the paid amount
@@ -775,8 +776,8 @@
                 return ServiceUtil.returnFailure(UtilProperties.getMessage(resource, "ordersImportFromEbay.paymentIsStillNotReceived", locale));
             }
             
-            Double unitPrice = new Double((String) parameters.get("transactionPrice"));
-            double quantity = new Double((String) parameters.get("quantityPurchased")).doubleValue();
+            BigDecimal unitPrice = new BigDecimal((String) parameters.get("transactionPrice"));
+            BigDecimal quantity = new BigDecimal((String) parameters.get("quantityPurchased"));
             cart.addItemToEnd(productId, null, quantity, unitPrice, null, null, null, "PRODUCT_ORDER_ITEM", dispatcher, Boolean.FALSE, Boolean.FALSE);
           
             // set partyId from

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/mypage/webapp/mypage/WEB-INF/actions/ConvertInvoiceCurrency.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/mypage/webapp/mypage/WEB-INF/actions/ConvertInvoiceCurrency.groovy?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/mypage/webapp/mypage/WEB-INF/actions/ConvertInvoiceCurrency.groovy (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/mypage/webapp/mypage/WEB-INF/actions/ConvertInvoiceCurrency.groovy Sun Nov 30 22:51:11 2008
@@ -46,11 +46,11 @@
                                                asOfDate : invoiceDate]);
     
     if (result.convertedValue != null) {
-        context.total = (org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceTotalBd(delegator,invoiceId)).multiply(new BigDecimal(result.convertedValue.toString())).setScale(decimals, rounding);
+        context.total = (org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceTotal(delegator,invoiceId)).multiply(new BigDecimal(result.convertedValue.toString())).setScale(decimals, rounding);
         context.amountToApply = org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceNotApplied(delegator,invoiceId).multiply(new BigDecimal(result.convertedValue.toString())).setScale(decimals, rounding);
         context.currencyUomId = otherCurrency;
     }
   } else {
-      context.total = (org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceTotalBd(delegator,invoiceId));
+      context.total = (org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceTotal(delegator,invoiceId));
       context.amountToApply = org.ofbiz.accounting.invoice.InvoiceWorker.getInvoiceNotApplied(delegator,invoiceId);
   }

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java Sun Nov 30 22:51:11 2008
@@ -20,6 +20,7 @@
 
 import java.io.PrintWriter;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.Iterator;
@@ -207,26 +208,26 @@
         return this.orderId;
     }
 
-    public double getTaxTotal() {
+    public BigDecimal getTaxTotal() {
         return cart.getTotalSalesTax();
     }
 
-    public double getGrandTotal() {
-        return UtilFormatOut.formatPriceNumber(cart.getGrandTotal()).doubleValue();
+    public BigDecimal getGrandTotal() {
+        return cart.getGrandTotal();
     }
 
     public int getNumberOfPayments() {
         return cart.selectedPayments();
     }
 
-    public double getPaymentTotal() {
-        return UtilFormatOut.formatPriceNumber(cart.getPaymentTotal()).doubleValue();
+    public BigDecimal getPaymentTotal() {
+        return cart.getPaymentTotal();
     }
 
-    public double getTotalDue() {
-        double grandTotal = this.getGrandTotal();
-        double paymentAmt = this.getPaymentTotal();
-        return (grandTotal - paymentAmt);
+    public BigDecimal getTotalDue() {
+     BigDecimal grandTotal = this.getGrandTotal();
+     BigDecimal paymentAmt = this.getPaymentTotal();
+        return grandTotal.subtract(paymentAmt);
     }
 
     public int size() {
@@ -238,24 +239,24 @@
         Map itemInfo = new HashMap();
         itemInfo.put("productId", item.getProductId());
         itemInfo.put("description", item.getDescription());
-        itemInfo.put("quantity", UtilFormatOut.formatQuantity(item.getQuantity()));
-        itemInfo.put("subtotal", UtilFormatOut.formatPrice(item.getItemSubTotal()));
+        itemInfo.put("quantity", UtilFormatOut.formatQuantity(item.getQuantity().doubleValue()));
+        itemInfo.put("subtotal", UtilFormatOut.formatPrice(item.getItemSubTotal().doubleValue()));
         itemInfo.put("isTaxable", item.taxApplies() ? "T" : " ");
         
         itemInfo.put("discount", "");
         itemInfo.put("adjustments", "");
-        if (item.getOtherAdjustments() != 0) {
+        if (item.getOtherAdjustments().compareTo(BigDecimal.ZERO) != 0) {
             itemInfo.put("itemDiscount", UtilFormatOut.padString(
                     UtilProperties.getMessage(PosTransaction.resource,"(ItemDiscount)",defaultLocale), Receipt.pridLength[0] + 1, true, ' '));                    
-            itemInfo.put("adjustments", UtilFormatOut.formatPrice(item.getOtherAdjustments()));
+            itemInfo.put("adjustments", UtilFormatOut.formatPrice(item.getOtherAdjustments().doubleValue()));
         }
         
         if (isAggregatedItem(item.getProductId())){
             ProductConfigWrapper pcw = null;
             pcw = item.getConfigWrapper();
-            itemInfo.put("basePrice", UtilFormatOut.formatPrice(pcw.getDefaultPrice()));
+            itemInfo.put("basePrice", UtilFormatOut.formatPrice(pcw.getDefaultPrice().doubleValue()));
         } else {
-            itemInfo.put("basePrice", UtilFormatOut.formatPrice(item.getBasePrice()));
+            itemInfo.put("basePrice", UtilFormatOut.formatPrice(item.getBasePrice().doubleValue()));
         }
         return itemInfo;
     }
@@ -278,8 +279,8 @@
                     itemInfo.put("productId", "");
                     itemInfo.put("sku", "");
                     itemInfo.put("configDescription", configoption.getDescription());
-                    itemInfo.put("configQuantity", UtilFormatOut.formatQuantity(item.getQuantity()));
-                    itemInfo.put("configBasePrice", UtilFormatOut.formatPrice(configoption.getOffsetPrice()));
+                    itemInfo.put("configQuantity", UtilFormatOut.formatQuantity(item.getQuantity().doubleValue()));
+                    itemInfo.put("configBasePrice", UtilFormatOut.formatPrice(configoption.getOffsetPrice().doubleValue()));
                     //itemInfo.put("isTaxable", item.taxApplies() ? "T" : " ");
                     list.add(itemInfo);
                 }
@@ -341,7 +342,7 @@
         if ("PaymentMethodType".equals(infValue.getEntityName())) {
             payInfo.put("description", infValue.getString("description"));
             payInfo.put("payInfo", infValue.getString("description"));
-            payInfo.put("amount", UtilFormatOut.formatPrice(inf.amount));
+            payInfo.put("amount", UtilFormatOut.formatPrice(inf.amount.doubleValue()));
         } else {
             String paymentMethodTypeId = infValue.getString("paymentMethodTypeId");
             GenericValue pmt = null;
@@ -352,7 +353,7 @@
             }
             if (pmt != null) {
                 payInfo.put("description", pmt.getString("description"));
-                payInfo.put("amount", UtilFormatOut.formatPrice(inf.amount));
+                payInfo.put("amount", UtilFormatOut.formatPrice(inf.amount.doubleValue()));
             }
 
             if ("CREDIT_CARD".equals(paymentMethodTypeId)) {
@@ -388,14 +389,14 @@
         return payInfo;
     }
 
-    public double getItemQuantity(String productId) {
+    public BigDecimal getItemQuantity(String productId) {
         trace("request item quantity", productId);
-        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
         if (item != null) {
             return item.getQuantity();
         } else {
             trace("item not found", productId);
-            return 0;
+            return BigDecimal.ZERO;
         }
     }
 
@@ -458,7 +459,7 @@
         return pcw;
     }
     
-    public void addItem(String productId, double quantity) throws CartItemModifyException, ItemNotFoundException {
+    public void addItem(String productId, BigDecimal quantity) throws CartItemModifyException, ItemNotFoundException {
         trace("add item", productId + "/" + quantity);
         try {
             GenericDelegator delegator = cart.getDelegator();
@@ -491,7 +492,7 @@
         throws ItemNotFoundException, CartItemModifyException {
         trace("add item with ProductConfigWrapper", productId );
         try {
-            cart.addOrIncreaseItem(productId, null, 1, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
+            cart.addOrIncreaseItem(productId, null, BigDecimal.ONE, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
         } catch (ItemNotFoundException e) {
             trace("item not found", e);
             throw e;
@@ -510,7 +511,7 @@
         try {  
             int cartIndexInt = Integer.parseInt(cartIndex);
             ShoppingCartItem cartItem = cart.findCartItem(cartIndexInt);
-            double quantity = cartItem.getQuantity();
+            BigDecimal quantity = cartItem.getQuantity();
             cart.removeCartItem(cartIndexInt, session.getDispatcher());
             cart.addOrIncreaseItem(productId, null, quantity, null, null, null, null, null, null, null, null, pcw, null, null, null, session.getDispatcher());
         } catch (CartItemModifyException e) {
@@ -527,9 +528,9 @@
         return;
     }
     
-    public void modifyQty(String productId, double quantity) throws CartItemModifyException {
+    public void modifyQty(String productId, BigDecimal quantity) throws CartItemModifyException {
         trace("modify item quantity", productId + "/" + quantity);
-        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
         if (item != null) {
             try {
                 item.setQuantity(quantity, session.getDispatcher(), cart, true);
@@ -543,9 +544,9 @@
         }
     }
 
-    public void modifyPrice(String productId, double price) {
+    public void modifyPrice(String productId, BigDecimal price) {
         trace("modify item price", productId + "/" + price);
-        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
         if (item != null) {
             item.setBasePrice(price);
         } else {
@@ -564,7 +565,7 @@
 
         if (productId != null) {
             trace("add item adjustment");
-            ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+            ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
             Integer itemAdj = (Integer) skuDiscounts.get(productId);
             if (itemAdj != null) {
                 item.removeAdjustment(itemAdj.intValue());
@@ -589,7 +590,7 @@
             Iterator i = skuDiscounts.keySet().iterator();
             while (i.hasNext()) {
                 String productId = (String) i.next();
-                ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+                ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
                 Integer itemAdj = (Integer) skuDiscounts.remove(productId);
                 if (itemAdj != null) {
                     item.removeAdjustment(itemAdj.intValue());
@@ -598,13 +599,13 @@
         }
     }
 
-    public double GetTotalDiscount() {
+    public BigDecimal GetTotalDiscount() {
         return cart.getOrderOtherAdjustmentTotal();
     }
     
     public void voidItem(String productId) throws CartItemModifyException {
         trace("void item", productId);
-        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, 0.00);
+        ShoppingCartItem item = cart.findCartItem(productId, null, null, null, BigDecimal.ZERO);
         if (item != null) {
             try {
                 int itemIdx = cart.getItemIndex(item);
@@ -702,17 +703,17 @@
         }
     }
 
-    public double addPayment(String id, double amount) {
+    public BigDecimal addPayment(String id, BigDecimal amount) {
         return this.addPayment(id, amount, null, null);
     }
 
-    public double addPayment(String id, double amount, String refNum, String authCode) {
+    public BigDecimal addPayment(String id, BigDecimal amount, String refNum, String authCode) {
         trace("added payment", id + "/" + amount);
         if ("CASH".equals(id)) {
             // clear cash payments first; so there is only one
             cart.clearPayment(id);
         }
-        cart.addPaymentAmount(id, new Double(amount), refNum, authCode, true, true, false);
+        cart.addPaymentAmount(id, amount, refNum, authCode, true, true, false);
         return this.getTotalDue();
     }
 
@@ -782,11 +783,11 @@
         currentTx = null;
     }
 
-    public double processSale(Output output) throws GeneralException {
+    public BigDecimal processSale(Output output) throws GeneralException {
         trace("process sale");
-        double grandTotal = this.getGrandTotal();
-        double paymentAmt = this.getPaymentTotal();
-        if (grandTotal > paymentAmt) {
+        BigDecimal grandTotal = this.getGrandTotal();
+        BigDecimal paymentAmt = this.getPaymentTotal();
+        if (grandTotal.compareTo(paymentAmt) > 0) {
             throw new IllegalStateException();
         }
 
@@ -826,10 +827,10 @@
         }
 
         // get the change due
-        double change = (grandTotal - paymentAmt);
+        BigDecimal change = grandTotal.subtract(paymentAmt);
 
         // notify the change due
-        output.print(UtilProperties.getMessage(PosTransaction.resource,"CHANGE",defaultLocale) + " " + UtilFormatOut.formatPrice(this.getTotalDue() * -1));
+        output.print(UtilProperties.getMessage(PosTransaction.resource,"CHANGE",defaultLocale) + " " + UtilFormatOut.formatPrice(this.getTotalDue().negate().doubleValue()));
 
         // threaded drawer/receipt printing
         final PosTransaction currentTrans = this;
@@ -896,16 +897,16 @@
             Iterator i = cart.iterator();
             while (i.hasNext()) {
                 ShoppingCartItem item = (ShoppingCartItem) i.next();
-                double quantity = item.getQuantity();
-                double unitPrice = item.getBasePrice();
-                double subTotal = unitPrice * quantity;
-                double adjustment = item.getOtherAdjustments();
+                BigDecimal quantity = item.getQuantity();
+                BigDecimal unitPrice = item.getBasePrice();
+                BigDecimal subTotal = unitPrice.multiply(quantity);
+                BigDecimal adjustment = item.getOtherAdjustments();
 
                 XModel line = Journal.appendNode(model, "tr", ""+cart.getItemIndex(item), "");
                 Journal.appendNode(line, "td", "sku", item.getProductId());
                 Journal.appendNode(line, "td", "desc", item.getName());
-                Journal.appendNode(line, "td", "qty", UtilFormatOut.formatQuantity(quantity));
-                Journal.appendNode(line, "td", "price", UtilFormatOut.formatPrice(subTotal));
+                Journal.appendNode(line, "td", "qty", UtilFormatOut.formatQuantity(quantity.doubleValue()));
+                Journal.appendNode(line, "td", "price", UtilFormatOut.formatPrice(subTotal.doubleValue()));
                 Journal.appendNode(line, "td", "index", Integer.toString(cart.getItemIndex(item)));
 
                 if (this.isAggregatedItem(item.getProductId())){
@@ -923,19 +924,19 @@
                             Journal.appendNode(option, "td", "sku", "");
                             Journal.appendNode(option, "td", "desc", configoption.getDescription());
                             Journal.appendNode(option, "td", "qty", "");
-                            Journal.appendNode(option, "td", "price", UtilFormatOut.formatPrice(configoption.getPrice()));
+                            Journal.appendNode(option, "td", "price", UtilFormatOut.formatPrice(configoption.getPrice().doubleValue()));
                             Journal.appendNode(option, "td", "index", Integer.toString(cart.getItemIndex(item)));
                         }
                     }
                 }
                   
-                if (adjustment != 0) {
+                if (adjustment.compareTo(BigDecimal.ZERO) != 0) {
                     // append the promo info
                     XModel promo = Journal.appendNode(model, "tr", "itemadjustment", "");
                     Journal.appendNode(promo, "td", "sku", "");
                     Journal.appendNode(promo, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"(ItemDiscount)",defaultLocale));
                     Journal.appendNode(promo, "td", "qty", "");
-                    Journal.appendNode(promo, "td", "price", UtilFormatOut.formatPrice(adjustment));
+                    Journal.appendNode(promo, "td", "price", UtilFormatOut.formatPrice(adjustment.doubleValue()));
                 }
             }
         }
@@ -943,17 +944,17 @@
 
     public void appendTotalDataModel(XModel model) {
         if (cart != null) {
-            double taxAmount = cart.getTotalSalesTax();
-            double total = cart.getGrandTotal();
+         BigDecimal taxAmount = cart.getTotalSalesTax();
+         BigDecimal total = cart.getGrandTotal();
             List adjustments = cart.getAdjustments();            
-            Double itemsAdjustmentsAmount = 0.0;
+            BigDecimal itemsAdjustmentsAmount = BigDecimal.ZERO;
 
             Iterator i = cart.iterator();
             while (i.hasNext()) {
                 ShoppingCartItem item = (ShoppingCartItem) i.next();
-                double adjustment = item.getOtherAdjustments();
-                if (adjustment != 0) {
-                    itemsAdjustmentsAmount =+ adjustment;
+                BigDecimal adjustment = item.getOtherAdjustments();
+                if (adjustment.compareTo(BigDecimal.ZERO) != 0) {
+                    itemsAdjustmentsAmount = itemsAdjustmentsAmount.add(adjustment);
                 }
             }
             
@@ -967,20 +968,20 @@
                 iter = adjustments.iterator();
                 while(iter.hasNext()){
                     GenericValue orderAdjustment = (GenericValue) iter.next();
-                    Double amount = orderAdjustment.getDouble("amount");
-                    Double sourcePercentage = orderAdjustment.getDouble("sourcePercentage");
+                    BigDecimal amount = orderAdjustment.getBigDecimal("amount");
+                    BigDecimal sourcePercentage = orderAdjustment.getBigDecimal("sourcePercentage");
                     XModel adjustmentLine = Journal.appendNode(model, "tr", "adjustment", "");
                     Journal.appendNode(adjustmentLine, "td", "sku", "");
                     Journal.appendNode(adjustmentLine, "td", "desc",
                             UtilProperties.getMessage(PosTransaction.resource, "(SalesDiscount)",defaultLocale));
                     if (UtilValidate.isNotEmpty(amount)) {
                         Journal.appendNode(adjustmentLine, "td", "qty", "");
-                        Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(amount));
+                        Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(amount.doubleValue()));
                     } else if (UtilValidate.isNotEmpty(sourcePercentage)) {
-                        double percentage = - sourcePercentage.doubleValue()/100; // sourcePercentage is negative and must be show as a positive value (it's a discount not an amount)
-                        Journal.appendNode(adjustmentLine, "td", "qty", UtilFormatOut.formatPercentage(percentage));
-                        amount = new Double((cart.getItemTotal() + itemsAdjustmentsAmount) * percentage); // itemsAdjustmentsAmount is negative
-                        Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(- amount)); // amount must be shown as a negative value
+                     BigDecimal percentage = sourcePercentage.movePointLeft(2).negate(); // sourcePercentage is negative and must be show as a positive value (it's a discount not an amount)
+                        Journal.appendNode(adjustmentLine, "td", "qty", UtilFormatOut.formatPercentage(percentage.doubleValue()));
+                        amount = cart.getItemTotal().add(itemsAdjustmentsAmount).multiply(percentage); // itemsAdjustmentsAmount is negative
+                        Journal.appendNode(adjustmentLine, "td", "price", UtilFormatOut.formatPrice(amount.negate().doubleValue())); // amount must be shown as a negative value
                     }                        
                     Journal.appendNode(adjustmentLine, "td", "index", "-1");
                 }    
@@ -991,14 +992,14 @@
 
             Journal.appendNode(taxLine, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"Sales_Tax",defaultLocale));
             Journal.appendNode(taxLine, "td", "qty", "");
-            Journal.appendNode(taxLine, "td", "price", UtilFormatOut.formatPrice(taxAmount));
+            Journal.appendNode(taxLine, "td", "price", UtilFormatOut.formatPrice(taxAmount.doubleValue()));
             Journal.appendNode(taxLine, "td", "index", "-1");
             
             XModel totalLine = Journal.appendNode(model, "tr", "total", "");
             Journal.appendNode(totalLine, "td", "sku", "");
             Journal.appendNode(totalLine, "td", "desc", UtilProperties.getMessage(PosTransaction.resource,"Grand_Total",defaultLocale));
             Journal.appendNode(totalLine, "td", "qty", "");
-            Journal.appendNode(totalLine, "td", "price", UtilFormatOut.formatPrice(total));
+            Journal.appendNode(totalLine, "td", "price", UtilFormatOut.formatPrice(total.doubleValue()));
             Journal.appendNode(totalLine, "td", "index", "-1");
         }
     }
@@ -1025,18 +1026,18 @@
 
                 Object desc = paymentMethodType != null ? paymentMethodType.get("description",defaultLocale) : "??";
                 String descString = desc.toString();
-                double amount = 0;
+                BigDecimal amount = BigDecimal.ZERO;
                 if (inf.amount == null) {
-                    amount = cart.getGrandTotal() - cart.getPaymentTotal();
+                    amount = cart.getGrandTotal().subtract(cart.getPaymentTotal());
                 } else {
-                    amount = inf.amount.doubleValue();
+                    amount = inf.amount;
                 }
 
                 XModel paymentLine = Journal.appendNode(model, "tr", Integer.toString(i), "");
                 Journal.appendNode(paymentLine, "td", "sku", "");
                 Journal.appendNode(paymentLine, "td", "desc", descString);
                 Journal.appendNode(paymentLine, "td", "qty", "-");
-                Journal.appendNode(paymentLine, "td", "price", UtilFormatOut.formatPrice(-1 * amount));
+                Journal.appendNode(paymentLine, "td", "price", UtilFormatOut.formatPrice(amount.negate().doubleValue()));
                 Journal.appendNode(paymentLine, "td", "index", Integer.toString(i));
             }
         }
@@ -1044,13 +1045,13 @@
 
     public void appendChangeDataModel(XModel model) {
         if (cart != null) {
-            double changeDue = (-1 * this.getTotalDue());
-            if (changeDue >= 0) {
+         BigDecimal changeDue = this.getTotalDue().negate();
+            if (changeDue.compareTo(BigDecimal.ZERO) >= 0) {
                 XModel changeLine = Journal.appendNode(model, "tr", "", "");
                 Journal.appendNode(changeLine, "td", "sku", "");
                 Journal.appendNode(changeLine, "td", "desc", "Change");
                 Journal.appendNode(changeLine, "td", "qty", "-");
-                Journal.appendNode(changeLine, "td", "price", UtilFormatOut.formatPrice(changeDue));
+                Journal.appendNode(changeLine, "td", "price", UtilFormatOut.formatPrice(changeDue.doubleValue()));
             }
         }
     }

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java Sun Nov 30 22:51:11 2008
@@ -103,7 +103,7 @@
         if (OPER_TOTAL[0].equals(fieldName)) {
             String total = "0.00";
             if (trans != null) {
-                total = UtilFormatOut.formatPrice(trans.getTotalDue());
+                total = UtilFormatOut.formatPrice(trans.getTotalDue().doubleValue());
             }
             field.setText(total);
         } else if (OPER_DATE[0].equals(fieldName)) {

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java Sun Nov 30 22:51:11 2008
@@ -22,6 +22,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.math.BigDecimal;
 import java.net.URL;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -466,13 +467,13 @@
         expandMap.put("orderId", trans.getOrderId());
         expandMap.put("dateStamp", dateString);
         expandMap.put("drawerNo", Integer.toString(trans.getDrawerNumber()));
-        expandMap.put("taxTotal", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getTaxTotal()), priceLength[type], false, ' '));
-        expandMap.put("grandTotal", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getGrandTotal()), priceLength[type], false, ' '));
-        expandMap.put("totalPayments", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getPaymentTotal()), priceLength[type], false, ' '));
-        expandMap.put("change", UtilFormatOut.padString((trans.getTotalDue() < 0 ?
-                UtilFormatOut.formatPrice(trans.getTotalDue() * -1) : "0.00"), priceLength[type], false, ' '));
-        expandMap.put("saleDiscount", UtilFormatOut.padString((trans.GetTotalDiscount() != 0 ?
-                UtilFormatOut.formatPrice(trans.GetTotalDiscount()) : "0.00"), priceLength[type], false, ' '));
+        expandMap.put("taxTotal", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getTaxTotal().doubleValue()), priceLength[type], false, ' '));
+        expandMap.put("grandTotal", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getGrandTotal().doubleValue()), priceLength[type], false, ' '));
+        expandMap.put("totalPayments", UtilFormatOut.padString(UtilFormatOut.formatPrice(trans.getPaymentTotal().doubleValue()), priceLength[type], false, ' '));
+        expandMap.put("change", UtilFormatOut.padString((trans.getTotalDue().compareTo(BigDecimal.ZERO) < 0 ?
+                UtilFormatOut.formatPrice(trans.getTotalDue().negate().doubleValue()) : "0.00"), priceLength[type], false, ' '));
+        expandMap.put("saleDiscount", UtilFormatOut.padString((trans.GetTotalDiscount().compareTo(BigDecimal.ZERO) != 0 ?
+                UtilFormatOut.formatPrice(trans.GetTotalDiscount().doubleValue()) : "0.00"), priceLength[type], false, ' '));
 
         return expandMap;
     }

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java Sun Nov 30 22:51:11 2008
@@ -18,6 +18,7 @@
  */
 package org.ofbiz.pos.event;
 
+import java.math.BigDecimal;
 import java.sql.Timestamp;
 import java.text.DecimalFormat;
 import java.text.ParseException;
@@ -79,16 +80,16 @@
         Input input = pos.getInput();
         String value = input.value();
         if (UtilValidate.isNotEmpty(value)) {
-            double price = 0.00;
+         BigDecimal price = BigDecimal.ZERO;
             boolean parsed = false;
             try {
-                price = Double.parseDouble(value);
+                price = new BigDecimal(value);
                 parsed = true;
             } catch (NumberFormatException e) {
             }
 
             if (parsed) {
-                price = price / 100;
+                price = price.movePointLeft(2);
                 trans.modifyPrice(sku, price);
 
                 // re-calc tax

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java Sun Nov 30 22:51:11 2008
@@ -18,6 +18,7 @@
  *******************************************************************************/
 package org.ofbiz.pos.event;
 
+import java.math.BigDecimal;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.ListIterator;
@@ -149,12 +150,12 @@
         } else {
 
             // check for quantity
-            double quantity = 1;
+         BigDecimal quantity = BigDecimal.ONE;
             if (func != null && "QTY".equals(func[0])) {
                 try {
-                    quantity = Double.parseDouble(func[1]);
+                    quantity = new BigDecimal(func[1]);
                 } catch (NumberFormatException e) {
-                    quantity = 1;
+                    quantity = BigDecimal.ONE;
                 }
             }
 
@@ -250,19 +251,19 @@
         String value = input.value();
 
         boolean increment = true;
-        double quantity = 1;
+        BigDecimal quantity = BigDecimal.ONE;
         if (UtilValidate.isNotEmpty(value)) {
             try {
-                quantity = Double.parseDouble(value);
+                quantity = new BigDecimal(value);
             } catch (NumberFormatException e) {
-                quantity = 1;
+                quantity = BigDecimal.ONE;
             }
         } else {
             String[] func = input.getLastFunction();
             if (func != null && "QTY".equals(func[0])) {
                 increment = false;
                 try {
-                    quantity = Double.parseDouble(func[1]);
+                    quantity = new BigDecimal(func[1]);
                 } catch (NumberFormatException e) {
                     quantity = trans.getItemQuantity(sku);
                 }
@@ -270,7 +271,7 @@
         }
 
         // adjust the quantity
-        quantity = (increment ? trans.getItemQuantity(sku) + quantity : quantity);
+        quantity = (increment ? trans.getItemQuantity(sku).add(quantity) : quantity);
 
         try {
             trans.modifyQty(sku, quantity);

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java Sun Nov 30 22:51:11 2008
@@ -27,6 +27,7 @@
 import org.ofbiz.pos.screen.PosScreen;
 import org.ofbiz.base.util.UtilProperties;
 
+import java.math.BigDecimal;
 import java.util.Locale;
 
 public class PaymentEvents {
@@ -40,7 +41,7 @@
 
         // all cash transactions are NO_PAYMENT; no need to check
         try {
-            double amount = processAmount(trans, pos, null);
+         BigDecimal amount = processAmount(trans, pos, null);
             Debug.log("Processing [Cash] Amount : " + amount, module);
 
             // add the payment
@@ -212,7 +213,7 @@
                     case 3:
                         firstName = msrInfoArr[2];
                     case 2: // card number & exp date found
-                        double amount = 0;
+                     BigDecimal amount = BigDecimal.ZERO;
                         try {
                             String[] totalInfo = input.getFunction("TOTAL");
                             amount = processAmount(trans, pos, totalInfo[1]);
@@ -259,7 +260,7 @@
         PosTransaction trans = PosTransaction.getCurrentTx(pos.getSession());
 
         try {
-            double amount = processAmount(trans, pos, null);
+         BigDecimal amount = processAmount(trans, pos, null);
             Debug.log("Processing [" + paymentMethodTypeId + "] Amount : " + amount, module);
 
             // add the payment
@@ -282,7 +283,7 @@
         input.clearInput();
 
         try {
-            double amount = processAmount(trans, pos, amountStr);
+         BigDecimal amount = processAmount(trans, pos, amountStr);
             Debug.log("Processing [" + paymentMethodTypeId + "] Amount : " + amount, module);
 
             // add the payment
@@ -356,7 +357,7 @@
         if (trans.isEmpty()) {
             PosScreen newPos = pos.showPage("pospanel");
             newPos.showDialog("dialog/error/noitems");
-        } else if (trans.getTotalDue() > 0) {
+        } else if (trans.getTotalDue().compareTo(BigDecimal.ZERO) > 0) {
             pos.showDialog("dialog/error/notenoughfunds");
         } else {
             // manual locks (not secured; will be unlocked on clear)
@@ -379,27 +380,27 @@
         }
     }
 
-    private static synchronized double processAmount(PosTransaction trans, PosScreen pos, String amountStr) throws GeneralException {
+    private static synchronized BigDecimal processAmount(PosTransaction trans, PosScreen pos, String amountStr) throws GeneralException {
         Input input = pos.getInput();
 
         if (input.isFunctionSet("TOTAL")) {
             String amtStr = amountStr != null ? amountStr : input.value();
-            double amount;
+            BigDecimal amount;
             if (UtilValidate.isNotEmpty(amtStr)) {
                 try {
-                    amount = Double.parseDouble(amtStr);
+                    amount = new BigDecimal(amtStr);
                 } catch (NumberFormatException e) {
                     Debug.logError("Invalid number for amount : " + amtStr, module);
                     pos.getOutput().print("Invalid Amount!");
                     input.clearInput();
                     throw new GeneralException();
                 }
-                amount = amount / 100; // convert to decimal
+                amount = amount.movePointLeft(2); // convert to decimal
                 Debug.log("Set amount / 100 : " + amount, module);
             } else {
                 Debug.log("Amount is empty; assumption is full amount : " + trans.getTotalDue(), module);
                 amount = trans.getTotalDue();
-                if (amount <= 0) {
+                if (amount.compareTo(BigDecimal.ZERO) <= 0) {
                     throw new GeneralException();
                 }
             }

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java Sun Nov 30 22:51:11 2008
@@ -25,6 +25,7 @@
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 import net.xoetrope.xui.XPage;
@@ -216,10 +217,10 @@
             if (updateOutput) {
                 if (input.isFunctionSet("PAID")) {
                     output.print(UtilProperties.getMessage(PosTransaction.resource,"CHANGE",defaultLocale)
-                            + UtilFormatOut.formatPrice(trans.getTotalDue() * -1));
+                            + UtilFormatOut.formatPrice(trans.getTotalDue().negate().doubleValue()));
                 } else if (input.isFunctionSet("TOTAL")) {
-                    if (trans.getTotalDue() > 0) {
-                        output.print(UtilProperties.getMessage(PosTransaction.resource,"TOTALD",defaultLocale) + " " + UtilFormatOut.formatPrice(trans.getTotalDue()));
+                    if (trans.getTotalDue().compareTo(BigDecimal.ZERO) > 0) {
+                        output.print(UtilProperties.getMessage(PosTransaction.resource,"TOTALD",defaultLocale) + " " + UtilFormatOut.formatPrice(trans.getTotalDue().doubleValue()));
                     } else {
                         output.print(UtilProperties.getMessage(PosTransaction.resource,"PAYFIN",defaultLocale));
                     }

Modified: ofbiz/branches/typecheckcleanup200810/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java (original)
+++ ofbiz/branches/typecheckcleanup200810/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java Sun Nov 30 22:51:11 2008
@@ -18,6 +18,7 @@
  *******************************************************************************/
 package org.ofbiz.webpos.transaction;
 
+import java.math.BigDecimal;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -171,9 +172,9 @@
         }
     }
     
-    public void modifyPrice(String productId, double price) {
+    public void modifyPrice(String productId, BigDecimal price) {
         Debug.logInfo("Modify item price " + productId + "/" + price, module);
-        ShoppingCartItem item = getCart().findCartItem(productId, null, null, null, 0.00);
+        ShoppingCartItem item = getCart().findCartItem(productId, null, null, null, BigDecimal.ZERO);
         if (UtilValidate.isNotEmpty(item)) {
             item.setBasePrice(price);
         } else {
@@ -189,12 +190,12 @@
         }
     }
     
-    public double processSale() throws GeneralException {
+    public BigDecimal processSale() throws GeneralException {
         //TODO insert check if not enough funds
         Debug.log("process sale", module);
-        double grandTotal = this.getGrandTotal();
-        double paymentAmt = this.getPaymentTotal();
-        if (grandTotal > paymentAmt) {
+        BigDecimal grandTotal = this.getGrandTotal();
+        BigDecimal paymentAmt = this.getPaymentTotal();
+        if (grandTotal.compareTo(paymentAmt) > 0) {
             throw new IllegalStateException();
         }
         
@@ -233,7 +234,7 @@
         }
         
         // get the change due
-        double change = (grandTotal - paymentAmt);
+        BigDecimal change = grandTotal.subtract(paymentAmt);
         
         // notify the change due
         //output.print(UtilProperties.getMessage(PosTransaction.resource,"CHANGE",defaultLocale) + " " + UtilFormatOut.formatPrice(this.getTotalDue() * -1));
@@ -355,25 +356,25 @@
         return INTERNAL_PAYMENT;
     }
     
-    public double addPayment(String id, double amount) {
+    public BigDecimal addPayment(String id, BigDecimal amount) {
         return this.addPayment(id, amount, null, null);
     }
     
-    public double addPayment(String id, double amount, String refNum, String authCode) {
+    public BigDecimal addPayment(String id, BigDecimal amount, String refNum, String authCode) {
         Debug.logInfo("Added payment " + id + "/" + amount, module);
         if ("CASH".equals(id)) {
             // clear cash payments first; so there is only one
             getCart().clearPayment(id);
         }
-        getCart().addPaymentAmount(id, new Double(amount), refNum, authCode, true, true, false);
+        getCart().addPaymentAmount(id, amount, refNum, authCode, true, true, false);
         return this.getTotalDue();
     }
     
-    public double processAmount(String amtStr) throws GeneralException {
-        double amount;
+    public BigDecimal processAmount(String amtStr) throws GeneralException {
+     BigDecimal amount;
         if (UtilValidate.isNotEmpty(amtStr)) {
             try {
-                amount = Double.parseDouble(amtStr);
+                amount = new BigDecimal(amtStr);
             } catch (NumberFormatException e) {
                 Debug.logError("Invalid number for amount : " + amtStr, module);
                 throw new GeneralException();
@@ -381,7 +382,7 @@
         } else {
             Debug.log("Amount is empty; assumption is full amount : " + this.getTotalDue(), module);
             amount = this.getTotalDue();
-            if (amount <= 0) {
+            if (amount.compareTo(BigDecimal.ZERO) <= 0) {
                 throw new GeneralException();
             }
         }
@@ -390,7 +391,7 @@
     
     public synchronized void processNoPayment(String paymentMethodTypeId) {
         try {
-            double amount = processAmount(null);
+         BigDecimal amount = processAmount(null);
             Debug.log("Processing [" + paymentMethodTypeId + "] Amount : " + amount, module);
             
             // add the payment
@@ -407,7 +408,7 @@
         }
         
         try {
-            double amount = processAmount(amountStr);
+         BigDecimal amount = processAmount(amountStr);
             Debug.log("Processing [" + paymentMethodTypeId + "] Amount : " + amount, module);
             
             // add the payment
@@ -484,26 +485,26 @@
         inf.postalCode = postalCode;
     }
     
-    public double getTaxTotal() {
+    public BigDecimal getTaxTotal() {
         return getCart().getTotalSalesTax();
     }
     
-    public double getGrandTotal() {
-        return UtilFormatOut.formatPriceNumber(getCart().getGrandTotal()).doubleValue();
+    public BigDecimal getGrandTotal() {
+        return getCart().getGrandTotal();
     }
     
     public int getNumberOfPayments() {
         return getCart().selectedPayments();
     }
     
-    public double getPaymentTotal() {
-        return UtilFormatOut.formatPriceNumber(getCart().getPaymentTotal()).doubleValue();
+    public BigDecimal getPaymentTotal() {
+        return getCart().getPaymentTotal();
     }
     
-    public double getTotalDue() {
-        double grandTotal = this.getGrandTotal();
-        double paymentAmt = this.getPaymentTotal();
-        return (grandTotal - paymentAmt);
+    public BigDecimal getTotalDue() {
+     BigDecimal grandTotal = this.getGrandTotal();
+     BigDecimal paymentAmt = this.getPaymentTotal();
+        return grandTotal.subtract(paymentAmt);
     }
     
     public String addProductPromoCode(String code) {