📄 upsservices.java
字号:
}
}
try {
shipmentRouteSegment.set("actualTransportCost", Double.valueOf(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));
} 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));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the totalMonetaryValue [" + totalMonetaryValue + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
// handle BillingWeight element info
Element billingWeightElement = UtilXml.firstChildElement(shipmentResultsElement, "BillingWeight");
Element billingWeightUnitOfMeasurementElement = UtilXml.firstChildElement(billingWeightElement, "UnitOfMeasurement");
String billingWeightUnitOfMeasurement = UtilXml.childElementValue(billingWeightUnitOfMeasurementElement, "Code");
String billingWeight = UtilXml.childElementValue(billingWeightElement, "Weight");
try {
shipmentRouteSegment.set("billingWeight", Double.valueOf(billingWeight));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the billingWeight [" + billingWeight + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
shipmentRouteSegment.set("billingWeightUomId", unitsUpsToOfbiz.get(billingWeightUnitOfMeasurement));
// store the ShipmentIdentificationNumber and ShipmentDigest
String shipmentIdentificationNumber = UtilXml.childElementValue(shipmentResultsElement, "ShipmentIdentificationNumber");
// should compare to trackingIdNumber, should always be the same right?
shipmentRouteSegment.set("trackingIdNumber", shipmentIdentificationNumber);
// set ShipmentRouteSegment carrierServiceStatusId after each UPS service applicable
shipmentRouteSegment.put("carrierServiceStatusId", "SHRSCS_ACCEPTED");
// write/store modified value object
shipmentRouteSegment.store();
// now process the PackageResults elements
List packageResultsElements = UtilXml.childElementList(shipmentResultsElement, "PackageResults");
Iterator packageResultsElementIter = packageResultsElements.iterator();
Iterator shipmentPackageRouteSegIter = shipmentPackageRouteSegs.iterator();
while (packageResultsElementIter.hasNext()) {
Element packageResultsElement = (Element) packageResultsElementIter.next();
String trackingNumber = UtilXml.childElementValue(packageResultsElement, "TrackingNumber");
Element packageServiceOptionsChargesElement = UtilXml.firstChildElement(packageResultsElement, "ServiceOptionsCharges");
String packageServiceOptionsCurrencyCode = UtilXml.childElementValue(packageServiceOptionsChargesElement, "CurrencyCode");
String packageServiceOptionsMonetaryValue = UtilXml.childElementValue(packageServiceOptionsChargesElement, "MonetaryValue");
Element packageLabelImageElement = UtilXml.firstChildElement(packageResultsElement, "LabelImage");
Element packageLabelImageFormatElement = UtilXml.firstChildElement(packageResultsElement, "LabelImageFormat");
// will be EPL or GIF, should always be GIF since that is what we requested
String packageLabelImageFormatCode = UtilXml.childElementValue(packageLabelImageFormatElement, "Code");
String packageLabelImageFormatDescription = UtilXml.childElementValue(packageLabelImageFormatElement, "Description");
String packageLabelGraphicImageString = UtilXml.childElementValue(packageLabelImageElement, "GraphicImage");
String packageLabelInternationalSignatureGraphicImageString = UtilXml.childElementValue(packageLabelImageElement, "InternationalSignatureGraphicImage");
String packageLabelHTMLImageString = UtilXml.childElementValue(packageLabelImageElement, "HTMLImage");
if (!shipmentPackageRouteSegIter.hasNext()) {
errorList.add("Error: More PackageResults were returned than there are Packages on this Shipment; the TrackingNumber is [" + trackingNumber + "], the ServiceOptionsCharges were " + packageServiceOptionsMonetaryValue + packageServiceOptionsCurrencyCode);
// NOTE: if this happens much we should just create a new package to store all of the info...
continue;
}
//NOTE: I guess they come back in the same order we sent them, so we'll get the packages in order and off we go...
GenericValue shipmentPackageRouteSeg = (GenericValue) shipmentPackageRouteSegIter.next();
shipmentPackageRouteSeg.set("trackingCode", trackingNumber);
shipmentPackageRouteSeg.set("boxNumber", "");
shipmentPackageRouteSeg.set("currencyUomId", packageServiceOptionsCurrencyCode);
try {
shipmentPackageRouteSeg.set("packageServiceCost", Double.valueOf(packageServiceOptionsMonetaryValue));
} catch (NumberFormatException e) {
String excErrMsg = "Error parsing the packageServiceOptionsMonetaryValue [" + packageServiceOptionsMonetaryValue + "] for Package [" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + "]: " + e.toString();
Debug.logError(e, excErrMsg, module);
errorList.add(excErrMsg);
}
byte[] labelImageBytes = null;
if (packageLabelGraphicImageString != null) {
labelImageBytes = Base64.base64Decode(packageLabelGraphicImageString.getBytes());
shipmentPackageRouteSeg.setBytes("labelImage", labelImageBytes);
}
byte[] labelInternationalSignatureGraphicImageBytes = null;
if (packageLabelInternationalSignatureGraphicImageString != null) {
labelInternationalSignatureGraphicImageBytes = Base64.base64Decode(packageLabelInternationalSignatureGraphicImageString.getBytes());
shipmentPackageRouteSeg.set("labelIntlSignImage", labelInternationalSignatureGraphicImageBytes);
}
String packageLabelHTMLImageStringDecoded = Base64.base64Decode(packageLabelHTMLImageString);
shipmentPackageRouteSeg.set("labelHtml", packageLabelHTMLImageStringDecoded);
if (shipmentUpsSaveCertificationInfo) {
if (labelImageBytes != null) {
String outFileName = shipmentUpsSaveCertificationPath + "/UpsShipmentLabelImage" + shipmentRouteSegment.getString("shipmentId") + "_" + shipmentRouteSegment.getString("shipmentRouteSegmentId") + "_" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + ".gif";
try {
FileOutputStream fileOut = new FileOutputStream(outFileName);
fileOut.write(labelImageBytes);
fileOut.flush();
fileOut.close();
} catch (IOException e) {
Debug.log(e, "Could not save UPS LabelImage GIF file: [[[" + packageLabelGraphicImageString + "]]] to file: " + outFileName, module);
}
}
if (labelInternationalSignatureGraphicImageBytes != null) {
String outFileName = shipmentUpsSaveCertificationPath + "/UpsShipmentLabelIntlSignImage" + shipmentRouteSegment.getString("shipmentId") + "_" + shipmentRouteSegment.getString("shipmentRouteSegmentId") + "_" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + ".gif";
try {
FileOutputStream fileOut = new FileOutputStream(outFileName);
fileOut.write(labelInternationalSignatureGraphicImageBytes);
fileOut.flush();
fileOut.close();
} catch (IOException e) {
Debug.log(e, "Could not save UPS IntlSign LabelImage GIF file: [[[" + packageLabelInternationalSignatureGraphicImageString + "]]] to file: " + outFileName, module);
}
}
if (packageLabelHTMLImageStringDecoded != null) {
String outFileName = shipmentUpsSaveCertificationPath + "/UpsShipmentLabelHTMLImage" + shipmentRouteSegment.getString("shipmentId") + "_" + shipmentRouteSegment.getString("shipmentRouteSegmentId") + "_" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + ".html";
try {
FileOutputStream fileOut = new FileOutputStream(outFileName);
fileOut.write(packageLabelHTMLImageStringDecoded.getBytes());
fileOut.flush();
fileOut.close();
} catch (IOException e) {
Debug.log(e, "Could not save UPS LabelImage HTML file: [[[" + packageLabelHTMLImageStringDecoded + "]]] to file: " + outFileName, module);
}
}
}
shipmentPackageRouteSeg.store();
}
if (shipmentPackageRouteSegIter.hasNext()) {
errorList.add("Error: There are more Packages on this Shipment than there were PackageResults returned from UPS");
while (shipmentPackageRouteSegIter.hasNext()) {
GenericValue shipmentPackageRouteSeg = (GenericValue) shipmentPackageRouteSegIter.next();
errorList.add("Error: No PackageResults were returned for the Package [" + shipmentPackageRouteSeg.getString("shipmentPackageSeqId") + "]");
}
}
// -=-=-=- Okay, now done with that, just return any extra info...
StringBuffer successString = new StringBuffer("The UPS ShipmentAccept succeeded");
if (errorList.size() > 0) {
// this shouldn't happen much, but handle it anyway
successString.append(", but the following occurred: ");
Iterator errorListIter = errorList.iterator();
while (errorListIter.hasNext()) {
String errorMsg = (String) errorListIter.next();
successString.append(errorMsg);
if (errorListIter.hasNext()) {
successString.append(", ");
}
}
}
return ServiceUtil.returnSuccess(successString.toString());
} else {
errorList.add(0, "The UPS ShipmentConfirm failed");
return ServiceUtil.returnError(errorList);
}
}
public static Map upsVoidShipment(DispatchContext dctx, Map context) {
Map result = new HashMap();
GenericDelegator delegator = dctx.getDelegator();
String shipmentId = (String) context.get("shipmentId");
String shipmentRouteSegmentId = (String) context.get("shipmentRouteSegmentId");
boolean shipmentUpsSaveCertificationInfo = "true".equals(UtilProperties.getPropertyValue("shipment", "shipment.ups.save.certification.info"));
String shipmentUpsSaveCertificationPath = UtilProperties.getPropertyValue("shipment", "shipment.ups.save.certification.path");
File shipmentUpsSaveCertificationFile = null;
if (shipmentUpsSaveCertificationInfo) {
shipmentUpsSaveCertificationFile = new File(shipmentUpsSaveCertificationPath);
if (!shipmentUpsSaveCertificationFile.exists()) {
shipmen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -