svn commit: r731851 [22/22] - in /ofbiz/trunk: applications/accounting/entitydef/ applications/accounting/script/org/ofbiz/accounting/finaccount/ applications/accounting/script/org/ofbiz/accounting/fixedasset/ applications/accounting/script/org/ofbiz/a...

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

svn commit: r731851 [22/22] - in /ofbiz/trunk: applications/accounting/entitydef/ applications/accounting/script/org/ofbiz/accounting/finaccount/ applications/accounting/script/org/ofbiz/accounting/fixedasset/ applications/accounting/script/org/ofbiz/a...

jonesde
Modified: ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/PosTransaction.java Mon Jan  5 23:13:36 2009
@@ -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;
@@ -200,26 +201,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() {
@@ -231,24 +232,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;
     }
@@ -271,8 +272,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);
                 }
@@ -334,7 +335,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;
@@ -345,7 +346,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)) {
@@ -381,14 +382,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;
         }
     }
 
@@ -451,7 +452,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();
@@ -484,7 +485,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;
@@ -503,7 +504,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) {
@@ -520,9 +521,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);
@@ -536,9 +537,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 {
@@ -557,7 +558,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());
@@ -582,7 +583,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());
@@ -591,13 +592,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);
@@ -695,17 +696,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();
     }
 
@@ -775,11 +776,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();
         }
 
@@ -819,10 +820,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;
@@ -889,16 +890,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())){
@@ -916,19 +917,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()));
                 }
             }
         }
@@ -936,17 +937,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);
                 }
             }
             
@@ -960,20 +961,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");
                 }    
@@ -984,14 +985,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");
         }
     }
@@ -1018,18 +1019,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));
             }
         }
@@ -1037,13 +1038,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/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/component/Operator.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/device/impl/Receipt.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/ManagerEvents.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/MenuEvents.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/event/PaymentEvents.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java (original)
+++ ofbiz/trunk/specialpurpose/pos/src/org/ofbiz/pos/screen/PosScreen.java Mon Jan  5 23:13:36 2009
@@ -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/trunk/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java?rev=731851&r1=731850&r2=731851&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java (original)
+++ ofbiz/trunk/specialpurpose/webpos/src/org/ofbiz/webpos/transaction/WebPosTransaction.java Mon Jan  5 23:13:36 2009
@@ -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) {