如何使用XML文本文件在QBFC中添加和发票?

时间:2018-04-23 19:56:58

标签: c# xml quickbooks qbxml qbfc

我有一个Google表格表单,该表单已设置为获取表单数据,将其格式化为QBXML发票添加请求,然后将其另存为文本文档(.gdoc)。我的问题是我发现的QBFC C#示例代码都是基于构建QBXML请求然后发送它;我无法弄清楚如何将现成的QBXML文档作为请求发送到Quickbooks Desktop。

例如,此代码不起作用,因为DoRequests()需要传递IMsgSetRequest并且不接受字符串:

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
IMsgSetResponse responseMsgSet = sessionManager.DoRequests(xmlDoc);

这也不起作用,因为你无法将字符串转换为IMsgSetRequest:

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
IMsgSetRequest requestMsgSet = xmlDoc;
IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);

我假设(并希望)有一个我只是忽略的简单解决方案。但是,如果有的话,我已经躲过了很长时间,以至于我认为值得向你们寻求帮助。提前谢谢。

3 个答案:

答案 0 :(得分:0)

您需要使用QBXML而不是QBFC。 QBFC是生成QBXML的包装器。由于您已经生成了QBXML,因此可以绕过QBFC。包括对QBXMLRP2Lib的引用,以下代码应允许您将数据发送到QuickBooks。

String xmlDoc = File.ReadAllText("J:\\My Drive\\XML Test Doc.gdoc");
QBXMLRP2Lib.IRequestProcessor5 rp = new QBXMLRP2Lib.RequestProcessor3();
rp.OpenConnection2("AppID", "AppName", QBXMLRP2Lib.QBXMLRPConnectionType.localQBD);
string ticket = rp.BeginSession("", QBXMLRP2Lib.QBFileMode.qbFileOpenDoNotCare);
string response = rp.ProcessRequest(ticket, xmlDoc);

答案 1 :(得分:0)

您可能会发现此工具有帮助:SDKTestPlus3。该工具处理与Quickbooks Desktop的连接,然后可以将XML文件传递过来。

答案 2 :(得分:0)

QBSessionManager有一个.DoRequestsFromXMLString,您可以将完整的XML字符串传递到(从文件中读取)。

它的定义是:

IMsgSetResponse DoRequestsFromXMLString(string qbXMLRequest);