You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by le...@apache.org on 2008/12/01 07:51:15 UTC
svn commit: r721986 [12/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/...
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java Sun Nov 30 22:51:11 2008
@@ -88,13 +88,13 @@
estimate.set("featurePercent", context.get("featurePercent"));
estimate.set("featurePrice", context.get("featurePrice"));
estimate.set("weightBreakId", context.get("weightBreakId"));
- estimate.set("weightUnitPrice", (Double)context.get("wprice"));
+ estimate.set("weightUnitPrice", (BigDecimal)context.get("wprice"));
estimate.set("weightUomId", context.get("wuom"));
estimate.set("quantityBreakId", context.get("quantityBreakId"));
- estimate.set("quantityUnitPrice", (Double)context.get("qprice"));
+ estimate.set("quantityUnitPrice", (BigDecimal)context.get("qprice"));
estimate.set("quantityUomId", context.get("quom"));
estimate.set("priceBreakId", context.get("priceBreakId"));
- estimate.set("priceUnitPrice", (Double)context.get("pprice"));
+ estimate.set("priceUnitPrice", (BigDecimal)context.get("pprice"));
estimate.set("priceUomId", context.get("puom"));
storeAll.add(estimate);
@@ -162,11 +162,11 @@
private static boolean applyQuantityBreak(Map context, Map result, List storeAll, GenericDelegator delegator,
GenericValue estimate, String prefix, String breakType, String breakTypeString) {
- Double min = (Double) context.get(prefix + "min");
- Double max = (Double) context.get(prefix + "max");
+ BigDecimal min = (BigDecimal) context.get(prefix + "min");
+ BigDecimal max = (BigDecimal) context.get(prefix + "max");
if (min != null || max != null) {
if (min != null && max != null) {
- if (min.doubleValue() <= max.doubleValue() || max.doubleValue() == 0) {
+ if (min.compareTo(max) <= 0 || max.compareTo(BigDecimal.ZERO) == 0) {
try {
String newSeqId = delegator.getNextSeqId("QuantityBreak");
GenericValue weightBreak = delegator.makeValue("QuantityBreak");
@@ -175,7 +175,7 @@
weightBreak.set("fromQuantity", min);
weightBreak.set("thruQuantity", max);
estimate.set(breakType + "BreakId", newSeqId);
- estimate.set(breakType + "UnitPrice", (Double) context.get(prefix + "price"));
+ estimate.set(breakType + "UnitPrice", (BigDecimal) context.get(prefix + "price"));
if (context.containsKey(prefix + "uom")) {
estimate.set(breakType + "UomId", (String) context.get(prefix + "uom"));
}
@@ -218,22 +218,22 @@
//Map shippableFeatureMap = (Map) context.get("shippableFeatureMap");
//List shippableItemSizes = (List) context.get("shippableItemSizes");
- Double shippableTotal = (Double) context.get("shippableTotal");
- Double shippableQuantity = (Double) context.get("shippableQuantity");
- Double shippableWeight = (Double) context.get("shippableWeight");
- Double initialEstimateAmt = (Double) context.get("initialEstimateAmt");
+ BigDecimal shippableTotal = (BigDecimal) context.get("shippableTotal");
+ BigDecimal shippableQuantity = (BigDecimal) context.get("shippableQuantity");
+ BigDecimal shippableWeight = (BigDecimal) context.get("shippableWeight");
+ BigDecimal initialEstimateAmt = (BigDecimal) context.get("initialEstimateAmt");
if (shippableTotal == null) {
- shippableTotal = new Double(0.00);
+ shippableTotal = BigDecimal.ZERO;
}
if (shippableQuantity == null) {
- shippableQuantity = new Double(0.00);
+ shippableQuantity = BigDecimal.ZERO;
}
if (shippableWeight == null) {
- shippableWeight = new Double(0.00);
+ shippableWeight = BigDecimal.ZERO;
}
if (initialEstimateAmt == null) {
- initialEstimateAmt = new Double(0.00);
+ initialEstimateAmt = BigDecimal.ZERO;
}
// get the ShipmentCostEstimate(s)
@@ -248,13 +248,13 @@
return ServiceUtil.returnError("Unable to locate estimates from database");
}
if (estimates == null || estimates.size() < 1) {
- if (initialEstimateAmt.doubleValue() == 0.00) {
+ if (initialEstimateAmt.compareTo(BigDecimal.ZERO) == 0) {
Debug.logWarning("Using the passed context : " + context, module);
Debug.logWarning("No shipping estimates found; the shipping amount returned is 0!", module);
}
Map respNow = ServiceUtil.returnSuccess();
- respNow.put("shippingEstimateAmount", new Double(0.00));
+ respNow.put("shippingEstimateAmount", BigDecimal.ZERO);
return respNow;
}
@@ -331,41 +331,41 @@
if (wv != null) {
useWeight = true;
- double min = 0.0001;
- double max = 0.0001;
+ BigDecimal min = BigDecimal.ONE.movePointLeft(4);
+ BigDecimal max = BigDecimal.ONE.movePointLeft(4);
try {
- min = wv.getDouble("fromQuantity").doubleValue();
- max = wv.getDouble("thruQuantity").doubleValue();
+ min = wv.getBigDecimal("fromQuantity");
+ max = wv.getBigDecimal("thruQuantity");
} catch (Exception e) {
}
- if (shippableWeight.doubleValue() >= min && (max == 0 || shippableWeight.doubleValue() <= max))
+ if (shippableWeight.compareTo(min) >= 0 && (max.compareTo(BigDecimal.ZERO) == 0 || shippableWeight.compareTo(max) <= 0))
weightValid = true;
}
if (qv != null) {
useQty = true;
- double min = 0.0001;
- double max = 0.0001;
+ BigDecimal min = BigDecimal.ONE.movePointLeft(4);
+ BigDecimal max = BigDecimal.ONE.movePointLeft(4);
try {
- min = qv.getDouble("fromQuantity").doubleValue();
- max = qv.getDouble("thruQuantity").doubleValue();
+ min = qv.getBigDecimal("fromQuantity");
+ max = qv.getBigDecimal("thruQuantity");
} catch (Exception e) {
}
- if (shippableQuantity.doubleValue() >= min && (max == 0 || shippableQuantity.doubleValue() <= max))
+ if (shippableQuantity.compareTo(min) >= 0 && (max.compareTo(BigDecimal.ZERO) == 0 || shippableQuantity.compareTo(max) <= 0))
qtyValid = true;
}
if (pv != null) {
usePrice = true;
- double min = 0.0001;
- double max = 0.0001;
+ BigDecimal min = BigDecimal.ONE.movePointLeft(4);
+ BigDecimal max = BigDecimal.ONE.movePointLeft(4);
try {
- min = pv.getDouble("fromQuantity").doubleValue();
- max = pv.getDouble("thruQuantity").doubleValue();
+ min = pv.getBigDecimal("fromQuantity");
+ max = pv.getBigDecimal("thruQuantity");
} catch (Exception e) {
}
- if (shippableTotal.doubleValue() >= min && (max == 0 || shippableTotal.doubleValue() <= max))
+ if (shippableTotal.compareTo(min) >= 0 && (max.compareTo(BigDecimal.ZERO) == 0 || shippableTotal.compareTo(max) <= 0))
priceValid = true;
}
// Now check the tests.
@@ -389,23 +389,23 @@
Map itemMap = (Map) sii.next();
// add the item sizes
- Double itemSize = (Double) itemMap.get("size");
+ BigDecimal itemSize = (BigDecimal) itemMap.get("size");
if (itemSize != null) {
shippableItemSizes.add(itemSize);
}
// add the feature quantities
- Double quantity = (Double) itemMap.get("quantity");
+ BigDecimal quantity = (BigDecimal) itemMap.get("quantity");
Set featureSet = (Set) itemMap.get("featureSet");
if (UtilValidate.isNotEmpty(featureSet)) {
Iterator fi = featureSet.iterator();
while (fi.hasNext()) {
String featureId = (String) fi.next();
- Double featureQuantity = (Double) shippableFeatureMap.get(featureId);
+ BigDecimal featureQuantity = (BigDecimal) shippableFeatureMap.get(featureId);
if (featureQuantity == null) {
- featureQuantity = new Double(0.00);
+ featureQuantity = BigDecimal.ZERO;
}
- featureQuantity = new Double(featureQuantity.doubleValue() + quantity.doubleValue());
+ featureQuantity = featureQuantity.add(quantity);
shippableFeatureMap.put(featureId, featureQuantity);
}
}
@@ -459,61 +459,61 @@
//Debug.log("[ShippingEvents.getShipEstimate] Working with estimate [" + estimateIndex + "]: " + estimate, module);
// flat fees
- double orderFlat = 0.00;
- if (estimate.getDouble("orderFlatPrice") != null)
- orderFlat = estimate.getDouble("orderFlatPrice").doubleValue();
-
- double orderItemFlat = 0.00;
- if (estimate.getDouble("orderItemFlatPrice") != null)
- orderItemFlat = estimate.getDouble("orderItemFlatPrice").doubleValue();
-
- double orderPercent = 0.00;
- if (estimate.getDouble("orderPricePercent") != null)
- orderPercent = estimate.getDouble("orderPricePercent").doubleValue();
+ BigDecimal orderFlat = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("orderFlatPrice") != null)
+ orderFlat = estimate.getBigDecimal("orderFlatPrice");
+
+ BigDecimal orderItemFlat = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("orderItemFlatPrice") != null)
+ orderItemFlat = estimate.getBigDecimal("orderItemFlatPrice");
+
+ BigDecimal orderPercent = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("orderPricePercent") != null)
+ orderPercent = estimate.getBigDecimal("orderPricePercent");
- double itemFlatAmount = shippableQuantity.doubleValue() * orderItemFlat;
- double orderPercentage = shippableTotal.doubleValue() * (orderPercent / 100);
+ BigDecimal itemFlatAmount = shippableQuantity.multiply(orderItemFlat);
+ BigDecimal orderPercentage = shippableTotal.multiply(orderPercent.movePointLeft(2));
// flat total
- double flatTotal = orderFlat + itemFlatAmount + orderPercentage;
+ BigDecimal flatTotal = orderFlat.add(itemFlatAmount).add(orderPercentage);
// spans
- double weightUnit = 0.00;
- if (estimate.getDouble("weightUnitPrice") != null)
- weightUnit = estimate.getDouble("weightUnitPrice").doubleValue();
-
- double qtyUnit = 0.00;
- if (estimate.getDouble("quantityUnitPrice") != null)
- qtyUnit = estimate.getDouble("quantityUnitPrice").doubleValue();
-
- double priceUnit = 0.00;
- if (estimate.getDouble("priceUnitPrice") != null)
- priceUnit = estimate.getDouble("priceUnitPrice").doubleValue();
-
- double weightAmount = shippableWeight.doubleValue() * weightUnit;
- double quantityAmount = shippableQuantity.doubleValue() * qtyUnit;
- double priceAmount = shippableTotal.doubleValue() * priceUnit;
+ BigDecimal weightUnit = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("weightUnitPrice") != null)
+ weightUnit = estimate.getBigDecimal("weightUnitPrice");
+
+ BigDecimal qtyUnit = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("quantityUnitPrice") != null)
+ qtyUnit = estimate.getBigDecimal("quantityUnitPrice");
+
+ BigDecimal priceUnit = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("priceUnitPrice") != null)
+ priceUnit = estimate.getBigDecimal("priceUnitPrice");
+
+ BigDecimal weightAmount = shippableWeight.multiply(weightUnit);
+ BigDecimal quantityAmount = shippableQuantity.multiply(qtyUnit);
+ BigDecimal priceAmount = shippableTotal.multiply(priceUnit);
// span total
- double spanTotal = weightAmount + quantityAmount + priceAmount;
+ BigDecimal spanTotal = weightAmount.add(quantityAmount).add(priceAmount);
// feature surcharges
- double featureSurcharge = 0.00;
+ BigDecimal featureSurcharge = BigDecimal.ZERO;
String featureGroupId = estimate.getString("productFeatureGroupId");
- Double featurePercent = estimate.getDouble("featurePercent");
- Double featurePrice = estimate.getDouble("featurePrice");
+ BigDecimal featurePercent = estimate.getBigDecimal("featurePercent");
+ BigDecimal featurePrice = estimate.getBigDecimal("featurePrice");
if (featurePercent == null) {
- featurePercent = new Double(0);
+ featurePercent = BigDecimal.ZERO;
}
if (featurePrice == null) {
- featurePrice = new Double(0.00);
+ featurePrice = BigDecimal.ZERO;
}
if (featureGroupId != null && featureGroupId.length() > 0 && shippableFeatureMap != null) {
Iterator fii = shippableFeatureMap.keySet().iterator();
while (fii.hasNext()) {
String featureId = (String) fii.next();
- Double quantity = (Double) shippableFeatureMap.get(featureId);
+ BigDecimal quantity = (BigDecimal) shippableFeatureMap.get(featureId);
GenericValue appl = null;
Map fields = UtilMisc.toMap("productFeatureGroupId", featureGroupId, "productFeatureId", featureId);
try {
@@ -524,45 +524,45 @@
Debug.logError(e, "Unable to lookup feature/group" + fields, module);
}
if (appl != null) {
- featureSurcharge += (shippableTotal.doubleValue() * (featurePercent.doubleValue() / 100) * quantity.doubleValue());
- featureSurcharge += featurePrice.doubleValue() * quantity.doubleValue();
+ featureSurcharge = featureSurcharge.add( shippableTotal.multiply( featurePercent.movePointLeft(2) ).multiply(quantity) );
+ featureSurcharge = featureSurcharge.add(featurePrice.multiply(quantity));
}
}
}
// size surcharges
- double sizeSurcharge = 0.00;
- Double sizeUnit = estimate.getDouble("oversizeUnit");
- Double sizePrice = estimate.getDouble("oversizePrice");
- if (sizeUnit != null && sizeUnit.doubleValue() > 0) {
+ BigDecimal sizeSurcharge = BigDecimal.ZERO;
+ BigDecimal sizeUnit = estimate.getBigDecimal("oversizeUnit");
+ BigDecimal sizePrice = estimate.getBigDecimal("oversizePrice");
+ if (sizeUnit != null && sizeUnit.compareTo(BigDecimal.ZERO) > 0) {
if (shippableItemSizes != null) {
Iterator isi = shippableItemSizes.iterator();
while (isi.hasNext()) {
- Double size = (Double) isi.next();
- if (size != null && size.doubleValue() >= sizeUnit.doubleValue()) {
- sizeSurcharge += sizePrice.doubleValue();
+ BigDecimal size = (BigDecimal) isi.next();
+ if (size != null && size.compareTo(sizeUnit) >= 0) {
+ sizeSurcharge = sizeSurcharge.add(sizePrice);
}
}
}
}
// surcharges total
- double surchargeTotal = featureSurcharge + sizeSurcharge;
+ BigDecimal surchargeTotal = featureSurcharge.add(sizeSurcharge);
// shipping subtotal
- double subTotal = spanTotal + flatTotal + surchargeTotal;
+ BigDecimal subTotal = spanTotal.add(flatTotal).add(surchargeTotal);
// percent add-on
- double shippingPricePercent = 0.00;
- if (estimate.getDouble("shippingPricePercent") != null)
- shippingPricePercent = estimate.getDouble("shippingPricePercent").doubleValue();
+ BigDecimal shippingPricePercent = BigDecimal.ZERO;
+ if (estimate.getBigDecimal("shippingPricePercent") != null)
+ shippingPricePercent = estimate.getBigDecimal("shippingPricePercent");
// shipping total
- double shippingTotal = subTotal + ((subTotal + initialEstimateAmt.doubleValue()) * (shippingPricePercent / 100));
+ BigDecimal shippingTotal = subTotal.add((subTotal.add(initialEstimateAmt)).multiply(shippingPricePercent.movePointLeft(2)));
// prepare the return result
Map responseResult = ServiceUtil.returnSuccess();
- responseResult.put("shippingEstimateAmount", new Double(shippingTotal));
+ responseResult.put("shippingEstimateAmount", shippingTotal);
return responseResult;
}
@@ -880,9 +880,9 @@
Iterator iter = shipmentAndItems.iterator();
while (iter.hasNext()) {
GenericValue item = (GenericValue) iter.next();
- double shippedQuantity = item.getDouble("quantity").doubleValue();
- Double quantity = (Double) shippedCountMap.get(item.getString("productId"));
- quantity = new Double(quantity == null ? shippedQuantity : shippedQuantity + quantity.doubleValue());
+ BigDecimal shippedQuantity = item.getBigDecimal("quantity");
+ BigDecimal quantity = (BigDecimal) shippedCountMap.get(item.getString("productId"));
+ quantity = quantity == null ? shippedQuantity : shippedQuantity.add(quantity);
shippedCountMap.put(item.getString("productId"), quantity);
}
@@ -891,9 +891,9 @@
iter = shipmentReceipts.iterator();
while (iter.hasNext()) {
GenericValue item = (GenericValue) iter.next();
- double receivedQuantity = item.getDouble("quantityAccepted").doubleValue();
- Double quantity = (Double) receivedCountMap.get(item.getString("productId"));
- quantity = new Double(quantity == null ? receivedQuantity : receivedQuantity + quantity.doubleValue());
+ BigDecimal receivedQuantity = item.getBigDecimal("quantityAccepted");
+ BigDecimal quantity = (BigDecimal) receivedCountMap.get(item.getString("productId"));
+ quantity = quantity == null ? receivedQuantity : receivedQuantity.add(quantity);
receivedCountMap.put(item.getString("productId"), quantity);
}
@@ -1054,10 +1054,10 @@
// Convert the value to the shipment currency, if necessary
GenericValue orderHeader = packageContent.getRelatedOne("OrderHeader");
- Map convertUomResult = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", orderHeader.getString("currencyUom"), "uomIdTo", currencyUomId, "originalValue", new Double(packageContentValue.doubleValue())));
+ Map convertUomResult = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", orderHeader.getString("currencyUom"), "uomIdTo", currencyUomId, "originalValue", packageContentValue));
if (ServiceUtil.isError(convertUomResult)) return convertUomResult;
if (convertUomResult.containsKey("convertedValue")) {
- packageContentValue = new BigDecimal(((Double) convertUomResult.get("convertedValue")).doubleValue()).setScale(decimals, rounding);
+ packageContentValue = ((BigDecimal) convertUomResult.get("convertedValue")).setScale(decimals, rounding);
}
// Add the value of the packed item to the package's total value
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/dhl/DhlServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/dhl/DhlServices.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/dhl/DhlServices.java (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/dhl/DhlServices.java Sun Nov 30 22:51:11 2008
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.io.StringWriter;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -157,9 +158,9 @@
String shipmentMethodTypeId = (String) context.get("shipmentMethodTypeId");
String shippingContactMechId = (String) context.get("shippingContactMechId");
List shippableItemInfo = (List) context.get("shippableItemInfo");
- Double shippableTotal = (Double) context.get("shippableTotal");
- Double shippableQuantity = (Double) context.get("shippableQuantity");
- Double shippableWeight = (Double) context.get("shippableWeight");
+ BigDecimal shippableTotal = (BigDecimal) context.get("shippableTotal");
+ BigDecimal shippableQuantity = (BigDecimal) context.get("shippableQuantity");
+ BigDecimal shippableWeight = (BigDecimal) context.get("shippableWeight");
if (shipmentMethodTypeId.equals("NO_SHIPPING")) {
Map result = ServiceUtil.returnSuccess();
@@ -203,11 +204,11 @@
}
}
- if ((shippableWeight == null) || (shippableWeight.doubleValue() <= 0.0)) {
+ if ((shippableWeight == null) || (shippableWeight.compareTo(BigDecimal.ZERO) <= 0)) {
String tmpValue = UtilProperties.getPropertyValue(shipmentPropertiesFile, "shipment.default.weight.value");
if (tmpValue != null) {
try {
- shippableWeight = new Double(tmpValue);
+ shippableWeight = new BigDecimal(tmpValue);
} catch (Exception e) {
return ServiceUtil.returnError("Cannot get DHL Estimate: Default shippable weight not configured (shipment.default.weight.value)");
}
@@ -215,11 +216,11 @@
}
// TODO: if a weight UOM is passed in, use convertUom service to convert it here
- if (shippableWeight.doubleValue() < 1.0) {
+ if (shippableWeight.compareTo(BigDecimal.ONE) < 0) {
Debug.logWarning("DHL Estimate: Weight is less than 1 lb, submitting DHL minimum of 1 lb for estimate.", module);
- shippableWeight = new Double(1.0);
+ shippableWeight = BigDecimal.ONE;
}
- if ((dhlShipmentDetailCode.equals("G") && shippableWeight.doubleValue() > 999) || (shippableWeight.doubleValue() > 150)) {
+ if ((dhlShipmentDetailCode.equals("G") && shippableWeight.compareTo(new BigDecimal("999")) > 0) || (shippableWeight.compareTo(new BigDecimal("150")) > 0)) {
return ServiceUtil.returnError("Cannot get DHL Estimate: Shippable weight cannot be greater than 999 lbs for ground or 150 lbs for all other services.");
}
String weight = (new Integer((int) shippableWeight.longValue())).toString();
@@ -363,7 +364,7 @@
chargeList.add(charge);
}
}
- Double shippingEstimateAmount = new Double(responseTotalChargeEstimate);
+ BigDecimal shippingEstimateAmount = new BigDecimal(responseTotalChargeEstimate);
dhlRateCodeMap.put("dateGenerated", dateGenerated);
dhlRateCodeMap.put("serviceLevelCommitment",
responseServiceLevelCommitmentDescription);
@@ -587,9 +588,9 @@
// get the weight from the ShipmentRouteSegment first, which overrides all later weight computations
boolean hasBillingWeight = false; // for later overrides
- Double billingWeight = shipmentRouteSegment.getDouble("billingWeight");
+ BigDecimal billingWeight = shipmentRouteSegment.getBigDecimal("billingWeight");
String billingWeightUomId = shipmentRouteSegment.getString("billingWeightUomId");
- if ((billingWeight != null) && (billingWeight.doubleValue() > 0)) {
+ if ((billingWeight != null) && (billingWeight.compareTo(BigDecimal.ZERO) > 0)) {
hasBillingWeight = true;
if (billingWeightUomId == null) {
Debug.logWarning("Shipment Route Segment missing billingWeightUomId in shipmentId " + shipmentId, module);
@@ -602,7 +603,7 @@
// try getting the weight from package instead
hasBillingWeight = false;
} else {
- billingWeight = (Double) results.get("convertedValue");
+ billingWeight = (BigDecimal) results.get("convertedValue");
}
}
@@ -610,7 +611,7 @@
String length = null;
String width = null;
String height = null;
- Double packageWeight = null;
+ BigDecimal packageWeight = null;
Iterator shipmentPackageRouteSegIter = shipmentPackageRouteSegs.iterator();
while (shipmentPackageRouteSegIter.hasNext()) {
GenericValue shipmentPackageRouteSeg = (GenericValue) shipmentPackageRouteSegIter.next();
@@ -635,14 +636,14 @@
// compute total packageWeight (for now, just one package)
if (shipmentPackage.getString("weight") != null) {
- packageWeight = Double.valueOf(shipmentPackage.getString("weight"));
+ packageWeight = new BigDecimal(shipmentPackage.getString("weight"));
} else {
// use default weight if available
try {
- packageWeight = Double.valueOf(UtilProperties.getPropertyValue(shipmentPropertiesFile, "shipment.default.weight.value"));
+ packageWeight = new BigDecimal(UtilProperties.getPropertyValue(shipmentPropertiesFile, "shipment.default.weight.value"));
} catch (NumberFormatException ne) {
Debug.logWarning("Default shippable weight not configured (shipment.default.weight.value)", module);
- packageWeight = new Double(1.0);
+ packageWeight = BigDecimal.ONE;
}
}
// convert weight
@@ -654,21 +655,21 @@
results = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", weightUomId, "uomIdTo", DHL_WEIGHT_UOM_ID, "originalValue", packageWeight));
if ((results == null) || (results.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_ERROR)) || (results.get("convertedValue") == null)) {
Debug.logWarning("Unable to convert weights for shipmentId " + shipmentId , module);
- packageWeight = new Double(1.0);
+ packageWeight = BigDecimal.ONE;
} else {
- packageWeight = (Double) results.get("convertedValue");
+ packageWeight = (BigDecimal) results.get("convertedValue");
}
}
// pick which weight to use and round it
- Double weight = null;
+ BigDecimal weight = null;
if (hasBillingWeight) {
weight = billingWeight;
} else {
weight = packageWeight;
}
// want the rounded weight as a string, so we use the "" + int shortcut
- String roundedWeight = "" + Math.round(weight.doubleValue());
+ String roundedWeight = weight.setScale(0, BigDecimal.ROUND_HALF_UP).toPlainString();
// translate shipmentMethodTypeId to DHL service code
String shipmentMethodTypeId = shipmentRouteSegment.getString("shipmentMethodTypeId");
@@ -841,14 +842,14 @@
return ServiceUtil.returnSuccess("DHL Shipment Confirmed.");
}
- private static double getWeight(List shippableItemInfo) {
- double totalWeight = 0;
+ private static BigDecimal getWeight(List shippableItemInfo) {
+ BigDecimal totalWeight = BigDecimal.ZERO;
if (shippableItemInfo != null) {
Iterator sii = shippableItemInfo.iterator();
while (sii.hasNext()) {
Map itemInfo = (Map) sii.next();
- double weight = ((Double) itemInfo.get("weight")).doubleValue();
- totalWeight = totalWeight + weight;
+ BigDecimal weight = ((BigDecimal) itemInfo.get("weight"));
+ totalWeight = totalWeight.add(weight);
}
}
return totalWeight;
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/fedex/FedexServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/fedex/FedexServices.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/fedex/FedexServices.java (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/fedex/FedexServices.java Sun Nov 30 22:51:11 2008
@@ -661,9 +661,9 @@
// Get the weight from the ShipmentRouteSegment first, which overrides all later weight computations
boolean hasBillingWeight = false;
- Double billingWeight = shipmentRouteSegment.getDouble("billingWeight");
+ BigDecimal billingWeight = shipmentRouteSegment.getBigDecimal("billingWeight");
String billingWeightUomId = shipmentRouteSegment.getString("billingWeightUomId");
- if ((billingWeight != null) && (billingWeight.doubleValue() > 0)) {
+ if ((billingWeight != null) && (billingWeight.compareTo(BigDecimal.ZERO) > 0)) {
hasBillingWeight = true;
if (billingWeightUomId == null) {
Debug.logWarning("Shipment Route Segment missing billingWeightUomId in shipmentId " + shipmentId + ", assuming default shipment.fedex.weightUomId of " + weightUomId + " from " + shipmentPropertiesFile, module);
@@ -679,7 +679,7 @@
// Try getting the weight from package instead
hasBillingWeight = false;
} else {
- billingWeight = (Double) results.get("convertedValue");
+ billingWeight = (BigDecimal) results.get("convertedValue");
}
}
}
@@ -716,13 +716,13 @@
packaging = carrierShipmentBoxType.getString("packagingTypeCode");
// Determine the dimensions of the package
- Double dimensionsLength = null;
- Double dimensionsWidth = null;
- Double dimensionsHeight = null;
+ BigDecimal dimensionsLength = null;
+ BigDecimal dimensionsWidth = null;
+ BigDecimal dimensionsHeight = null;
if (shipmentBoxType != null) {
- dimensionsLength = shipmentBoxType.getDouble("boxLength");
- dimensionsWidth = shipmentBoxType.getDouble("boxWidth");
- dimensionsHeight = shipmentBoxType.getDouble("boxHeight");
+ dimensionsLength = shipmentBoxType.getBigDecimal("boxLength");
+ dimensionsWidth = shipmentBoxType.getBigDecimal("boxWidth");
+ dimensionsHeight = shipmentBoxType.getBigDecimal("boxHeight");
String boxDimensionsUomId = null;
GenericValue boxDimensionsUom = shipmentBoxType.getRelatedOne("DimensionUom");
@@ -732,38 +732,38 @@
Debug.logWarning("Packaging type for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId + " is missing dimensionUomId, assuming default shipment.default.dimension.uom of " + dimensionsUomId + " from " + shipmentPropertiesFile, module);
boxDimensionsUomId = dimensionsUomId;
}
- if (dimensionsLength != null && dimensionsLength.doubleValue() > 0) {
+ if (dimensionsLength != null && dimensionsLength.compareTo(BigDecimal.ZERO) > 0) {
if (! boxDimensionsUomId.equals(dimensionsUomId)) {
Map results = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", boxDimensionsUomId, "uomIdTo", dimensionsUomId, "originalValue", dimensionsLength));
if (ServiceUtil.isError(results) || (results.get("convertedValue") == null)) {
Debug.logWarning("Unable to convert length for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId , module);
dimensionsLength = null;
} else {
- dimensionsLength = (Double) results.get("convertedValue");
+ dimensionsLength = (BigDecimal) results.get("convertedValue");
}
}
}
- if (dimensionsWidth != null && dimensionsWidth.doubleValue() > 0) {
+ if (dimensionsWidth != null && dimensionsWidth.compareTo(BigDecimal.ZERO) > 0) {
if (! boxDimensionsUomId.equals(dimensionsUomId)) {
Map results = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", boxDimensionsUomId, "uomIdTo", dimensionsUomId, "originalValue", dimensionsWidth));
if (ServiceUtil.isError(results) || (results.get("convertedValue") == null)) {
Debug.logWarning("Unable to convert width for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId , module);
dimensionsWidth = null;
} else {
- dimensionsWidth = (Double) results.get("convertedValue");
+ dimensionsWidth = (BigDecimal) results.get("convertedValue");
}
}
}
- if (dimensionsHeight != null && dimensionsHeight.doubleValue() > 0) {
+ if (dimensionsHeight != null && dimensionsHeight.compareTo(BigDecimal.ZERO) > 0) {
if (! boxDimensionsUomId.equals(dimensionsUomId)) {
Map results = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", boxDimensionsUomId, "uomIdTo", dimensionsUomId, "originalValue", dimensionsHeight));
if (ServiceUtil.isError(results) || (results.get("convertedValue") == null)) {
Debug.logWarning("Unable to convert height for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId , module);
dimensionsHeight = null;
} else {
- dimensionsHeight = (Double) results.get("convertedValue");
+ dimensionsHeight = (BigDecimal) results.get("convertedValue");
}
}
@@ -771,18 +771,18 @@
}
// Determine the package weight (possibly overriden by route segment billing weight)
- Double packageWeight = null;
+ BigDecimal packageWeight = null;
if (! hasBillingWeight) {
if (UtilValidate.isNotEmpty(shipmentPackage.getString("weight"))) {
- packageWeight = shipmentPackage.getDouble("weight");
+ packageWeight = shipmentPackage.getBigDecimal("weight");
} else {
// Use default weight if available
try {
- packageWeight = Double.valueOf(UtilProperties.getPropertyValue(shipmentPropertiesFile, "shipment.default.weight.value"));
+ packageWeight = new BigDecimal(UtilProperties.getPropertyValue(shipmentPropertiesFile, "shipment.default.weight.value"));
} catch (NumberFormatException ne) {
Debug.logWarning("Default shippable weight not configured (shipment.default.weight.value), assuming 1.0" + weightUomId , module);
- packageWeight = new Double(1.0);
+ packageWeight = BigDecimal.ONE;
}
}
@@ -797,12 +797,12 @@
if (ServiceUtil.isError(results) || (results.get("convertedValue") == null)) {
ServiceUtil.returnError("Unable to convert weight for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId);
} else {
- packageWeight = (Double) results.get("convertedValue");
+ packageWeight = (BigDecimal) results.get("convertedValue");
}
}
}
- Double weight = hasBillingWeight ? billingWeight : packageWeight;
- if (weight == null || weight.doubleValue() < 0) {
+ BigDecimal weight = hasBillingWeight ? billingWeight : packageWeight;
+ if (weight == null || weight.compareTo(BigDecimal.ZERO) < 0) {
ServiceUtil.returnError("Unable to determine weight for package " + shipmentPackage.getString("shipmentPackageSeqId") + " of shipmentRouteSegment " + shipmentRouteSegmentId + " of shipment " + shipmentId);
}
@@ -811,15 +811,15 @@
shipRequestContext.put("DropoffType", dropoffType);
shipRequestContext.put("Packaging", packaging);
if (UtilValidate.isNotEmpty(dimensionsUomId) &&
- dimensionsLength != null && Math.round(dimensionsLength.doubleValue()) > 0 &&
- dimensionsWidth != null && Math.round(dimensionsWidth.doubleValue()) > 0 &&
- dimensionsHeight != null && Math.round(dimensionsHeight.doubleValue()) > 0 ) {
+ dimensionsLength != null && dimensionsLength.setScale(0, BigDecimal.ROUND_HALF_UP).compareTo(BigDecimal.ZERO) > 0 &&
+ dimensionsWidth != null && dimensionsWidth.setScale(0, BigDecimal.ROUND_HALF_UP).compareTo(BigDecimal.ZERO) > 0 &&
+ dimensionsHeight != null && dimensionsHeight.setScale(0, BigDecimal.ROUND_HALF_UP).compareTo(BigDecimal.ZERO) > 0 ) {
shipRequestContext.put("DimensionsUnits", dimensionsUomId.equals("LEN_in") ? "IN" : "CM");
- shipRequestContext.put("DimensionsLength", "" + Math.round(dimensionsLength.doubleValue()));
- shipRequestContext.put("DimensionsWidth", "" + Math.round(dimensionsWidth.doubleValue()));
- shipRequestContext.put("DimensionsHeight", "" + Math.round(dimensionsHeight.doubleValue()));
+ shipRequestContext.put("DimensionsLength", dimensionsLength.setScale(0, BigDecimal.ROUND_HALF_UP).toString());
+ shipRequestContext.put("DimensionsWidth", dimensionsWidth.setScale(0, BigDecimal.ROUND_HALF_UP).toString());
+ shipRequestContext.put("DimensionsHeight", dimensionsHeight.setScale(0, BigDecimal.ROUND_HALF_UP).toString());
}
- shipRequestContext.put("Weight", new BigDecimal(weight.doubleValue()).setScale(1, BigDecimal.ROUND_UP).toString());
+ shipRequestContext.put("Weight", weight.setScale(1, BigDecimal.ROUND_UP).toString());
}
StringWriter outWriter = new StringWriter();
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java Sun Nov 30 22:51:11 2008
@@ -22,6 +22,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
+import java.math.MathContext;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
@@ -82,6 +83,7 @@
}
public static final int decimals = UtilNumber.getBigDecimalScale("order.decimals");
public static final int rounding = UtilNumber.getBigDecimalRoundingMode("order.rounding");
+ public static final MathContext generalRounding = new MathContext(10);
public static Map upsShipmentConfirm(DispatchContext dctx, Map context) {
Map result = new HashMap();
@@ -430,9 +432,9 @@
// I guess we'll default to inches...
UtilXml.addChildElementValue(unitOfMeasurementElement, "Code", "IN", shipmentConfirmRequestDoc);
}
- Double boxLength = shipmentBoxType.getDouble("boxLength");
- Double boxWidth = shipmentBoxType.getDouble("boxWidth");
- Double boxHeight = shipmentBoxType.getDouble("boxHeight");
+ BigDecimal boxLength = shipmentBoxType.getBigDecimal("boxLength");
+ BigDecimal boxWidth = shipmentBoxType.getBigDecimal("boxWidth");
+ BigDecimal boxHeight = shipmentBoxType.getBigDecimal("boxHeight");
UtilXml.addChildElementValue(dimensionsElement, "Length", UtilValidate.isNotEmpty(boxLength) ? ""+boxLength.intValue() : "", shipmentConfirmRequestDoc);
UtilXml.addChildElementValue(dimensionsElement, "Width", UtilValidate.isNotEmpty(boxWidth) ? ""+boxWidth.intValue() : "", shipmentConfirmRequestDoc);
UtilXml.addChildElementValue(dimensionsElement, "Height", UtilValidate.isNotEmpty(boxHeight) ? ""+boxHeight.intValue() : "", shipmentConfirmRequestDoc);
@@ -451,7 +453,7 @@
if (shipmentPackage.getString("weight") == null) {
return ServiceUtil.returnError("Weight value not found for ShipmentRouteSegment with shipmentId " + shipmentId + ", shipmentRouteSegmentId " + shipmentRouteSegmentId + ", and shipmentPackageSeqId " + shipmentPackage.getString("shipmentPackageSeqId"));
}
- Double boxWeight = shipmentPackage.getDouble("weight");
+ BigDecimal boxWeight = shipmentPackage.getBigDecimal("weight");
UtilXml.addChildElementValue(packageWeightElement, "Weight", UtilValidate.isNotEmpty(boxWeight) ? ""+boxWeight.intValue() : "", shipmentConfirmRequestDoc);
Element referenceNumberElement = UtilXml.addChildElement(packageElement, "ReferenceNumber", shipmentConfirmRequestDoc);
@@ -496,10 +498,10 @@
BigDecimal packageValue = (BigDecimal) getPackageValueResult.get("packageValue");
// Convert the value of the COD surcharge to the shipment currency, if necessary
- Map convertUomResult = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", codSurchargeCurrencyUomId, "uomIdTo", currencyCode, "originalValue", new Double(codSurchargePackageAmount.doubleValue())));
+ Map convertUomResult = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", codSurchargeCurrencyUomId, "uomIdTo", currencyCode, "originalValue", codSurchargePackageAmount));
if (ServiceUtil.isError(convertUomResult)) return convertUomResult;
if (convertUomResult.containsKey("convertedValue")) {
- codSurchargePackageAmount = new BigDecimal(((Double) convertUomResult.get("convertedValue")).doubleValue()).setScale(decimals, rounding);
+ codSurchargePackageAmount = ((BigDecimal) convertUomResult.get("convertedValue")).setScale(decimals, rounding);
}
// Add the amount of the surcharge for the package, if the surcharge should be on all packages or the first and this is the first package
@@ -646,21 +648,21 @@
}
try {
- shipmentRouteSegment.set("actualTransportCost", Double.valueOf(transportationMonetaryValue));
+ shipmentRouteSegment.set("actualTransportCost", new BigDecimal(transportationMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the transportationMonetaryValue [" + transportationMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
try {
- shipmentRouteSegment.set("actualServiceCost", Double.valueOf(serviceOptionsMonetaryValue));
+ shipmentRouteSegment.set("actualServiceCost", new BigDecimal(serviceOptionsMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the serviceOptionsMonetaryValue [" + serviceOptionsMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
try {
- shipmentRouteSegment.set("actualCost", Double.valueOf(totalMonetaryValue));
+ shipmentRouteSegment.set("actualCost", new BigDecimal(totalMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the totalMonetaryValue [" + totalMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
@@ -673,7 +675,7 @@
String billingWeightUnitOfMeasurement = UtilXml.childElementValue(billingWeightUnitOfMeasurementElement, "Code");
String billingWeight = UtilXml.childElementValue(billingWeightElement, "Weight");
try {
- shipmentRouteSegment.set("billingWeight", Double.valueOf(billingWeight));
+ shipmentRouteSegment.set("billingWeight", new BigDecimal(billingWeight));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the billingWeight [" + billingWeight + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
@@ -914,21 +916,21 @@
}
try {
- shipmentRouteSegment.set("actualTransportCost", Double.valueOf(transportationMonetaryValue));
+ shipmentRouteSegment.set("actualTransportCost", new BigDecimal(transportationMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the transportationMonetaryValue [" + transportationMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
try {
- shipmentRouteSegment.set("actualServiceCost", Double.valueOf(serviceOptionsMonetaryValue));
+ shipmentRouteSegment.set("actualServiceCost", new BigDecimal(serviceOptionsMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the serviceOptionsMonetaryValue [" + serviceOptionsMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
try {
- shipmentRouteSegment.set("actualCost", Double.valueOf(totalMonetaryValue));
+ shipmentRouteSegment.set("actualCost", new BigDecimal(totalMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the totalMonetaryValue [" + totalMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
@@ -941,7 +943,7 @@
String billingWeightUnitOfMeasurement = UtilXml.childElementValue(billingWeightUnitOfMeasurementElement, "Code");
String billingWeight = UtilXml.childElementValue(billingWeightElement, "Weight");
try {
- shipmentRouteSegment.set("billingWeight", Double.valueOf(billingWeight));
+ shipmentRouteSegment.set("billingWeight", new BigDecimal(billingWeight));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the billingWeight [" + billingWeight + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
@@ -994,7 +996,7 @@
shipmentPackageRouteSeg.set("boxNumber", "");
shipmentPackageRouteSeg.set("currencyUomId", packageServiceOptionsCurrencyCode);
try {
- shipmentPackageRouteSeg.set("packageServiceCost", Double.valueOf(packageServiceOptionsMonetaryValue));
+ shipmentPackageRouteSeg.set("packageServiceCost", new BigDecimal(packageServiceOptionsMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the packageServiceOptionsMonetaryValue [" + packageServiceOptionsMonetaryValue + "] for Package [" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
@@ -1561,7 +1563,7 @@
}
}
- private static void splitEstimatePackages(Document requestDoc, Element shipmentElement, List shippableItemInfo, double maxWeight, double minWeight) {
+ private static void splitEstimatePackages(Document requestDoc, Element shipmentElement, List shippableItemInfo, BigDecimal maxWeight, BigDecimal minWeight) {
List packages = getPackageSplit(shippableItemInfo, maxWeight);
if (UtilValidate.isNotEmpty(packages)) {
Iterator i = packages.iterator();
@@ -1573,9 +1575,9 @@
// Add a dummy package
String totalWeightStr = UtilProperties.getPropertyValue("shipment", "shipment.ups.min.estimate.weight", "1");
- double packageWeight = 1;
+ BigDecimal packageWeight = BigDecimal.ONE;
try {
- packageWeight = Double.parseDouble(totalWeightStr);
+ packageWeight = new BigDecimal(totalWeightStr);
} catch (NumberFormatException e) {
Debug.logError(e, module);
}
@@ -1587,15 +1589,15 @@
}
}
- private static void addPackageElement(Document requestDoc, Element shipmentElement, List shippableItemInfo, Map packageMap, double minWeight) {
- double packageWeight = checkForDefaultPackageWeight(calcPackageWeight(packageMap, shippableItemInfo, 0),minWeight);
+ private static void addPackageElement(Document requestDoc, Element shipmentElement, List shippableItemInfo, Map packageMap, BigDecimal minWeight) {
+ BigDecimal packageWeight = checkForDefaultPackageWeight(calcPackageWeight(packageMap, shippableItemInfo, BigDecimal.ZERO), minWeight);
Element packageElement = UtilXml.addChildElement(shipmentElement, "Package", requestDoc);
Element packagingTypeElement = UtilXml.addChildElement(packageElement, "PackagingType", requestDoc);
UtilXml.addChildElementValue(packagingTypeElement, "Code", "00", requestDoc);
UtilXml.addChildElementValue(packagingTypeElement, "Description", "Unknown PackagingType", requestDoc);
UtilXml.addChildElementValue(packageElement, "Description", "Package Description", requestDoc);
Element packageWeightElement = UtilXml.addChildElement(packageElement, "PackageWeight", requestDoc);
- UtilXml.addChildElementValue(packageWeightElement, "Weight", Double.toString(packageWeight), requestDoc);
+ UtilXml.addChildElementValue(packageWeightElement, "Weight", packageWeight.toPlainString(), requestDoc);
//If product is in shippable Package then it we should have one product per packagemap
if (packageMap.size() ==1) {
Iterator i = packageMap.keySet().iterator();
@@ -1612,7 +1614,7 @@
}
- private static void addPackageElement(Document requestDoc, Element shipmentElement, Double packageWeight) {
+ private static void addPackageElement(Document requestDoc, Element shipmentElement, BigDecimal packageWeight) {
Element packageElement = UtilXml.addChildElement(shipmentElement, "Package", requestDoc);
Element packagingTypeElement = UtilXml.addChildElement(packageElement, "PackagingType", requestDoc);
UtilXml.addChildElementValue(packagingTypeElement, "Code", "00", requestDoc);
@@ -1623,11 +1625,11 @@
}
- private static double checkForDefaultPackageWeight(double weight, double minWeight) {
- return (weight > 0 && weight > minWeight ? weight : minWeight);
+ private static BigDecimal checkForDefaultPackageWeight(BigDecimal weight, BigDecimal minWeight) {
+ return (weight.compareTo(BigDecimal.ZERO) > 0 && weight.compareTo(minWeight) > 0 ? weight : minWeight);
}
- private static List getPackageSplit(List shippableItemInfo, double maxWeight) {
+ private static List getPackageSplit(List shippableItemInfo, BigDecimal maxWeight) {
// create the package list w/ the first package
List packages = new LinkedList();
@@ -1636,28 +1638,28 @@
while (sii.hasNext()) {
Map itemInfo = (Map) sii.next();
long pieces = ((Long) itemInfo.get("piecesIncluded")).longValue();
- double totalQuantity = ((Double) itemInfo.get("quantity")).doubleValue();
- double totalWeight = ((Double) itemInfo.get("weight")).doubleValue();
+ BigDecimal totalQuantity = (BigDecimal) itemInfo.get("quantity");
+ BigDecimal totalWeight = (BigDecimal) itemInfo.get("weight");
String productId = (String) itemInfo.get("productId");
// sanity check
if (pieces < 1) {
pieces = 1; // can NEVER be less than one
}
- double weight = totalWeight / pieces;
+ BigDecimal weight = totalWeight.divide(BigDecimal.valueOf(pieces), generalRounding);
- for (int z = 1; z <= totalQuantity; z++) {
- double partialQty = pieces > 1 ? 1.000 / pieces : 1;
+ for (int z = 1; z <= totalQuantity.intValue(); z++) {
+ BigDecimal partialQty = pieces > 1 ? BigDecimal.ONE.divide(BigDecimal.valueOf(pieces), generalRounding) : BigDecimal.ONE;
for (long x = 0; x < pieces; x++) {
if(itemInfo.get("inShippingBox") != null && ((String) itemInfo.get("inShippingBox")).equalsIgnoreCase("Y")) {
Map newPackage = new HashMap();
- newPackage.put(productId, new Double(partialQty));
+ newPackage.put(productId, partialQty);
packages.add(newPackage);
- } else if (weight >= maxWeight) {
+ } else if (weight.compareTo(maxWeight) >= 0) {
Map newPackage = new HashMap();
- newPackage.put(productId, new Double(partialQty));
+ newPackage.put(productId, partialQty);
packages.add(newPackage);
- } else if (totalWeight > 0) {
+ } else if (totalWeight.compareTo(BigDecimal.ZERO) > 0) {
// create the first package
if (packages.size() == 0) {
packages.add(new HashMap());
@@ -1669,18 +1671,18 @@
for (int pi = 0; pi < packageSize; pi++) {
if (!addedToPackage) {
Map packageMap = (Map) packages.get(pi);
- double packageWeight = calcPackageWeight(packageMap, shippableItemInfo, weight);
- if (packageWeight <= maxWeight) {
- Double qtyD = (Double) packageMap.get(productId);
- double qty = qtyD == null ? 0 : qtyD.doubleValue();
- packageMap.put(productId, new Double(qty + partialQty));
+ BigDecimal packageWeight = calcPackageWeight(packageMap, shippableItemInfo, weight);
+ if (packageWeight.compareTo(maxWeight) <= 0) {
+ BigDecimal qty = (BigDecimal) packageMap.get(productId);
+ qty = qty == null ? BigDecimal.ZERO : qty;
+ packageMap.put(productId, qty.add(partialQty));
addedToPackage = true;
}
}
}
if (!addedToPackage) {
Map packageMap = new HashMap();
- packageMap.put(productId, new Double(partialQty));
+ packageMap.put(productId, partialQty);
packages.add(packageMap);
}
}
@@ -1691,17 +1693,17 @@
return packages;
}
- private static double calcPackageWeight(Map packageMap, List shippableItemInfo, double additionalWeight) {
- double totalWeight = 0.00;
+ private static BigDecimal calcPackageWeight(Map packageMap, List shippableItemInfo, BigDecimal additionalWeight) {
+ BigDecimal totalWeight = BigDecimal.ZERO;
Iterator i = packageMap.keySet().iterator();
while (i.hasNext()) {
String productId = (String) i.next();
Map productInfo = getProductItemInfo(shippableItemInfo, productId);
- double productWeight = ((Double) productInfo.get("weight")).doubleValue();
- double quantity = ((Double) packageMap.get(productId)).doubleValue();
- totalWeight += (productWeight * quantity);
+ BigDecimal productWeight = (BigDecimal) productInfo.get("weight");
+ BigDecimal quantity = (BigDecimal) packageMap.get(productId);
+ totalWeight = totalWeight.add(productWeight.multiply(quantity));
}
- return totalWeight + additionalWeight;
+ return totalWeight.add(additionalWeight);
}
private static Map getProductItemInfo(List shippableItemInfo, String productId) {
@@ -1736,7 +1738,7 @@
if ("1".equals(responseStatusCode)) {
List rates = UtilXml.childElementList(rateResponseElement, "RatedShipment");
Map rateMap = new HashMap();
- Double firstRate = null;
+ BigDecimal firstRate = null;
if (rates == null || rates.size() == 0) {
return ServiceUtil.returnError("No rates available at this time");
} else {
@@ -1752,9 +1754,9 @@
Element totalCharges = UtilXml.firstChildElement(element, "TotalCharges");
String totalString = UtilXml.childElementValue(totalCharges, "MonetaryValue");
- rateMap.put(serviceCode, new Double(totalString));
+ rateMap.put(serviceCode, new BigDecimal(totalString));
if (firstRate == null) {
- firstRate = (Double) rateMap.get(serviceCode);
+ firstRate = (BigDecimal) rateMap.get(serviceCode);
}
}
}
@@ -1918,9 +1920,9 @@
String shippingCountryCode = (String) context.get("shippingCountryCode");
List packageWeights = (List) context.get("packageWeights");
List shippableItemInfo = (List) context.get("shippableItemInfo");
- Double shippableTotal = (Double) context.get("shippableTotal");
- Double shippableQuantity = (Double) context.get("shippableQuantity");
- Double shippableWeight = (Double) context.get("shippableWeight");
+ BigDecimal shippableTotal = (BigDecimal) context.get("shippableTotal");
+ BigDecimal shippableQuantity = (BigDecimal) context.get("shippableQuantity");
+ BigDecimal shippableWeight = (BigDecimal) context.get("shippableWeight");
String isResidentialAddress = (String)context.get("isResidentialAddress");
// Important: DO NOT returnError here or you could trigger a transaction rollback and break other services.
@@ -1929,13 +1931,13 @@
}
if (shippableTotal == null) {
- shippableTotal = new Double(0.00);
+ shippableTotal = BigDecimal.ZERO;
}
if (shippableQuantity == null) {
- shippableQuantity = new Double(0.00);
+ shippableQuantity = BigDecimal.ZERO;
}
if (shippableWeight == null) {
- shippableWeight = new Double(0.00);
+ shippableWeight = BigDecimal.ZERO;
}
if (serviceConfigProps == null) {
serviceConfigProps = "shipment.properties";
@@ -2036,18 +2038,18 @@
// package info
String maxWeightStr = UtilProperties.getPropertyValue(serviceConfigProps, "shipment.ups.max.estimate.weight", "99");
- double maxWeight = 99;
+ BigDecimal maxWeight = new BigDecimal("99");
try {
- maxWeight = Double.parseDouble(maxWeightStr);
+ maxWeight = new BigDecimal(maxWeightStr);
} catch (NumberFormatException e) {
- maxWeight = 99;
+ maxWeight = new BigDecimal("99");
}
String minWeightStr = UtilProperties.getPropertyValue(serviceConfigProps, "shipment.ups.min.estimate.weight", ".1");
- double minWeight = .1;
+ BigDecimal minWeight = new BigDecimal("0.1");
try {
- minWeight = Double.parseDouble(minWeightStr);
+ minWeight = new BigDecimal(minWeightStr);
} catch (NumberFormatException e) {
- minWeight = .1;
+ minWeight = new BigDecimal("0.1");
}
// Passing in a list of package weights overrides the calculation of same via shippableItemInfo
@@ -2057,7 +2059,7 @@
} else {
Iterator i = packageWeights.iterator();
while (i.hasNext()) {
- Double packageWeight = (Double) i.next();
+ BigDecimal packageWeight = (BigDecimal) i.next();
addPackageElement(rateRequestDoc, shipmentElement, packageWeight);
}
}
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/usps/UspsServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/usps/UspsServices.java?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/usps/UspsServices.java (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/src/org/ofbiz/shipment/thirdparty/usps/UspsServices.java Sun Nov 30 22:51:11 2008
@@ -24,6 +24,7 @@
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
+import java.math.MathContext;
import java.text.DecimalFormat;
import java.util.*;
@@ -58,13 +59,15 @@
public final static String module = UspsServices.class.getName();
public final static String errorResource = "ProductErrorUiLabels";
+ public static final MathContext generalRounding = new MathContext(10);
+
public static Map uspsRateInquire(DispatchContext dctx, Map context) {
GenericDelegator delegator = dctx.getDelegator();
// check for 0 weight
- Double shippableWeight = (Double) context.get("shippableWeight");
- if (shippableWeight.doubleValue() == 0) {
+ BigDecimal shippableWeight = (BigDecimal) context.get("shippableWeight");
+ if (shippableWeight.compareTo(BigDecimal.ZERO) == 0) {
// TODO: should we return an error, or $0.00 ?
return ServiceUtil.returnFailure("shippableWeight must be greater than 0");
}
@@ -127,14 +130,14 @@
Document requestDocument = createUspsRequestDocument("RateV2Request");
// TODO: 70 lb max is valid for Express, Priority and Parcel only - handle other methods
- double maxWeight = 70;
+ BigDecimal maxWeight = new BigDecimal("70");
String maxWeightStr = UtilProperties.getPropertyValue((String) context.get("serviceConfigProps"),
"shipment.usps.max.estimate.weight", "70");
try {
- maxWeight = Double.parseDouble(maxWeightStr);
+ maxWeight = new BigDecimal(maxWeightStr);
} catch (NumberFormatException e) {
Debug.logWarning("Error parsing max estimate weight string [" + maxWeightStr + "], using default instead", module);
- maxWeight = 70;
+ maxWeight = new BigDecimal("70");
}
List shippableItemInfo = (List) context.get("shippableItemInfo");
@@ -144,8 +147,8 @@
for (ListIterator li = packages.listIterator(); li.hasNext();) {
Map packageMap = (Map) li.next();
- double packageWeight = isOnePackage ? shippableWeight.doubleValue() : calcPackageWeight(dctx, packageMap, shippableItemInfo, 0);
- if (packageWeight == 0) {
+ BigDecimal packageWeight = isOnePackage ? shippableWeight : calcPackageWeight(dctx, packageMap, shippableItemInfo, BigDecimal.ZERO);
+ if (packageWeight.compareTo(BigDecimal.ZERO) == 0) {
continue;
}
@@ -156,13 +159,13 @@
UtilXml.addChildElementValue(packageElement, "ZipOrigination", originationZip.substring(0,5), requestDocument);
UtilXml.addChildElementValue(packageElement, "ZipDestination", destinationZip.substring(0,5), requestDocument);
- double weightPounds = Math.floor(packageWeight);
+ BigDecimal weightPounds = packageWeight.setScale(0, BigDecimal.ROUND_FLOOR);
// for Parcel post, the weight must be at least 1 lb
- if ("PARCEL".equals(serviceCode.toUpperCase()) && (weightPounds < 1.0)) {
- weightPounds = 1.0;
- packageWeight = 0.0;
+ if ("PARCEL".equals(serviceCode.toUpperCase()) && (weightPounds.compareTo(BigDecimal.ONE) < 0)) {
+ weightPounds = BigDecimal.ONE;
+ packageWeight = BigDecimal.ZERO;
}
- double weightOunces = Math.ceil(packageWeight * 16 % 16);
+ BigDecimal weightOunces = packageWeight.multiply(new BigDecimal("16")).remainder(new BigDecimal("16")).setScale(0, BigDecimal.ROUND_CEILING);
DecimalFormat df = new DecimalFormat("#"); // USPS only accepts whole numbers like 1 and not 1.0
UtilXml.addChildElementValue(packageElement, "Pounds", df.format(weightPounds), requestDocument);
UtilXml.addChildElementValue(packageElement, "Ounces", df.format(weightOunces), requestDocument);
@@ -199,24 +202,24 @@
return ServiceUtil.returnError("No rate available at this time");
}
- double estimateAmount = 0.00;
+ BigDecimal estimateAmount = BigDecimal.ZERO;
for (Iterator i = rates.iterator(); i.hasNext();) {
Element packageElement = (Element) i.next();
try {
Element postageElement = UtilXml.firstChildElement(packageElement, "Postage");
- double packageAmount = Double.parseDouble(UtilXml.childElementValue(postageElement, "Rate"));
- estimateAmount += packageAmount;
+ BigDecimal packageAmount = new BigDecimal(UtilXml.childElementValue(postageElement, "Rate"));
+ estimateAmount = estimateAmount.add(packageAmount);
} catch (NumberFormatException e) {
Debug.log(e, module);
}
}
Map result = ServiceUtil.returnSuccess();
- result.put("shippingEstimateAmount", new Double(estimateAmount));
+ result.put("shippingEstimateAmount", estimateAmount);
return result;
}
- private static List getPackageSplit(DispatchContext dctx, List shippableItemInfo, double maxWeight) {
+ private static List getPackageSplit(DispatchContext dctx, List shippableItemInfo, BigDecimal maxWeight) {
// create the package list w/ the first pacakge
List packages = FastList.newInstance();
@@ -225,24 +228,24 @@
while (sii.hasNext()) {
Map itemInfo = (Map) sii.next();
long pieces = ((Long) itemInfo.get("piecesIncluded")).longValue();
- double totalQuantity = ((Double) itemInfo.get("quantity")).doubleValue();
- double totalWeight = ((Double) itemInfo.get("weight")).doubleValue();
+ BigDecimal totalQuantity = (BigDecimal) itemInfo.get("quantity");
+ BigDecimal totalWeight = (BigDecimal) itemInfo.get("weight");
String productId = (String) itemInfo.get("productId");
// sanity check
if (pieces < 1) {
pieces = 1; // can NEVER be less than one
}
- double weight = totalWeight / pieces;
+ BigDecimal weight = totalWeight.divide(BigDecimal.valueOf(pieces), generalRounding);
- for (int z = 1; z <= totalQuantity; z++) {
- double partialQty = pieces > 1 ? 1.000 / pieces : 1;
+ for (int z = 1; z <= totalQuantity.intValue(); z++) {
+ BigDecimal partialQty = pieces > 1 ? BigDecimal.ONE.divide(BigDecimal.valueOf(pieces), generalRounding) : BigDecimal.ONE;
for (long x = 0; x < pieces; x++) {
- if (weight >= maxWeight) {
+ if (weight.compareTo(maxWeight) >= 0) {
Map newPackage = new HashMap();
- newPackage.put(productId, new Double(partialQty));
+ newPackage.put(productId, partialQty);
packages.add(newPackage);
- } else if (totalWeight > 0) {
+ } else if (totalWeight.compareTo(BigDecimal.ZERO) > 0) {
// create the first package
if (packages.size() == 0) {
packages.add(new HashMap());
@@ -254,18 +257,18 @@
for (int pi = 0; pi < packageSize; pi++) {
if (!addedToPackage) {
Map packageMap = (Map) packages.get(pi);
- double packageWeight = calcPackageWeight(dctx, packageMap, shippableItemInfo, weight);
- if (packageWeight <= maxWeight) {
- Double qtyD = (Double) packageMap.get(productId);
- double qty = qtyD == null ? 0 : qtyD.doubleValue();
- packageMap.put(productId, new Double(qty + partialQty));
+ BigDecimal packageWeight = calcPackageWeight(dctx, packageMap, shippableItemInfo, weight);
+ if (packageWeight.compareTo(maxWeight) <= 0) {
+ BigDecimal qty = (BigDecimal) packageMap.get(productId);
+ qty = qty == null ? BigDecimal.ZERO : qty;
+ packageMap.put(productId, qty.add(partialQty));
addedToPackage = true;
}
}
}
if (!addedToPackage) {
Map packageMap = new HashMap();
- packageMap.put(productId, new Double(partialQty));
+ packageMap.put(productId, partialQty);
packages.add(packageMap);
}
}
@@ -276,10 +279,10 @@
return packages;
}
- private static double calcPackageWeight(DispatchContext dctx, Map packageMap, List shippableItemInfo, double additionalWeight) {
+ private static BigDecimal calcPackageWeight(DispatchContext dctx, Map packageMap, List shippableItemInfo, BigDecimal additionalWeight) {
LocalDispatcher dispatcher = dctx.getDispatcher();
- double totalWeight = 0.00;
+ BigDecimal totalWeight = BigDecimal.ZERO;
String defaultWeightUomId = UtilProperties.getPropertyValue("shipment.properties", "shipment.default.weight.uom");
if (UtilValidate.isEmpty(defaultWeightUomId)) {
Debug.logWarning("No shipment.default.weight.uom set in shipment.properties, setting it to WT_oz for USPS", module);
@@ -290,8 +293,8 @@
while (i.hasNext()) {
String productId = (String) i.next();
Map productInfo = getProductItemInfo(shippableItemInfo, productId);
- double productWeight = ((Double) productInfo.get("weight")).doubleValue();
- double quantity = ((Double) packageMap.get(productId)).doubleValue();
+ BigDecimal productWeight = (BigDecimal) productInfo.get("weight");
+ BigDecimal quantity = (BigDecimal) packageMap.get(productId);
// DLK - I'm not sure if this line is working. shipment_package seems to leave this value null so???
String weightUomId = (String) productInfo.get("weight_uom_id");
@@ -306,23 +309,23 @@
// attempt a conversion to pounds
Map result = new HashMap();
try {
- result = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", weightUomId, "uomIdTo", "WT_lb", "originalValue", new Double(productWeight)));
+ result = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", weightUomId, "uomIdTo", "WT_lb", "originalValue", productWeight));
} catch (GenericServiceException ex) {
Debug.logError(ex, module);
}
if (result.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_SUCCESS) && result.get("convertedValue") != null) {
- productWeight = ((Double) result.get("convertedValue")).doubleValue();
+ productWeight = (BigDecimal) result.get("convertedValue");
} else {
Debug.logError("Unsupported weightUom [" + weightUomId + "] for calcPackageWeight running productId " + productId + ", could not find a conversion factor to WT_lb",module);
}
}
- totalWeight += (productWeight * quantity);
+ totalWeight = totalWeight.add(productWeight.multiply(quantity));
}
Debug.logInfo("Package Weight : " + String.valueOf(totalWeight) + " lbs.", module);
- return totalWeight + additionalWeight;
+ return totalWeight.add(additionalWeight);
}
// lifted from UpsServices with no changes - 2004.09.06 JFE
@@ -866,7 +869,7 @@
return ServiceUtil.returnError("No packages found for ShipmentRouteSegment " + srsKeyString);
}
- double actualTransportCost = 0;
+ BigDecimal actualTransportCost = BigDecimal.ZERO;
String carrierDeliveryZone = null;
String carrierRestrictionCodes = null;
@@ -901,9 +904,9 @@
return ServiceUtil.returnError("weight not found for ShipmentPackage " + spKeyString);
}
- double weight = 0;
+ BigDecimal weight = BigDecimal.ZERO;
try {
- weight = Double.parseDouble(weightStr);
+ weight = new BigDecimal(weightStr);
} catch (NumberFormatException nfe) {
nfe.printStackTrace(); // TODO: handle exception
}
@@ -916,13 +919,13 @@
// attempt a conversion to pounds
Map result = new HashMap();
try {
- result = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", weightUomId, "uomIdTo", "WT_lb", "originalValue", new Double(weight)));
+ result = dispatcher.runSync("convertUom", UtilMisc.<String, Object>toMap("uomId", weightUomId, "uomIdTo", "WT_lb", "originalValue", weight));
} catch (GenericServiceException ex) {
return ServiceUtil.returnError(ex.getMessage());
}
if (result.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_SUCCESS) && result.get("convertedValue") != null) {
- weight *= ((Double) result.get("convertedValue")).doubleValue();
+ weight = weight.multiply((BigDecimal) result.get("convertedValue"));
} else {
return ServiceUtil.returnError("Unsupported weightUom [" + weightUomId + "] for ShipmentPackage " +
spKeyString + ", could not find a conversion factor for WT_lb");
@@ -930,8 +933,8 @@
}
- double weightPounds = Math.floor(weight);
- double weightOunces = Math.ceil(weight * 16 % 16);
+ BigDecimal weightPounds = weight.setScale(0, BigDecimal.ROUND_FLOOR);
+ BigDecimal weightOunces = weight.multiply(new BigDecimal("16")).remainder(new BigDecimal("16")).setScale(0, BigDecimal.ROUND_CEILING);
DecimalFormat df = new DecimalFormat("#");
UtilXml.addChildElementValue(packageElement, "Pounds", df.format(weightPounds), requestDocument);
@@ -997,13 +1000,13 @@
"missing or empty Postage element");
}
- double postage = 0;
+ BigDecimal postage = BigDecimal.ZERO;
try {
- postage = Double.parseDouble(postageString);
+ postage = new BigDecimal(postageString);
} catch (NumberFormatException nfe) {
nfe.printStackTrace(); // TODO: handle exception
}
- actualTransportCost += postage;
+ actualTransportCost = actualTransportCost.add(postage);
shipmentPackageRouteSeg.setString("packageTransportCost", postageString);
shipmentPackageRouteSeg.store();
@@ -1187,9 +1190,9 @@
return ServiceUtil.returnError("weight not found for ShipmentPackage " + spKeyString);
}
- double weight = 0;
+ BigDecimal weight = BigDecimal.ZERO;
try {
- weight = Double.parseDouble(weightStr);
+ weight = new BigDecimal(weightStr);
} catch (NumberFormatException nfe) {
nfe.printStackTrace(); // TODO: handle exception
}
@@ -1207,11 +1210,11 @@
return ServiceUtil.returnError("Unsupported weightUom [" + weightUomId + "] for ShipmentPackage " +
spKeyString + ", could not find a conversion factor for WT_oz");
}
- weight *= uomConversion.getDouble("conversionFactor").doubleValue();
+ weight = weight.multiply(uomConversion.getBigDecimal("conversionFactor"));
}
DecimalFormat df = new DecimalFormat("#");
- UtilXml.addChildElementValue(requestElement, "WeightInOunces", df.format(Math.ceil(weight)), requestDocument);
+ UtilXml.addChildElementValue(requestElement, "WeightInOunces", df.format(weight.setScale(0, BigDecimal.ROUND_CEILING)), requestDocument);
UtilXml.addChildElementValue(requestElement, "ServiceType", serviceType, requestDocument);
UtilXml.addChildElementValue(requestElement, "ImageType", "TIF", requestDocument);
Modified: ofbiz/branches/typecheckcleanup200810/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductQuickAdmin.groovy
URL: http://svn.apache.org/viewvc/ofbiz/branches/typecheckcleanup200810/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductQuickAdmin.groovy?rev=721986&r1=721985&r2=721986&view=diff
==============================================================================
--- ofbiz/branches/typecheckcleanup200810/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductQuickAdmin.groovy (original)
+++ ofbiz/branches/typecheckcleanup200810/applications/product/webapp/catalog/WEB-INF/actions/product/EditProductQuickAdmin.groovy Sun Nov 30 22:51:11 2008
@@ -93,10 +93,10 @@
featureSalesThru = [:];
featureThruDate = [:];
selFeatureDesc = [:];
-Double floz = null;
-Double ml = null;
-Double ntwt = null;
-Double grams = null;
+BigDecimal floz = null;
+BigDecimal ml = null;
+BigDecimal ntwt = null;
+BigDecimal grams = null;
String hazmat = "nbsp;";
String salesthru = null;
String thrudate = null;
@@ -169,7 +169,7 @@
prodFeaturesFiltered = EntityUtil.filterByAnd(productFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'VLIQ_ozUS']);
if (prodFeaturesFiltered) {
try {
- floz = ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified");
+ floz = ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified");
} catch (Exception e) {
floz = null;
}
@@ -178,7 +178,7 @@
prodFeaturesFiltered = EntityUtil.filterByAnd(productFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'VLIQ_ml']);
if (prodFeaturesFiltered) {
try {
- ml = ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified");
+ ml = ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified");
} catch (Exception e) {
ml = null;
}
@@ -187,7 +187,7 @@
prodFeaturesFiltered = EntityUtil.filterByAnd(productFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'WT_g']);
if (prodFeaturesFiltered) {
try {
- grams = ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified");
+ grams = ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified");
} catch (Exception e) {
grams = null;
}
@@ -196,7 +196,7 @@
prodFeaturesFiltered = EntityUtil.filterByAnd(productFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'WT_oz']);
if (prodFeaturesFiltered) {
try {
- ntwt = ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified");
+ ntwt = ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified");
} catch (Exception e) {
ntwt = null;
}
@@ -239,19 +239,19 @@
assocProductFeatureAndAppls = assocProduct.getRelated("ProductFeatureAndAppl");
prodFeaturesFiltered = EntityUtil.filterByAnd(assocProductFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'VLIQ_ozUS']);
if (prodFeaturesFiltered) {
- featureFloz.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified"));
+ featureFloz.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified"));
}
prodFeaturesFiltered = EntityUtil.filterByAnd(assocProductFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'VLIQ_ml']);
if (prodFeaturesFiltered) {
- featureMl.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified"));
+ featureMl.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified"));
}
prodFeaturesFiltered = EntityUtil.filterByAnd(assocProductFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'WT_g']);
if (prodFeaturesFiltered) {
- featureGrams.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified"));
+ featureGrams.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified"));
}
prodFeaturesFiltered = EntityUtil.filterByAnd(assocProductFeatureAndAppls, [productFeatureTypeId : 'AMOUNT', uomId : 'WT_oz']);
if (prodFeaturesFiltered) {
- featureNtwt.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getDouble("numberSpecified"));
+ featureNtwt.put(assocProduct.productId, ((GenericValue)prodFeaturesFiltered.get(0)).getBigDecimal("numberSpecified"));
}
prodFeaturesFiltered = EntityUtil.filterByAnd(assocProductFeatureAndAppls, [productFeatureTypeId : 'HAZMAT']);
if (prodFeaturesFiltered) {