I want to add to instances of line class in the addInvoice.Line class but problem is that first lineSalesItemLineDetail is assigned in second condition DiscountLineDetail details overload on lineSalesItemLineDetail so that lineSalesItemLineDetail get destroyed, how to add 2 obects in the addInvoice.Line if both if conditions valid. addInvoice.Line is a internal dll defined class which is array kind.
following is code
if (l.SalesItemLineDetail.Count > 0)
{
Line.AnyIntuitObject = lineSalesItemLineDetail; // lineSalesItemLineDetail object of line class
addInvoice.Line = new Intuit.Ipp.Data.Line[] { Line }; //addInvoice is object of Invoice
}
if (l.DiscountLineDetail.Count > 0)
{
DiscountLine.AnyIntuitObject = DiscountLineDetail; // DiscountLineDetail object of line class
addInvoice.Line = new Intuit.Ipp.Data.Line[] { DiscountLine}; //addInvoice is object of Invoice
}
Loading
VulpesPosted May 28, 2014, 11:16 AM
Mrudul GanpulePosted May 28, 2014, 7:44 AM
lineSalesItemLineDetail1, lineSalesItemLineDetail2 and one is DiscountLineDetail
following is my Request xml which i have to send to Intuit.Invoice class
in above xml i have 3 Line tag which kind of class in c#
and Invoice is class which contain Line array, but the problem is that invoice.Line cant hold all three line objects at time
it is holding last Line object anything. and Invoice.Line is a dll class which i can't edit.
following is my c# code :
public bool CreateQBOInvoicReceipt(OnlineDataProcessingsImportClass.OnlineInvoiceQBEntry coll)
{
DataService dataService = null;
OAuthRequestValidator oauthRequestValidator = new OAuthRequestValidator(CommonUtilities.GetInstance().AccessToken, CommonUtilities.GetInstance().AccessTokenSecret, CommonUtilities.GetInstance().ConsumerKey, CommonUtilities.GetInstance().ConsumerSecret);
ServiceContext serviceContext = new ServiceContext("ec8e67fbb2ea3b4cf5ba225b33ab31ff1e6d", CommonUtilities.GetInstance().RealmId, IntuitServicesType.QBO, oauthRequestValidator);
dataService = new DataService(serviceContext);
Intuit.Ipp.Data.Invoice addInvoice = new Intuit.Ipp.Data.Invoice();
OnlineInvoiceQBEntry Invoice = new OnlineInvoiceQBEntry();
Invoice = coll;
Intuit.Ipp.Data.SalesItemLineDetail lineSalesItemLineDetail = new Intuit.Ipp.Data.SalesItemLineDetail();
Intuit.Ipp.Data.Line Line = new Intuit.Ipp.Data.Line();
Intuit.Ipp.Data.Line DiscountLine = new Intuit.Ipp.Data.Line();
try
{
#region Add Sales Receipt
addInvoice.AutoDocNumber = true;
addInvoice.AutoDocNumberSpecified = true;
addInvoice.TxnDate = Convert.ToDateTime(Invoice.TxnDate);
addInvoice.TxnDateSpecified = true;
// find department
foreach (var i in Invoice.DepartmentRef)
{
string displayname = i.Name;
string id = string.Empty;
ReadOnlyCollection
QueryService
dataDepartment = new ReadOnlyCollection
foreach (var item in dataDepartment)
{
id = item.Id;
}
addInvoice.DepartmentRef = new ReferenceType()
{
name=displayname,
Value= id
};
}
addInvoice.PrivateNote = Invoice.PrivateNote;
//for adding line tag
for (int runs = 0; runs < Invoice.Line.Count ; runs++)
{
foreach (var l in Invoice.Line)
{
if (l.LineDetailType == "SalesItemLineDetail")
{
Line.Description = l.LineDescription;
foreach (var s in l.SalesItemLineDetail)
{
Line.DetailType = LineDetailTypeEnum.SalesItemLineDetail;
Line.DetailTypeSpecified = true;
string displayname = string.Empty;
string id = string.Empty;
foreach (var i in s.ItemRef)
{
displayname = i.Name;
ReadOnlyCollection
QueryService
dataItem = new ReadOnlyCollection
foreach (var item in dataItem)
{
id = item.Id;
}
lineSalesItemLineDetail.ItemRef = new ReferenceType()
{
name = displayname,
Value = id
};
}
if (l.LineAmount == null)
{
decimal unitPrice = Convert.ToDecimal(s.LineUnitPrice);
decimal qty = Convert.ToDecimal(s.LineQty);
Line.Amount = unitPrice * qty;
Line.AmountSpecified = true;
}
else
{
Line.Amount = Convert.ToDecimal(l.LineAmount);
Line.AmountSpecified = true;
}
lineSalesItemLineDetail.AnyIntuitObject = Convert.ToDecimal(s.LineUnitPrice);
lineSalesItemLineDetail.ItemElementName = ItemChoiceType.@UnitPrice;
lineSalesItemLineDetail.Qty = Convert.ToDecimal(s.LineQty);
lineSalesItemLineDetail.QtySpecified = true;
foreach (var taxCoderef in s.TaxCodeRef)
{
lineSalesItemLineDetail.TaxCodeRef = new ReferenceType()
{
Value = taxCoderef.Value
};
}
Line.AnyIntuitObject = lineSalesItemLineDetail;
}
}
if (l.LineDetailType == "DiscountLineDetail")
{
Intuit.Ipp.Data.DiscountLineDetail DiscountLineDetail = new Intuit.Ipp.Data.DiscountLineDetail();
foreach (var discount in l.DiscountLineDetail)
{
Line.Amount = Convert.ToDecimal(discount.LineDiscountAmount);
Line.AmountSpecified = true;
Line.DetailType = LineDetailTypeEnum.DiscountLineDetail;
Line.DetailTypeSpecified = true;
DiscountLineDetail.PercentBased = Convert.ToBoolean(discount.PercentBased);
DiscountLineDetail.PercentBasedSpecified = true;
DiscountLineDetail.DiscountPercent = Convert.ToDecimal(discount.DiscountPercent);
DiscountLineDetail.DiscountPercentSpecified = true;
foreach (var account in discount.DiscountAccountRef)
{
string displayname = account.Name;
string id = string.Empty;
ReadOnlyCollection
QueryService
dataAccount = new ReadOnlyCollection
foreach (var item in dataAccount)
{
id = item.Id;
}
DiscountLineDetail.DiscountAccountRef = new ReferenceType()
{
name = displayname,
Value = id
};
}
Line.AnyIntuitObject = DiscountLineDetail;
//addInvoice.Line = new Intuit.Ipp.Data.Line[] { Line };
}
}
addInvoice.Line = new Intuit.Ipp.Data.Line[] { Line };
}
}
addInvoice.Deposit = Convert.ToDecimal(Invoice.Deposit);
addInvoice.DepositSpecified = true;
#endregion
}
catch (Intuit.Ipp.Exception.IdsException ex)
{
}
Intuit.Ipp.Data.Invoice InvoiceAdded = dataService.Add
if (InvoiceAdded.domain == "QBO")
{
CommonUtilities.GetInstance().TxnId = InvoiceAdded.Id;
CommonUtilities.GetInstance().SyncToken = InvoiceAdded.SyncToken;
return true;
}
else
{
return false;
}
}
Please help me how to assign Line , if you can..
Thank you
VulpesPosted May 28, 2014, 6:46 AM
if (l.SalesItemLineDetail.Count > 0 && l.DiscountLineDetail.Count > 0)
{
Line.AnyIntuitObject = lineSalesItemLineDetail;
DiscountLine.AnyIntuitObject = DiscountLineDetail;
addInvoice.Line = new Intuit.Ipp.Data.Line[] { Line, DiscountLine};
}
else if (l.SalesItemLineDetail.Count > 0)
{
Line.AnyIntuitObject = lineSalesItemLineDetail;
addInvoice.Line = new Intuit.Ipp.Data.Line[] { Line };
}
else if (l.DiscountLineDetail.Count > 0)
{
DiscountLine.AnyIntuitObject = DiscountLineDetail;
addInvoice.Line = new Intuit.Ipp.Data.Line[] { DiscountLine};
}