2016-08-25 38 views
0

我使用的SDK V3 .net IppDotNetSdkForQuickBooksApiV3并试图发送电子邮件与发票后我创建它(我发现奇怪的是Quickbook没有做它会在我创建发票后自动生成,所以也许我做错了什么)。用.net SDK发送电子邮件在Quickbook中的发票

因此,这是怎么一回事呢:

//Get customer 
var customerQueryService = new QueryService<Customer>(context);    
var customer = customerQueryService.ExecuteIdsQuery("query to get customer"); 
/*I fill the invoice with data 
..  
.. 
..*/ 
//Call to generate invoice 
var invoiceAdded = dataService.Add(invoice); 
//Email to send 
invoiceAdded.BillEmail = customer.PrimaryEmailAddr; 
invoiceAdded.EmailStatus = EmailStatusEnum.NeedToSend; 
invoiceAdded.EInvoiceStatusSpecified = true; 
//Send Email 
dataService.SendEmail(invoiceAdded); 

这是我得到的麻烦,首先,我注意到从customer.PrimaryEmailAddr对象没有id

enter image description here

所以当我会拨打电话,发送电子邮件我创建的发票出现以下异常后:

Object not found: EmailAddress 

enter image description here

如果我去我的QuickBook网站我有我的,当然客户,这是他的电子邮件。

所以我做错了吗?

+0

也很快书籍默认不发送电子邮件,因为这些都是在QBO两个单独的操作,所以创造了QBO发票并不意味着电子邮件将被发送,除非你告诉它发送电子邮件作为发票被建造。 –

回答

2

试试这个:

//Call to generate invoice 

var invoiceAdded = dataService.Add(invoice); 

//Send Email 

dataService.SendEmail<Invoice>(invoiceAddded, customer.PrimaryEmailAddr.Address); 
1

第二个参数,你传递给方法是特定的电子邮件,将覆盖在发票对象,它应该修复这个bug的默认电子邮件。基本上有可用于发送发票请求的两个版本,有以下几点:

POST /v3/company/<companyID>/invoice/<invoiceId>/send 

然后这一个:

POST /v3/company/<companyID>/invoice/<invoiceId>/send?sendTo=<emailAddr> 

所以,当你通过只是发票,它映射到第一个请求是通过取得发票对象并确定id是什么,然而很多这些字段由于某种原因未被QBO默认填充,这就是为什么您在传递发票时出错,因为由于某种原因,它依赖于该电子邮件有一个ID,我猜QBO不会自动填充你,所以我会做的是使用其他超载为此方法映射到第二个请求,该请求明确地设置了请求中的电子邮件地址,无论如何,只要您传递了有效的电子邮件地址并且存在发票,请求就不会失败,否则您依靠一堆正确填充的数据,这会让你面对很多错误,QuickBooks API通常非常非常容易出错,并且在获取它们时并不能真正帮助你,所以通常情况下,你暴露自己,我认为更好。

相关问题