【问题标题】:How to add Invoice in QuickBook using C# and Quickbook SDK?如何使用 C# 和 Quickbook SDK 在 QuickBook 中添加发票?
【发布时间】:2014-01-19 12:45:50
【问题描述】:

我对 QuickBook(桌面)集成完全陌生。我想使用 Quickbook SDK 在 QuickBook 中创建发票。我正在关注C# .NET Application with QuickBooks Desktop Edition 为我的客户和发票开箱。

我可以创建客户但无法开票。

这是我的代码:

ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
customerAddRq.Name.SetValue(Customer.Name);

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

IInvoiceAdd invoiceAddRq = requestMsgSet.AppendInvoiceAddRq();
invoiceAddRq.CustomerRef.ListID.SetValue(customerRet.ListID.GetValue());

IMsgSetResponse invoiceResponseMsgSet = sessionManager.DoRequests(requestMsgSet);
IResponse invoiceResponse = invoiceResponseMsgSet.ResponseList.GetAt(0);
IInvoiceRet invoiceRet = (IInvoiceRet)invoiceResponse.Detail;

我得到invoiceRet 总是null

另一个问题是IInvoiceAddInvoice Number 的用户是哪个属性?

【问题讨论】:

    标签: c# .net sdk quickbooks


    【解决方案1】:

    当您收到响应时,您需要检查响应状态以查看请求是否有效。例如:

    IResponse invoiceResponse = invoiceResponseMsgSet.ResponseList.GetAt(0);
    if(invoiceResponse.StatusCode !=0)
    {
        // There was an error with the request.
        string errorMsg = invoiceResponse.StatusMessage;
    }

    在这种情况下,您会收到错误消息:“交易为空。”这意味着您需要在发票中添加一些项目以在发票上创建美元金额。即使 OSR 没有说明这些是必需的,您仍然需要将它们放在那里,即使它们的数量为零。这就像您尝试在 QuickBooks 中手动创建发票而不指定任何项目一样。

    假设您有一个名为“销售”的项目设置,您的请求将如下所示:

    ICustomerAdd customerAddRq = requestMsgSet.AppendCustomerAddRq();
    customerAddRq.Name.SetValue(Customer.Name);
    
    IMsgSetResponse responseMsgSet = sessionManager.DoRequests(requestMsgSet);
    IResponse response = responseMsgSet.ResponseList.GetAt(0);
    ICustomerRet customerRet = (ICustomerRet)response.Detail;
    
    IInvoiceAdd invoiceAddRq = requestMsgSet.AppendInvoiceAddRq();
    invoiceAddRq.CustomerRef.ListID.SetValue(customerRet.ListID.GetValue());
    
    // Add these lines to your request
    IORInvoiceLineAdd invoiceLineAdd = invoiceAddRq.ORInvoiceLineAddList.Append();
    invoiceLineAdd.InvoiceLineAdd.ItemRef.FullName.SetValue("Sales");
    
    IMsgSetResponse invoiceResponseMsgSet = sessionManager.DoRequests(requestMsgSet);
    IResponse invoiceResponse = invoiceResponseMsgSet.ResponseList.GetAt(0);
    IInvoiceRet invoiceRet = (IInvoiceRet)invoiceResponse.Detail;
    

    发票编号字段称为 RefNumber。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多