Ejemplo n.º 1
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);
        }
        private LICSRequestOrderRecipient GetOrderRecipient(SqlConnection connection, string referenceNo)
        {
            string getOrderRecipientQuery = string.Format(_pluginSettings.OrderRecipientQuery, referenceNo);

            _loger.Log(string.Format("OrderRecipient reques sql {0}", getOrderRecipientQuery));
            SqlCommand    cmd    = new SqlCommand(getOrderRecipientQuery, connection);
            SqlDataReader reader = cmd.ExecuteReader();
            DataTable     table  = new DataTable();

            table.Load(reader);

            LICSRequestOrderRecipient orderRecipient = new LICSRequestOrderRecipient();

            foreach (DataRow row in table.Rows)
            {
                try
                {
                    foreach (DataColumn column in row.Table.Columns)
                    {
                        var          res          = row[column.ColumnName];
                        PropertyInfo propertyInfo = orderRecipient.GetType().GetProperty(column.ColumnName);
                        if (propertyInfo == null)
                        {
                            _loger.Log("LICSRequestOrderRecipient");
                            _loger.Log(string.Format("{0} = {1}", column.ColumnName, Convert.ToString(res)));
                            _loger.Log(propertyInfo, "propertyInfo");
                            continue;
                        }


                        if (row[column.ColumnName].GetType().Equals(DBNull.Value.GetType()))
                        {
                            propertyInfo.SetValue(orderRecipient, Convert.ChangeType(GetDefaultValue(propertyInfo.PropertyType), propertyInfo.PropertyType), null);
                        }
                        else
                        {
                            propertyInfo.SetValue(orderRecipient, Convert.ChangeType(Convert.ToString(row[column.ColumnName]).Trim(), propertyInfo.PropertyType), null);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _loger.Log("Exception while reflect DataColumn values using Reflection in GetOrderRecipient");
                    _loger.Log(ex);
                }
            }
            return(orderRecipient);
        }