2016-08-25 93 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通常非常非常容易出錯,並且在獲取它們時並不能真正幫助你,所以通常情況下,你暴露自己,我認爲更好。

相關問題