public IntershopWebService.TrackInfo GetTrackInfo(string company, string customerID, string salesID) { MessageLogger.info(string.Format("GetTrackInfo(company={0}, customerID={1}, salesID={2})", (object)company, (object)customerID, (object)salesID)); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); if (string.IsNullOrEmpty(customerID) || string.IsNullOrEmpty(salesID)) { return new IntershopWebService.TrackInfo() { ErrorMsg = "Please populate both lookup fields.", ErrorCode = IntershopWebService.TrackInfoError.ERROR_NO_PARAM } } ; Axapta axapta = this.axLogon(company); try { IntershopWebService.TrackInfo trackInfo = this.extractTrackInfo(Convert.ToString(axapta.CallStaticClassMethod("BTX_SharedFunctionsProxy", "getTrackAndTraceLinks", (object)customerID, (object)salesID))); stopwatch.Stop(); MessageLogger.info(string.Format("GetTrackInfo() -> {0} ms", (object)stopwatch.ElapsedMilliseconds)); return(trackInfo); } catch (Exception ex) { MessageLogger.info(string.Format("GetTrackInfo() -> error: {0}", (object)ex.Message)); return((IntershopWebService.TrackInfo)null); } finally { axapta.Logoff(); } }
private IntershopWebService.TrackInfo extractTrackInfo(string links) { List <IntershopWebService.Package> packageList = new List <IntershopWebService.Package>(); IntershopWebService.TrackInfo trackInfo = new IntershopWebService.TrackInfo(); if (string.IsNullOrEmpty(links)) { trackInfo.ErrorMsg = "No sales order exists with the specified details."; trackInfo.ErrorCode = IntershopWebService.TrackInfoError.ERROR_SO_NOT_FOUND; return(trackInfo); } XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(links); XmlNode childNode = xmlDocument.ChildNodes[0]; string str1 = "<a href=\"%1\" target=\"_blank\">%1</a>"; string str2 = ""; IntershopWebService.Package package1 = new IntershopWebService.Package(); package1.PackingSlipId = package1.Link = " "; foreach (XmlElement xmlElement in xmlDocument.GetElementsByTagName("Item")) { if (!xmlElement["PackingSlipId"].InnerText.Equals(str2) && !string.IsNullOrEmpty(str2)) { packageList.Add(package1); str2 = xmlElement["PackingSlipId"].InnerText; } else if (string.IsNullOrEmpty(str2)) { str2 = xmlElement["PackingSlipId"].InnerText; } IntershopWebService.Package package2 = new IntershopWebService.Package(); package2.PackingSlipId = xmlElement["PackingSlipId"].InnerText; package2.PackageId = xmlElement["PackageId"].InnerText; package2.DispatchDate = xmlElement["DispatchDate"].InnerText; package2.Link = !string.IsNullOrEmpty(xmlElement["Link"].InnerText) ? str1.Replace("%1", Uri.UnescapeDataString(xmlElement["Link"].InnerText)) : "ERROR_NA"; if (string.IsNullOrEmpty(package2.PackageId) && string.IsNullOrEmpty(package2.PackingSlipId) && string.IsNullOrEmpty(xmlElement["Link"].InnerText)) { trackInfo.ErrorMsg = "The sales order is being processed, shipping information is not available yet."; trackInfo.ErrorCode = IntershopWebService.TrackInfoError.ERROR_NO_SHIPINFO; } if (string.IsNullOrEmpty(package2.PackageId)) { package2.PackageId = "ERROR_NA"; } if (string.IsNullOrEmpty(package2.PackingSlipId)) { package2.PackingSlipId = "ERROR_NA"; } if (string.IsNullOrEmpty(package2.DispatchDate)) { package2.DispatchDate = "ERROR_NA"; package2.Link = "ERROR_NA"; } packageList.Add(package2); } if (links.Trim().Length == 0) { trackInfo.ErrorMsg = "No sales order exists with the specified details."; trackInfo.ErrorCode = IntershopWebService.TrackInfoError.ERROR_SO_NOT_FOUND; } else { trackInfo.TrackLinks = packageList; } return(trackInfo); }