public LICSRequest[] GetRequestsWithArticles(IPluginSettings pluginSettings, Ix4RequestProps ix4Property)
        {
            List <LICSRequest> requests = new List <LICSRequest>();
            LICSRequest        request  = new LICSRequest();

            switch (ix4Property)
            {
            case Ix4RequestProps.Articles:
                request.ArticleImport = GetRequestArticles(pluginSettings);
                break;

            case Ix4RequestProps.Deliveries:
                request.DeliveryImport = GetRequestDeliveries(pluginSettings);
                break;

            case Ix4RequestProps.Orders:
                request.OrderImport = GetRequestOrders(pluginSettings);
                break;

            default:
                break;
            }
            requests.Add(request);
            return(requests.ToArray());
        }
Esempio n. 2
0
        public LICSRequest GetCustomerDataFromXml(string fileName)
        {
            XmlSerializer xS          = new XmlSerializer(typeof(OutputPayLoad));
            LICSRequest   licsRequest = new LICSRequest();

            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            {
                OutputPayLoad customerInfo = (OutputPayLoad)xS.Deserialize(fs);
                licsRequest = customerInfo.ConvertToLICSRequest();
            }

            return(licsRequest);
        }
Esempio n. 3
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 static int _errorCount = 0;
        private bool SendLicsRequestToIx4(LICSRequest request, string fileName)
        {
            bool result = false;

            lock (_o)
            {
                try
                {
                    if (_ix4ServiceConnector != null)
                    {
                        bool          requestSuccess = true;
                        XmlSerializer serializator   = new XmlSerializer(typeof(LICSRequest));
                        using (Stream st = new FileStream(CurrentServiceInformation.TemporaryXmlFileName, FileMode.OpenOrCreate))
                        {
                            _loger.Log("Check customerID = ClientId" + request.ClientId);
                            serializator.Serialize(st, request);
                            byte[] bytesRequest = ReadToEnd(st);
                            string resp         = _ix4ServiceConnector.ImportXmlRequest(bytesRequest, fileName);
                            requestSuccess = CheckStateRequest(resp);
                            SimplestParcerLicsRequest(resp);
                            _loger.Log(resp);
                        }
                        // if (!requestSuccess)
                        {
                            //_errorCount++;
                            string dataFileName       = string.Empty;
                            int    attemptLookForFile = 0;
                            do
                            {
                                attemptLookForFile++;
                                dataFileName = string.Format(CurrentServiceInformation.FloatTemporaryXmlFileName, attemptLookForFile);
                            }while (File.Exists(dataFileName));
                            File.Copy(CurrentServiceInformation.TemporaryXmlFileName, dataFileName);
                        }
                        result = requestSuccess;
                    }
                }
                catch (Exception ex)
                {
                    _loger.Log(ex);
                }
                finally
                {
                    File.Delete(CurrentServiceInformation.TemporaryXmlFileName);
                }
            }
            return(result);
        }
Esempio n. 5
0
        private List <LICSRequest> CheckXmlOrdersFolder(IPluginSettings pluginSettings)
        {
            List <LICSRequest> requests = new List <LICSRequest>();

            try
            {
                XmlPluginSettings xmlSettings = pluginSettings as XmlPluginSettings;
                if (xmlSettings == null)
                {
                    return(requests);
                }

                // string[] xmlSourceFiles = Directory.GetFiles("C:\\Ilya\\TestXmlFolder\\XmlSource");// _customerInfo.PluginSettings.XmlSettings.SourceFolder);
                // ICustomerDataConnector xmlDataConnector = CustomerDataComposition.Instance.GetDataConnector(CustomDataSourceTypes.Xml);
                string[] xmlSourceFiles = Directory.GetFiles(xmlSettings.XmlArticleSourceFolder, "*.xml");
                if (xmlSourceFiles.Length > 0)
                {
                    foreach (string file in xmlSourceFiles)
                    {
                        //    _streamWriterFile.WriteLine(string.Format("Filename:  {0}", file));

                        LICSRequest request = GetCustomerDataFromXml(file);// CustomerDataComposition.Instance.GetCustomerDataFromXml(file);// xmlDataConnector.GetCustomerDataFromXml(file);
                        requests.Add(request);
                    }
                }


                //string mes1 = string.Format("Service Timer has been elapsed at {0} | {1}", DateTime.UtcNow.ToShortDateString(), DateTime.UtcNow.ToShortTimeString());
                //string mes2 = string.Format("Count of files in the folder {0} = {1}", _customerInfo.PluginSettings.XmlSettings.SourceFolder, xmlSourceFiles.Length);
                //WrightLog(mes1);
                //WrightLog(mes2);


                //foreach (string file in xmlSourceFiles)
                //{


                //}
            }
            catch (Exception ex)
            {
                // WrightLog(ex.Message);
            }

            return(requests);
        }
        public LICSRequest[] GetPreparedRequests(CustomDataSourceTypes dataSourceType, Ix4RequestProps ix4Property)
        {
            LICSRequest[] requests        = new LICSRequest[] { };
            var           plugingSettings = _pluginSettings.AllAvailablePluginSettings().FirstOrDefault(pl => pl.PluginType == dataSourceType);

            if (plugingSettings == null)
            {
                return(requests);
            }

            foreach (var plugin in CustomerDataPlugins)
            {
                if (((string)plugin.Metadata[CurrentServiceInformation.NameForPluginMetadata]).Equals(Enum.GetName(typeof(CustomDataSourceTypes), dataSourceType)))
                {
                    requests = plugin.Value.GetRequestsWithArticles(plugingSettings, ix4Property);
                    break;
                }
            }
            return(requests);
        }
        private void CheckArticles()
        {
            int countA = 0;

            if (_isArticlesBusy)
            {
                _loger.Log("Check articles is busy");
                return;
            }
            try
            {
                if (UpdateTimeWatcher.TimeToCheck(Ix4RequestProps.Articles))
                {
                    WrightLog("Check Artikles started");
                    _isArticlesBusy = true;

                    int         currentClientID = _customerInfo.ClientID;
                    LICSRequest request         = new LICSRequest();
                    request.ClientId = currentClientID;
                    LICSRequestArticle[] articles = _dataCompositor.GetRequestArticles();

                    _loger.Log(string.Format("Got ARTICLES {0}", articles != null ? articles.Length : 0));

                    if (articles == null || articles.Length == 0)
                    {
                        _loger.Log("There is no available articles");
                        return;
                    }

                    List <LICSRequestArticle> tempAtricles = new List <LICSRequestArticle>();

                    for (int i = 0; i < articles.Length; i++)
                    {
                        articles[i].ClientNo = currentClientID;
                        tempAtricles.Add(articles[i]);
                        if (tempAtricles.Count >= _articlesPerRequest || i == articles.Length - 1)
                        {
                            request.ArticleImport = tempAtricles.ToArray();
                            var resSent = SendLicsRequestToIx4(request, "articleFile.xml");
                            if (resSent)
                            {
                                countA++;
                                _loger.Log(string.Format("Was sent {0} request with {1} articles", countA, tempAtricles.Count));
                                tempAtricles = new List <LICSRequestArticle>();
                            }
                        }
                    }
                    UpdateTimeWatcher.SetLastUpdateTimeProperty(Ix4RequestProps.Articles);
                }
            }
            catch (Exception ex)
            {
                _loger.Log(ex);
                _loger.Log("Inner excep " + ex.InnerException);
                _loger.Log("Inner excep MESSAGE" + ex.InnerException.Message);
            }
            finally
            {
                _isArticlesBusy = false;
            }
        }
        private void CheckDeliveries()
        {
            try
            {
                if (UpdateTimeWatcher.TimeToCheck(Ix4RequestProps.Deliveries))
                {
                    if (_cachedArticles == null)
                    {
                        _loger.Log("There is no cheched articles for filling deliveries");
                        CheckArticles();
                        if (_cachedArticles == null)
                        {
                            _loger.Log("WE CANNOT GET DELIVERIES WITHOUT ARTICLES");
                            return;
                        }
                    }
                    int         currentClientID = _customerInfo.ClientID;
                    LICSRequest request         = new LICSRequest();
                    request.ClientId = currentClientID;
                    LICSRequestDelivery[]     deliveries            = _dataCompositor.GetRequestDeliveries();
                    List <LICSRequestArticle> articlesByDelliveries = new List <LICSRequestArticle>();
                    _loger.Log(deliveries, "deliveries");
                    if (deliveries.Length == 0)
                    {
                        _loger.Log("There is no deliveries");
                        return;
                    }
                    foreach (LICSRequestDelivery delivery in deliveries)
                    {
                        bool deliveryHasErrors = false;
                        articlesByDelliveries  = new List <LICSRequestArticle>();
                        delivery.ClientNo      = currentClientID;
                        request.DeliveryImport = new LICSRequestDelivery[] { delivery };
                        foreach (var position in delivery.Positions)
                        {
                            LICSRequestArticle findArticle = GetArticleByNumber(position.ArticleNo);
                            if (findArticle == null)
                            {
                                _loger.Log("Cannot find article with no:  " + position.ArticleNo);
                                _loger.Log("Delivery with wrong article position:  " + delivery);
                                deliveryHasErrors = true;
                            }
                            else
                            {
                                articlesByDelliveries.Add(findArticle);
                            }
                        }
                        if (deliveryHasErrors)
                        {
                            _loger.Log("Delivery " + delivery + "WAS NOT SEND");
                            continue;
                        }
                        else
                        {
                            request.ArticleImport = articlesByDelliveries.ToArray();
                            _loger.Log("Delivery before sending: ");
                            foreach (LICSRequestDelivery item in request.DeliveryImport)
                            {
                                _loger.Log(item.SerializeObjectToString <LICSRequestDelivery>());
                            }

                            var res = SendLicsRequestToIx4(request, "deliveryFile.xml");
                            _loger.Log("Delivery result: " + res);
                        }
                    }
                    UpdateTimeWatcher.SetLastUpdateTimeProperty(Ix4RequestProps.Deliveries);
                }
            }
            catch (Exception ex)
            {
                _loger.Log(ex);
            }
        }
Esempio n. 9
0
        public LICSRequest[] GetRequestsWithArticles(IPluginSettings pluginSettings, Ix4RequestProps ix4Property)
        {
            List <LICSRequest> requests    = new List <LICSRequest>();
            XmlPluginSettings  xmlSettings = pluginSettings as XmlPluginSettings;

            if (xmlSettings == null)
            {
                return(requests.ToArray());
            }

            if (pluginSettings.CheckArticles)
            {
                LICSRequest request = new LICSRequest();
                switch (ix4Property)
                {
                case Ix4RequestProps.Articles:
                    request.ArticleImport = GetRequestArticles(pluginSettings);
                    requests.Add(request);
                    break;

                case Ix4RequestProps.Orders:
                    //request.ArticleImport = GetRequestArticles(pluginSettings);
                    //request.OrderImport = GetRequestOrders(pluginSettings);
                    //requests.Add(request);


                {
                    // string[] xmlSourceFiles = Directory.GetFiles("C:\\Ilya\\TestXmlFolder\\XmlSource");// _customerInfo.PluginSettings.XmlSettings.SourceFolder);
                    // ICustomerDataConnector xmlDataConnector = CustomerDataComposition.Instance.GetDataConnector(CustomDataSourceTypes.Xml);
                    string[] xmlSourceFiles = Directory.GetFiles(xmlSettings.XmlArticleSourceFolder, "*.xml");
                    if (xmlSourceFiles.Length > 0)
                    {
                        foreach (string file in xmlSourceFiles)
                        {
                            //    _streamWriterFile.WriteLine(string.Format("Filename:  {0}", file));

                            LICSRequest req = GetCustomerDataFromXml(file);        // CustomerDataComposition.Instance.GetCustomerDataFromXml(file);// xmlDataConnector.GetCustomerDataFromXml(file);
                            requests.Add(req);
                        }
                    }
                }
                break;

                case Ix4RequestProps.Deliveries:
                    //  LICSRequestDelivery[] deliveries = GetRequestDeliveries(pluginSettings);
                    //  List<LICSRequestDelivery> deliveryList = new List<LICSRequestDelivery>();
                    //  if(deliveries.Length>_deliveriesLimit)
                    //  {
                    //      int i = 0;
                    //      foreach(var deliv in deliveries)
                    //      {
                    //          if(i<=_deliveriesLimit)
                    //          {
                    //              deliveryList.Add(deliv);
                    //              i++;
                    //          }
                    //          else
                    //          {
                    //              i = 0;
                    //              request.DeliveryImport = deliveryList.ToArray();
                    //              requests.Add(request);
                    //              deliveryList = new List<LICSRequestDelivery>();
                    //          }
                    //      }
                    //  }
                    //  request.ArticleImport = GetRequestArticles(pluginSettings);
                    ////  request.OrderImport = GetRequestOrders(pluginSettings);
                    //  requests.Add(request);
                    break;

                default:
                    break;
                }
            }

            return(requests.ToArray());
        }