diff --git a/BodyshopUploader/Utils/QuickBooksInterop.cs b/BodyshopUploader/Utils/QuickBooksInterop.cs index b41c560..fb68004 100644 --- a/BodyshopUploader/Utils/QuickBooksInterop.cs +++ b/BodyshopUploader/Utils/QuickBooksInterop.cs @@ -99,19 +99,77 @@ namespace BodyshopPartner.Utils public static string CreateCustomerIfNotExist(XDocument requestXML) { string ListID = ParseCustomerId(requestXML); - + if (string.IsNullOrEmpty(ListID)) //Could be null or exist, we need to check. - QBSessionManager sessionManager = new QBSessionManager(); + { + QBSessionManager sessionManager = new QBSessionManager(); + IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("CA", 13, 0); + requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue; - //Create the message set request object to hold our request - IMsgSetRequest requestMsgSet = sessionManager.CreateMsgSetRequest("CA", 13, 0); - requestMsgSet.Attributes.OnError = ENRqOnError.roeContinue; - ICustomerQuery CustomerQueryRq = requestMsgSet.AppendCustomerQueryRq(); - CustomerQueryRq.ORCustomerListQuery.ListIDList.Add(ListID); + ICustomerAdd CustomerAddRq = requestMsgSet.AppendCustomerAddRq(); + //Get the address & Other information from the request XML DOC. + CustomerAddRq.Name.SetValue(requestXML.Descendants("CustomerRef").First()?.Element("FullName")?.Value); - string ret = ProcessQBXmlRequest(requestMsgSet.ToXMLString()); + // ICustomerQuery CustomerQueryRq = requestMsgSet.AppendCustomerQueryRq(); + //CustomerQueryRq.ORCustomerListQuery.ListIDList.Add(ListID); - return requestMsgSet.ToXMLString(); + string ret = ProcessQBXmlRequest(requestMsgSet.ToXMLString()); + return ret; + } + else + { + return ListID; + } + + } + public static string[] parseCustomerQueryRs(string xml) + { + string[] retVal; + try + { + XDocument responseXml = XDocument.Parse(xml); + XElement CustomerQueryRs = responseXml.Descendants("CustomerQueryRs").First(); + XAttribute statusCode = CustomerQueryRs.Attribute(XName.Get("statusCode")); + + if (statusCode.Value?.ToString() == "0") + { + //All good, return the ID. + } + else + { + //Need to create a new customer and return that ID. + } + + //XmlNodeList RsNodeList = null; + //XmlDocument Doc = new XmlDocument(); + //Doc.LoadXml(xml); + //RsNodeList = Doc.GetElementsByTagName("CustomerQueryRs"); + //XmlAttributeCollection rsAttributes = RsNodeList.Item(0).Attributes; + //XmlNode statusCode = rsAttributes.GetNamedItem("statusCode"); + //if (Convert.ToString(statusCode.Value) == "0") + //{ + // //Found an ID for this person. Looks all good. + // retVal = new string[1]; + // //xml.Desce + //} + //else + //{ + // retVal = new string[3]; + // retVal[0] = Convert.ToString(statusCode.Value); + // XmlNode statusSeverity = rsAttributes.GetNamedItem("statusSeverity"); + // retVal[1] = Convert.ToString(statusSeverity.Value); + // XmlNode statusMessage = rsAttributes.GetNamedItem("statusMessage"); + // retVal[2] = Convert.ToString(statusMessage.Value); + //} + //; + + } + catch (Exception e) + { + logger.Error("Error encountered when parsing Invoice info returned from QuickBooks: " + e.Message); + retVal = null; + } + return retVal; } private static string ParseCustomerId(XDocument xml)