📄 upsservices.java
字号:
} 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()) { shipmentUpsSaveCertificationFile.mkdirs(); } } String voidShipmentResponseString = null; try { GenericValue shipment = delegator.findByPrimaryKey("Shipment", UtilMisc.toMap("shipmentId", shipmentId)); GenericValue shipmentRouteSegment = delegator.findByPrimaryKey("ShipmentRouteSegment", UtilMisc.toMap("shipmentId", shipmentId, "shipmentRouteSegmentId", shipmentRouteSegmentId)); if (!"UPS".equals(shipmentRouteSegment.getString("carrierPartyId"))) { return ServiceUtil.returnError("ERROR: The Carrier for ShipmentRouteSegment " + shipmentRouteSegmentId + " of Shipment " + shipmentId + ", is not UPS."); } // add ShipmentRouteSegment carrierServiceStatusId, check before all UPS services if (!"SHRSCS_CONFIRMED".equals(shipmentRouteS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -