Example #1
0
        public List <string> fetchAll(ref string err)
        {
            List <string> list = new List <string>();

            XmlDocument doc = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";
                xml += "<ItemSubtotalQueryRq>";
                xml += "<ActiveStatus >All</ActiveStatus>";
                xml += "</ItemSubtotalQueryRq>";
                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);
                    doc.LoadXml(response);

                    if (Config.SaveLogXML == true)
                    {
                        string pathFile = Directory.GetCurrentDirectory() + "\\samples\\ItemSubtotal.xml";
                        File.WriteAllText(pathFile, response);
                    }
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string pathFile = Directory.GetCurrentDirectory() + "\\samples\\ItemSubtotal.xml";
                doc.Load(@pathFile);
            }

            string code          = "";
            string statusMessage = "";

            code          = doc["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"].Attributes["statusCode"].Value;
            statusMessage = doc["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                var data = doc["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"];

                var nodeList = data.SelectNodes("ItemSubtotalRet");

                foreach (XmlNode node in nodeList)
                {
                    list.Add("" + node["ListID"].InnerText);
                }
            }

            return(list);
        }
Example #2
0
        public bool LoadByListID(string lid, ref string err)
        {
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<ItemSubtotalQueryRq>" +
                         "<ListID >" + lid + "</ListID>" +
                         "<OwnerID>0</OwnerID>" +
                         "</ItemSubtotalQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";
            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string response = qbook.sendRequest(xml);

                XmlDocument res = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var node = res["QBXML"]["QBXMLMsgsRs"]["ItemSubtotalQueryRs"]["ItemSubtotalRet"];

                    ListID       = "" + node["ListID"].InnerText;
                    TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    EditSequence = "" + node["EditSequence"].InnerText;
                    Name         = "" + node["Name"].InnerText;
                    if (node["BarCodeValue"] != null)
                    {
                        BarCodeValue = "" + node["BarCodeValue"].InnerText;
                    }
                    if (node["IsActive"] != null)
                    {
                        IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                    }

                    if (node["SpecialItemType"] != null)
                    {
                        SpecialItemType = "" + node["SpecialItemType"].InnerText;
                    }

                    if (node["ExternalGUID"] != null)
                    {
                        ExternalGUID = "" + node["ExternalGUID"].InnerText;
                    }

                    XmlNodeList __extras = node.SelectNodes("DataExtRet");
                    foreach (XmlNode ex in __extras)
                    {
                        var name  = ex["DataExtName"].InnerText;
                        var value = ex["DataExtValue"].InnerText;
                        AddDataEx(name, value);
                    }
                    return(true);
                }
                else
                {
                    err = statusMessage;
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }

            return(false);
        }
Example #3
0
        public string getDataExByListID(string listId, string dataExName, ref string err)
        {
            string res = "";


            XmlDocument doc = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";

                xml += "<ItemQueryRq> ";
                xml += "<ListID>" + listId + "</ListID> ";
                xml += "<OwnerID >0</OwnerID> ";
                xml += "</ItemQueryRq> ";

                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);

                    //string pathF = Directory.GetCurrentDirectory() + "\\samples\\item_" + listId + ".xml";
                    //File.WriteAllText(pathF, response);

                    //response = File.ReadAllText(response);

                    doc.LoadXml(response);
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                //string path = Directory.GetCurrentDirectory() + "\\samples\\I_" + ref_number + ".xml";
                //doc.Load(@path);
            }

            string code          = "";
            string statusMessage = "";

            code          = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"].Attributes["statusCode"].Value;
            statusMessage = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                //clearDataExList();

                XmlElement node = null;

                if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemServiceRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemServiceRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemNonInventoryRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemNonInventoryRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemOtherChargeRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemOtherChargeRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemInventoryRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemInventoryRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemInventoryAssemblyRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemInventoryAssemblyRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemFixedAssetRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemFixedAssetRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSubtotalRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSubtotalRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemDiscountRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemDiscountRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemPaymentRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemPaymentRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSalesTaxRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSalesTaxRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSalesTaxGroupRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemSalesTaxGroupRet"];
                }

                else if (doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemGroupRet"] != null)
                {
                    node = doc["QBXML"]["QBXMLMsgsRs"]["ItemQueryRs"]["ItemGroupRet"];
                }

                if (node == null)
                {
                    return("");
                }

                XmlNodeList __extras = node.SelectNodes("DataExtRet");
                if (__extras == null)
                {
                    return("");
                }
                foreach (XmlNode ex in __extras)
                {
                    var name  = ex["DataExtName"].InnerText;
                    var value = ex["DataExtValue"].InnerText;
                    if (name == dataExName)
                    {
                        return(value);
                    }
                }
            }

            return(res);
        }
Example #4
0
        public static List <Terms> getTerms(ref string err)
        {
            List <Terms> list = new List <Terms>();

            XmlDocument doc = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";
                xml += "<TermsQueryRq>";
                xml += "</TermsQueryRq>";
                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);

                    if (Config.SaveLogXML == true)
                    {
                        string path = Directory.GetCurrentDirectory() + "\\samples\\TermsList.xml";
                        System.IO.File.WriteAllText(path, response);
                    }

                    doc.LoadXml(response);
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string path = Directory.GetCurrentDirectory() + "\\samples\\TermsList.xml";
                doc.Load(@path);
            }

            string code          = "";
            string statusMessage = "";

            code          = doc["QBXML"]["QBXMLMsgsRs"]["TermsQueryRs"].Attributes["statusCode"].Value;
            statusMessage = doc["QBXML"]["QBXMLMsgsRs"]["TermsQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                var data = doc["QBXML"]["QBXMLMsgsRs"]["TermsQueryRs"];

                var nodeList = data.SelectNodes("StandardTermsRet");

                foreach (XmlNode node in nodeList)
                {
                    Terms T = new Terms();
                    T.TermsType    = TermsType_StandardTermsRet;
                    T.ListID       = "" + node["ListID"].InnerText;
                    T.TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    T.TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    T.EditSequence = "" + node["EditSequence"].InnerText;
                    T.Name         = "" + node["Name"].InnerText;
                    if (node["IsToBeEmailed"] != null)
                    {
                        T.IsActive = ("" + node["IsToBeEmailed"].InnerText) == "true" ? true : false;
                    }

                    if (node["StdDueDays"] != null)
                    {
                        T.StdDueDays = Int32.Parse("" + node["StdDueDays"].InnerText);
                    }
                    if (node["StdDiscountDays"] != null)
                    {
                        T.StdDiscountDays = Int32.Parse("" + node["StdDiscountDays"].InnerText);
                    }

                    //T.DiscountPct

                    list.Add(T);
                }
            }


            return(list);
        }
Example #5
0
        public Hashtable getBaseUnits(ref string err)
        {
            Hashtable results = new Hashtable();


            XmlDocument res = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "" +
                             "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                             "<?qbxml version=\"13.0\"?>" +
                             "<QBXML>" +
                             "<QBXMLMsgsRq onError=\"stopOnError\">" +
                             "<UnitOfMeasureSetQueryRq>" +
                             "</UnitOfMeasureSetQueryRq>" +
                             "</QBXMLMsgsRq>" +
                             "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);
                    res.LoadXml(response);
                    if (Config.SaveLogXML == true)
                    {
                        string pathFile = Directory.GetCurrentDirectory() + "\\samples\\BaseUnits.xml";
                        File.WriteAllText(pathFile, response);
                    }
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string pathFile = Directory.GetCurrentDirectory() + "\\samples\\BaseUnits.xml";
                res.Load(@pathFile);
            }


            string code          = "";
            string statusMessage = "";

            code          = res["QBXML"]["QBXMLMsgsRs"]["UnitOfMeasureSetQueryRs"].Attributes["statusCode"].Value;
            statusMessage = res["QBXML"]["QBXMLMsgsRs"]["UnitOfMeasureSetQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                var root = res["QBXML"]["QBXMLMsgsRs"]["UnitOfMeasureSetQueryRs"];

                XmlNodeList list = root.SelectNodes("UnitOfMeasureSetRet");

                foreach (XmlNode node in list)
                {
                    ListID = "" + node["ListID"].InnerText;
                    if (node["BaseUnit"] != null)
                    {
                        BaseUnitRef = new BaseUnit();
                        if (node["BaseUnit"]["Name"] != null)
                        {
                            BaseUnitRef.Name = "" + node["BaseUnit"]["Name"].InnerText;
                        }
                        if (node["BaseUnit"]["Abbreviation"] != null)
                        {
                            BaseUnitRef.Abbreviation = "" + node["BaseUnit"]["Abbreviation"].InnerText;
                        }

                        if (!results.ContainsKey(BaseUnitRef.Name))
                        {
                            results.Add(BaseUnitRef.Name, BaseUnitRef.Abbreviation);
                        }
                    }
                }
            }

            return(results);
        }
Example #6
0
        public bool LoadByListID(string lid, ref string err)
        {
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<ItemGroupQueryRq>" +
                         "<ListID >" + lid + "</ListID>" +
                         "<OwnerID>0</OwnerID>" +
                         "</ItemGroupQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";
            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string      response = qbook.sendRequest(xml);
                XmlDocument res      = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["ItemGroupQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["ItemGroupQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var node = res["QBXML"]["QBXMLMsgsRs"]["ItemGroupQueryRs"]["ItemGroupRet"];

                    ListID       = "" + node["ListID"].InnerText;
                    TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    EditSequence = "" + node["EditSequence"].InnerText;
                    Name         = "" + node["Name"].InnerText;
                    if (node["BarCodeValue"] != null)
                    {
                        BarCodeValue = "" + node["BarCodeValue"].InnerText;
                    }
                    if (node["IsActive"] != null)
                    {
                        IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                    }

                    if (node["UnitOfMeasureSetRef"] != null)
                    {
                        UnitOfMeasureSetRef          = new UnitOfMeasureSet();
                        UnitOfMeasureSetRef.ListID   = "" + node["UnitOfMeasureSetRef"]["ListID"].InnerText;
                        UnitOfMeasureSetRef.FullName = "" + node["UnitOfMeasureSetRef"]["FullName"].InnerText;
                    }

                    XmlNodeList __lines = node.SelectNodes("ItemGroupLine");
                    ItemList = new List <ItemGroupLine>();
                    foreach (XmlNode L in __lines)
                    {
                        ItemGroupLine Line = new ItemGroupLine();
                        if (L["ItemRef"] != null)
                        {
                            Line.ItemRef          = new Item();
                            Line.ItemRef.ListID   = "" + L["ItemRef"]["ListID"].InnerText;
                            Line.ItemRef.FullName = "" + L["ItemRef"]["FullName"].InnerText;
                        }
                        if (L["Quantity"] != null)
                        {
                            Line.Quantity = Functions.ParseFloat("" + L["Quantity"].InnerText);
                        }
                        if (L["UnitOfMeasure"] != null)
                        {
                            Line.UnitOfMeasure = "" + L["UnitOfMeasure"].InnerText;
                        }

                        ItemList.Add(Line);
                    }

                    if (node["ExternalGUID"] != null)
                    {
                        ExternalGUID = "" + node["ExternalGUID"].InnerText;
                    }

                    XmlNodeList __extras = node.SelectNodes("DataExtRet");
                    foreach (XmlNode ex in __extras)
                    {
                        var name  = ex["DataExtName"].InnerText;
                        var value = ex["DataExtValue"].InnerText;
                        AddDataEx(name, value);
                    }
                    return(true);
                }
                else
                {
                    err = statusMessage;
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }


            return(false);
        }
Example #7
0
        public bool LoadByRefNumber(string ref_number, string txn_id, ref string err)
        {
            if (full_loaded == true)
            {
                return(true);
            }

            XmlDocument doc = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";
                xml += "<SalesReceiptQueryRq>";
                if (ref_number != "")
                {
                    xml += "<RefNumber >" + ref_number + "</RefNumber >";
                }
                else if (txn_id != "")
                {
                    xml += "<TxnID >" + txn_id + "</TxnID >";
                }
                xml += "<IncludeLineItems>true</IncludeLineItems>";
                xml += "<OwnerID>0</OwnerID>";
                xml += "</SalesReceiptQueryRq >";
                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";

                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);

                    if (Config.SaveLogXML == true)
                    {
                        string pathFile = Directory.GetCurrentDirectory() + "\\samples\\SR_" + ref_number + ".xml";
                        File.WriteAllText(pathFile, response);
                    }

                    doc.LoadXml(response);
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string pathFile = Directory.GetCurrentDirectory() + "\\samples\\SR_" + ref_number + ".xml";
                doc.Load(@pathFile);
            }

            string code          = "";
            string statusMessage = "";

            code          = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"].Attributes["statusCode"].Value;
            statusMessage = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                clearDataExList();

                SalesReceiptLineRet.Clear();
                SalesReceiptLineGroupRet.Clear();
                LinkedTransactions.Clear();

                var root = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"];

                var nodes = root.SelectNodes("SalesReceiptRet");

                if (nodes.Count > 1)
                {
                    err = "Existen " + nodes.Count + " SalesReceipt con el mismo Sales No.";
                    return(false);
                }

                var node = root["SalesReceiptRet"];

                TxnID        = "" + node["TxnID"].InnerText;
                ListID       = TxnID;
                TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                EditSequence = "" + node["EditSequence"].InnerText;
                TxnNumber    = Int32.Parse("" + node["TxnNumber"].InnerText);

                if (node["CustomerRef"] != null)
                {
                    CustomerRef        = new Customer();
                    CustomerRef.ListID = "" + node["CustomerRef"]["ListID"].InnerText;
                    CustomerRef.LoadByListID(CustomerRef.ListID, ref err);

                    /*string[] FullName = ("" + node["CustomerRef"]["FullName"].InnerText).Split(' ');
                     * CustomerRef.FirstName = FullName[0];
                     * CustomerRef.LastName = FullName[1];*/
                }

                /*<ClassRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ClassRef>*/
                if (node["TemplateRef"] != null)
                {
                    TemplateRef          = new Template();
                    TemplateRef.ListID   = "" + node["TemplateRef"]["ListID"].InnerText;
                    TemplateRef.FullName = "" + node["TemplateRef"]["FullName"].InnerText;
                }

                if (node["TxnDate"] != null)
                {
                    TxnDate = DateTime.Parse("" + node["TxnDate"].InnerText);
                }

                if (node["RefNumber"] != null)
                {
                    RefNumber = "" + node["RefNumber"].InnerText;
                }


                if (node["BillAddress"] != null)
                {
                    BillAddress = new Address(0);

                    for (int i = 1; i <= 5; i++)
                    {
                        if (node["BillAddress"]["Addr" + i] != null)
                        {
                            BillAddress.addAddrLine("" + node["BillAddress"]["Addr" + i].InnerText);
                        }
                    }
                    if (node["BillAddress"]["City"] != null)
                    {
                        BillAddress.City = "" + node["BillAddress"]["City"].InnerText;
                    }
                    if (node["BillAddress"]["State"] != null)
                    {
                        BillAddress.State = "" + node["BillAddress"]["State"].InnerText;
                    }
                    if (node["BillAddress"]["Note"] != null)
                    {
                        BillAddress.Note = "" + node["BillAddress"]["Note"].InnerText;
                    }
                }



                if (node["BillAddressBlock"] != null)
                {
                    BillAddressBlock = new Address(0);
                    for (int i = 1; i < 5; i++)
                    {
                        if (node["BillAddressBlock"]["Addr" + i] != null)
                        {
                            BillAddressBlock.addAddrLine("" + node["BillAddressBlock"]["Addr" + i].InnerText);
                        }
                    }
                }

                if (node["ShipAddress"] != null)
                {
                    ShipAddress = new Address(1);

                    for (int i = 1; i <= 5; i++)
                    {
                        if (node["ShipAddress"]["Addr" + i] != null)
                        {
                            ShipAddress.addAddrLine("" + node["ShipAddress"]["Addr" + i].InnerText);
                        }
                    }

                    if (node["ShipAddress"]["City"] != null)
                    {
                        ShipAddress.City = "" + node["ShipAddress"]["City"].InnerText;
                    }
                    if (node["ShipAddress"]["State"] != null)
                    {
                        ShipAddress.State = "" + node["ShipAddress"]["State"].InnerText;
                    }
                    if (node["ShipAddress"]["Note"] != null)
                    {
                        ShipAddress.Note = "" + node["ShipAddress"]["Note"].InnerText;
                    }
                }


                if (node["ShipAddressBlock"] != null)
                {
                    ShipAddressBlock = new Address(1);
                    for (int i = 1; i < 5; i++)
                    {
                        if (node["ShipAddressBlock"]["Addr" + i] != null)
                        {
                            ShipAddressBlock.addAddrLine("" + node["ShipAddressBlock"]["Addr" + i].InnerText);
                        }
                    }
                }


                if (node["IsPending"] != null)
                {
                    IsPending = ("" + node["IsPending"].InnerText == "true" ? true : false);
                }


                if (node["CheckNumber"] != null)
                {
                    CheckNumber = node["CheckNumber"].InnerText + "";
                }


                /*
                 *
                 * <PaymentMethodRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </PaymentMethodRef>
                 */



                if (node["DueDate"] != null)
                {
                    DueDate = DateTime.Parse("" + node["DueDate"].InnerText);
                }

                if (node["SalesRepRef"] != null)
                {
                    SalesRepRef          = new SalesRep();
                    SalesRepRef.ListID   = "" + node["SalesRepRef"]["ListID"].InnerText;
                    SalesRepRef.FullName = "" + node["SalesRepRef"]["FullName"].InnerText;
                }


                if (node["ShipDate"] != null)
                {
                    ShipDate = DateTime.Parse("" + node["ShipDate"].InnerText);
                }

                /*
                 * <ShipMethodRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ShipMethodRef>*/

                if (node["FOB"] != null)
                {
                    FOB = node["FOB"].InnerText + "";
                }

                if (node["Subtotal"] != null)
                {
                    Subtotal = Functions.ParseDecimal("" + node["Subtotal"].InnerText);
                }

                if (node["ItemSalesTaxRef"] != null)
                {
                    ItemSalesTaxRef        = new ItemSalesTax();
                    ItemSalesTaxRef.ListID = "" + node["ItemSalesTaxRef"]["ListID"].InnerText;
                    ItemSalesTaxRef.Name   = "" + node["ItemSalesTaxRef"]["FullName"].InnerText;
                }

                if (node["SalesTaxPercentage"] != null)
                {
                    SalesTaxPercentage = Functions.ParseDecimal("" + node["SalesTaxPercentage"].InnerText);
                }

                if (node["SalesTaxTotal"] != null)
                {
                    SalesTaxTotal = Functions.ParseDecimal("" + node["SalesTaxTotal"].InnerText);
                }

                if (node["TotalAmount"] != null)
                {
                    TotalAmount = Functions.ParseDecimal("" + node["TotalAmount"].InnerText);
                }


                if (node["CurrencyRef"] != null)
                {
                    CurrencyRef          = new Currency();
                    CurrencyRef.ListID   = "" + node["CurrencyRef"]["ListID"].InnerText;
                    CurrencyRef.FullName = "" + node["CurrencyRef"]["FullName"].InnerText;
                }


                if (node["ExchangeRate"] != null)
                {
                    ExchangeRate = Functions.ParseDecimal("" + node["ExchangeRate"].InnerText);
                }

                if (node["TotalAmountInHomeCurrency"] != null)
                {
                    TotalAmountInHomeCurrency = Functions.ParseDecimal("" + node["TotalAmountInHomeCurrency"].InnerText);
                }

                if (node["Memo"] != null)
                {
                    Memo = "" + node["Memo"].InnerText;
                }

                /*
                 *
                 * <CustomerMsgRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </CustomerMsgRef>
                 */

                if (node["IsToBePrinted"] != null)
                {
                    IsToBePrinted = Boolean.Parse("" + node["IsToBePrinted"].InnerText);
                }

                if (node["IsToBeEmailed"] != null)
                {
                    IsToBeEmailed = Boolean.Parse("" + node["IsToBeEmailed"].InnerText);
                }


                if (node["CustomerSalesTaxCodeRef"] != null)
                {
                    CustomerSalesTaxCodeRef          = new CustomerSalesTaxCode();
                    CustomerSalesTaxCodeRef.ListID   = "" + node["CustomerSalesTaxCodeRef"]["ListID"].InnerText;
                    CustomerSalesTaxCodeRef.FullName = "" + node["CustomerSalesTaxCodeRef"]["FullName"].InnerText;
                }

                /*
                 * <DepositToAccountRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </DepositToAccountRef>
                 */

                /*
                 *
                 * <CreditCardTxnInfo> <!-- optional -->
                 * <CreditCardTxnInputInfo> <!-- required -->
                 * <CreditCardNumber >STRTYPE</CreditCardNumber> <!-- required -->
                 * <ExpirationMonth >INTTYPE</ExpirationMonth> <!-- required -->
                 * <ExpirationYear >INTTYPE</ExpirationYear> <!-- required -->
                 * <NameOnCard >STRTYPE</NameOnCard> <!-- required -->
                 * <CreditCardAddress >STRTYPE</CreditCardAddress> <!-- optional -->
                 * <CreditCardPostalCode >STRTYPE</CreditCardPostalCode> <!-- optional -->
                 * <CommercialCardCode >STRTYPE</CommercialCardCode> <!-- optional -->
                 * <!-- TransactionMode may have one of the following values: CardNotPresent [DEFAULT], CardPresent -->
                 * <TransactionMode >ENUMTYPE</TransactionMode> <!-- optional -->
                 * <!-- CreditCardTxnType may have one of the following values: Authorization, Capture, Charge, Refund, VoiceAuthorization -->
                 * <CreditCardTxnType >ENUMTYPE</CreditCardTxnType> <!-- optional -->
                 * </CreditCardTxnInputInfo>
                 * <CreditCardTxnResultInfo> <!-- required -->
                 * <ResultCode >INTTYPE</ResultCode> <!-- required -->
                 * <ResultMessage >STRTYPE</ResultMessage> <!-- required -->
                 * <CreditCardTransID >STRTYPE</CreditCardTransID> <!-- required -->
                 * <MerchantAccountNumber >STRTYPE</MerchantAccountNumber> <!-- required -->
                 * <AuthorizationCode >STRTYPE</AuthorizationCode> <!-- optional -->
                 * <!-- AVSStreet may have one of the following values: Pass, Fail, NotAvailable -->
                 * <AVSStreet >ENUMTYPE</AVSStreet> <!-- optional -->
                 * <!-- AVSZip may have one of the following values: Pass, Fail, NotAvailable -->
                 * <AVSZip >ENUMTYPE</AVSZip> <!-- optional -->
                 * <!-- CardSecurityCodeMatch may have one of the following values: Pass, Fail, NotAvailable -->
                 * <CardSecurityCodeMatch >ENUMTYPE</CardSecurityCodeMatch> <!-- optional -->
                 * <ReconBatchID >STRTYPE</ReconBatchID> <!-- optional -->
                 * <PaymentGroupingCode >INTTYPE</PaymentGroupingCode> <!-- optional -->
                 * <!-- PaymentStatus may have one of the following values: Unknown, Completed -->
                 * <PaymentStatus >ENUMTYPE</PaymentStatus> <!-- required -->
                 * <TxnAuthorizationTime >DATETIMETYPE</TxnAuthorizationTime> <!-- required -->
                 * <TxnAuthorizationStamp >INTTYPE</TxnAuthorizationStamp> <!-- optional -->
                 * <ClientTransID >STRTYPE</ClientTransID> <!-- optional -->
                 * </CreditCardTxnResultInfo>
                 * </CreditCardTxnInfo>
                 */



                XmlNodeList ListGroups = node.SelectNodes("SalesReceiptLineGroupRet");
                foreach (XmlNode Gex in ListGroups)
                {
                    SalesReceiptLineGroup LG = new SalesReceiptLineGroup();
                    LG.SalesReceiptLineRet = new List <SalesReceiptLine>();

                    XmlNodeList SListInvoice = Gex.SelectNodes("SalesReceiptLineRet");
                    foreach (XmlNode ex in SListInvoice)
                    {
                        SalesReceiptLine NewInvoice = new SalesReceiptLine();
                        NewInvoice.TxnLineID = "" + ex["TxnLineID"].InnerText;


                        if (ex["ItemRef"] != null)
                        {
                            NewInvoice.ItemRef          = new Item();
                            NewInvoice.ItemRef.ListID   = "" + ex["ItemRef"]["ListID"].InnerText;
                            NewInvoice.ItemRef.FullName = "" + ex["ItemRef"]["FullName"].InnerText;
                        }
                        if (ex["Desc"] != null)
                        {
                            NewInvoice.Desc = "" + ex["Desc"].InnerText;
                        }

                        if (ex["Quantity"] != null)
                        {
                            NewInvoice.Quantity = Functions.ParseDecimal("" + ex["Quantity"].InnerText);
                        }

                        if (ex["UnitOfMeasure"] != null)
                        {
                            NewInvoice.UnitOfMeasure = "" + ex["UnitOfMeasure"].InnerText;
                            //NewInvoice.UnitOfMeasureSetRef = new UnitOfMeasureSet();
                            //NewInvoice.UnitOfMeasureSetRef.LoadByName(NewInvoice.UnitOfMeasure, ref err);
                        }


                        /*if (ex["OverrideUOMSetRef"] != null)
                         * {
                         *  NewInvoice.OverrideUOMSetRef = new OverrideUOMSet();
                         *  NewInvoice.OverrideUOMSetRef.ListID = "" + ex["OverrideUOMSetRef"]["ListID"].InnerText;
                         *  NewInvoice.OverrideUOMSetRef.FullName = "" + ex["OverrideUOMSetRef"]["FullName"].InnerText;
                         * }*/


                        if (ex["Rate"] != null)
                        {
                            NewInvoice.Rate = Functions.ParseDecimal("" + ex["Rate"].InnerText);
                        }
                        else if (ex["RatePercent"] != null)
                        {
                            NewInvoice.RatePercent = Functions.ParseDecimal("" + ex["RatePercent"].InnerText);
                        }


                        if (ex["ClassRef"] != null)
                        {
                            NewInvoice.ClassRef          = new Class();
                            NewInvoice.ClassRef.ListID   = "" + ex["ClassRef"]["ListID"].InnerText;
                            NewInvoice.ClassRef.FullName = "" + ex["ClassRef"]["FullName"].InnerText;
                        }

                        if (ex["Amount"] != null)
                        {
                            NewInvoice.Amount = Functions.ParseDecimal("" + ex["Amount"].InnerText);
                        }

                        if (ex["InventorySiteRef"] != null)
                        {
                            NewInvoice.InventorySiteRef        = new InventorySite();
                            NewInvoice.InventorySiteRef.ListID = "" + ex["InventorySiteRef"]["ListID"].InnerText;
                            NewInvoice.InventorySiteRef.Name   = "" + ex["InventorySiteRef"]["FullName"].InnerText;
                        }

                        /*if (ex["InventorySiteLocationRef"] != null)
                         * {
                         *  NewInvoice.InventorySiteLocationRef = new InventorySiteLocation();
                         *  NewInvoice.InventorySiteLocationRef.ListID = "" + ex["InventorySiteLocationRef"]["ListID"].InnerText;
                         *  NewInvoice.InventorySiteLocationRef.Name = "" + ex["InventorySiteLocationRef"]["FullName"].InnerText;
                         * }*/


                        if (ex["SerialNumber"] != null)
                        {
                            NewInvoice.SerialNumber = "" + ex["SerialNumber"].InnerText;
                        }
                        else if (ex["LotNumber"] != null)
                        {
                            NewInvoice.LotNumber = "" + ex["LotNumber"].InnerText;
                        }

                        if (ex["ServiceDate"] != null)
                        {
                            NewInvoice.ServiceDate = DateTime.Parse("" + ex["ServiceDate"].InnerText);
                        }

                        if (ex["SalesTaxCodeRef"] != null)
                        {
                            NewInvoice.SalesTaxCodeRef          = new SalesTaxCode();
                            NewInvoice.SalesTaxCodeRef.ListID   = "" + ex["SalesTaxCodeRef"]["ListID"].InnerText;
                            NewInvoice.SalesTaxCodeRef.FullName = "" + ex["SalesTaxCodeRef"]["FullName"].InnerText;
                        }

                        if (ex["Other1"] != null)
                        {
                            NewInvoice.Other1 = "" + ex["Other1"].InnerText;
                        }

                        if (ex["Other2"] != null)
                        {
                            NewInvoice.Other2 = "" + ex["Other2"].InnerText;
                        }

                        LG.SalesReceiptLineRet.Add(NewInvoice);
                    }

                    SalesReceiptLineGroupRet.Add(LG);
                }


                XmlNodeList ListInvoice = node.SelectNodes("SalesReceiptLineRet");
                foreach (XmlNode ex in ListInvoice)
                {
                    SalesReceiptLine NewInvoice = new SalesReceiptLine();
                    NewInvoice.TxnLineID = "" + ex["TxnLineID"].InnerText;


                    if (ex["ItemRef"] != null)
                    {
                        NewInvoice.ItemRef          = new Item();
                        NewInvoice.ItemRef.ListID   = "" + ex["ItemRef"]["ListID"].InnerText;
                        NewInvoice.ItemRef.FullName = "" + ex["ItemRef"]["FullName"].InnerText;
                    }
                    if (ex["Desc"] != null)
                    {
                        NewInvoice.Desc = "" + ex["Desc"].InnerText;
                    }

                    if (ex["Quantity"] != null)
                    {
                        NewInvoice.Quantity = Functions.ParseDecimal("" + ex["Quantity"].InnerText);
                    }

                    if (ex["UnitOfMeasure"] != null)
                    {
                        NewInvoice.UnitOfMeasure = "" + ex["UnitOfMeasure"].InnerText;
                        //NewInvoice.UnitOfMeasureSetRef = new UnitOfMeasureSet();
                        //NewInvoice.UnitOfMeasureSetRef.LoadByName(NewInvoice.UnitOfMeasure, ref err);
                    }


                    /*if (ex["OverrideUOMSetRef"] != null)
                     * {
                     *  NewInvoice.OverrideUOMSetRef = new OverrideUOMSet();
                     *  NewInvoice.OverrideUOMSetRef.ListID = "" + ex["OverrideUOMSetRef"]["ListID"].InnerText;
                     *  NewInvoice.OverrideUOMSetRef.FullName = "" + ex["OverrideUOMSetRef"]["FullName"].InnerText;
                     * }*/


                    if (ex["Rate"] != null)
                    {
                        NewInvoice.Rate = Functions.ParseDecimal("" + ex["Rate"].InnerText);
                    }
                    else if (ex["RatePercent"] != null)
                    {
                        NewInvoice.RatePercent = Functions.ParseDecimal("" + ex["RatePercent"].InnerText);
                    }


                    if (ex["ClassRef"] != null)
                    {
                        NewInvoice.ClassRef          = new Class();
                        NewInvoice.ClassRef.ListID   = "" + ex["ClassRef"]["ListID"].InnerText;
                        NewInvoice.ClassRef.FullName = "" + ex["ClassRef"]["FullName"].InnerText;
                    }

                    if (ex["Amount"] != null)
                    {
                        NewInvoice.Amount = Functions.ParseDecimal("" + ex["Amount"].InnerText);
                    }

                    if (ex["InventorySiteRef"] != null)
                    {
                        NewInvoice.InventorySiteRef        = new InventorySite();
                        NewInvoice.InventorySiteRef.ListID = "" + ex["InventorySiteRef"]["ListID"].InnerText;
                        NewInvoice.InventorySiteRef.Name   = "" + ex["InventorySiteRef"]["FullName"].InnerText;
                    }

                    /*if (ex["InventorySiteLocationRef"] != null)
                     * {
                     *  NewInvoice.InventorySiteLocationRef = new InventorySiteLocation();
                     *  NewInvoice.InventorySiteLocationRef.ListID = "" + ex["InventorySiteLocationRef"]["ListID"].InnerText;
                     *  NewInvoice.InventorySiteLocationRef.Name = "" + ex["InventorySiteLocationRef"]["FullName"].InnerText;
                     * }*/


                    if (ex["SerialNumber"] != null)
                    {
                        NewInvoice.SerialNumber = "" + ex["SerialNumber"].InnerText;
                    }
                    else if (ex["LotNumber"] != null)
                    {
                        NewInvoice.LotNumber = "" + ex["LotNumber"].InnerText;
                    }

                    if (ex["ServiceDate"] != null)
                    {
                        NewInvoice.ServiceDate = DateTime.Parse("" + ex["ServiceDate"].InnerText);
                    }

                    if (ex["SalesTaxCodeRef"] != null)
                    {
                        NewInvoice.SalesTaxCodeRef          = new SalesTaxCode();
                        NewInvoice.SalesTaxCodeRef.ListID   = "" + ex["SalesTaxCodeRef"]["ListID"].InnerText;
                        NewInvoice.SalesTaxCodeRef.FullName = "" + ex["SalesTaxCodeRef"]["FullName"].InnerText;
                    }

                    if (ex["Other1"] != null)
                    {
                        NewInvoice.Other1 = "" + ex["Other1"].InnerText;
                    }

                    if (ex["Other2"] != null)
                    {
                        NewInvoice.Other2 = "" + ex["Other2"].InnerText;
                    }

                    SalesReceiptLineRet.Add(NewInvoice);
                }


                XmlNodeList __extras = node.SelectNodes("DataExtRet");
                foreach (XmlNode ex in __extras)
                {
                    var name    = ex["DataExtName"].InnerText;
                    var value   = ex["DataExtValue"].InnerText;
                    var ownerID = ex["OwnerID"].InnerText;
                    AddDataEx(name, value, ownerID, TxnID);
                }
                return(true);

                full_loaded = true;

                return(true);
            }
            else
            {
                err = statusMessage;
            }
            return(false);
        }
        public bool LoadByListID(string lid, ref string err)
        {
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<ItemInventoryAssemblyQueryRq>" +
                         "<ListID >" + lid + "</ListID>" +
                         "<OwnerID>0</OwnerID>" +
                         "</ItemInventoryAssemblyQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";
            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string response = qbook.sendRequest(xml);

                XmlDocument res = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["ItemInventoryAssemblyQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["ItemInventoryAssemblyQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var node = res["QBXML"]["QBXMLMsgsRs"]["ItemInventoryAssemblyQueryRs"]["ItemInventoryAssemblyRet"];

                    ListID       = "" + node["ListID"].InnerText;
                    TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    EditSequence = "" + node["EditSequence"].InnerText;
                    Name         = "" + node["Name"].InnerText;
                    FullName     = "" + node["FullName"].InnerText;
                    if (node["BarCodeValue"] != null)
                    {
                        BarCodeValue = "" + node["BarCodeValue"].InnerText;
                    }
                    if (node["IsActive"] != null)
                    {
                        IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                    }

                    if (node["ClassRef"] != null)
                    {
                        ClassRef          = new Class();
                        ClassRef.ListID   = "" + node["ClassRef"]["ListID"].InnerText;
                        ClassRef.FullName = "" + node["ClassRef"]["FullName"].InnerText;
                    }

                    if (node["ParentRef"] != null)
                    {
                        ParentRef          = new ItemInventory();
                        ParentRef.ListID   = "" + node["ParentRef"]["ListID"].InnerText;
                        ParentRef.FullName = "" + node["ParentRef"]["FullName"].InnerText;
                    }

                    Sublevel = Int32.Parse("" + node["Sublevel"].InnerText);
                    if (node["ManufacturerPartNumber"] != null)
                    {
                        ManufacturerPartNumber = "" + node["ManufacturerPartNumber"].InnerText;
                    }

                    if (node["UnitOfMeasureSetRef"] != null)
                    {
                        UnitOfMeasureSetRef          = new UnitOfMeasureSet();
                        UnitOfMeasureSetRef.ListID   = "" + node["UnitOfMeasureSetRef"]["ListID"].InnerText;
                        UnitOfMeasureSetRef.FullName = "" + node["UnitOfMeasureSetRef"]["FullName"].InnerText;
                        UnitOfMeasureSetRef.LoadByListID(UnitOfMeasureSetRef.ListID, ref err);
                    }

                    if (node["SalesTaxCodeRef"] != null)
                    {
                        SalesTaxCodeRef          = new SalesTaxCode();
                        SalesTaxCodeRef.ListID   = "" + node["SalesTaxCodeRef"]["ListID"].InnerText;
                        SalesTaxCodeRef.FullName = "" + node["SalesTaxCodeRef"]["FullName"].InnerText;
                    }

                    if (node["SalesDesc"] != null)
                    {
                        SalesDesc = "" + node["SalesDesc"].InnerText;
                    }
                    if (node["SalesPrice"] != null)
                    {
                        SalesPrice = Functions.ParseFloat("" + node["SalesPrice"].InnerText);
                    }

                    if (node["IncomeAccountRef"] != null)
                    {
                        IncomeAccountRef          = new IncomeAccount();
                        IncomeAccountRef.ListID   = "" + node["IncomeAccountRef"]["ListID"].InnerText;
                        IncomeAccountRef.FullName = "" + node["IncomeAccountRef"]["FullName"].InnerText;
                    }

                    if (node["PurchaseDesc"] != null)
                    {
                        PurchaseDesc = "" + node["PurchaseDesc"].InnerText;
                    }
                    if (node["PurchaseCost"] != null)
                    {
                        PurchaseCost = Functions.ParseFloat("" + node["PurchaseCost"].InnerText);
                    }

                    if (node["COGSAccountRef"] != null)
                    {
                        COGSAccountRef          = new COGSAccount();
                        COGSAccountRef.ListID   = "" + node["COGSAccountRef"]["ListID"].InnerText;
                        COGSAccountRef.FullName = "" + node["COGSAccountRef"]["FullName"].InnerText;
                    }

                    if (node["PrefVendorRef"] != null)
                    {
                        PrefVendorRef          = new PrefVendor();
                        PrefVendorRef.ListID   = "" + node["PrefVendorRef"]["ListID"].InnerText;
                        PrefVendorRef.FullName = "" + node["PrefVendorRef"]["FullName"].InnerText;
                    }

                    if (node["AssetAccountRef"] != null)
                    {
                        AssetAccountRef          = new AssetAccount();
                        AssetAccountRef.ListID   = "" + node["AssetAccountRef"]["ListID"].InnerText;
                        AssetAccountRef.FullName = "" + node["AssetAccountRef"]["FullName"].InnerText;
                    }

                    if (node["BuildPoint"] != null)
                    {
                        BuildPoint = Functions.ParseFloat("" + node["BuildPoint"].InnerText);
                    }

                    if (node["Max"] != null)
                    {
                        Max = Functions.ParseFloat("" + node["Max"].InnerText);
                    }

                    if (node["QuantityOnHand"] != null)
                    {
                        QuantityOnHand = Functions.ParseFloat("" + node["QuantityOnHand"].InnerText);
                    }

                    if (node["AverageCost"] != null)
                    {
                        AverageCost = Functions.ParseFloat("" + node["AverageCost"].InnerText);
                    }

                    if (node["QuantityOnOrder"] != null)
                    {
                        QuantityOnOrder = Functions.ParseFloat("" + node["QuantityOnOrder"].InnerText);
                    }

                    if (node["QuantityOnSalesOrder"] != null)
                    {
                        QuantityOnSalesOrder = Functions.ParseFloat("" + node["QuantityOnSalesOrder"].InnerText);
                    }

                    XmlNodeList __lines = node.SelectNodes("ItemInventoryAssemblyLine");
                    ItemList = new List <ItemInventoryAssemblyLine>();
                    foreach (XmlNode L in __lines)
                    {
                        ItemInventoryAssemblyLine Line = new ItemInventoryAssemblyLine();
                        if (L["ItemInventoryRef"] != null)
                        {
                            Line.ItemIventoryRef          = new ItemInventory();
                            Line.ItemIventoryRef.ListID   = "" + L["ItemInventoryRef"]["ListID"].InnerText;
                            Line.ItemIventoryRef.FullName = "" + L["ItemInventoryRef"]["FullName"].InnerText;
                        }
                        if (L["Quantity"] != null)
                        {
                            Line.Quantity = Functions.ParseFloat("" + L["Quantity"].InnerText);
                        }

                        ItemList.Add(Line);
                    }

                    if (node["ExternalGUID"] != null)
                    {
                        ExternalGUID = "" + node["ExternalGUID"].InnerText;
                    }

                    XmlNodeList __extras = node.SelectNodes("DataExtRet");
                    foreach (XmlNode ex in __extras)
                    {
                        var name  = ex["DataExtName"].InnerText;
                        var value = ex["DataExtValue"].InnerText;
                        AddDataEx(name, value);
                    }
                    return(true);
                }
                else
                {
                    err = statusMessage;
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }

            return(false);
        }
Example #9
0
        public static List <SalesReceipt> getInvoiceByDate(string from, string to, ref string err)
        {
            XmlDocument         doc  = new XmlDocument();
            List <SalesReceipt> list = new List <SalesReceipt>();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";
                xml += "<SalesReceiptQueryRq>";

                /*xml += "<ModifiedDateRangeFilter>";
                 * //2017-08-17T00:00:00
                 *  xml += "<FromModifiedDate>" + from + "</FromModifiedDate>";
                 *  //2017-08-17T23:59:59
                 *  xml += "<ToModifiedDate>" + to + "</ToModifiedDate>";
                 * xml += "</ModifiedDateRangeFilter>";*/

                xml += "<TxnDateRangeFilter>";
                xml += "<FromTxnDate>" + from + "</FromTxnDate>";
                xml += "<ToTxnDate>" + to + "</ToTxnDate>";
                xml += "</TxnDateRangeFilter>";

                xml += "<IncludeRetElement >TxnID</IncludeRetElement>";
                xml += "<IncludeRetElement >TimeModified</IncludeRetElement>";
                xml += "<IncludeRetElement >TxnNumber</IncludeRetElement>";
                xml += "<IncludeRetElement >RefNumber</IncludeRetElement>";
                xml += "<OwnerID>0</OwnerID>";
                xml += "</SalesReceiptQueryRq>";
                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);
                    doc.LoadXml(response);
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string path = Directory.GetCurrentDirectory() + "\\samples\\InvoiceList.xml";
                doc.Load(@path);
            }

            string code           = "";
            string statusMessage  = "";
            string statusSeverity = "";

            code           = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"].Attributes["statusCode"].Value;
            statusMessage  = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"].Attributes["statusMessage"].Value;
            statusSeverity = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"].Attributes["statusSeverity"].Value;

            if (code == "0")
            {
                var node  = doc["QBXML"]["QBXMLMsgsRs"]["SalesReceiptQueryRs"];
                var nodes = node.SelectNodes("SalesReceiptRet");

                foreach (XmlNode N in nodes)
                {
                    SalesReceipt I = new SalesReceipt();
                    I.TimeModified = DateTime.Parse("" + N["TimeModified"].InnerText);
                    if (N["RefNumber"] != null)
                    {
                        I.RefNumber = "" + N["RefNumber"].InnerText;
                        I.TxnID     = "" + N["TxnID"].InnerText;
                        I.TxnNumber = Int32.Parse("" + N["TxnNumber"].InnerText);
                        list.Add(I);
                    }
                }
            }
            else if (code == "1")
            {
                if (statusSeverity == "Info")
                {
                    list = new List <SalesReceipt>();
                    err  = "";
                }
            }
            else
            {
                err  = statusMessage;
                list = null;
            }

            return(list);
        }
Example #10
0
        public bool LoadByRefNumber(string ref_number, string txn_id, ref string err)
        {
            if (full_loaded == true)
            {
                return(true);
            }

            XmlDocument doc = new XmlDocument();

            if (Config.IsProduction == true)
            {
                string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                xml += "<?qbxml version=\"13.0\"?>";
                xml += "<QBXML>";
                xml += "<QBXMLMsgsRq onError=\"stopOnError\">";
                xml += "<InvoiceQueryRq>";
                if (ref_number != "")
                {
                    xml += "<RefNumber >" + ref_number + "</RefNumber >";
                }
                else if (txn_id != "")
                {
                    xml += "<TxnID >" + txn_id + "</TxnID >";
                }
                xml += "<IncludeLineItems>true</IncludeLineItems>";
                xml += "<OwnerID>0</OwnerID>";
                xml += "</InvoiceQueryRq >";
                xml += "</QBXMLMsgsRq>";
                xml += "</QBXML>";
                var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

                if (qbook.Connect())
                {
                    string response = qbook.sendRequest(xml);

                    if (Config.SaveLogXML == true)
                    {
                        string path = Directory.GetCurrentDirectory() + "\\samples\\I_" + ref_number + ".xml";
                        File.WriteAllText(path, response);
                    }

                    doc.LoadXml(response);
                    qbook.Disconnect();
                }
                else
                {
                    err = "QuickBook no conecto";
                }
            }
            else
            {
                string path = Directory.GetCurrentDirectory() + "\\samples\\I_" + ref_number + ".xml";
                doc.Load(@path);
            }

            string code          = "";
            string statusMessage = "";

            code          = doc["QBXML"]["QBXMLMsgsRs"]["InvoiceQueryRs"].Attributes["statusCode"].Value;
            statusMessage = doc["QBXML"]["QBXMLMsgsRs"]["InvoiceQueryRs"].Attributes["statusMessage"].Value;

            if (code == "0")
            {
                clearDataExList();
                Lines = new List <object>();

                InvoiceLineRet.Clear();
                InvoiceLineGroupRet.Clear();
                LinkedTransactions.Clear();

                var node = doc["QBXML"]["QBXMLMsgsRs"]["InvoiceQueryRs"]["InvoiceRet"];

                TxnID        = "" + node["TxnID"].InnerText;
                ListID       = TxnID;
                TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                Modified     = DateTime.Parse("" + node["TimeModified"].InnerText);
                EditSequence = "" + node["EditSequence"].InnerText;
                TxnNumber    = Int32.Parse("" + node["TxnNumber"].InnerText);


                if (node["CustomerRef"] != null)
                {
                    CustomerRef        = new Customer();
                    CustomerRef.ListID = "" + node["CustomerRef"]["ListID"].InnerText;
                    CustomerRef.LoadByListID(CustomerRef.ListID, ref err);

                    /*string[] FullName = ("" + node["CustomerRef"]["FullName"].InnerText).Split(' ');
                     * CustomerRef.FirstName = FullName[0];
                     * CustomerRef.LastName = FullName[1];*/
                }

                /*
                 * <ClassRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ClassRef>*/

                if (node["ARAccountRef"] != null)
                {
                    ARAccountRef          = new ARAccount();
                    ARAccountRef.ListID   = "" + node["ARAccountRef"]["ListID"].InnerText;
                    ARAccountRef.FullName = "" + node["ARAccountRef"]["FullName"].InnerText;
                }


                if (node["TemplateRef"] != null)
                {
                    TemplateRef          = new Template();
                    TemplateRef.ListID   = "" + node["TemplateRef"]["ListID"].InnerText;
                    TemplateRef.FullName = "" + node["TemplateRef"]["FullName"].InnerText;
                }


                if (node["TxnDate"] != null)
                {
                    TxnDate = DateTime.Parse("" + node["TxnDate"].InnerText);
                }

                if (node["RefNumber"] != null)
                {
                    RefNumber = "" + node["RefNumber"].InnerText;
                }

                if (node["BillAddress"] != null)
                {
                    BillAddress = new Address(0);

                    for (int i = 1; i <= 5; i++)
                    {
                        if (node["BillAddress"]["Addr" + i] != null)
                        {
                            BillAddress.addAddrLine("" + node["BillAddress"]["Addr" + i].InnerText);
                        }
                    }
                    if (node["BillAddress"]["City"] != null)
                    {
                        BillAddress.City = "" + node["BillAddress"]["City"].InnerText;
                    }
                    if (node["BillAddress"]["State"] != null)
                    {
                        BillAddress.State = "" + node["BillAddress"]["State"].InnerText;
                    }
                    if (node["BillAddress"]["Note"] != null)
                    {
                        BillAddress.Note = "" + node["BillAddress"]["Note"].InnerText;
                    }
                }



                if (node["BillAddressBlock"] != null)
                {
                    BillAddressBlock = new Address(0);
                    for (int i = 1; i < 5; i++)
                    {
                        if (node["BillAddressBlock"]["Addr" + i] != null)
                        {
                            BillAddressBlock.addAddrLine("" + node["BillAddressBlock"]["Addr" + i].InnerText);
                        }
                    }
                }


                if (node["ShipAddress"] != null)
                {
                    ShipAddress = new Address(1);

                    for (int i = 1; i <= 5; i++)
                    {
                        if (node["ShipAddress"]["Addr" + i] != null)
                        {
                            ShipAddress.addAddrLine("" + node["ShipAddress"]["Addr" + i].InnerText);
                        }
                    }

                    if (node["ShipAddress"]["City"] != null)
                    {
                        ShipAddress.City = "" + node["ShipAddress"]["City"].InnerText;
                    }
                    if (node["ShipAddress"]["State"] != null)
                    {
                        ShipAddress.State = "" + node["ShipAddress"]["State"].InnerText;
                    }
                    if (node["ShipAddress"]["Note"] != null)
                    {
                        ShipAddress.Note = "" + node["ShipAddress"]["Note"].InnerText;
                    }
                }


                if (node["ShipAddressBlock"] != null)
                {
                    ShipAddressBlock = new Address(1);
                    for (int i = 1; i < 5; i++)
                    {
                        if (node["ShipAddressBlock"]["Addr" + i] != null)
                        {
                            ShipAddressBlock.addAddrLine("" + node["ShipAddressBlock"]["Addr" + i].InnerText);
                        }
                    }
                }

                if (node["IsPending"] != null)
                {
                    IsPending = ("" + node["IsPending"].InnerText == "true" ? true : false);
                }

                if (node["IsFinanceCharge"] != null)
                {
                    IsFinanceCharge = ("" + node["IsFinanceCharge"].InnerText == "true" ? true : false);
                }


                if (node["PONumber"] != null)
                {
                    PONumber = node["PONumber"].InnerText;
                }

                if (node["TermsRef"] != null)
                {
                    TermsRef        = new Terms();
                    TermsRef.ListID = "" + node["TermsRef"]["ListID"].InnerText;

                    TermsRef.LoadByListID(TermsRef.ListID, ref err);
                    //TermsRef.FullName = "" + node["TermsRef"]["FullName"].InnerText;
                }

                if (node["DueDate"] != null)
                {
                    DueDate = DateTime.Parse("" + node["DueDate"].InnerText);
                }

                if (node["SalesRepRef"] != null)
                {
                    SalesRepRef          = new SalesRep();
                    SalesRepRef.ListID   = "" + node["SalesRepRef"]["ListID"].InnerText;
                    SalesRepRef.FullName = "" + node["SalesRepRef"]["FullName"].InnerText;
                }

                if (node["FOB"] != null)
                {
                    FOB = node["FOB"].InnerText;
                }

                //<FOB >STRTYPE</FOB> <!-- optional -->

                if (node["ShipDate"] != null)
                {
                    ShipDate = DateTime.Parse("" + node["ShipDate"].InnerText);
                }

                /*
                 * <ShipMethodRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ShipMethodRef>*/

                if (node["Subtotal"] != null)
                {
                    Subtotal = Functions.ParseDecimal("" + node["Subtotal"].InnerText);
                }

                if (node["ItemSalesTaxRef"] != null)
                {
                    ItemSalesTaxRef        = new ItemSalesTax();
                    ItemSalesTaxRef.ListID = "" + node["ItemSalesTaxRef"]["ListID"].InnerText;
                    ItemSalesTaxRef.Name   = "" + node["ItemSalesTaxRef"]["FullName"].InnerText;
                }

                if (node["SalesTaxPercentage"] != null)
                {
                    SalesTaxPercentage = Functions.ParseDecimal("" + node["SalesTaxPercentage"].InnerText);
                }

                if (node["SalesTaxTotal"] != null)
                {
                    SalesTaxTotal = Functions.ParseDecimal("" + node["SalesTaxTotal"].InnerText);
                }

                if (node["AppliedAmount"] != null)
                {
                    AppliedAmount = Functions.ParseDecimal("" + node["AppliedAmount"].InnerText);
                }

                if (node["BalanceRemaining"] != null)
                {
                    BalanceRemaining = Functions.ParseDecimal("" + node["BalanceRemaining"].InnerText);
                }


                if (node["CurrencyRef"] != null)
                {
                    CurrencyRef          = new Currency();
                    CurrencyRef.ListID   = "" + node["CurrencyRef"]["ListID"].InnerText;
                    CurrencyRef.FullName = "" + node["CurrencyRef"]["FullName"].InnerText;
                }


                if (node["ExchangeRate"] != null)
                {
                    ExchangeRate = Functions.ParseDecimal("" + node["ExchangeRate"].InnerText);
                }

                if (node["BalanceRemainingInHomeCurrency"] != null)
                {
                    BalanceRemaining = Functions.ParseDecimal("" + node["BalanceRemainingInHomeCurrency"].InnerText);
                }

                if (node["Memo"] != null)
                {
                    Memo = "" + node["Memo"].InnerText;
                }

                if (node["IsPaid"] != null)
                {
                    IsPaid = Boolean.Parse("" + node["IsPaid"].InnerText);
                }

                /*<CustomerMsgRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </CustomerMsgRef>*/

                if (node["IsToBePrinted"] != null)
                {
                    IsToBePrinted = Boolean.Parse("" + node["IsToBePrinted"].InnerText);
                }

                if (node["IsToBeEmailed"] != null)
                {
                    IsToBeEmailed = Boolean.Parse("" + node["IsToBeEmailed"].InnerText);
                }


                if (node["CustomerSalesTaxCodeRef"] != null)
                {
                    CustomerSalesTaxCodeRef          = new CustomerSalesTaxCode();
                    CustomerSalesTaxCodeRef.ListID   = "" + node["CustomerSalesTaxCodeRef"]["ListID"].InnerText;
                    CustomerSalesTaxCodeRef.FullName = "" + node["CustomerSalesTaxCodeRef"]["FullName"].InnerText;
                }

                /*<SuggestedDiscountAmount >AMTTYPE</SuggestedDiscountAmount> <!-- optional -->
                 * <SuggestedDiscountDate >DATETYPE</SuggestedDiscountDate> <!-- optional -->
                 * <Other >STRTYPE</Other> <!-- optional -->
                 * <ExternalGUID >GUIDTYPE</ExternalGUID> <!-- optional -->*/

                /*
                 * <LinkedTxn> <!-- optional, may repeat -->
                 * <TxnID >IDTYPE</TxnID> <!-- required -->
                 * <!-- TxnType may have one of the following values: ARRefundCreditCard, Bill, BillPaymentCheck, BillPaymentCreditCard, BuildAssembly, Charge, Check, CreditCardCharge, CreditCardCredit, CreditMemo, Deposit, Estimate, InventoryAdjustment, Invoice, ItemReceipt, JournalEntry, LiabilityAdjustment, Paycheck, PayrollLiabilityCheck, PurchaseOrder, ReceivePayment, SalesOrder, SalesReceipt, SalesTaxPaymentCheck, Transfer, VendorCredit, YTDAdjustment -->
                 * <TxnType >ENUMTYPE</TxnType> <!-- required -->
                 * <TxnDate >DATETYPE</TxnDate> <!-- required -->
                 * <RefNumber >STRTYPE</RefNumber> <!-- optional -->
                 * <!-- LinkType may have one of the following values: AMTTYPE, QUANTYPE -->
                 * <LinkType >ENUMTYPE</LinkType> <!-- optional -->
                 * <Amount >AMTTYPE</Amount> <!-- required -->
                 * </LinkedTxn>*/

                foreach (XmlNode Gex in node.ChildNodes)
                {
                    if (!(Gex.Name == "InvoiceLineGroupRet" || Gex.Name == "InvoiceLineRet"))
                    {
                        continue;
                    }

                    if (Gex.Name == "InvoiceLineGroupRet")
                    {
                        InvoiceLineGroup LG = new InvoiceLineGroup();

                        if (Gex["Desc"] != null)
                        {
                            LG.Desc = Gex["Desc"].InnerText;
                        }

                        if (Gex["ItemGroupRef"] != null)
                        {
                            LG.ItemGroupRef = new ItemGroup();
                            if (Gex["ItemGroupRef"]["FullName"] != null)
                            {
                                LG.ItemGroupRef.Name = Gex["ItemGroupRef"]["FullName"].InnerText;
                            }

                            if (Gex["ItemGroupRef"]["ListID"] != null)
                            {
                                LG.ItemGroupRef.ListID = Gex["ItemGroupRef"]["ListID"].InnerText;
                            }
                        }

                        LG.InvoiceLineRet = new List <InvoiceLine>();

                        XmlNodeList SListInvoice = Gex.SelectNodes("InvoiceLineRet");
                        foreach (XmlNode ex in SListInvoice)
                        {
                            InvoiceLine NewInvoice = new InvoiceLine();
                            NewInvoice.TxnLineID = "" + ex["TxnLineID"].InnerText;


                            if (ex["ItemRef"] != null)
                            {
                                NewInvoice.ItemRef          = new Item();
                                NewInvoice.ItemRef.ListID   = "" + ex["ItemRef"]["ListID"].InnerText;
                                NewInvoice.ItemRef.FullName = "" + ex["ItemRef"]["FullName"].InnerText;
                            }
                            if (ex["Desc"] != null)
                            {
                                NewInvoice.Desc = "" + ex["Desc"].InnerText;
                            }

                            if (ex["Quantity"] != null)
                            {
                                NewInvoice.Quantity = Functions.ParseDecimal("" + ex["Quantity"].InnerText);
                            }

                            if (ex["UnitOfMeasure"] != null)
                            {
                                NewInvoice.UnitOfMeasure = "" + ex["UnitOfMeasure"].InnerText;
                                //NewInvoice.UnitOfMeasureSetRef = new UnitOfMeasureSet();
                                //NewInvoice.UnitOfMeasureSetRef.LoadByName(NewInvoice.UnitOfMeasure, ref err);
                            }


                            /*if (ex["OverrideUOMSetRef"] != null)
                             * {
                             *  NewInvoice.OverrideUOMSetRef = new OverrideUOMSet();
                             *  NewInvoice.OverrideUOMSetRef.ListID = "" + ex["OverrideUOMSetRef"]["ListID"].InnerText;
                             *  NewInvoice.OverrideUOMSetRef.FullName = "" + ex["OverrideUOMSetRef"]["FullName"].InnerText;
                             * }*/


                            if (ex["Rate"] != null)
                            {
                                NewInvoice.Rate = Functions.ParseDecimal("" + ex["Rate"].InnerText);
                            }
                            else if (ex["RatePercent"] != null)
                            {
                                NewInvoice.RatePercent = Functions.ParseDecimal("" + ex["RatePercent"].InnerText);
                            }


                            if (ex["ClassRef"] != null)
                            {
                                NewInvoice.ClassRef          = new Class();
                                NewInvoice.ClassRef.ListID   = "" + ex["ClassRef"]["ListID"].InnerText;
                                NewInvoice.ClassRef.FullName = "" + ex["ClassRef"]["FullName"].InnerText;
                            }

                            if (ex["Amount"] != null)
                            {
                                NewInvoice.Amount = Functions.ParseDecimal("" + ex["Amount"].InnerText);
                            }

                            if (ex["InventorySiteRef"] != null)
                            {
                                NewInvoice.InventorySiteRef        = new InventorySite();
                                NewInvoice.InventorySiteRef.ListID = "" + ex["InventorySiteRef"]["ListID"].InnerText;
                                NewInvoice.InventorySiteRef.Name   = "" + ex["InventorySiteRef"]["FullName"].InnerText;
                            }

                            /*if (ex["InventorySiteLocationRef"] != null)
                             * {
                             *  NewInvoice.InventorySiteLocationRef = new InventorySiteLocation();
                             *  NewInvoice.InventorySiteLocationRef.ListID = "" + ex["InventorySiteLocationRef"]["ListID"].InnerText;
                             *  NewInvoice.InventorySiteLocationRef.Name = "" + ex["InventorySiteLocationRef"]["FullName"].InnerText;
                             * }*/


                            if (ex["SerialNumber"] != null)
                            {
                                NewInvoice.SerialNumber = "" + ex["SerialNumber"].InnerText;
                            }
                            else if (ex["LotNumber"] != null)
                            {
                                NewInvoice.LotNumber = "" + ex["LotNumber"].InnerText;
                            }

                            if (ex["ServiceDate"] != null)
                            {
                                NewInvoice.ServiceDate = DateTime.Parse("" + ex["ServiceDate"].InnerText);
                            }

                            if (ex["SalesTaxCodeRef"] != null)
                            {
                                NewInvoice.SalesTaxCodeRef          = new SalesTaxCode();
                                NewInvoice.SalesTaxCodeRef.ListID   = "" + ex["SalesTaxCodeRef"]["ListID"].InnerText;
                                NewInvoice.SalesTaxCodeRef.FullName = "" + ex["SalesTaxCodeRef"]["FullName"].InnerText;
                            }

                            if (ex["Other1"] != null)
                            {
                                NewInvoice.Other1 = "" + ex["Other1"].InnerText;
                            }

                            if (ex["Other2"] != null)
                            {
                                NewInvoice.Other2 = "" + ex["Other2"].InnerText;
                            }

                            LG.InvoiceLineRet.Add(NewInvoice);
                        }
                        Lines.Add(LG);
                        //InvoiceLineGroupRet.Add(LG);

                        HasGroups = true;
                    }
                    else if (Gex.Name == "InvoiceLineRet")
                    {
                        InvoiceLine NewInvoice = new InvoiceLine();
                        NewInvoice.TxnLineID = "" + Gex["TxnLineID"].InnerText;


                        if (Gex["ItemRef"] != null)
                        {
                            NewInvoice.ItemRef          = new Item();
                            NewInvoice.ItemRef.ListID   = "" + Gex["ItemRef"]["ListID"].InnerText;
                            NewInvoice.ItemRef.FullName = "" + Gex["ItemRef"]["FullName"].InnerText;
                        }
                        if (Gex["Desc"] != null)
                        {
                            NewInvoice.Desc = "" + Gex["Desc"].InnerText;
                        }

                        if (Gex["Quantity"] != null)
                        {
                            NewInvoice.Quantity = Functions.ParseDecimal("" + Gex["Quantity"].InnerText);
                        }

                        if (Gex["UnitOfMeasure"] != null)
                        {
                            NewInvoice.UnitOfMeasure = "" + Gex["UnitOfMeasure"].InnerText;
                            //NewInvoice.UnitOfMeasureSetRef = new UnitOfMeasureSet();
                            //NewInvoice.UnitOfMeasureSetRef.LoadByName(NewInvoice.UnitOfMeasure, ref err);
                        }


                        /*if (ex["OverrideUOMSetRef"] != null)
                         * {
                         *  NewInvoice.OverrideUOMSetRef = new OverrideUOMSet();
                         *  NewInvoice.OverrideUOMSetRef.ListID = "" + ex["OverrideUOMSetRef"]["ListID"].InnerText;
                         *  NewInvoice.OverrideUOMSetRef.FullName = "" + ex["OverrideUOMSetRef"]["FullName"].InnerText;
                         * }*/


                        if (Gex["Rate"] != null)
                        {
                            NewInvoice.Rate = Functions.ParseDecimal("" + Gex["Rate"].InnerText);
                        }
                        else if (Gex["RatePercent"] != null)
                        {
                            NewInvoice.RatePercent = Functions.ParseDecimal("" + Gex["RatePercent"].InnerText);
                        }


                        if (Gex["ClassRef"] != null)
                        {
                            NewInvoice.ClassRef          = new Class();
                            NewInvoice.ClassRef.ListID   = "" + Gex["ClassRef"]["ListID"].InnerText;
                            NewInvoice.ClassRef.FullName = "" + Gex["ClassRef"]["FullName"].InnerText;
                        }

                        if (Gex["Amount"] != null)
                        {
                            NewInvoice.Amount = Functions.ParseDecimal("" + Gex["Amount"].InnerText);
                        }

                        if (Gex["InventorySiteRef"] != null)
                        {
                            NewInvoice.InventorySiteRef        = new InventorySite();
                            NewInvoice.InventorySiteRef.ListID = "" + Gex["InventorySiteRef"]["ListID"].InnerText;
                            NewInvoice.InventorySiteRef.Name   = "" + Gex["InventorySiteRef"]["FullName"].InnerText;
                        }

                        /*if (ex["InventorySiteLocationRef"] != null)
                         * {
                         *  NewInvoice.InventorySiteLocationRef = new InventorySiteLocation();
                         *  NewInvoice.InventorySiteLocationRef.ListID = "" + ex["InventorySiteLocationRef"]["ListID"].InnerText;
                         *  NewInvoice.InventorySiteLocationRef.Name = "" + ex["InventorySiteLocationRef"]["FullName"].InnerText;
                         * }*/


                        if (Gex["SerialNumber"] != null)
                        {
                            NewInvoice.SerialNumber = "" + Gex["SerialNumber"].InnerText;
                        }
                        else if (Gex["LotNumber"] != null)
                        {
                            NewInvoice.LotNumber = "" + Gex["LotNumber"].InnerText;
                        }

                        if (Gex["ServiceDate"] != null)
                        {
                            NewInvoice.ServiceDate = DateTime.Parse("" + Gex["ServiceDate"].InnerText);
                        }

                        if (Gex["SalesTaxCodeRef"] != null)
                        {
                            NewInvoice.SalesTaxCodeRef          = new SalesTaxCode();
                            NewInvoice.SalesTaxCodeRef.ListID   = "" + Gex["SalesTaxCodeRef"]["ListID"].InnerText;
                            NewInvoice.SalesTaxCodeRef.FullName = "" + Gex["SalesTaxCodeRef"]["FullName"].InnerText;
                        }

                        if (Gex["Other1"] != null)
                        {
                            NewInvoice.Other1 = "" + Gex["Other1"].InnerText;
                        }

                        if (Gex["Other2"] != null)
                        {
                            NewInvoice.Other2 = "" + Gex["Other2"].InnerText;
                        }

                        Lines.Add(NewInvoice);
                        //InvoiceLineRet.Add(NewInvoice);
                    }
                }

                if (Lines.Count > 0)
                {
                    List <object> NewLines = new List <object>();

                    var ID = new ItemDiscount();
                    var lista_descuentos = ID.fetchAll(ref err);
                    //lista_descuentos.Add("80000436-1452547982");

                    for (int i = 0; i < Lines.Count; i++)
                    {
                        var type = Lines[i].GetType().ToString();
                        if (type.IndexOf("InvoiceLineGroup") >= 0)
                        {
                            InvoiceLineGroup G = (InvoiceLineGroup)Lines[i];

                            if (i + 1 < Lines.Count)
                            {
                                for (int j = i + 1; j < Lines.Count; j++)
                                {
                                    var stype = Lines[j].GetType().ToString();
                                    // El siguiente es Linea...
                                    if (stype == "Quickbook.InvoiceLine")
                                    {
                                        TransactionLine obj = (TransactionLine)Lines[j];
                                        // Y esa linea es un Descuento..
                                        if (lista_descuentos.Contains(obj.ItemRef.ListID))
                                        {
                                            G.Discounts.Add(obj);
                                            i++;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                            }
                            NewLines.Add(G);
                            InvoiceLineGroupRet.Add(G);
                        }
                        else if (type.IndexOf("InvoiceLine") >= 0)
                        {
                            InvoiceLine L = (InvoiceLine)Lines[i];
                            NewLines.Add(Lines[i]);
                            InvoiceLineRet.Add(L);
                        }
                    }
                }



                // or

                /*<InvoiceLineGroupRet> <!-- optional -->
                 * <TxnLineID >IDTYPE</TxnLineID> <!-- required -->
                 * <ItemGroupRef> <!-- required -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ItemGroupRef>
                 * <Desc >STRTYPE</Desc> <!-- optional -->
                 * <Quantity >QUANTYPE</Quantity> <!-- optional -->
                 * <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
                 * <OverrideUOMSetRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </OverrideUOMSetRef>
                 * <IsPrintItemsInGroup >BOOLTYPE</IsPrintItemsInGroup> <!-- required -->
                 * <TotalAmount >AMTTYPE</TotalAmount> <!-- required -->
                 * <InvoiceLineRet> <!-- optional, may repeat -->
                 * <TxnLineID >IDTYPE</TxnLineID> <!-- required -->
                 * <ItemRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ItemRef>
                 * <Desc >STRTYPE</Desc> <!-- optional -->
                 * <Quantity >QUANTYPE</Quantity> <!-- optional -->
                 * <UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
                 * <OverrideUOMSetRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </OverrideUOMSetRef>
                 * <!-- BEGIN OR -->
                 * <Rate >PRICETYPE</Rate> <!-- optional -->
                 * <!-- OR -->
                 * <RatePercent >PERCENTTYPE</RatePercent> <!-- optional -->
                 * <!-- END OR -->
                 * <ClassRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </ClassRef>
                 * <Amount >AMTTYPE</Amount> <!-- optional -->
                 * <InventorySiteRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </InventorySiteRef>
                 * <InventorySiteLocationRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </InventorySiteLocationRef>
                 * <!-- BEGIN OR -->
                 * <SerialNumber >STRTYPE</SerialNumber> <!-- optional -->
                 * <!-- OR -->
                 * <LotNumber >STRTYPE</LotNumber> <!-- optional -->
                 * <!-- END OR -->
                 * <ServiceDate >DATETYPE</ServiceDate> <!-- optional -->
                 * <SalesTaxCodeRef> <!-- optional -->
                 * <ListID >IDTYPE</ListID> <!-- optional -->
                 * <FullName >STRTYPE</FullName> <!-- optional -->
                 * </SalesTaxCodeRef>
                 * <Other1 >STRTYPE</Other1> <!-- optional -->
                 * <Other2 >STRTYPE</Other2> <!-- optional -->
                 * <DataExtRet> <!-- optional, may repeat -->
                 * <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
                 * <DataExtName >STRTYPE</DataExtName> <!-- required -->
                 * <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
                 * <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
                 * <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
                 * </DataExtRet>
                 * </InvoiceLineRet>
                 * <DataExtRet> <!-- optional, may repeat -->
                 * <OwnerID >GUIDTYPE</OwnerID> <!-- optional -->
                 * <DataExtName >STRTYPE</DataExtName> <!-- required -->
                 * <!-- DataExtType may have one of the following values: AMTTYPE, DATETIMETYPE, INTTYPE, PERCENTTYPE, PRICETYPE, QUANTYPE, STR1024TYPE, STR255TYPE -->
                 * <DataExtType >ENUMTYPE</DataExtType> <!-- required -->
                 * <DataExtValue >STRTYPE</DataExtValue> <!-- required -->
                 * </DataExtRet>
                 * </InvoiceLineGroupRet>*/

                XmlNodeList __extras = node.SelectNodes("DataExtRet");
                foreach (XmlNode ex in __extras)
                {
                    var name    = ex["DataExtName"].InnerText;
                    var value   = ex["DataExtValue"].InnerText;
                    var ownerID = ex["OwnerID"].InnerText;
                    AddDataEx(name, value, ownerID, TxnID);
                }
                return(true);

                full_loaded = true;

                return(true);
            }
            else
            {
                err = statusMessage;
            }
            return(false);
        }
Example #11
0
        public bool LoadByListID(string lid, ref string err)
        {
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<ItemServiceQueryRq>" +
                         "<ListID >" + lid + "</ListID>" +
                         "<OwnerID>0</OwnerID>" +
                         "</ItemServiceQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";
            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string response = qbook.sendRequest(xml);

                XmlDocument res = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["ItemServiceQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["ItemServiceQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var node = res["QBXML"]["QBXMLMsgsRs"]["ItemServiceQueryRs"]["ItemServiceRet"];

                    ListID       = "" + node["ListID"].InnerText;
                    TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    EditSequence = "" + node["EditSequence"].InnerText;
                    Name         = "" + node["Name"].InnerText;
                    FullName     = "" + node["FullName"].InnerText;
                    if (node["BarCodeValue"] != null)
                    {
                        BarCodeValue = "" + node["BarCodeValue"].InnerText;
                    }
                    if (node["IsActive"] != null)
                    {
                        IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                    }

                    if (node["ClassRef"] != null)
                    {
                        ClassRef          = new Class();
                        ClassRef.ListID   = "" + node["ClassRef"]["ListID"].InnerText;
                        ClassRef.FullName = "" + node["ClassRef"]["FullName"].InnerText;
                    }

                    if (node["ParentRef"] != null)
                    {
                        ParentRef          = new ItemService();
                        ParentRef.ListID   = "" + node["ParentRef"]["ListID"].InnerText;
                        ParentRef.FullName = "" + node["ParentRef"]["FullName"].InnerText;
                    }

                    Sublevel = Int32.Parse("" + node["Sublevel"].InnerText);

                    if (node["UnitOfMeasureSetRef"] != null)
                    {
                        UnitOfMeasureSetRef          = new UnitOfMeasureSet();
                        UnitOfMeasureSetRef.ListID   = "" + node["UnitOfMeasureSetRef"]["ListID"].InnerText;
                        UnitOfMeasureSetRef.FullName = "" + node["UnitOfMeasureSetRef"]["FullName"].InnerText;
                        UnitOfMeasureSetRef.LoadByListID(UnitOfMeasureSetRef.ListID, ref err);
                    }

                    if (node["SalesTaxCodeRef"] != null)
                    {
                        SalesTaxCodeRef          = new SalesTaxCode();
                        SalesTaxCodeRef.ListID   = "" + node["SalesTaxCodeRef"]["ListID"].InnerText;
                        SalesTaxCodeRef.FullName = "" + node["SalesTaxCodeRef"]["FullName"].InnerText;
                    }

                    if (node["SalesOrPurchase"] != null)
                    {
                        ServiceType = "SalesOrPurchase";
                        if (node["SalesOrPurchase"]["Desc"] != null)
                        {
                            Desc = "" + node["SalesOrPurchase"]["Desc"].InnerText;
                        }

                        if (node["SalesOrPurchase"]["Price"] != null)
                        {
                            Price = Functions.ParseFloat("" + node["SalesOrPurchase"]["Price"].InnerText);
                        }
                        //or
                        if (node["SalesOrPurchase"]["PricePercent"] != null)
                        {
                            PricePercent = Functions.ParseFloat("" + node["SalesOrPurchase"]["PricePercent"].InnerText);
                        }

                        if (node["SalesOrPurchase"]["AccountRef"] != null)
                        {
                            AccountRef          = new Account();
                            AccountRef.ListID   = "" + node["SalesOrPurchase"]["AccountRef"]["ListID"].InnerText;
                            AccountRef.FullName = "" + node["SalesOrPurchase"]["AccountRef"]["FullName"].InnerText;
                        }
                    }

                    if (node["SalesAndPurchase"] != null)
                    {
                        ServiceType = "SalesAndPurchase";
                        if (node["SalesAndPurchase"]["SalesDesc"] != null)
                        {
                            SalesDesc = "" + node["SalesAndPurchase"]["SalesDesc"].InnerText;
                        }
                        if (node["SalesAndPurchase"]["SalesPrice"] != null)
                        {
                            SalesPrice = Functions.ParseFloat("" + node["SalesAndPurchase"]["SalesPrice"].InnerText);
                        }

                        if (node["SalesAndPurchase"]["IncomeAccountRef"] != null)
                        {
                            IncomeAccountRef          = new IncomeAccount();
                            IncomeAccountRef.ListID   = "" + node["SalesAndPurchase"]["IncomeAccountRef"]["ListID"].InnerText;
                            IncomeAccountRef.FullName = "" + node["SalesAndPurchase"]["IncomeAccountRef"]["FullName"].InnerText;
                        }

                        if (node["SalesAndPurchase"]["PurchaseDesc"] != null)
                        {
                            PurchaseDesc = "" + node["SalesAndPurchase"]["PurchaseDesc"].InnerText;
                        }
                        if (node["SalesAndPurchase"]["PurchaseCost"] != null)
                        {
                            PurchaseCost = Functions.ParseFloat("" + node["SalesAndPurchase"]["PurchaseCost"].InnerText);
                        }

                        if (node["SalesAndPurchase"]["ExpenseAccountRef"] != null)
                        {
                            ExpenseAccountRef          = new ExpenseAccount();
                            ExpenseAccountRef.ListID   = "" + node["SalesAndPurchase"]["ExpenseAccountRef"]["ListID"].InnerText;
                            ExpenseAccountRef.FullName = "" + node["SalesAndPurchase"]["ExpenseAccountRef"]["FullName"].InnerText;
                        }

                        if (node["SalesAndPurchase"]["PrefVendorRef"] != null)
                        {
                            PrefVendorRef          = new PrefVendor();
                            PrefVendorRef.ListID   = "" + node["SalesAndPurchase"]["PrefVendorRef"]["ListID"].InnerText;
                            PrefVendorRef.FullName = "" + node["SalesAndPurchase"]["PrefVendorRef"]["FullName"].InnerText;
                        }
                    }

                    if (node["ExternalGUID"] != null)
                    {
                        ExternalGUID = "" + node["ExternalGUID"].InnerText;
                    }

                    XmlNodeList __extras = node.SelectNodes("DataExtRet");
                    foreach (XmlNode ex in __extras)
                    {
                        var name  = ex["DataExtName"].InnerText;
                        var value = ex["DataExtValue"].InnerText;
                        AddDataEx(name, value);
                    }
                    return(true);
                }
                else
                {
                    err = statusMessage;
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }

            return(false);
        }
Example #12
0
        public bool LoadByListID(string lid, ref string err)
        {
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<ItemDiscountQueryRq>" +
                         "<ListID >" + lid + "</ListID>" +
                         "<OwnerID>0</OwnerID>" +
                         "</ItemDiscountQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";
            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string response = qbook.sendRequest(xml);

                XmlDocument res = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["ItemDiscountQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["ItemDiscountQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var node = res["QBXML"]["QBXMLMsgsRs"]["ItemDiscountQueryRs"]["ItemDiscountRet"];

                    ListID       = "" + node["ListID"].InnerText;
                    TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                    TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                    EditSequence = "" + node["EditSequence"].InnerText;
                    Name         = "" + node["Name"].InnerText;
                    FullName     = "" + node["FullName"].InnerText;
                    if (node["BarCodeValue"] != null)
                    {
                        BarCodeValue = "" + node["BarCodeValue"].InnerText;
                    }
                    if (node["IsActive"] != null)
                    {
                        IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                    }

                    if (node["ClassRef"] != null)
                    {
                        ClassRef          = new Class();
                        ClassRef.ListID   = "" + node["ClassRef"]["ListID"].InnerText;
                        ClassRef.FullName = "" + node["ClassRef"]["FullName"].InnerText;
                    }

                    Sublevel = Int32.Parse("" + node["Sublevel"].InnerText);
                    if (node["ItemDesc"] != null)
                    {
                        ItemDesc = "" + node["ItemDesc"].InnerText;
                    }

                    if (node["SalesTaxCodeRef"] != null)
                    {
                        SalesTaxCodeRef          = new SalesTaxCode();
                        SalesTaxCodeRef.ListID   = "" + node["SalesTaxCodeRef"]["ListID"].InnerText;
                        SalesTaxCodeRef.FullName = "" + node["SalesTaxCodeRef"]["FullName"].InnerText;
                    }

                    CultureInfo ci = (CultureInfo)CultureInfo.CurrentCulture.Clone();
                    ci.NumberFormat.CurrencyDecimalSeparator = ",";
                    if (node["DiscountRate"] != null)
                    {
                        DiscountRate = Functions.ParseFloat("" + node["DiscountRate"].InnerText);
                    }

                    if (node["DiscountRatePercent"] != null)
                    {
                        DiscountRatePercent = Functions.ParseFloat("" + node["DiscountRatePercent"].InnerText);
                    }

                    if (node["AccountRef"] != null)
                    {
                        AccountRef          = new Account();
                        AccountRef.ListID   = "" + node["AccountRef"]["ListID"].InnerText;
                        AccountRef.FullName = "" + node["AccountRef"]["FullName"].InnerText;
                    }

                    if (node["ExternalGUID"] != null)
                    {
                        ExternalGUID = "" + node["ExternalGUID"].InnerText;
                    }

                    XmlNodeList __extras = node.SelectNodes("DataExtRet");
                    foreach (XmlNode ex in __extras)
                    {
                        var name  = ex["DataExtName"].InnerText;
                        var value = ex["DataExtValue"].InnerText;
                        AddDataEx(name, value);
                    }
                    return(true);
                }
                else
                {
                    err = statusMessage;
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }

            return(false);
        }
Example #13
0
        public List <InventorySite> getList(ref string err)
        {
            List <InventorySite> list = new List <InventorySite>();
            string xml = "" +
                         "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                         "<?qbxml version=\"13.0\"?>" +
                         "<QBXML>" +
                         "<QBXMLMsgsRq onError=\"stopOnError\">" +
                         "<InventorySiteQueryRq>" +
                         "<ActiveStatus>ActiveOnly</ActiveStatus>" +
                         "</InventorySiteQueryRq>" +
                         "</QBXMLMsgsRq>" +
                         "</QBXML>";

            var qbook = new Connector(Quickbook.Config.App_Name, Quickbook.Config.File);

            if (qbook.Connect())
            {
                string response = qbook.sendRequest(xml);

                XmlDocument res = new XmlDocument();
                res.LoadXml(response);

                string code          = "";
                string statusMessage = "";

                code          = res["QBXML"]["QBXMLMsgsRs"]["InventorySiteQueryRs"].Attributes["statusCode"].Value;
                statusMessage = res["QBXML"]["QBXMLMsgsRs"]["InventorySiteQueryRs"].Attributes["statusMessage"].Value;

                if (code == "0")
                {
                    var root = res["QBXML"]["QBXMLMsgsRs"]["InventorySiteQueryRs"];

                    XmlNodeList __extras = root.SelectNodes("InventorySiteRet");

                    foreach (XmlNode node in __extras)
                    {
                        InventorySite IS = new InventorySite();
                        IS.ListID       = "" + node["ListID"].InnerText;
                        IS.TimeCreated  = DateTime.Parse("" + node["TimeCreated"].InnerText);
                        IS.TimeModified = DateTime.Parse("" + node["TimeModified"].InnerText);
                        IS.EditSequence = "" + node["EditSequence"].InnerText;
                        IS.Name         = "" + node["Name"].InnerText;

                        if (node["IsActive"] != null)
                        {
                            IS.IsActive = ("" + node["IsActive"].InnerText == "true" ? true : false);
                        }

                        list.Add(IS);
                    }
                }
                else
                {
                    err = statusMessage;
                    return(null);
                }
                qbook.Disconnect();
            }
            else
            {
                err = "QuickBook no conecto";
            }



            return(list);
        }