private static void LoadUnitChargeActive(GXXmlReader reader, string name, GXUnitCharge charge) { if (reader.IsStartElement(name, true)) { charge.ChargePerUnitScaling.CommodityScale = (sbyte)reader.ReadElementContentAsInt("Scale"); charge.ChargePerUnitScaling.PriceScale = (sbyte)reader.ReadElementContentAsInt("PriceScale"); ObjectType ot = (ObjectType)reader.ReadElementContentAsInt("Type"); string ln = reader.ReadElementContentAsString("Ln"); charge.Commodity.Target = reader.Objects.FindByLN(ot, ln); charge.Commodity.Index = reader.ReadElementContentAsInt("Index"); List <GXChargeTable> list = new List <GXChargeTable>(); if (reader.IsStartElement("ChargeTables", true)) { while (reader.IsStartElement("Item", true)) { GXChargeTable it = new GXChargeTable(); it.Index = reader.ReadElementContentAsString("Index"); it.ChargePerUnit = (short)reader.ReadElementContentAsInt("ChargePerUnit"); list.Add(it); } reader.ReadEndElement("ChargeTables"); } reader.ReadEndElement(name); charge.ChargeTables = list.ToArray(); } }
private void SetUnitCharge(GXUnitCharge charge, object value) { List <object> tmp = (List <object>)value; List <object> tmp2 = (List <object>)tmp[0]; charge.ChargePerUnitScaling.CommodityScale = (sbyte)tmp2[0]; charge.ChargePerUnitScaling.PriceScale = (sbyte)tmp2[1]; tmp2 = (List <object>)tmp[1]; ObjectType ot = (ObjectType)Convert.ToInt32(tmp2[0]); string ln = GXCommon.ToLogicalName(tmp2[1]); charge.Commodity.Target = Parent.FindByLN(ot, ln); charge.Commodity.Index = (sbyte)tmp2[2]; List <GXChargeTable> list = new List <GXChargeTable>(); tmp2 = (List <object>)tmp[2]; foreach (List <object> it in tmp2) { GXChargeTable item = new GXChargeTable(); item.Index = ASCIIEncoding.ASCII.GetString((byte[])it[0]); item.ChargePerUnit = (Int16)it[1]; list.Add(item); } charge.ChargeTables = list.ToArray(); }
private void SetUnitCharge(GXUnitCharge charge, object value) { if (value != null) { List <object> tmp, tmp2, it; if (value is List <object> ) { tmp = (List <object>)value; } else { tmp = new List <object>((object[])value); } if (tmp[0] is List <object> ) { tmp2 = (List <object>)tmp[0]; } else { tmp2 = new List <object>((object[])tmp[0]); } charge.ChargePerUnitScaling.CommodityScale = (sbyte)tmp2[0]; charge.ChargePerUnitScaling.PriceScale = (sbyte)tmp2[1]; if (tmp[1] is List <object> ) { tmp2 = (List <object>)tmp[1]; } else { tmp2 = new List <object>((object[])tmp[1]); } ObjectType ot = (ObjectType)Convert.ToInt32(tmp2[0]); string ln = GXCommon.ToLogicalName(tmp2[1]); if (ot != ObjectType.None) { if (Parent != null) { charge.Commodity.Target = Parent.FindByLN(ot, ln); } else { charge.Commodity.Target = GXDLMSClient.CreateObject(ot); charge.Commodity.Target.LogicalName = ln; } } else { charge.Commodity.Target = null; } charge.Commodity.Index = (sbyte)tmp2[2]; List <GXChargeTable> list = new List <GXChargeTable>(); foreach (object tmp3 in (IEnumerable <object>)tmp[2]) { if (tmp3 is List <object> ) { it = (List <object>)tmp3; } else { it = new List <object>((object[])tmp3); } GXChargeTable item = new GXChargeTable(); item.Index = ASCIIEncoding.ASCII.GetString((byte[])it[0]); item.ChargePerUnit = (Int16)it[1]; list.Add(item); } charge.ChargeTables = list.ToArray(); } else { charge.ChargePerUnitScaling.CommodityScale = 0; charge.ChargePerUnitScaling.PriceScale = 0; charge.Commodity.Target = null; charge.Commodity.Index = 0; charge.ChargeTables = new GXChargeTable[0]; } }