使用 C# 开发工具包,发票不会出现在 QB 中

Posted

技术标签:

【中文标题】使用 C# 开发工具包,发票不会出现在 QB 中【英文标题】:With C# Dev Kit, Invoice Not Appearing In QB 【发布时间】:2013-01-31 22:35:14 【问题描述】:

代码似乎可以运行。我没有收到任何错误消息,但在我同步后发票没有出现在 QB 中。代码基本上是这样的(http://pastebin.com/y7QENxeX),并进行了一些(可能)小的改动,如前所述。我能够创建帐户和客户,所以我相信我的应用程序的基本基础设施是好的。我不明白为什么我被困在发票上。我想我的 customerID 是 2。我现在公司里只有 5 个。而且我认为我的 itemID 是 1,因为我现在在 QB 中只有一个。

非常感谢任何和所有帮助。

Intuit.Ipp.Data.Qbd.PhysicalAddress physicalAddress = new Intuit.Ipp.Data.Qbd.PhysicalAddress();
physicalAddress.Line1 = "123 Main St.";
physicalAddress.Line2 = "Apt. 12";
physicalAddress.City = "Mountain View";
physicalAddress.CountrySubDivisionCode = "CA";
physicalAddress.Country = "USA";
physicalAddress.PostalCode = "94043";
physicalAddress.Tag = new string[]  "Billing" ;

Intuit.Ipp.Data.Qbd.InvoiceHeader invoiceHeader = new Intuit.Ipp.Data.Qbd.InvoiceHeader();
invoiceHeader.ARAccountId = new Intuit.Ipp.Data.Qbd.IdType()  idDomain = Intuit.Ipp.Data.Qbd.idDomainEnum.QB, Value = "37" ;
invoiceHeader.ARAccountName = "Accounts Receivable";
// original code : invoiceHeader.CustomerId = new IdType()  idDomain = idDomainEnum.NG, Value = "3291253" ;
invoiceHeader.CustomerId = new Intuit.Ipp.Data.Qbd.IdType()  idDomain = Intuit.Ipp.Data.Qbd.idDomainEnum.QB, Value = "2" ;
invoiceHeader.Balance = (decimal)100.00;
invoiceHeader.BillAddr = physicalAddress;
invoiceHeader.BillEmail = "detroit@tigers.com";
invoiceHeader.CustomerName = "Detroit Tigers";
invoiceHeader.DocNumber = "1234567";
invoiceHeader.DueDate = DateTime.Now;
invoiceHeader.ShipAddr = physicalAddress;
invoiceHeader.ShipDate = DateTime.Now;
invoiceHeader.TaxAmt = (decimal)5;
invoiceHeader.TaxRate = (decimal).05;
invoiceHeader.ToBeEmailed = false;
invoiceHeader.TotalAmt = (decimal)105.00;

List<Intuit.Ipp.Data.Qbd.InvoiceLine> listLine = new List<Intuit.Ipp.Data.Qbd.InvoiceLine>();

//Loop for multiple invoice lines could be added here
Intuit.Ipp.Data.Qbd.ItemsChoiceType2[] invoiceItemAttributes =  Intuit.Ipp.Data.Qbd.ItemsChoiceType2.ItemId, Intuit.Ipp.Data.Qbd.ItemsChoiceType2.UnitPrice, Intuit.Ipp.Data.Qbd.ItemsChoiceType2.Qty ;
// original code : object[] invoiceItemValues =  new IdType()  idDomain = idDomainEnum.QB, Value = "5" , new decimal(33), new decimal(2) ;
object[] invoiceItemValues =  new Intuit.Ipp.Data.Qbd.IdType()  idDomain = Intuit.Ipp.Data.Qbd.idDomainEnum.QB, Value = "1" , new decimal(33), new decimal(2) ;
var invoiceLine = new Intuit.Ipp.Data.Qbd.InvoiceLine();
invoiceLine.Amount = 66;
invoiceLine.AmountSpecified = true;
invoiceLine.Desc = "test " + DateTime.Now.ToShortDateString();
invoiceLine.ItemsElementName = invoiceItemAttributes;
invoiceLine.Items = invoiceItemValues;
invoiceLine.ServiceDate = DateTime.Now;
invoiceLine.ServiceDateSpecified = true;
listLine.Add(invoiceLine);

Intuit.Ipp.Data.Qbd.Invoice invoice = new Intuit.Ipp.Data.Qbd.Invoice();
invoice.Header = invoiceHeader;
invoice.Line = listLine.ToArray();

Intuit.Ipp.Data.Qbd.Invoice addedInvoice = commonService.Add(invoice);

克里斯

【问题讨论】:

【参考方案1】:

您需要阅读以下有关 QuickBooks for Windows 同步管理器如何工作、如何查看同步是否正确运行、对象是否处于错误状态以及如何解决的信息。它可以是任何数量的东西。将记录插入云端后,它会异步下载到桌面上的 QuickBooks,此时应用业务逻辑并将记录从云端匹配到桌面。如果出现问题,同步管理器将显示失败对象的记录、失败原因以及对象现在处于错误状态。 此时,您可以查看错误并采取措施进行修复,例如还原或更新并重新提交。指向以下文档的链接。

QuickBooks Sync ManagerData SyncObjects in Errored StateSync ActivitySync Status

问候 震动

【讨论】:

漂亮!谢谢贾里德。我能够使用 IntuitSyncManagerLogger.log 文件来确定我的项目没有与之关联的帐户。

以上是关于使用 C# 开发工具包,发票不会出现在 QB 中的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2013 中使用 MS Access (C#) 生成发票

在 C# 中为不同的客户生成自动发票编号

高性能凑票工具:从给定金额列表中计算满足目标金额的所有组合

c# 与 Mysql 的通讯方式总结

C# WPF发票打印

Angular 8 急切加载模块(包括应用程序模块)不会出现在 chrome 开发工具中