/// <summary> /// ReadPackElements /// </summary> /// <param name="ArticleRepository"></param> /// <param name="Article"></param> /// <param name="PackElements"></param> /// <remarks>Récupération des id des éléments du pack</remarks> internal static void ReadPackElements(Model.Local.ArticleRepository ArticleRepository, Model.Local.Article Article, out List <Int32> PackElements) { PackElements = new List <Int32>(); Model.Sage.F_ARTICLERepository F_ARTICLERepository = new Model.Sage.F_ARTICLERepository(); Model.Sage.F_ARTICLE F_ARTICLE = F_ARTICLERepository.ReadArticle(Article.Sag_Id); Model.Sage.F_ARTICLE F_ARTICLENOMENCLAT; Model.Local.Article ArticleNomenclat; foreach (Model.Sage.F_NOMENCLAT F_NOMENCLAT in new Model.Sage.F_NOMENCLATRepository().ListRef(F_ARTICLE.AR_Ref)) { if (F_ARTICLERepository.ExistReference(F_NOMENCLAT.NO_RefDet)) { F_ARTICLENOMENCLAT = F_ARTICLERepository.ReadReference(F_NOMENCLAT.NO_RefDet); if (ArticleRepository.ExistSag_Id(F_ARTICLENOMENCLAT.cbMarq) && F_ARTICLENOMENCLAT.AR_SuiviStock != (short)ABSTRACTION_SAGE.F_ARTICLE.Obj._Enum_AR_SuiviStock.Aucun) // pour ne pas prendre en compte les articles non suivi en stock { ArticleNomenclat = ArticleRepository.ReadSag_Id(F_ARTICLENOMENCLAT.cbMarq); if (ArticleNomenclat.Art_Sync == true || (ArticleNomenclat.Pre_Id != null && ArticleNomenclat.Pre_Id.Value != 0)) { if (ArticleNomenclat.Art_Pack) { List <Int32> PackPackElements = new List <Int32>(); ReadPackElements(ArticleRepository, ArticleNomenclat, out PackPackElements); PackElements.AddRange(PackPackElements); } PackElements.Add(ArticleNomenclat.Art_Id); } } } } }
private void LoadWorker_DoWork(object sender, DoWorkEventArgs e) { // parcours des données Sage if (Core.Global.GetConfig().ImportImageUseSageDatas) { Model.Sage.F_ARTICLERepository F_ARTICLERepository = new Model.Sage.F_ARTICLERepository(); List <Model.Sage.F_ARTICLE_Photo> ListPhoto = F_ARTICLERepository.ListPhoto(); Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository(); List <int> ListSageLocal = ArticleRepository.ListSageId(); ListPhoto = ListPhoto.Where(ap => ListSageLocal.Contains(ap.cbMarq)).ToList(); ListCount = ListPhoto.Count; CurrentCount = 0; foreach (Model.Sage.F_ARTICLE_Photo F_ARTICLE_Photo in ListPhoto) { string file = null; if (!string.IsNullOrWhiteSpace(F_ARTICLE_Photo.AC_Photo)) { file = System.IO.Path.Combine(Core.Global.GetConfig().AutomaticImportFolderPicture, F_ARTICLE_Photo.AC_Photo); } else if (!string.IsNullOrWhiteSpace(F_ARTICLE_Photo.AR_Photo)) { file = System.IO.Path.Combine(Core.Global.GetConfig().AutomaticImportFolderPicture, F_ARTICLE_Photo.AR_Photo); } if (file != null && System.IO.File.Exists(file)) { Model.Local.Article Article = ArticleRepository.ReadSag_Id(F_ARTICLE_Photo.cbMarq); String extension = Path.GetExtension(file).ToLower(); if (Core.Img.imageExtensions.Contains(extension)) { Core.ImportSage.ImportArticleImage import = new Core.ImportSage.ImportArticleImage(); import.Exec(file, Article.Art_Id); if (import.logs != null && import.logs.Count > 0) { lock (this.Logs) { Logs.AddRange(import.logs); } } lock (this) { this.CurrentCount += 1; LoadWorker.ReportProgress(this.CurrentCount * 100 / this.ListCount); } } } } } // fonction par défaut = parcours dossier local ou réseau else { String[] Files = System.IO.Directory.GetFiles(this.DirImg); this.ListCount = Files.Length; foreach (string file in Files) { exec(file); lock (this) { this.CurrentCount += 1; LoadWorker.ReportProgress(this.CurrentCount * 100 / this.ListCount); } } } }