c# - 使用 .NET IPP QBOV3 SDK 在线将发票添加到 quickbooks

标签 c# quickbooks quickbooks-online

使用 .NET IPP QBOV3 SDK

我整个星期都在为一个小型集成项目工作(挣扎)。 该项目的目的是能够在 Windows 桌面客户端应用程序与在线 quickbooks 之间进行一些帐户集成。

我希望能够-

  1. 创建新客户/供应商(可以这样做)
  2. 添加销售发票(不能这样做)
  3. 返还信用余额(甚至还没有尝试过)

在阅读了一些论坛和文章后,我明白了 QBOV3 .NET SDK 是可以使用的,原因有二。

  1. 我将使用 C# .net 作为 winforms 应用程序来编写 我需要的功能(这允许我将功能集成到 目前的系统,这个也是用c#.net winforms写的)

  2. 似乎凭直觉说这是要走的路,因为所有 API 都是 将要贬值。

所以,我的第一个障碍是 OAuth - 最终我设法弄清楚了。我现在可以授权并连接到我的 QBO 沙盒帐户 - 太棒了!

我还可以从 winforms 应用程序创建客户,他们出现在 QBO 中 - 也很棒!

在过去 2 年左右的时间里,让我感到困惑的下一步是能够为客户创建发票 - 我似乎无法弄清楚该怎么做。我不断收到“错误请求”错误。

我在网上几乎找不到关于如何从 c# winforms 应用程序执行此操作的示例。不可能那么难 - 所以我现在真的很自责。

任何帮助或样本让我朝着正确的方向前进,我们将不胜感激。 我不敢相信已经不存在这方面的简单示例 - 我猜没有多少人通过桌面 winforms 应用程序这样做,或者我只是在错误的地方寻找 - 或者错过了一些明显的东西!

通读 API 文档会让人感到困惑,而且实际上并没有提供任何示例代码。我认为添加销售发票是一件很重要的事情。

这是我目前用来获得一些简单功能的代码——创建客户工作正常(如果客户在 qbo 中不存在——这是我在添加之前需要检查的东西——所以任何关于它的指导都是也很棒)

这是我到目前为止拼凑的代码..

 private void button2_Click(object sender, EventArgs e)
    {
        string consumerKey = "consumerKey";
        string consumerSecret = "consumerSecret";

        string accessToken = "accessToken"; 
        string accessTokenSecret = "accessTokenSecret";

        string appToken = "appToken"; 
        string companyID = "companyID"; //realmID

        OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);

        ServiceContext context = new ServiceContext(appToken, companyID, IntuitServicesType.QBO, oauthValidator);
        //uses production as default, which is https://quickbooks.api.intuit.com
        context.IppConfiguration.BaseUrl.Qbo = "https://sandbox-quickbooks.api.intuit.com/";
        //If not set, the default base URL, https://quickbooks.api.intuit.com, is used



        DataService service = new DataService(context);

        //add customer
        Customer customer = new Customer();

        customer.CompanyName = "Jims Junk";
        customer.GivenName = "Jim";
        customer.FamilyName = "Little";
        customer.PrimaryEmailAddr = new EmailAddress() { Address = "test@test.com", Default = true };
        customer.DisplayName = "Jims Junk Ltd"

        Customer resultCustomer = service.Add(customer) as Customer;


        //invoice

        //-An invoice must have at least one Line that describes an item.
        //- An invoice must have CustomerRef populated.
        //- The DocNumber attribute is populated automatically by the data service if not supplied.
        //- If ShipAddr, BillAddr, or both are not provided, the appropriate customer address from Customer is used to fill those values.
        //-DocNumber, if supplied, must be unique.

        Invoice invoice = new Invoice();

        invoice.DocNumber = "uniqueNumber";
        invoice.TxnDate = DateTime.Today.Date;
        invoice.TxnDateSpecified = true;
        invoice.CustomerRef = new ReferenceType()
        {
            name = customer.DisplayName,
            Value = resultCustomer.Id
        };

        Line invLine = new Line();

        invLine.Amount = 10000;
        invLine.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
        invLine.Description = "Test Product";

        invoice.Line = new Line[] { invLine };


        Invoice resultInvoice = service.Add(invoice) as Invoice;


    }

最佳答案

Sods Law,在几天没有找到任何东西之后 - 现在我找到了一个有帮助的代码示例。

我现在已经设法将发票发送到 QBO。

这是帮助的链接 - http://developer.qbapi.com/Create-Invoice-Error---Bad-Request.aspx

我就把它放在这里,以便其他人在挣扎中受益。

感谢阅读。

关于c# - 使用 .NET IPP QBOV3 SDK 在线将发票添加到 quickbooks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34954536/

相关文章:

c# - 使用 Async/Await 的无限递归调用永远不会抛出异常

java - 如何授权 QuickBooks Online 对私有(private)桌面应用程序的请求

java - 需要将数据导入 Quickbooks

mysql - 如何配置 QODBC 驱动程序以与您的 QuickBooks 一起使用?

c# - 在 Zedgraph 中检测鼠标悬停在线上

c# - DataTable 中的 ClosedXML 工作表不遵循文化

c# - 未经检查的 C# block 中的 System.OverflowException

php - MySQL IN() 列表是否有限制

c# - Intuit Quickbooks Online API - 如何购买