예제 #1
0
        public void Sync(Int32 Article)
        {
            this.Semaphore.WaitOne();

            Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository();
            if (ArticleRepository.ExistArticle(Article))
            {
                Model.Local.Article            Item = ArticleRepository.ReadArticle(Article);
                Model.Sage.F_ARTICLERepository F_ARTICLERepository = new Model.Sage.F_ARTICLERepository();
                Model.Sage.F_ARTICLE           F_ARTICLE           = (F_ARTICLERepository.ExistArticle(Item.Sag_Id) ? F_ARTICLERepository.ReadArticle(Item.Sag_Id) : null);
                if (F_ARTICLE != null)
                {
                    if (Core.Global.GetConfig().ArticleImportConditionnementActif &&
                        F_ARTICLE.AR_Condition != null && F_ARTICLE.AR_Condition != 0)
                    {
                        Core.ImportSage.ImportArticle importarticle = new Core.ImportSage.ImportArticle();
                        if (importarticle.ExecConditioning(F_ARTICLE, Item))
                        {
                            Item.Art_Date = DateTime.Now;
                            ArticleRepository.Save();
                        }
                    }
                }
            }

            lock (this)
            {
                this.CurrentCount += 1;
            }
            this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
            this.Semaphore.Release();
        }
 public void Sync(Model.Sage.F_ARTGAMME enumere)
 {
     this.Semaphore.WaitOne();
     if (enumere != null && !string.IsNullOrWhiteSpace(enumere.EG_Enumere))
     {
         Core.ImportSage.ImportArticle ImportArticle = new Core.ImportSage.ImportArticle();
         ImportArticle.CreateAttribute(enumere);
     }
     lock (this)
     {
         this.CurrentCount += 1;
     }
     this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
     this.Semaphore.Release();
 }
 public void Sync(short?gamme)
 {
     this.Semaphore.WaitOne();
     if (gamme != null)
     {
         Core.ImportSage.ImportArticle ImportArticle = new Core.ImportSage.ImportArticle();
         ImportArticle.CreateAttributeGroup((int)gamme);
     }
     lock (this)
     {
         this.CurrentCount += 1;
     }
     this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
     this.Semaphore.Release();
 }
 public void Sync(short?conditionnement)
 {
     this.Semaphore.WaitOne();
     if (conditionnement != null)
     {
         Core.ImportSage.ImportArticle ImportArticle = new Core.ImportSage.ImportArticle();
         ImportArticle.CreateConditioningGroup((int)conditionnement);
     }
     lock (this)
     {
         this.CurrentCount += 1;
     }
     this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
     this.Semaphore.Release();
 }
예제 #5
0
        public void Sync(Model.Sage.F_ARTICLE_Light F_ARTICLE)
        {
            this.Semaphore.WaitOne();

            Core.ImportSage.ImportArticle Sync = new Core.ImportSage.ImportArticle();
            List <string> log;

            Sync.Exec(F_ARTICLE.cbMarq, CatId, out log);
            if (log != null && log.Count > 0)
            {
                lock (this.Logs)
                {
                    Logs.AddRange(log);
                }
            }

            lock (this)
            {
                this.CurrentCount += 1;
            }
            this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
            this.Semaphore.Release();
        }
 public void Sync(Int32 Article)
 {
     this.Semaphore.WaitOne();
     try
     {
         Core.ImportSage.ImportArticle reimport = new Core.ImportSage.ImportArticle();
         List <string> log;
         reimport.ExecReimport(Article, out log);
         lock (this.logs)
         {
             logs.AddRange(log);
         }
     }
     catch (Exception ex)
     {
         Core.Error.SendMailError(ex.ToString());
     }
     lock (this)
     {
         this.CurrentCount += 1;
     }
     this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
     this.Semaphore.Release();
 }
예제 #7
0
        public void Sync(Int32 ArticleSend)
        {
            this.Semaphore.WaitOne();

            ReportInfosSynchro(ArticleSend, Core.Temp._action_information_synchro.debut);

            List <string> log = new List <string>();

            try
            {
                Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository();

                Model.Prestashop.PsProductRepository PsProductRepository;
                Model.Prestashop.PsProduct           PsProduct;

                Model.Local.Article Article = ArticleRepository.ReadArticle(ArticleSend);

                int sag_id = Article.Sag_Id;
                Model.Sage.F_ARTICLERepository F_ARTICLERepository = new Model.Sage.F_ARTICLERepository();
                if (!F_ARTICLERepository.ExistArticle(Article.Sag_Id) &&
                    Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleComposition &&
                    Article.CompositionArticle != null && Article.CompositionArticle.Count > 0)
                {
                    sag_id = (from Table in Article.CompositionArticle
                              orderby Table.ComArt_Default descending
                              select Table.ComArt_F_ARTICLE_SagId).FirstOrDefault();
                }

                Boolean check_attributes = ((Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMonoGamme || Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleMultiGammes) &&
                                            Article.AttributeArticle != null && Article.AttributeArticle.Count > 0);

                Boolean check_composition = (Article.TypeArticle == Model.Local.Article.enum_TypeArticle.ArticleComposition &&
                                             Article.CompositionArticle != null && Article.CompositionArticle.Count > 0);

                if (F_ARTICLERepository.ExistArticle(sag_id))
                {
                    Model.Sage.F_ARTICLE F_ARTICLE = F_ARTICLERepository.ReadArticle(sag_id);

                    bool importsagefilterexclusion = Core.Tools.FiltreImportSage.ImportSageFilterExclude(F_ARTICLE);
                    // si on affiche pas les sommeil et que article en sommeil = True
                    // si on affiche pas les non publie et que article non publie = True
                    // si affiche sommeil ou non publie = False
                    if (Article.Art_Active && ((!Sommeil && F_ARTICLE.AR_Sommeil == 1) || (!NonPublie && F_ARTICLE.AR_Publie == 0) || importsagefilterexclusion))
                    {
                        Article.Art_Active = false;
                        if (Article.Pre_Id != null)
                        {
                            PsProductRepository = new Model.Prestashop.PsProductRepository();
                            if (PsProductRepository.ExistId((uint)Article.Pre_Id))
                            {
                                PsProduct        = PsProductRepository.ReadId((uint)Article.Pre_Id);
                                PsProduct.Active = 0;
                                PsProductRepository.Save();

                                //<JG> 23/01/2014 ajout modif sur PsProductShop
                                Model.Prestashop.PsProductShopRepository PsProductShopRepository = new Model.Prestashop.PsProductShopRepository();
                                if (PsProductShopRepository.ExistProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop))
                                {
                                    Model.Prestashop.PsProductShop PsProductShop = PsProductShopRepository.ReadProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop);
                                    PsProductShop.Active = PsProduct.Active;
                                    PsProductShopRepository.Save();
                                }
                            }
                        }
                        ArticleRepository.Save();

                        log.Add("SA10- Passage à l'état \"Inactif\" pour l'article [ " + Article.Art_Ref + " - " + Article.Art_Name + " ]" + (importsagefilterexclusion ? "(filtre d'exclusion)" : string.Empty));
                    }
                    else if (Article.Art_Active == false && ((F_ARTICLE.AR_Sommeil == 0 || Sommeil) && (F_ARTICLE.AR_Publie == 1 || NonPublie) && !importsagefilterexclusion))
                    {
                        Article.Art_Active = true;
                        if (Article.Pre_Id != null)
                        {
                            PsProductRepository = new Model.Prestashop.PsProductRepository();
                            if (PsProductRepository.ExistId((uint)Article.Pre_Id))
                            {
                                PsProduct        = PsProductRepository.ReadId((uint)Article.Pre_Id);
                                PsProduct.Active = 1;
                                PsProductRepository.Save();

                                //<JG> 23/01/2014 ajout modif sur PsProductShop
                                Model.Prestashop.PsProductShopRepository PsProductShopRepository = new Model.Prestashop.PsProductShopRepository();
                                if (PsProductShopRepository.ExistProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop))
                                {
                                    Model.Prestashop.PsProductShop PsProductShop = PsProductShopRepository.ReadProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop);
                                    PsProductShop.Active = PsProduct.Active;
                                    PsProductShopRepository.Save();
                                }
                            }
                        }
                        ArticleRepository.Save();

                        log.Add("SA11- Passage à l'état \"Actif\" pour l'article [ " + Article.Art_Ref + " - " + Article.Art_Name + " ]");
                    }

                    Boolean ExistAECAttributeStatut = Core.Global.ExistAECAttributeStatut();
                    // 09/12/2016 si le module de désactivation des gammes est installé
                    if (ExistAECAttributeStatut)
                    {
                        if (check_attributes)
                        {
                            Core.ImportSage.ImportArticle ImportArticle = new Core.ImportSage.ImportArticle();
                            bool onlyattributestatut = true;
                            // gestion statuts en local
                            ImportArticle.ExecAttribute(F_ARTICLE, Article, onlyattributestatut);

                            // gestion statuts dans PrestaShop
                            Model.Local.AttributeArticleRepository AttributeArticleRepository = new Model.Local.AttributeArticleRepository();
                            List <Model.Local.AttributeArticle>    ListAttributeArticle       = AttributeArticleRepository.ListArticle(Article.Art_Id);
                            int cpt = 0;
                            foreach (Model.Local.AttributeArticle AttributeArticle in ListAttributeArticle)
                            {
                                cpt++;
                                if (AttributeArticle.Pre_Id != null)
                                {
                                    string combination;
                                    if (CheckStatutProductAttribute((uint)AttributeArticle.Pre_Id, (sbyte)(AttributeArticle.AttArt_Active ? 1 : 0), out combination))
                                    {
                                        log.Add("SA51- " + "Référence : " + Article.Art_Ref + " / "
                                                + (AttributeArticle.AttArt_Active ? "Activation" : "Désactivation")
                                                + " déclinaison [" + combination + "] dans Prestashop ");
                                    }
                                }
                                ReportInfosSynchro(ArticleSend, Core.Temp._action_information_synchro.refresh, "Déclinaison : " + cpt + "/" + ListAttributeArticle.Count);
                            }
                        }
                        else if (check_composition)
                        {
                            List <Model.Sage.F_ARTICLE_Composition>  list_temp_filtre             = new List <Model.Sage.F_ARTICLE_Composition>();
                            Model.Local.CompositionArticleRepository CompositionArticleRepository = new Model.Local.CompositionArticleRepository();
                            List <Model.Local.CompositionArticle>    ListCompositionArticle       = CompositionArticleRepository.ListArticle(Article.Art_Id);
                            int cpt = 0;
                            foreach (Model.Local.CompositionArticle compo in ListCompositionArticle)
                            {
                                cpt++;
                                List <Model.Sage.F_ARTICLE_Composition> list_temp             = new List <Model.Sage.F_ARTICLE_Composition>();
                                Model.Sage.F_ARTICLE_Composition        F_ARTICLE_Composition = compo.F_ARTICLE_Composition;
                                list_temp.Add(F_ARTICLE_Composition);

                                list_temp = Core.Tools.FiltreImportSage.ImportSageFilter(list_temp);
                                bool filter_exclusion = (list_temp.Count == 0);

                                bool enable = compo.ComArt_Active;
                                if (compo.ComArt_F_ARTENUMREF_SagId == null && compo.ComArt_F_CONDITION_SagId == null)
                                {
                                    enable = ((F_ARTICLE_Composition.AR_Sommeil == 0 || Sommeil) && (F_ARTICLE_Composition.AR_Publie == 1 || NonPublie) && !filter_exclusion);
                                }
                                else if (compo.ComArt_F_ARTENUMREF_SagId != null)
                                {
                                    Model.Sage.F_ARTENUMREF F_ARTENUMREF = compo.EnumereF_ARTENUMREF;
                                                                        #if (SAGE_VERSION_16 || SAGE_VERSION_17)
                                    enable = ((F_ARTICLE_Composition.AR_Sommeil == 0 || Sommeil) && (F_ARTICLE_Composition.AR_Publie == 1 || NonPublie) && !filter_exclusion &&
                                              (Sommeil));
                                                                        #else
                                    enable = ((F_ARTICLE_Composition.AR_Sommeil == 0 || Sommeil) && (F_ARTICLE_Composition.AR_Publie == 1 || NonPublie) && !filter_exclusion &&
                                              ((F_ARTENUMREF.AE_Sommeil != null && F_ARTENUMREF.AE_Sommeil == 0) || Sommeil));
                                                                        #endif
                                }

                                if (enable != compo.ComArt_Active)
                                {
                                    // gestion statut local
                                    compo.ComArt_Active = enable;
                                    CompositionArticleRepository.Save();
                                }
                                // gestion statut PrestaShop
                                if (compo.Pre_Id != null)
                                {
                                    string combination;
                                    if (CheckStatutProductAttribute((uint)compo.Pre_Id, (sbyte)(compo.ComArt_Active ? 1 : 0), out combination))
                                    {
                                        log.Add("SA51- " + "Composition : " + Article.Art_Name + " / "
                                                + (compo.ComArt_Active ? "Activation" : "Désactivation")
                                                + " déclinaison [" + combination + "] dans Prestashop ");
                                    }
                                }
                                ReportInfosSynchro(ArticleSend, Core.Temp._action_information_synchro.refresh, "Déclinaison : " + cpt + "/" + ListCompositionArticle.Count);
                            }
                        }
                    }
                }
                else if (Article.Art_Active || Article.Art_Sync)
                {
                    Article.Art_Active = false;
                    Article.Art_Sync   = false;
                    if (Article.Pre_Id != null)
                    {
                        PsProductRepository = new Model.Prestashop.PsProductRepository();
                        if (PsProductRepository.ExistId((uint)Article.Pre_Id))
                        {
                            PsProduct        = PsProductRepository.ReadId((uint)Article.Pre_Id);
                            PsProduct.Active = 0;
                            PsProductRepository.Save();

                            //<JG> 23/01/2014 ajout modif sur PsProductShop
                            Model.Prestashop.PsProductShopRepository PsProductShopRepository = new Model.Prestashop.PsProductShopRepository();
                            if (PsProductShopRepository.ExistProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop))
                            {
                                Model.Prestashop.PsProductShop PsProductShop = PsProductShopRepository.ReadProductShop(PsProduct.IDProduct, Core.Global.CurrentShop.IDShop);
                                PsProductShop.Active = PsProduct.Active;
                                PsProductShopRepository.Save();
                            }
                        }
                    }
                    ArticleRepository.Save();

                    log.Add("SA12- Article Sage introuvable désactivation complète de l'article [ " + Article.Art_Ref + " - " + Article.Art_Name + " ]");
                }
            }
            catch (Exception ex)
            {
                log.Add("SA01- Gestion statut article : " + ex.Message);
            }

            if (log.Count > 0)
            {
                log.Add(Core.Log.LogLineSeparator);
                lock (this.logs)
                    logs.AddRange(log);
            }

            lock (this)
            {
                this.CurrentCount += 1;
            }
            ReportInfosSynchro(ArticleSend, Core.Temp._action_information_synchro.fin);
            this.ReportProgress(this.CurrentCount * 100 / this.ListCount);
            this.Semaphore.Release();
        }
        public void CreateCompositionArticle()
        {
            if (SelectedResultSearchCompositionArticle != null)
            {
                Model.Sage.F_ARTICLE F_ARTICLE = new Model.Sage.F_ARTICLERepository().ReadArticle(SelectedResultSearchCompositionArticle.cbMarq);
                if (F_ARTICLE != null)
                {
                    Model.Local.ArticleRepository ArticleRepository = new Model.Local.ArticleRepository();

                    string dft = Core.Global.RemovePurge(SelectedResultSearchCompositionArticle.AR_Design, 255);

                    Model.Local.Article Article = new Model.Local.Article()
                    {
                        Art_Name              = dft,
                        Art_Type              = (short)Model.Local.Article.enum_TypeArticle.ArticleComposition,
                        Art_Description       = SelectedResultSearchCompositionArticle.AR_Design,
                        Art_Description_Short = SelectedResultSearchCompositionArticle.AR_Design,
                        Art_MetaTitle         = dft,
                        Art_MetaDescription   = dft,
                        Art_MetaKeyword       = Core.Global.RemovePurgeMeta(dft, 255),
                        Art_LinkRewrite       = Core.Global.ReadLinkRewrite(dft),
                        Art_Active            = Core.Global.GetConfig().ImportArticleStatutActif,
                        Art_Date              = DateTime.Now,
                        Art_Solde             = false,
                        Art_Sync              = false,
                        Sag_Id              = 0,
                        Cat_Id              = 0,
                        Art_RedirectType    = new Model.Internal.RedirectType(Core.Parametres.RedirectType.NoRedirect404).Page,
                        Art_RedirectProduct = 0,
                        // champs non renseignés pour les compositions
                        Art_Pack  = false,
                        Art_Ref   = string.Empty,
                        Art_Ean13 = string.Empty,
                    };

                    Core.ImportSage.ImportArticle ImportArticle = new Core.ImportSage.ImportArticle();
                    Article.Cat_Id = ImportArticle.ReadCatalog(F_ARTICLE);

                    if (Article.Cat_Id == 0 && Core.Temp.selectedcatalog_composition != 0)
                    {
                        Article.Cat_Id = Core.Temp.selectedcatalog_composition;
                    }

                    if (Article.Cat_Id != 0)
                    {
                        ArticleRepository.Add(Article);

                        ImportArticle.AssignCatalog(0, Article.Cat_Id, Article, Core.Global.GetConfig().ImportArticleRattachementParents);

                        Core.ImportSage.ImportStatInfoLibreArticle ImportStatInfoLibreArticle = new Core.ImportSage.ImportStatInfoLibreArticle();
                        ImportStatInfoLibreArticle.ImportValues(Article, F_ARTICLE.AR_Ref);

                        PRESTACONNECT.Loading Loading = new PRESTACONNECT.Loading();
                        Loading.Show();

                        Core.Temp.selected_taxe_composition  = SelectedF_TAXE;
                        Core.Temp.reference_sage_composition = F_ARTICLE.AR_Ref;
                        Core.Temp.designation_composition    = F_ARTICLE.AR_Design;

                        PRESTACONNECT.Article Form = new Article(Article);
                        Loading.Close();
                        Form.ShowDialog();

                        if (FilterComposition)
                        {
                            SearchArticleComposition();
                        }
                    }
                    else
                    {
                        MessageBox.Show("Aucune correspondance catalogue n'a été trouvée !", "Lien catalogue absent", MessageBoxButton.OK, MessageBoxImage.Stop);
                    }
                }
            }
        }