예제 #1
0
        /// <summary>
        ///  Cette methode permet d'ajout ou de modifier un article après avoir cliqué sur le bouton ajouter / modifier
        /// </summary>
        /// <param name="sender">object qui envoie l'action </param>
        /// <param name="e">Evenement envoyé </param>
        /// <remarks>
        ///     Cette methode vérifie que tous les champs sont saisie par l'utilisateur
        ///     et choisie en fonction de l'attribut <see cref="RefArticle"/> si on ajoute ou modifie l'article
        ///     puis on ferme la fenetre
        /// </remarks>
        private void Button_Ajouter_Modifier_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(TextBox_RefArticle.Text) || String.IsNullOrEmpty(ComboBox_SousFamille.Text) || String.IsNullOrEmpty(ComboBox_Marque.Text) || String.IsNullOrEmpty(TextBox_Description.Text))
            {
                MessageBox.Show(this, "Veillez remplir tous les champs !!!", "Erreur Insertion ", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
            }
            else
            {
                InterfaceDB_Articles     inter        = new InterfaceDB_Articles();
                InterfaceDB_Sous_Famille intersousfam = new InterfaceDB_Sous_Famille();
                InterfaceDB_Marque       intermarque  = new InterfaceDB_Marque();

                string resultat;

                SousFamille sousfamille = intersousfam.GetSousFamille(ComboBox_SousFamille.Text);
                Marque      marque      = intermarque.GetMarque(ComboBox_Marque.Text);

                if (RefArticle == null)  //on ajoute
                {
                    Article article = new Article(TextBox_RefArticle.Text, TextBox_Description.Text, sousfamille, marque, double.Parse(NumericUpDown_PrixHT.Value.ToString()), Int32.Parse(NumericUpDown_Quantite.Value.ToString()));
                    resultat = inter.InsererArticle(article);
                }
                else // on modifie
                {
                    resultat = inter.ModifierArticle(RefArticle, TextBox_Description.Text, sousfamille.RefSousFamille, marque.RefMarque, double.Parse(NumericUpDown_PrixHT.Value.ToString()), Int32.Parse(NumericUpDown_Quantite.Value.ToString()));
                }
                MessageBox.Show(this, resultat, "Information", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                Reussi_ = true;
                this.Close();
            }
        }
예제 #2
0
        /// <summary>
        ///     Cette méthode permet de supprimer un article dans la base de données
        /// </summary>
        /// <remarks>
        ///     la suppression est faite que si une ligne est sélectionnée , et un message box est affiché pour demander à l'utilisateur de confirmer la suppression
        ///     on met à jour la liste view des articles <see cref="ListView_Articles"/> , on change  le status de l'application si la suppression à reussi
        /// </remarks>
        private void SupprimerArticle()
        {
            int count = ListView_Articles.Items.Count;

            if (ListView_Articles.SelectedItems.Count > 0)
            {
                DialogResult reponse = MessageBox.Show("Voulez-vous supprimer cet article ? ", "Information", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                if (reponse == DialogResult.OK)
                {
                    ListViewItem         item       = ListView_Articles.SelectedItems[0];
                    string               refarticle = item.SubItems[0].Text;
                    InterfaceDB_Articles inter      = new InterfaceDB_Articles();
                    inter.SupprimerArticle(refarticle);
                    MettreJourArticles();
                    if (count > ListView_Articles.Items.Count)
                    {
                        ChangementStatus("Un  article a été supprimé ");
                    }
                }
            }
        }
예제 #3
0
 /// <summary>
 ///  Cette méthode permet d'initialiser l'interface graphique
 /// </summary>
 public void Init()
 {
     if (RefArticle == null)
     {
         RemplirComboMarque();
         RemplirComboSousfamille();
     }
     else
     {
         // Initialise les champs correspondant à la reférence de l'article ( cas d'une modification)
         InterfaceDB_Articles inter = new InterfaceDB_Articles();
         Article article            = inter.GetArticle(RefArticle);
         TextBox_RefArticle.Text      = RefArticle;
         TextBox_Description.Text     = article.Description;
         NumericUpDown_PrixHT.Value   = Decimal.Parse(article.PrixHT.ToString());
         NumericUpDown_Quantite.Value = Int32.Parse(article.Quantite.ToString());
         Button_Ajouter_Modifier.Text = "Modifier";
         RemplirComboMarque();
         RemplirComboSousfamille();
         this.ComboBox_Marque.SelectedIndex      = this.ComboBox_Marque.FindString(article.Marque.NomMarque);
         this.ComboBox_SousFamille.SelectedIndex = this.ComboBox_SousFamille.FindString(article.SousFamille.NomSousFamille);
     }
 }
예제 #4
0
        /// <summary>
        /// Cette methode permet de lire le contenu du fichier xml et mettre à jour les informations des articles dans la base de données
        /// </summary>
        /// <remarks>
        ///       Elle permet de :
        ///    -  Ouvre et lit  le fichier XML avec <see cref="XmlDocument"/>
        ///    -  Pour chaque noeud lu , elle met à jour un article avec les nouveaux éléments d'un fichier
        ///      - si la marque , la  famille et la sous famille existent alors l'action est faite directement
        ///      - sinon on cree l'objet puis on met à jour l'article
        ///    - Si l'article n'existe pas avant dans la base de données alors il est crée
        /// </remarks>
        private void FileMisejour()
        {
            Article                  articleMisejour;
            Marque                   marqueMisejour;
            Famille                  familleMisejour;
            SousFamille              sousfamilleMisejour;
            InterfaceDB_Articles     interArticle     = new InterfaceDB_Articles();
            InterfaceDB_Marque       interMarque      = new InterfaceDB_Marque();
            InterfaceDB_Famille      interfamille     = new InterfaceDB_Famille();
            InterfaceDB_Sous_Famille interSousfamille = new InterfaceDB_Sous_Famille();

            int         increment   = 0;
            XmlDocument documentXml = new XmlDocument();

            this.NomFicherXML = this.Ouvrir_XML_Fichier.FileName;
            documentXml.Load(this.NomFicherXML);

            foreach (XmlNode enregistrement in documentXml.DocumentElement)
            {
                string descriptionActicle = enregistrement.SelectSingleNode("description").InnerText;
                string refArticle         = enregistrement.SelectSingleNode("refArticle").InnerText;
                double prixArticle        = Double.Parse(enregistrement.SelectSingleNode("prixHT").InnerText);
                int    quantiteArticle    = 1;

                string nomSousfamille = enregistrement.SelectSingleNode("sousFamille").InnerText;
                string nomfamille     = enregistrement.SelectSingleNode("famille").InnerText;
                string nomMarque      = enregistrement.SelectSingleNode("marque").InnerText;

                /**
                 * La marque
                 * */
                marqueMisejour = interMarque.GetMarque(nomMarque);
                if (marqueMisejour == null)
                {
                    ResultatErreur = interMarque.InsererMarque(nomMarque);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                    marqueMisejour = interMarque.GetMarque(nomMarque);
                }

                /**
                 * La famille
                 */
                familleMisejour = interfamille.GetFamille(nomfamille);
                if (familleMisejour == null)
                {
                    ResultatErreur = interfamille.InsererFamille(nomfamille);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                    familleMisejour = interfamille.GetFamille(nomfamille);
                }

                /**
                 * La sous famille
                 * */
                sousfamilleMisejour = interSousfamille.GetSousFamille(nomSousfamille);
                if (sousfamilleMisejour == null)
                {
                    ResultatErreur = interSousfamille.InsererSousFamille(nomfamille, nomSousfamille);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                    sousfamilleMisejour = interSousfamille.GetSousFamille(nomSousfamille);
                }
                else
                {
                    if (sousfamilleMisejour.MaFamille.RefFamille != familleMisejour.RefFamille)
                    {
                        ResultatErreur = interSousfamille.ModifierSousFamille(sousfamilleMisejour.RefSousFamille, familleMisejour.RefFamille, sousfamilleMisejour.NomSousFamille);
                        TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                    }
                }

                /**
                 * L'article
                 * */

                articleMisejour = interArticle.GetArticle(refArticle);
                if (articleMisejour == null)
                {
                    ResultatErreur = interArticle.InsererArticle(refArticle, descriptionActicle, sousfamilleMisejour.RefSousFamille, marqueMisejour.RefMarque, prixArticle, quantiteArticle);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                }
                else
                {
                    ResultatErreur = interArticle.ModifierArticle(refArticle, descriptionActicle, sousfamilleMisejour.RefSousFamille, marqueMisejour.RefMarque, prixArticle, quantiteArticle);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                }
                increment++;
                Travail_En_Arriere_Plan.ReportProgress(increment);
            }
            Reussi_ = 2; // Mise à jour reussie
        }
예제 #5
0
        /// <summary>
        /// Cette methode permet de lire le contenu du fichier xml et inserer dans la base de données
        /// </summary>
        /// <remarks>
        ///    -  Elle supprime en premier lieu , toutes les tuples qui se trouvent dans les différents tables de la base de données
        ///    -  Puis ouvre et lit  le fichier XML avec <see cref="XmlDocument"/>
        ///    -  Pour chaque noeud lu , elle cree une marque , une famille , une sous famille puis un article si ils existent pas déjà
        /// </remarks>
        private void FileIntegration()
        {
            int         increment   = 0;
            XmlDocument documentXml = new XmlDocument();

            /**
             * Suppression des tables de la base de données
             * */
            ResultatErreur = InterfaceDB.SupprimerToutTable("Articles");
            TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
            ResultatErreur = InterfaceDB.SupprimerToutTable("Familles");
            TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
            ResultatErreur = InterfaceDB.SupprimerToutTable("SousFamilles");
            TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
            ResultatErreur = InterfaceDB.SupprimerToutTable("Marques");
            TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);


            /**
             * Lecture des Elements dans le fichier xml choisie
             * */
            this.NomFicherXML = this.Ouvrir_XML_Fichier.FileName;
            documentXml.Load(this.NomFicherXML);

            foreach (XmlNode enregistrement in documentXml.DocumentElement)
            {
                /**
                 * Pour chaque noeud je recupère les élements d'un article
                 * En creer la marque , la famille , la sous famille puis l'article
                 */

                string descriptionActicle = enregistrement.SelectSingleNode("description").InnerText;
                string refArticle         = enregistrement.SelectSingleNode("refArticle").InnerText;
                double prixArticle        = Double.Parse(enregistrement.SelectSingleNode("prixHT").InnerText);
                int    quantiteArticle    = 1;

                string nomSousfamille = enregistrement.SelectSingleNode("sousFamille").InnerText;
                string nomfamille     = enregistrement.SelectSingleNode("famille").InnerText;
                string nomMarque      = enregistrement.SelectSingleNode("marque").InnerText;

                /**
                 * L'ordre  d'insertion est importante
                 */

                InterfaceDB_Marque marque = new InterfaceDB_Marque();
                ResultatErreur = marque.InsererMarque(nomMarque);
                TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);


                InterfaceDB_Famille famille = new InterfaceDB_Famille();
                ResultatErreur = famille.InsererFamille(nomfamille);
                TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);

                InterfaceDB_Sous_Famille sousfamille = new InterfaceDB_Sous_Famille();
                ResultatErreur = sousfamille.InsererSousFamille(nomfamille, nomSousfamille);
                TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);

                Marque      marqueArticle      = marque.GetMarque(nomMarque);
                SousFamille sousFamilleArticle = sousfamille.GetSousFamille(nomSousfamille);



                if (marqueArticle != null && sousFamilleArticle != null)
                {
                    InterfaceDB_Articles article = new InterfaceDB_Articles();
                    ResultatErreur = article.InsererArticle(refArticle, descriptionActicle, sousFamilleArticle.RefSousFamille, marqueArticle.RefMarque, prixArticle, quantiteArticle);
                    TextBox_Affichage_ResultatEtErreurs.Invoke(new AjouterFinLigneResultatErreurs(ChangerResultat), ResultatErreur);
                }

                increment++;
                Travail_En_Arriere_Plan.ReportProgress(increment);
            }
            Reussi_ = 1; // Integration reussie
        }
예제 #6
0
        /// <summary>
        ///  Cette methode permet d'aller chercher dans la base de données Tous les articles et remplir la liste View de ces articles
        ///  , en indiquant les noms de colonne
        /// </summary>
        private void RemplirListeArticle()
        {
            InterfaceDB_Articles interArticle = new InterfaceDB_Articles();
            int indice = 0;

            ColumnHeader Crefarcticle = new ColumnHeader();

            Crefarcticle.Text  = "RefArticle";
            Crefarcticle.Width = 80;

            ColumnHeader Cdescription = new ColumnHeader();

            Cdescription.Text  = "Description";
            Cdescription.Width = 300;

            ColumnHeader Cfamille = new ColumnHeader();

            Cfamille.Text  = "Famille";
            Cfamille.Width = 120;

            ColumnHeader Csousfamille = new ColumnHeader();

            Csousfamille.Text  = "Sous Famille";
            Csousfamille.Width = 120;

            ColumnHeader Cmarque = new ColumnHeader();

            Cmarque.Text  = "Marque";
            Cmarque.Width = 100;

            ColumnHeader Cprix = new ColumnHeader();

            Cprix.Text  = "Prix HT";
            Cprix.Width = 60;

            ColumnHeader Cquantite = new ColumnHeader();

            Cquantite.Text  = "Quantite";
            Cquantite.Width = 60;

            ListView_Articles.Columns.AddRange(new ColumnHeader[] { Crefarcticle, Cdescription, Cfamille, Csousfamille, Cmarque, Cprix, Cquantite });

            List <Article> listeArticle = interArticle.GetToutesArticle();

            ListViewItem[] listeItemArticle = new ListViewItem[listeArticle.Count];

            if (listeArticle != null)
            {
                foreach (Article article in listeArticle)
                {
                    string[] chaineArticle = new string[] { article.RefArticle, article.Description, article.SousFamille.MaFamille.NomFamille, article.SousFamille.NomSousFamille, article.Marque.NomMarque, article.PrixHT.ToString(), article.Quantite.ToString() };

                    ListViewItem itemArticle = new ListViewItem(chaineArticle);
                    listeItemArticle[indice] = itemArticle;
                    indice++;
                }
            }


            this.ListView_Articles.Items.AddRange(listeItemArticle);
        }