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