为什么在Quickbooks SDK中找不到使用引用号的日志?

为什么在Quickbooks SDK中找不到使用引用号的日志?,quickbooks,Quickbooks,我将此归结为一个使用QB Enterprise总是失败的简单示例。(奇怪的是,我可以发誓这个代码过去是有效的。) 通过SDK创建具有特定参考号“PTD1234”的日记账分录 在同一代码块中搜索特定日记账分录 观察,没有发现结果 但是,如果我更改流程,在QB中手动创建相同的日记账分录,那么下面的搜索代码将正常工作并找到日记账分录 Quickbooks qb = new Quickbooks(); qb.Connect(this); IMsgSetR

我将此归结为一个使用QB Enterprise总是失败的简单示例。(奇怪的是,我可以发誓这个代码过去是有效的。)

  • 通过SDK创建具有特定参考号“PTD1234”的日记账分录
  • 在同一代码块中搜索特定日记账分录
  • 观察,没有发现结果
  • 但是,如果我更改流程,在QB中手动创建相同的日记账分录,那么下面的搜索代码将正常工作并找到日记账分录

            Quickbooks qb = new Quickbooks();
            qb.Connect(this);
    
            IMsgSetRequest msr = qb.sm.CreateMsgSetRequest("US", 7, 0);
            msr.Attributes.OnError = ENRqOnError.roeStop;
    
            IJournalEntryAdd jea = msr.AppendJournalEntryAddRq();
    
            jea.TxnDate.SetValue(new DateTime(2013, 3, 1));
            jea.RefNumber.SetValue("PTD1234");
    
            IJournalCreditLine jcl = jea.ORJournalLineList.Append().JournalCreditLine;
            jcl.Amount.SetValue(1);
            jcl.AccountRef.FullName.SetValue("Credit Card Batches:Paymentech");
            jcl.EntityRef.FullName.SetValue("CHASE PAYMENTECH");
    
            IJournalDebitLine jdl = jea.ORJournalLineList.Append().JournalDebitLine;
            jdl.Amount.SetValue(1);
            jdl.AccountRef.FullName.SetValue("Chase Deposits EUR");
            jdl.EntityRef.FullName.SetValue("CHASE PAYMENTECH");
    
            IMsgSetResponse msp = qb.sm.DoRequests(msr);
            IResponse resp = msp.ResponseList.GetAt(0);
            if (resp.StatusCode != 0)
            {
                Log("-------------\r\nError during test");
                Log(resp.StatusMessage);
            }
    
            IJournalEntryRet jet = null;
    
            msr = qb.sm.CreateMsgSetRequest("US", 7, 0);
            msr.Attributes.OnError = ENRqOnError.roeStop;
    
            IJournalEntryQuery q = msr.AppendJournalEntryQueryRq();
            q.metaData.SetValue(ENmetaData.mdNoMetaData);
            q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.RefNumber.SetValue("PTD1234");
            q.ORTxnQuery.TxnFilter.ORRefNumberFilter.RefNumberFilter.MatchCriterion.SetValue(ENMatchCriterion.mcContains);
            q.ORTxnQuery.TxnFilter.AccountFilter.ORAccountFilter.FullNameList.Add("Chase Deposits EUR");
            q.IncludeLineItems.SetValue(false);
    
            msp = qb.sm.DoRequests(msr);
            if (msp.ResponseList.Count > 0)
            {
                IResponseList rl = msp.ResponseList;
                if (rl.Count >= 1)
                {
                    IResponse r = rl.GetAt(0);
                    if (r.Detail == null)
                        Log("Fail: Detail was null");
    
                    if (r.StatusCode != 0)
                        Log("Fail: Status code was not zero");
    
                    if (r.Type.GetValue() == (short)ENResponseType.rtJournalEntryQueryRs)
                    {
                        IJournalEntryRetList crl = (IJournalEntryRetList)r.Detail;
                        if (crl != null && crl.Count == 1)
                            jet = crl.GetAt(0);
                    }
                }
            }
    
            if (jet != null)
                Log("Success!");
    
            qb.Cleanup();
    

    由于未知原因,某些日志尝试无法使用JournalEntryQuery和TxnFilter.ORRefNumberFilter.RefNumberFilter显示。但是,一种解决方法是使用ORTxnQuery.RefNumberList,然后在日记账行中循环,并确保帐户匹配

       public bool GetExactJournalTransaction(string sRefNum, string sAccount, out IJournalEntryRet jet)
        {
            jet = null;
    
            IMsgSetRequest msr = sm.CreateMsgSetRequest("US", 4, 0);
            msr.Attributes.OnError = ENRqOnError.roeStop;
    
            IJournalEntryQuery q = msr.AppendJournalEntryQueryRq();
            q.metaData.SetValue(ENmetaData.mdNoMetaData);
            q.ORTxnQuery.RefNumberList.Add(sRefNum);
            q.IncludeLineItems.SetValue(true);
    
    
            IMsgSetResponse resp = sm.DoRequests(msr);
            if (resp.ResponseList.Count == 0)
                return false;
    
            IResponseList rl = resp.ResponseList;
            if (rl.Count == 1)
            {
                IResponse r = rl.GetAt(0);
                if (r.Detail == null)
                    return false;
    
                if (r.StatusCode != 0)
                    return false;
    
                if (r.Type.GetValue() == (short)ENResponseType.rtJournalEntryQueryRs)
                {
                    IJournalEntryRetList crl = (IJournalEntryRetList)r.Detail;
                    if (crl != null)
                    {
                        for (int i = 0; i < crl.Count; i++)
                        {
                            jet = crl.GetAt(i);
                            for (int j = 0; j < jet.ORJournalLineList.Count; j++)
                            {
                                IORJournalLine l = jet.ORJournalLineList.GetAt(j);
                                if (l.JournalCreditLine != null && l.JournalCreditLine.AccountRef.FullName.GetValue() == sAccount)
                                    return true;
                                else if (l.JournalDebitLine != null && l.JournalDebitLine.AccountRef.FullName.GetValue() == sAccount)
                                    return true;
                            }
                        }
                    }
                }
            }
            return false;
        }
    
    public bool GetExactJournalTransaction(字符串sRefNum、字符串sAccount、out IJournalEntryRet)
    {
    jet=null;
    IMsgSetRequest msr=sm.CreateMsgSetRequest(“US”,4,0);
    msr.Attributes.OnError=ENRqOnError.roeStop;
    IJournalEntryQuery q=msr.AppendJournalEntryQueryRq();
    q、 SetValue(ENmetaData.mdNoMetaData);
    q、 ORTxnQuery.RefNumberList.Add(sRefNum);
    q、 IncludeLineItems.SetValue(真);
    IMsgSetResponse resp=sm.DoRequests(msr);
    if(resp.ResponseList.Count==0)
    返回false;
    IResponseList rl=响应列表;
    如果(rl.Count==1)
    {
    i响应r=rl.GetAt(0);
    如果(r.Detail==null)
    返回false;
    如果(r.StatusCode!=0)
    返回false;
    if(r.Type.GetValue()==(短)ENResponseType.rtJournalEntryQueryRs)
    {
    IJournalEntryRetList crl=(IJournalEntryRetList)r.Detail;
    如果(crl!=null)
    {
    对于(int i=0;i
    @keith我想。唯一的问题是,如果没有IPP标签,Intuit不会查看它……如果您愿意,您可以重新标记,但发布非IPP问题的更好地方是他们的论坛:@KeithPalmer否,您的编辑是正确的。在他们的支持下,我真的不明白他们在做什么。我想他们也不知道。这是典型的Intuit“让我们改变我们的想法,再次****我们的开发者社区!”决策。我想他们每年至少尝试一次,只是为了让我们保持警觉。@KeithPalmer IPP应该是未来,因为SDK应用程序不再被允许进入商店。奇怪的是,他们将IPP推到了这样的位置,并保持SDK论坛的开放。