private LICSRequestOrderPosition[] GetRequestOrderPositions(SqlConnection connection, string orderId) { List <LICSRequestOrderPosition> orderPositions = new List <LICSRequestOrderPosition>(); string getOrderPositionsQuery = string.Format(_pluginSettings.OrderPositionsQuery, orderId); _loger.Log(string.Format("getOrderPositionsQuery reques sql {0}", getOrderPositionsQuery)); SqlCommand cmd = new SqlCommand(getOrderPositionsQuery, connection); SqlDataReader reader = cmd.ExecuteReader(); DataTable table = new DataTable(); table.Load(reader); foreach (DataRow row in table.AsEnumerable()) { try { LICSRequestOrderPosition orderPosition = new LICSRequestOrderPosition(); foreach (DataColumn column in row.Table.Columns) { var res = row[column.ColumnName]; // _loger.Log(string.Format("column.ColumnName ={0} value = {1}", (string)column.ColumnName, res.ToString())); PropertyInfo propertyInfo = orderPosition.GetType().GetProperty(column.ColumnName); if (propertyInfo == null) { _loger.Log("LICSRequestOrderPosition"); _loger.Log(string.Format("{0} = {1}", column.ColumnName, (string)res)); _loger.Log(propertyInfo, "propertyInfo"); continue; } if (row[column.ColumnName].GetType().Equals(DBNull.Value.GetType())) { propertyInfo.SetValue(orderPosition, Convert.ChangeType(GetDefaultValue(propertyInfo.PropertyType), propertyInfo.PropertyType), null); } else { propertyInfo.SetValue(orderPosition, Convert.ChangeType(Convert.ToString(row[column.ColumnName]).Trim(), propertyInfo.PropertyType), null); } } orderPositions.Add(orderPosition); } catch (Exception ex) { _loger.Log("Exception while reflect DataColumn values using Reflection in GetOrderPositions"); _loger.Log(ex); } } return(orderPositions.ToArray()); }
public static LICSRequest ConvertToLICSRequest(this OutputPayLoad navisionOutputPayload) { LICSRequest licsRequest = new LICSRequest(); List <LICSRequestArticle> listLicsRequestArticles = new List <LICSRequestArticle>(); List <LICSRequestOrderPosition> orderPositions = new List <LICSRequestOrderPosition>(); LICSRequestOrder requestOrder = new LICSRequestOrder(); requestOrder.ShipmentDate = DateTime.ParseExact(navisionOutputPayload.OrderHeader.Date, "dd.MM.yy", System.Globalization.CultureInfo.InvariantCulture); requestOrder.OrderNo = navisionOutputPayload.OrderHeader.OrderNumber; requestOrder.CustomerNo = Convert.ToString(navisionOutputPayload.OrderHeader.CustomerNumber); requestOrder.DistributionCenter = navisionOutputPayload.OrderHeader.WarehouseOrder; LICSRequestOrderRecipient orderRecipient = new LICSRequestOrderRecipient(); orderRecipient.Name = navisionOutputPayload.OrderHeader.CustomerName; // orderRecipient.AdditionalName = (string)navisionOutputPayload.OrderHeader.CustomerName2; RESOLVE THIS PROBLEM orderRecipient.Street = navisionOutputPayload.OrderHeader.CustomerStreet; orderRecipient.ZIPCode = Convert.ToString(navisionOutputPayload.OrderHeader.CustomerZIP); orderRecipient.City = navisionOutputPayload.OrderHeader.CustomerTown; foreach (OutputPayLoadOutputPosition outputPosition in navisionOutputPayload.Positions) { LICSRequestOrderPosition orderPosition = new LICSRequestOrderPosition(); orderPosition.ArticleGroup = outputPosition.VPECode; orderPosition.PositionNo = (int)outputPosition.ArticleRowNumber; orderPosition.ArticleNo = outputPosition.ArticleNumber; orderPosition.TargetQuantity = Convert.ToDouble(outputPosition.VPECount); LICSRequestArticle requestArticle = new LICSRequestArticle(); requestArticle.ArticleNo = outputPosition.ArticleNumber; requestArticle.ArticleDescription = outputPosition.Description; requestArticle.ArticleDescription2 = outputPosition.Description2; requestArticle.ArticleGroup = outputPosition.VPECode; requestArticle.ArticleGroupFactor = outputPosition.BaseUnitQuantity; orderPositions.Add(orderPosition); listLicsRequestArticles.Add(requestArticle); } requestOrder.Positions = orderPositions.ToArray(); requestOrder.Recipient = orderRecipient; licsRequest.ArticleImport = listLicsRequestArticles.ToArray(); licsRequest.OrderImport = new LICSRequestOrder[] { requestOrder }; return(licsRequest); }