使用QBFC12为QuickBooks 2013工作的账单付款

时间:2014-03-03 17:29:04

标签: c# payment quickbooks qbfc

我正在使用C#连接QuickBooks桌面2013.我需要记录账单上的付款,但无法弄清楚它为什么不起作用。我当前的代码不断抛出错误3120,说它无法找到账单,即使账单对象在我的控制下是打开的。我使用intuit提供的IDN Unified OSR作为BillPaymentCheckAdd对象结构,但它们传入的“数据”只是随机的,对我实际需要传递的值没有帮助。所以我可以使用一些帮助。这是付款单法的代码:

            IBillPaymentCheckAdd paymentAdd = requestMsgSet.AppendBillPaymentCheckAddRq();
            paymentAdd.PayeeEntityRef.ListID.SetValue(vendorId);
            paymentAdd.TxnDate.SetValue(DateTime.Now);
            paymentAdd.BankAccountRef.ListID.SetValue(bankAccount.ListID.GetValue());
            paymentAdd.ORCheckPrint.IsToBePrinted.SetValue(true);
            paymentAdd.Memo.SetValue(bankAccount.Name.GetValue());

            IAppliedToTxnAdd appliedToTxnAdd = paymentAdd.AppliedToTxnAddList.Append();
            appliedToTxnAdd.TxnID.SetValue(bill.TxnID.GetValue());
            appliedToTxnAdd.PaymentAmount.SetValue((double)amount);

            ISetCredit setCredit = appliedToTxnAdd.SetCreditList.Append();
            setCredit.CreditTxnID.SetValue(bill.TxnID.GetValue());
            setCredit.AppliedAmount.SetValue((double)amount);
            paymentAdd.IncludeRetElementList.Add(bankAccount.Name.GetValue());

            IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
            IResponse response = responseMsgSet.ResponseList.GetAt(0);
            IBillPaymentCheckRet paymentRet = (IBillPaymentCheckRet)response.Detail;

1 个答案:

答案 0 :(得分:0)

我认为你得到的错误是指setCredit部分。信用额度用于将先前的供应商信用额应用于账单。您将Bill TxnID作为信用证传递,但它是一个账单交易,而不是信用交易,因此QuickBooks说它无法找到信用交​​易,因为它实际上并不存在。

如果您删除了ISetCredit的4行部分,则您的付款应该正确完成。