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()); }
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); }
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); }
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); } }
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()); }