2013-01-07 17 views
0

使用c#devkit,我如何訪問發票上的行ItemID?使用c#devkit,我如何訪問發票上的行ItemID

我的回答是XML有一個部分,看起來像這樣:

<Line> 
    <Desc>TestItem</Desc> 
    <Amount>66.00</Amount> 
    <Taxable>false</Taxable> 
    <ItemId idDomain="QBO">3</ItemId> 
    <UnitPrice>33</UnitPrice> 
    <Qty>2</Qty> 
    <ServiceDate>2013-01-07-08:00</ServiceDate> 
</Line> 

,可以從該用的devkit像這樣拉數據:

List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>(); 
foreach (var invoiceFound in customerInvoicesWithinDateRange) 
{ 
    foreach (var line in invoiceFound.Line) 
    { 
     things += line.Desc + " <br> "; 
     things += line.Taxable.ToString() + " <br> "; 
     things += line.ServiceDate.ToShortDateString() + " <br> "; 
     things += line.Amount.ToString() + "<br>"; 
    } 
} 

但沒有line.ItemId,行.Qty也不是line.UnitPrice中的對象。

我知道當我設置line.Items對象時,它是作爲ItemsChoiceType2對象,但是當我嘗試訪問line.Items對象時,我得到「NullReferenceException:對象引用未設置爲對象的實例」。

我錯過了什麼步驟來獲得難以捉摸的「3」?

感謝

編輯: @Peter 當我這樣做:

List<Intuit.Ipp.Data.Qbo.Invoice> customerInvoicesWithinDateRange = invoice.ExecuteQuery<Intuit.Ipp.Data.Qbo.Invoice>(context).ToList<Intuit.Ipp.Data.Qbo.Invoice>(); 
var quantity = customerInvoicesWithinDateRange[0].Line[0].Items[Array.IndexOf(customerInvoicesWithinDateRange[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)]; 

我得到 「System.ArgumentNullException:值不能爲空。」在第二行。我認爲customerInvoicesWithinDateRange [0] .Line [0] .ItemsElementName爲null。在我的foreach循環中也是空的。

編輯編輯:

納米,實際上我在dind't有我想任何行查詢的發票。包裹在下面解決了最後的障礙:

if (customerInvoicesWithinDateRange[0].Line[0].Items != null) 

再次感謝您的幫助。

回答

4

Items中的對象在ItemsChoiceType2的ItemsElementName數組中定義。

var quantity = invoices[0].Line[0].Items[Array.IndexOf(invoices[0].Line[0].ItemsElementName, Intuit.Ipp.Data.Qbo.ItemsChoiceType2.Qty)]; 
+0

@IPPPeterL感謝:

所以,沒有任何錯誤檢查,數量可以從以下行獲得!也感謝您的pastebin存儲庫,沒有我會在第3天放棄這個項目。 – safetyOtter

相關問題