public void BasicInvoiceAddRequest_Order_Test()
        {
            var request      = new QbXmlRequest();
            var innerRequest = new InvoiceAddRqType
            {
                InvoiceAdd = new InvoiceAdd
                {
                    CustomerRef = new CustomerRef
                    {
                        ListID = "12345"
                    },
                    IsPending = true
                }
            };

            var items = new List <InvoiceLineAdd>();

            for (var i = 0; i < 10; i++)
            {
                items.Add(new InvoiceLineAdd
                {
                    Desc = $"Test Item {i} for Test"
                });
                items.Add(new InvoiceLineAdd
                {
                    Desc = $"Another Test {i} item"
                });
            }

            innerRequest.InvoiceAdd.InvoiceLineAdd = items.ToArray();

            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();

            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("InvoiceAddRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//InvoiceAddRq/InvoiceAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.CustomerRef.ListID, node.ReadNode("CustomerRef/ListID"));
            Assert.AreEqual(innerRequest.InvoiceAdd.IsPending.ToString(), node.ReadNode("IsPending"));

            var nodes2 = node.SelectNodes("InvoiceLineAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Count(), nodes2.Count);

            for (var i = 0; i < 20; i += 2)
            {
                var c = i / 2;
                Assert.AreEqual($"Test Item {c} for Test", nodes2[i].ReadNode("Desc"));
                Assert.AreEqual($"Another Test {c} item", nodes2[i + 1].ReadNode("Desc"));
            }

            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
        public void BasicInvoiceAddRequestTest()
        {
            var request      = new QbXmlRequest();
            var innerRequest = new InvoiceAddRqType
            {
                InvoiceAdd = new InvoiceAdd
                {
                    CustomerRef = new CustomerRef
                    {
                        ListID = "12345"
                    },
                    IsPending      = true,
                    InvoiceLineAdd = new InvoiceLineAdd[]
                    {
                        new InvoiceLineAdd
                        {
                            Desc = "Desc1"
                        },
                        new InvoiceLineAdd
                        {
                            Desc         = "Desc2",
                            SerialNumber = "123",
                        }
                    },
                }
            };

            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();

            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("InvoiceAddRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//InvoiceAddRq/InvoiceAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.CustomerRef.ListID, node.ReadNode("CustomerRef/ListID"));
            Assert.AreEqual(innerRequest.InvoiceAdd.IsPending.ToString(), node.ReadNode("IsPending"));

            var nodes2 = node.SelectNodes("InvoiceLineAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Count(), nodes2.Count);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().Desc, nodes2[0].ReadNode("Desc"));
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Last().Desc, nodes2[1].ReadNode("Desc"));
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Last().SerialNumber, nodes2[1].ReadNode("SerialNumber"));
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
        public void BasicInvoiceAddRequest_TooLong_Test()
        {
            var request      = new QbXmlRequest();
            var innerRequest = new InvoiceAddRqType
            {
                InvoiceAdd = new InvoiceAdd
                {
                    CustomerRef = new CustomerRef
                    {
                        ListID = "12345"
                    },
                    IsPending      = true,
                    InvoiceLineAdd = new InvoiceLineAdd[]
                    {
                        new InvoiceLineAdd
                        {
                            Desc      = "Desc1",
                            LotNumber = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"  // 52 characters > 40
                        },
                    },
                }
            };

            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();

            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("InvoiceAddRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//InvoiceAddRq/InvoiceAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.CustomerRef.ListID, node.ReadNode("CustomerRef/ListID"));
            Assert.AreEqual(innerRequest.InvoiceAdd.IsPending.ToString(), node.ReadNode("IsPending"));

            var nodes2 = node.SelectNodes("InvoiceLineAdd");

            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Count(), nodes2.Count);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().Desc, nodes2[0].ReadNode("Desc"));
            Assert.AreEqual("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(0, 40), innerRequest.InvoiceAdd.InvoiceLineAdd.First().LotNumber);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().LotNumber, nodes2[0].ReadNode("LotNumber"));
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
        public void BasicInvoiceAddRequestTest()
        {
            var request = new QbXmlRequest();
            var innerRequest = new InvoiceAddRqType();
            innerRequest.InvoiceAdd = new InvoiceAdd
            {
                CustomerRef = new CustomerRef
                {
                    ListID = "12345"
                },
                IsPending = true,
                InvoiceLineAdd = new InvoiceLineAdd[]
                {
                    new InvoiceLineAdd
                    {
                         Desc = "Desc1"
                    },
                    new InvoiceLineAdd
                    {
                         Desc = "Desc2",
                         SerialNumber = "123",
                    }
                },
            };
            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();
            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("InvoiceAddRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//InvoiceAddRq/InvoiceAdd");
            Assert.AreEqual(innerRequest.InvoiceAdd.CustomerRef.ListID, node.ReadNode("CustomerRef/ListID"));
            Assert.AreEqual(innerRequest.InvoiceAdd.IsPending.ToString(), node.ReadNode("IsPending"));

            var nodes2 = node.SelectNodes("InvoiceLineAdd");
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Count(), nodes2.Count);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().Desc, nodes2[0].ReadNode("Desc"));
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Last().Desc, nodes2[1].ReadNode("Desc"));
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Last().SerialNumber, nodes2[1].ReadNode("SerialNumber"));
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
        public void BasicInvoiceAddRequest_TooLong_Test()
        {
            var request = new QbXmlRequest();
            var innerRequest = new InvoiceAddRqType();
            innerRequest.InvoiceAdd = new InvoiceAdd
            {
                CustomerRef = new CustomerRef
                {
                    ListID = "12345"
                },
                IsPending = true,
                InvoiceLineAdd = new InvoiceLineAdd[]
                {
                    new InvoiceLineAdd
                    {
                         Desc = "Desc1",
                         LotNumber = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ" // 52 characters > 40
                    },
                },
            };
            request.AddToSingle(innerRequest);
            var xml = request.GetRequest();

            XmlDocument requestXmlDoc = new XmlDocument();
            requestXmlDoc.LoadXml(xml);

            Assert.AreEqual(1, requestXmlDoc.GetElementsByTagName("InvoiceAddRq").Count);

            var node = requestXmlDoc.SelectSingleNode("//InvoiceAddRq/InvoiceAdd");
            Assert.AreEqual(innerRequest.InvoiceAdd.CustomerRef.ListID, node.ReadNode("CustomerRef/ListID"));
            Assert.AreEqual(innerRequest.InvoiceAdd.IsPending.ToString(), node.ReadNode("IsPending"));

            var nodes2 = node.SelectNodes("InvoiceLineAdd");
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.Count(), nodes2.Count);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().Desc, nodes2[0].ReadNode("Desc"));
            Assert.AreEqual("ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ".Substring(0, 40), innerRequest.InvoiceAdd.InvoiceLineAdd.First().LotNumber);
            Assert.AreEqual(innerRequest.InvoiceAdd.InvoiceLineAdd.First().LotNumber, nodes2[0].ReadNode("LotNumber"));
            Assert.IsEmpty(QuickBooksTestHelper.GetXmlValidation(xml));
        }
Пример #6
0
        public QBXMLMsgsRs buildInvoiceAddRqXML(string customer, DateTime txnDate, string refNumber)
        {
            InvoiceAddRqType req = new InvoiceAddRqType();

            req.InvoiceAdd                      = new InvoiceAdd();
            req.InvoiceAdd.TemplateRef          = new TemplateRef();
            req.InvoiceAdd.TemplateRef.FullName = customer;
            req.InvoiceAdd.CustomerRef          = new CustomerRef();
            req.InvoiceAdd.CustomerRef.FullName = customer;
            req.InvoiceAdd.Other                = "tttt";

            if (txnDate != null)
            {
                req.InvoiceAdd.TxnDate = txnDate.ToString("yyyy-MM-dd");
            }
            if (!string.IsNullOrEmpty(refNumber))
            {
                req.InvoiceAdd.RefNumber = refNumber;
            }
            //string requestXML = "";

            ////if (!validateInput()) return null;

            ////GET ALL INPUT INTO XML
            //XmlDocument xmlDoc = new XmlDocument();
            //XmlElement qbXMLMsgsRq = buildRqEnvelope(xmlDoc, maxVersion);
            //qbXMLMsgsRq.SetAttribute("onError", "stopOnError");
            //XmlElement InvoiceAddRq = xmlDoc.CreateElement("InvoiceAddRq");
            //qbXMLMsgsRq.AppendChild(InvoiceAddRq);
            //XmlElement InvoiceAdd = xmlDoc.CreateElement("InvoiceAdd");
            //InvoiceAddRq.AppendChild(InvoiceAdd);

            //// CustomerRef -> FullName
            //if (comboBox_Customer.Text != "")
            //{
            //	XmlElement Element_CustomerRef = xmlDoc.CreateElement("CustomerRef");
            //	InvoiceAdd.AppendChild(Element_CustomerRef);
            //	XmlElement Element_CustomerRef_FullName = xmlDoc.CreateElement("FullName");
            //	Element_CustomerRef.AppendChild(Element_CustomerRef_FullName).InnerText = comboBox_Customer.Text;
            //}


            // RefNumber
            //if (textBox_RefNumber.Text != "")
            //{
            //	XmlElement Element_RefNumber = xmlDoc.CreateElement("RefNumber");
            //	InvoiceAdd.AppendChild(Element_RefNumber).InnerText = textBox_RefNumber.Text;
            //}

            // BillAddress

/*
 *                      if (label_BillTo.Text != "")
 *                      {
 *                              string[] BillAddress = label_BillTo.Text.Split('\n');
 *                              XmlElement Element_BillAddress = xmlDoc.CreateElement("BillAddress");
 *                              InvoiceAdd.AppendChild(Element_BillAddress);
 *                              for (int i = 0; i < BillAddress.Length; i++)
 *                              {
 *                                      if (BillAddress[i] != "" || BillAddress[i] != null)
 *                                      {
 *                                              XmlElement Element_Addr = xmlDoc.CreateElement("Addr" + (i + 1));
 *                                              Element_BillAddress.AppendChild(Element_Addr).InnerText = BillAddress[i];
 *                                      }
 *                              }
 *                      }
 *
 *                      // TermsRef -> FullName
 *                      bool termsAvailable = false;
 *                      if (comboBox_Terms.Text != "")
 *                      {
 *                              termsAvailable = true;
 *                              XmlElement Element_TermsRef = xmlDoc.CreateElement("TermsRef");
 *                              InvoiceAdd.AppendChild(Element_TermsRef);
 *                              XmlElement Element_TermsRef_FullName = xmlDoc.CreateElement("FullName");
 *                              Element_TermsRef.AppendChild(Element_TermsRef_FullName).InnerText = comboBox_Terms.Text;
 *                      }
 *
 *                      // DueDate
 *                      if (termsAvailable)
 *                      {
 *                              DateTime DT_DueDate = System.DateTime.Today;
 *                              double dueInDays = getDueInDays();
 *                              DT_DueDate = DT_TxnDate.AddDays(dueInDays);
 *                              string DueDate = getDateString(DT_DueDate);
 *                              XmlElement Element_DueDate = xmlDoc.CreateElement("DueDate");
 *                              InvoiceAdd.AppendChild(Element_DueDate).InnerText = DueDate;
 *                      }
 *
 *                      // CustomerMsgRef -> FullName
 *                      if (comboBox_CustomerMessage.Text != "")
 *                      {
 *                              XmlElement Element_CustomerMsgRef = xmlDoc.CreateElement("CustomerMsgRef");
 *                              InvoiceAdd.AppendChild(Element_CustomerMsgRef);
 *                              XmlElement Element_CustomerMsgRef_FullName = xmlDoc.CreateElement("FullName");
 *                              Element_CustomerMsgRef.AppendChild(Element_CustomerMsgRef_FullName).InnerText = comboBox_CustomerMessage.Text;
 *                      }
 *
 *                      // ExchangeRate
 *                      if (textBox_ExchangeRate.Text != "")
 *                      {
 *                              XmlElement Element_ExchangeRate = xmlDoc.CreateElement("ExchangeRate");
 *                              InvoiceAdd.AppendChild(Element_ExchangeRate).InnerText = textBox_ExchangeRate.Text;
 *                      }
 */
            //Line Items

            List <InvoiceLineAdd> lineItems = new List <InvoiceLineAdd>();

            InvoiceLineAdd line = new InvoiceLineAdd();

//			ItemRef
            line.ItemRef           = new ItemRef();
            line.ItemRef.FullName  = "Labor";
            line.Desc              = "Test";
            line.ClassRef          = new ClassRef();
            line.ClassRef.FullName = "Home Depot:Atlanta:Hard Surface";
            line.Amount            = "123456.78";
            line.IsTaxable         = "false";
            lineItems.Add(line);
            line                   = new InvoiceLineAdd();
            line.ItemRef           = new ItemRef();
            line.ItemRef.FullName  = "Back Charge";
            line.Desc              = "Smith James";
            line.ClassRef          = new ClassRef();
            line.ClassRef.FullName = "Home Depot:Atlanta:Hard Surface";
            line.Amount            = "-543.21";
            line.IsTaxable         = "false";
            lineItems.Add(line);
            req.InvoiceAdd.Items = lineItems.ToArray();;



            //XmlElement Element_InvoiceLineAdd;
            //for (int x = 1; x < 6; x++)
            //{
            //	Element_InvoiceLineAdd = xmlDoc.CreateElement("InvoiceLineAdd");
            //	InvoiceAdd.AppendChild(Element_InvoiceLineAdd);

            //	string[] lineItem = getLineItem(x);
            //	if (lineItem[0] != "")
            //	{
            //		XmlElement Element_InvoiceLineAdd_ItemRef = xmlDoc.CreateElement("ItemRef");
            //		Element_InvoiceLineAdd.AppendChild(Element_InvoiceLineAdd_ItemRef);
            //		XmlElement Element_InvoiceLineAdd_ItemRef_FullName = xmlDoc.CreateElement("FullName");
            //		Element_InvoiceLineAdd_ItemRef.AppendChild(Element_InvoiceLineAdd_ItemRef_FullName).InnerText = lineItem[0];
            //	}
            //	if (lineItem[1] != "")
            //	{
            //		XmlElement Element_InvoiceLineAdd_Desc = xmlDoc.CreateElement("Desc");
            //		Element_InvoiceLineAdd.AppendChild(Element_InvoiceLineAdd_Desc).InnerText = lineItem[1];
            //	}
            //	if (lineItem[2] != "")
            //	{
            //		XmlElement Element_InvoiceLineAdd_Quantity = xmlDoc.CreateElement("Quantity");
            //		Element_InvoiceLineAdd.AppendChild(Element_InvoiceLineAdd_Quantity).InnerText = lineItem[2];
            //	}
            //	if (lineItem[3] != "")
            //	{
            //		XmlElement Element_InvoiceLineAdd_Rate = xmlDoc.CreateElement("Rate");
            //		Element_InvoiceLineAdd.AppendChild(Element_InvoiceLineAdd_Rate).InnerText = lineItem[3];
            //	}
            //	if (lineItem[4] != "")
            //	{
            //		XmlElement Element_InvoiceLineAdd_Amount = xmlDoc.CreateElement("Amount");
            //		Element_InvoiceLineAdd.AppendChild(Element_InvoiceLineAdd_Amount).InnerText = lineItem[4];
            //	}
            //}


            //InvoiceAddRq.SetAttribute("requestID", "99");
            //requestXML = xmlDoc.OuterXml;

            //return requestXML;



            InvoiceAddRsType resp;
            QBXMLMsgsRs      r = this.Transmit(req, out resp);

            return(r);
        }