示例#1
0
 /// <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);
                 }
             }
         }
     }
 }
示例#2
0
        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);
                    }
                }
            }
        }