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());
        }
Exemplo n.º 2
0
        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);
        }