public LICSRequestOrder[] GetRequestOrders()
 {
     LICSRequestOrder[] requestOrders = new LICSRequestOrder[] { };
     try
     {
         IPluginSettings plugingSettings = _pluginSettings.AllAvailablePluginSettings().FirstOrDefault(pl => pl.CheckOrders);
         if (plugingSettings == null)
         {
             //_logger.Log("There was not adjusted any orders setting");
             return(requestOrders);
         }
         foreach (var plugin in CustomerDataPlugins)
         {
             if (((string)plugin.Metadata[CurrentServiceInformation.NameForPluginMetadata]).Equals(Enum.GetName(typeof(CustomDataSourceTypes), plugingSettings.CheckOrders)))
             {
                 requestOrders = plugin.Value.GetRequestOrders(plugingSettings);
                 break;
             }
         }
     }
     catch (Exception ex)
     {
         //         _logger.Log(ex);
     }
     return(requestOrders);
 }
Ejemplo 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);
        }
        private LICSRequestOrder[] LoadOrders(IDataReader reader, SqlConnection connection)
        {
            DataTable table = new DataTable();
            List <LICSRequestOrder> orders = new List <LICSRequestOrder>();

            table.Load(reader);
            foreach (DataRow row in table.AsEnumerable())
            {
                LICSRequestOrder orderItem    = new LICSRequestOrder();
                PropertyInfo     propertyInfo = null;
                try
                {
                    foreach (DataColumn column in row.Table.Columns)
                    {
                        // _loger.Log("LICSRequestOrderTest");
                        //   var res = row[column.ColumnName];
                        propertyInfo = orderItem.GetType().GetProperty(column.ColumnName);
                        if (propertyInfo == null)
                        {
                            // _loger.Log("LICSRequestOrder");
                            _loger.Log(propertyInfo, "propertyInfo");
                            _loger.Log(string.Format("{0} = {1}", column.ColumnName, Convert.ToString(row[column.ColumnName])));
                            continue;
                        }
                        //  _loger.Log(row[column.ColumnName], "row[column.ColumnName]");
                        bool columnValueEqualsNull = row[column.ColumnName].GetType().Equals(DBNull.Value.GetType());
                        //_loger.Log(columnValueEqualsNull, "columnValueEqualsNull");
                        if (columnValueEqualsNull)
                        {
                            _loger.Log(string.Format("{0} = {1}", column.ColumnName, "Is DB Null"));
                            propertyInfo.SetValue(orderItem, Convert.ChangeType(GetDefaultValue(propertyInfo.PropertyType), propertyInfo.PropertyType), null);
                        }
                        else
                        {
                            //  _loger.Log(string.Format("{0} = {1}", column.ColumnName, Convert.ToString(row[column.ColumnName])));
                            propertyInfo.SetValue(orderItem, Convert.ChangeType(Convert.ToString(row[column.ColumnName]).Trim(), propertyInfo.PropertyType), null);
                        }
                    }
                    orderItem.Recipient = GetOrderRecipient(connection, orderItem.OrderNo);
                    orderItem.Positions = GetRequestOrderPositions(connection, orderItem.OrderNo);
                    if (orderItem.Positions.Length > 0)
                    {
                        orders.Add(orderItem);
                    }
                    else
                    {
                        string errorDescription = "There aren't positions in Order number " + orderItem.OrderNo;
                        _loger.Log(errorDescription);
                        MailLogger.Instance.LogMail(new ContentDescription(errorDescription));
                    }
                }
                catch (FormatException formatEx)
                {
                    _loger.Log("FormatException while reflect DataColumn values using Reflection in LoadOrders");
                    _loger.Log(formatEx);
                    string mailMessage = string.Format("There was FormatException with Order number = {0}, problem field name = {1}", orderItem.OrderNo, propertyInfo.Name);
                    MailLogger.Instance.LogMail(new ContentDescription(mailMessage, formatEx.Message));
                }
                catch (Exception ex)
                {
                    _loger.Log("Exception while reflect DataColumn values using Reflection in LoadOrders");
                    _loger.Log(ex);
                }
            }
            return(orders.ToArray());
        }