/// <summary> /// Read Line Items details : DataTable to Object /// </summary> /// <param name="table"></param> public static void ReadLineItems(DataTable table) { LineItems lineItem; int id = 0; foreach (var row in table.AsEnumerable()) { lineItem = new LineItems(); lineItem.Amount = Double.Parse((string)row[VBEle.amount]); lineItem.Description = (string)row[VBEle.description]; lineItem.DiscountValue = Double.Parse((string)row[VBEle.discount_value]);; lineItem.ID = ++id; lineItem.ItemCode = (string)row[VBEle.item_code]; lineItem.LineType = (string)row[VBEle.line_item_type]; lineItem.Qty = Double.Parse((string)row[VBEle.qty]);; lineItem.Rate = Double.Parse((string)row[VBEle.rate]);; lineItem.Serial = Int16.Parse((string)row[VBEle.serial]);; lineItem.Value = Double.Parse((string)row[VBEle.value]);; lineItem.VoyBillId = -1; vBill.AddLineItem(lineItem); } }
public void AddLineItem(LineItems items) { lineItems.Add(items); }
protected static void ReadLineItems( ) { //TODO: where element /value/name is blank check for subsequent data and still null or blank // then read Next Line // Check With AtLeast 10 20 bills of different type //Still getting blank or end element then alert only for testing purpose int a = 0; LineItems lItems = null; ws.WriteLine("Reading Line Items "); int ids = 0; do { a++; ws.WriteLine("\na{0})ReaderName:{1}/Value:{2}", a, reader.Name, reader.Value); // reader.Read (); // ws.WriteLine ("\nb{0})ReaderName:{1}/Value:{2}",a, reader.Name, reader.Value); if (reader.NodeType == XmlNodeType.Element) { switch (reader.Name) { case VBEle.line_item: // Init line items lItems = new LineItems { ID = ++ids, VoyBillId = -1 }; ws.WriteLine(" Line Item:{0},", ids); break; case VBEle.line_item_type: ws.Write(reader.Name + ": "); reader.Read(); lItems.LineType = reader.Value; ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.item_code: ws.Write(reader.Name + ": "); reader.Read(); lItems.ItemCode = reader.Value; ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.serial: ws.Write(reader.Name + ": "); reader.Read(); lItems.Serial = Int32.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.value: ws.Write(reader.Name + ": "); reader.Read(); lItems.Value = double.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.rate: ws.Write(reader.Name + ": "); reader.Read(); lItems.Rate = double.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.qty: ws.Write(reader.Name + ": "); reader.Read(); lItems.Qty = double.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.discount_value: ws.Write(reader.Name + ": "); reader.Read(); lItems.DiscountValue = double.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.amount: ws.Write(reader.Name + ": "); reader.Read(); lItems.Amount = double.Parse(reader.Value); ws.WriteLine(reader.Value); reader.Read(); break; case VBEle.description: ws.Write(reader.Name + ": "); reader.Read(); lItems.Description = reader.Value; ws.WriteLine(reader.Value); reader.Read(); break; } } else if (reader.NodeType == XmlNodeType.EndElement) { switch (reader.Name) { case VBEle.line_item: vBill.lineItems.Add(lItems); ws.WriteLine("LineItems {0} end.", ids); break; case VBEle.line_items: ws.WriteLine("LineItems Over"); break; } } else { reader.Read(); ws.WriteLine("\nc{0})ReaderName:{1}/Value:{2}", a, reader.Name, reader.Value); } } while (reader.Name != VBEle.line_items && reader.NodeType != XmlNodeType.EndElement); }