⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upsservices.java

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                shipmentUpsSaveCertificationFile.mkdirs();            }        }        String shipmentAcceptResponseString = 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(shipmentRouteSegment.getString("carrierServiceStatusId"))) {                return ServiceUtil.returnError("ERROR: The Carrier Service Status for ShipmentRouteSegment " + shipmentRouteSegmentId + " of Shipment " + shipmentId + ", is [" + shipmentRouteSegment.getString("carrierServiceStatusId") + "], but must be [SHRSCS_CONFIRMED] to perform the UPS Shipment Accept operation.");            }                        List shipmentPackageRouteSegs = shipmentRouteSegment.getRelated("ShipmentPackageRouteSeg", null, UtilMisc.toList("+shipmentPackageSeqId"));            if (shipmentPackageRouteSegs == null || shipmentPackageRouteSegs.size() == 0) {                return ServiceUtil.returnError("No ShipmentPackageRouteSegs found for ShipmentRouteSegment with shipmentId " + shipmentId + " and shipmentRouteSegmentId " + shipmentRouteSegmentId);            }                        if (UtilValidate.isEmpty(shipmentRouteSegment.getString("trackingDigest"))) {                return ServiceUtil.returnError("ERROR: The trackingDigest was not set for this Route Segment, meaning that a UPS shipment confirm has not been done.");            }            Document shipmentAcceptRequestDoc = UtilXml.makeEmptyXmlDocument("ShipmentAcceptRequest");            Element shipmentAcceptRequestElement = shipmentAcceptRequestDoc.getDocumentElement();            shipmentAcceptRequestElement.setAttribute("xml:lang", "en-US");            // Top Level Element: Request            Element requestElement = UtilXml.addChildElement(shipmentAcceptRequestElement, "Request", shipmentAcceptRequestDoc);            Element transactionReferenceElement = UtilXml.addChildElement(requestElement, "TransactionReference", shipmentAcceptRequestDoc);            UtilXml.addChildElementValue(transactionReferenceElement, "CustomerContext", "ShipAccept / 01", shipmentAcceptRequestDoc);            UtilXml.addChildElementValue(transactionReferenceElement, "XpciVersion", "1.0001", shipmentAcceptRequestDoc);            UtilXml.addChildElementValue(requestElement, "RequestAction", "ShipAccept", shipmentAcceptRequestDoc);            UtilXml.addChildElementValue(requestElement, "RequestOption", "01", shipmentAcceptRequestDoc);            UtilXml.addChildElementValue(shipmentAcceptRequestElement, "ShipmentDigest", shipmentRouteSegment.getString("trackingDigest"), shipmentAcceptRequestDoc);                                    String shipmentAcceptRequestString = null;            try {                shipmentAcceptRequestString = UtilXml.writeXmlDocument(shipmentAcceptRequestDoc);            } catch (IOException e) {                String ioeErrMsg = "Error writing the ShipmentAcceptRequest XML Document to a String: " + e.toString();                Debug.logError(e, ioeErrMsg, module);                return ServiceUtil.returnError(ioeErrMsg);            }                        // create AccessRequest XML doc            Document accessRequestDocument = createAccessRequestDocument();            String accessRequestString = null;            try {                accessRequestString = UtilXml.writeXmlDocument(accessRequestDocument);            } catch (IOException e) {                String ioeErrMsg = "Error writing the AccessRequest XML Document to a String: " + e.toString();                Debug.logError(e, ioeErrMsg, module);                return ServiceUtil.returnError(ioeErrMsg);            }                        // connect to UPS server, send AccessRequest to auth            // send ShipmentConfirmRequest String            // get ShipmentConfirmResponse String back            StringBuffer xmlString = new StringBuffer();            // TODO: note that we may have to append <?xml version="1.0"?> before each string            xmlString.append(accessRequestString);            xmlString.append(shipmentAcceptRequestString);                        if (shipmentUpsSaveCertificationInfo) {                String outFileName = shipmentUpsSaveCertificationPath + "/UpsShipmentAcceptRequest" + shipmentId + "_" + shipmentRouteSegment.getString("shipmentRouteSegmentId") + ".xml";                try {                    FileOutputStream fileOut = new FileOutputStream(outFileName);                    fileOut.write(xmlString.toString().getBytes());                    fileOut.flush();                    fileOut.close();                } catch (IOException e) {                    Debug.log(e, "Could not save UPS XML file: [[[" + xmlString.toString() + "]]] to file: " + outFileName, module);                }            }                        try {                shipmentAcceptResponseString = sendUpsRequest("ShipAccept", xmlString.toString());            } catch (UpsConnectException e) {                String uceErrMsg = "Error sending UPS request for UPS Service ShipAccept: " + e.toString();                Debug.logError(e, uceErrMsg, module);                return ServiceUtil.returnError(uceErrMsg);            }            if (shipmentUpsSaveCertificationInfo) {                String outFileName = shipmentUpsSaveCertificationPath + "/UpsShipmentAcceptResponse" + shipmentId + "_" + shipmentRouteSegment.getString("shipmentRouteSegmentId") + ".xml";                try {                    FileOutputStream fileOut = new FileOutputStream(outFileName);                    fileOut.write(shipmentAcceptResponseString.getBytes());                    fileOut.flush();                    fileOut.close();                } catch (IOException e) {                    Debug.log(e, "Could not save UPS XML file: [[[" + xmlString.toString() + "]]] to file: " + outFileName, module);                }            }                        Document shipmentAcceptResponseDocument = null;            try {                shipmentAcceptResponseDocument = UtilXml.readXmlDocument(shipmentAcceptResponseString, false);            } catch (SAXException e2) {                String excErrMsg = "Error parsing the ShipmentAcceptResponse: " + e2.toString();                Debug.logError(e2, excErrMsg, module);                return ServiceUtil.returnError(excErrMsg);            } catch (ParserConfigurationException e2) {                String excErrMsg = "Error parsing the ShipmentAcceptResponse: " + e2.toString();                Debug.logError(e2, excErrMsg, module);                return ServiceUtil.returnError(excErrMsg);            } catch (IOException e2) {                String excErrMsg = "Error parsing the ShipmentAcceptResponse: " + e2.toString();                Debug.logError(e2, excErrMsg, module);                return ServiceUtil.returnError(excErrMsg);            }            return handleUpsShipmentAcceptResponse(shipmentAcceptResponseDocument, shipmentRouteSegment, shipmentPackageRouteSegs);        } catch (GenericEntityException e) {            Debug.logError(e, module);            return ServiceUtil.returnError("Error reading or writing Shipment data for UPS Shipment Accept: " + e.toString());        }    }        public static Map handleUpsShipmentAcceptResponse(Document shipmentAcceptResponseDocument, GenericValue shipmentRouteSegment, List shipmentPackageRouteSegs) throws GenericEntityException {        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();            }        }        // process ShipmentAcceptResponse, update data as needed        Element shipmentAcceptResponseElement = shipmentAcceptResponseDocument.getDocumentElement();                    // handle Response element info        Element responseElement = UtilXml.firstChildElement(shipmentAcceptResponseElement, "Response");        Element responseTransactionReferenceElement = UtilXml.firstChildElement(responseElement, "TransactionReference");        String responseTransactionReferenceCustomerContext = UtilXml.childElementValue(responseTransactionReferenceElement, "CustomerContext");        String responseTransactionReferenceXpciVersion = UtilXml.childElementValue(responseTransactionReferenceElement, "XpciVersion");        String responseStatusCode = UtilXml.childElementValue(responseElement, "ResponseStatusCode");        String responseStatusDescription = UtilXml.childElementValue(responseElement, "ResponseStatusDescription");        List errorList = new LinkedList();        UpsServices.handleErrors(responseElement, errorList);        if ("1".equals(responseStatusCode)) {            Element shipmentResultsElement = UtilXml.firstChildElement(shipmentAcceptResponseElement, "ShipmentResults");            // This information is returned in both the ShipmentConfirmResponse and             //the ShipmentAcceptResponse. So, we'll go ahead and store it here again            //and warn of changes or something...                            // handle ShipmentCharges element info            Element shipmentChargesElement = UtilXml.firstChildElement(shipmentResultsElement, "ShipmentCharges");            Element transportationChargesElement = UtilXml.firstChildElement(shipmentChargesElement, "TransportationCharges");            String transportationCurrencyCode = UtilXml.childElementValue(transportationChargesElement, "CurrencyCode");            String transportationMonetaryValue = UtilXml.childElementValue(transportationChargesElement, "MonetaryValue");                        Element serviceOptionsChargesElement = UtilXml.firstChildElement(shipmentChargesElement, "ServiceOptionsCharges");            String serviceOptionsCurrencyCode = UtilXml.childElementValue(serviceOptionsChargesElement, "CurrencyCode");            String serviceOptionsMonetaryValue = UtilXml.childElementValue(serviceOptionsChargesElement, "MonetaryValue");            Element totalChargesElement = UtilXml.firstChildElement(shipmentChargesElement, "TotalCharges");            String totalCurrencyCode = UtilXml.childElementValue(totalChargesElement, "CurrencyCode");            String totalMonetaryValue = UtilXml.childElementValue(totalChargesElement, "MonetaryValue");                        if (UtilValidate.isNotEmpty(totalCurrencyCode)) {                if (UtilValidate.isEmpty(shipmentRouteSegment.getString("currencyUomId"))) {                    shipmentRouteSegment.set("currencyUomId", totalCurrencyCode);                } else if(!totalCurrencyCode.equals(shipmentRouteSegment.getString("currencyUomId"))) {                    errorList.add("The Currency Unit of Measure returned [" + totalCurrencyCode + "] is not the same as the original [" + shipmentRouteSegment.getString("currencyUomId") + "], setting to the new one.");                    shipmentRouteSegment.set("currencyUomId", totalCurrencyCode);                }            }                        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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -