QuickBooks Intuit IPP问题检查

本文关键字:检查 问题 IPP Intuit QuickBooks | 更新日期: 2023-09-27 18:24:48

我正试图通过Intuit.IPP API(Interop.QBFC12)使用以下代码向供应商发出支票:

    IMsgSetRequest messageSet = session.CreateMsgSetRequest("US", 7, 0);
    ICheckAdd cheque = messageSet.AppendCheckAddRq();
    cheque.AccountRef.ListID.SetValue(vendor.ListID.GetValue());
    cheque.AccountRef.FullName.SetValue("myAccountName");
    cheque.TxnDate.SetValue(DateTime.Today);
    IMsgSetResponse responseSet = session.DoRequests(messageSet);
    IResponse response = responseSet.ResponseList.GetAt(0);
    responseType = (ENResponseType)response.Type.GetValue();
    if (responseType == ENResponseType.rtCheckAddRq)
        returnMessage = response.StatusMessage;

由此产生的响应。StatusMessage="找不到请求中指定的对象80000005-1374598713。"指定的对象ID是我为供应商提取的ListID。

我编写代码时几乎是盲目的,因为我觉得IPP文档对版本12没有太大帮助或更新。

我错过了什么?

QuickBooks Intuit IPP问题检查

这:

cheque.AccountRef.ListID.SetValue(vendor.ListID.GetValue());
cheque.AccountRef.FullName.SetValue("myAccountName");

是什么导致了你的问题。

AccountRef节点用于指定帐户,而不是供应商。帐户是来自QuickBooks科目表(一个"帐户"对象)的东西。供应商是供应商列表中的某个对象("供应商"对象),它们不是可交换的对象。

由于您已经在设置AccountRef/FullName:

cheque.AccountRef.FullName.SetValue("myAccountName");

您不需要设置AccountRef/ListID。

您应该始终设置ListIDFullName-没有理由同时设置两者(这只是引用同一对象的替代方法-两者都是QuickBooks的"外键")。

你可能想做的是像你想做的那样设置AccountRef,但也设置PayeeEntityRef。例如:

cheque.PayeeEntityRef.ListID.SetValue(vendor.ListID.GetValue());

此外,关于此:

由于找不到IPP文档,我的编码几乎是盲目的对版本12非常有用或最新。

IPP与您使用的API完全不同。IPP文档对您没有用处,因为它与您使用的API不太接近。

您应该使用QuickBooks OSR:作为参考

  • https://member.developer.intuit.com/qbSDK-current/Common/newOSR/index.html

还有QuickBooks SDK可下载.EXE,其中有一堆相关的PDF文档。