.Net应用程序更新QuickBook应用程序信息,如地址

时间:2013-09-21 06:15:41

标签: quickbooks qbxml

我想通过我的.Net应用程序更新QuickBook数据,如客户地址,发票地址等。我能够通过API获取所有QuickBook数据,但我无法更新QuickBook数据。

更新功能

StringBuilder strXML = new StringBuilder(string.Empty);
            XmlDocument inputXMLDoc = new XmlDocument();
            inputXMLDoc.AppendChild(inputXMLDoc.CreateXmlDeclaration("1.0", null, null));
            inputXMLDoc.AppendChild(inputXMLDoc.CreateProcessingInstruction("qbxml", "version=\"8.0\""));
            XmlElement qbXML = inputXMLDoc.CreateElement("QBXML");
            inputXMLDoc.AppendChild(qbXML);

            XmlElement qbXMLMsgsRq = inputXMLDoc.CreateElement("QBXMLMsgsRq");
            qbXML.AppendChild(qbXMLMsgsRq);
            qbXMLMsgsRq.SetAttribute("onError", "stopOnError");

            XmlElement custModeRq = inputXMLDoc.CreateElement("CustomerModRq");
            qbXMLMsgsRq.AppendChild(custModeRq);
            custModeRq.SetAttribute("requestID", "15");

            XmlElement custMod = inputXMLDoc.CreateElement("CustomerMod");
            custModeRq.AppendChild(custMod);

            XmlElement ListId = inputXMLDoc.CreateElement("ListID");
            custMod.AppendChild(ListId);
            ListId.InnerText = _listID;

            XmlElement EditSequence = inputXMLDoc.CreateElement("EditSequence");
            custMod.AppendChild(EditSequence);
            EditSequence.InnerText = _editSequence;

            XmlElement Name = inputXMLDoc.CreateElement("Name");
            custMod.AppendChild(Name);
            Name.InnerText = "Jack Sparrow";

            string s = QuickbooksAPI.APIBase.GetQBQueryResponce(inputXMLDoc.OuterXml);

            return inputXMLDoc.OuterXml;

获取请求/响应功能

RequestProcessor2 rp = null;
                string ticket = null;
                string response = null;
                try
                {
                    rp = new RequestProcessor2();
                    rp.OpenConnection("", "Stamps.com");
                    //rp.OpenConnection2("", "Stamps.com",QBXMLRPConnectionType.localQBDLaunchUI);
                    ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare);
                    response = rp.ProcessRequest(ticket, strRequest);
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    //MessageBox.Show("COM Error Description = " + ex.Message, "COM error");                    
                    return "";
                }
                finally
                {
                    if (ticket != null)
                    {
                        rp.EndSession(ticket);
                    }
                    if (rp != null)
                    {
                        rp.CloseConnection();
                    }
                };

先谢谢。

1 个答案:

答案 0 :(得分:1)

设置以下请求XML。

XML格式:

<?xml version="1.0"?>

<?qbxml version="8.0"?>
<QBXML>
  <QBXMLMsgsRq onError="stopOnError">
    <CustomerModRq requestID="15">
      <CustomerMod>
        <ListID>9D84-1182061418</ListID>
        <EditSequence>1481791846</EditSequence>
        <BillAddress>
          <Addr1>addr1</Addr1>
          <Addr2>addr2</Addr2>
          <City>City</City>
          <State>State</State>
          <PostalCode>382007</PostalCode>
        </BillAddress>
      </CustomerMod>
    </CustomerModRq>
  </QBXMLMsgsRq>
</QBXML>