public WindowApprovisionnementArticleUI()
        {
            CultureInfo ci = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);

            ci.DateTimeFormat.ShortDatePattern  = "dd-MM-yyyy";
            Thread.CurrentThread.CurrentCulture = ci;

            InitializeComponent();

            approvisionnementArticleBL = new ApprovisionnementArticleBL();

            articleChoisi = "<Tous les Articles>";
            magasinChoisi = "<Tous les Magasins>";

            // A mettre pour que le binding avec le DataGrid fonctionne !
            grdListeApprovisionnement.DataContext = this;

            etat = 0;

            ancienObjet = new StockerBE();

            // Initialisation de la collection, qui va s'afficher dans la DataGrid :
            ListeApprovisionnements = new ObservableCollection <StockerBE>();
            List <StockerBE> LStockBE = approvisionnementArticleBL.listerToutesLesStock();

            // on met la liste "LStockBE" dans le DataGrid
            RemplirDataGrid(LStockBE);

            // ------------------- Chargement de la liste des codes de Cycle dans le comboBox de la fenêtre
            //(utile pour le filtre)
            creerModifierArticleBL = new CreerModifierArticleBL();
            List <ArticleBE> LArticleBE = creerModifierArticleBL.listerTousLesArticle();

            cmbArticle.ItemsSource = approvisionnementArticleBL.getListCodeArticle2(LArticleBE);

            cmbFilterArticle.ItemsSource = approvisionnementArticleBL.getListCodeArticle(LArticleBE);

            txtAnnee.Text = Convert.ToString(approvisionnementArticleBL.getAnneeEnCours());

            annee                 = approvisionnementArticleBL.getAnneeEnCours();
            txtAnnee.Text         = Convert.ToString(annee);
            txtAnneeScolaire.Text = (annee - 1).ToString();


            // ------------------- Chargement de la liste des codes de Magasin dans le comboBox de la fenêtre
            //(utile pour le filtre)
            creerModifierMagasinBL = new CreerModifierMagasinBL();
            List <MagasinBE> LMagasinBE = creerModifierMagasinBL.listerToutesLesMagasin();

            cmbMagasin.ItemsSource = approvisionnementArticleBL.getListCodeMagasin2(LMagasinBE);

            cmbFilterMagasin.ItemsSource = approvisionnementArticleBL.getListCodeMagasin(LMagasinBE);
        }
        private void cmdValider_Click(object sender, RoutedEventArgs e)
        {
            if ((cmbArticle.Text != null && cmbMagasin.Text != null && txtQuantite.Text != null && txtPrixUnitaire.Text != null && txtAnneeScolaire.Text != null) &&
                (cmbArticle.Text != "" && cmbMagasin.Text != "" && txtQuantite.Text != "" && txtPrixUnitaire.Text != "" && txtAnneeScolaire.Text != ""))
            { // si tous les champs sont non vides
                StockerBE stock = new StockerBE();

                stock.annee = Convert.ToInt16(txtAnnee.Text);

                //on teste si il ya aucun enregistrement dans la table stocker
                if (approvisionnementArticleBL.tableStokerIsEmpty())
                {
                    //alors c'est le premier enregistrement
                    //stock.numero = Convert.ToInt16(vNumero);
                    stock.codeMagasin     = cmbMagasin.Text;
                    stock.codeArticle     = cmbArticle.Text;
                    stock.stockDebut      = 0;
                    stock.quantiteAchetee = Convert.ToInt16(txtQuantite.Text);
                    stock.quantiteVendue  = 0;
                    //DatePicker dpk = new DatePicker();
                    //dpk.Text = Convert.ToString(System.DateTime.Today.Date);
                    stock.dateOperation = System.DateTime.Today.Date;
                    //stock.dateOperationString = System.DateTime.Today.ToShortDateString;
                    stock.annee        = Convert.ToInt16(txtAnnee.Text);
                    stock.puArticle    = Convert.ToInt16(txtPrixUnitaire.Text);
                    stock.stockRestant = Convert.ToInt16(txtQuantite.Text);
                }
                else
                {
                    //ce n'est pas le premier enregistrement
                    //alors on recherche le dernier enregistrement
                    StockerBE dernierStocker = approvisionnementArticleBL.dernierEnregistrementStocker(cmbArticle.Text, cmbMagasin.Text);

                    if (dernierStocker != null)
                    {
                        //le stock de début est égales au stock de début du dernier enregistrement du même article
                        //on ajoute ajute la quantité acheté au dernier stock restant
                        //stock.numero = Convert.ToInt16(vNumero);
                        stock.codeMagasin = cmbMagasin.Text;
                        stock.codeArticle = cmbArticle.Text;

                        if (dernierStocker.annee != stock.annee)
                        {
                            stock.stockDebut = Convert.ToInt16(dernierStocker.stockRestant);
                        }
                        else
                        {
                            stock.stockDebut = Convert.ToInt16(dernierStocker.stockDebut);
                        }

                        stock.quantiteAchetee = Convert.ToInt16(txtQuantite.Text);
                        stock.quantiteVendue  = 0;
                        stock.dateOperation   = System.DateTime.Today.Date;
                        //stock.dateOperationString = System.DateTime.Today.ToShortDateString;
                        stock.annee        = Convert.ToInt16(txtAnnee.Text);
                        stock.puArticle    = Convert.ToInt16(txtPrixUnitaire.Text);
                        stock.stockRestant = Convert.ToInt16(dernierStocker.stockRestant + Convert.ToInt16(txtQuantite.Text));
                    }
                    else
                    {
                        //le stock de début est égale à 0
                        //le stock restant est égale à la quantité achetée

                        //alors c'est le premier enregistrement
                        //stock.numero = Convert.ToInt16(vNumero);
                        stock.codeMagasin     = cmbMagasin.Text;
                        stock.codeArticle     = cmbArticle.Text;
                        stock.stockDebut      = 0;
                        stock.quantiteAchetee = Convert.ToInt16(txtQuantite.Text);
                        stock.quantiteVendue  = 0;
                        //DatePicker dpk = new DatePicker();
                        //dpk.Text = Convert.ToString(System.DateTime.Today.Date);
                        stock.dateOperation = System.DateTime.Today.Date;
                        //stock.dateOperationString = System.DateTime.Today.ToShortDateString;
                        stock.annee        = Convert.ToInt32(txtAnnee.Text);
                        stock.puArticle    = Convert.ToInt32(txtPrixUnitaire.Text);
                        stock.stockRestant = Convert.ToInt32(txtQuantite.Text);
                    }
                }


                if (etat == 1)
                {
                    // on retire dans l'ancien objet
                    StockerBE newStock = new StockerBE();

                    //stock.numero = Convert.ToInt16(vNumero);
                    newStock.codeMagasin     = stock.codeMagasin;
                    newStock.codeArticle     = stock.codeArticle;
                    newStock.stockDebut      = stock.stockDebut;
                    newStock.quantiteAchetee = stock.quantiteAchetee;
                    newStock.quantiteVendue  = stock.quantiteVendue;
                    //DatePicker dpk = new DatePicker();
                    //dpk.Text = Convert.ToString(System.DateTime.Today.Date);
                    newStock.dateOperation = stock.dateOperation;
                    //stock.dateOperationString = System.DateTime.Today.ToShortDateString;
                    newStock.annee        = stock.annee;
                    newStock.puArticle    = stock.puArticle;
                    newStock.stockRestant = stock.stockRestant;

                    if (stock.quantiteAchetee > ancienObjet.quantiteAchetee)
                    { // il a augmenté la quantité acheté
                        newStock.quantiteAchetee = ancienObjet.quantiteAchetee + (stock.quantiteAchetee - ancienObjet.quantiteAchetee);
                        newStock.stockRestant    = ancienObjet.stockRestant + (stock.quantiteAchetee - ancienObjet.quantiteAchetee);
                    }
                    else
                    { //si on a diminué la quantité
                        newStock.quantiteAchetee = ancienObjet.quantiteAchetee - (ancienObjet.quantiteAchetee - stock.quantiteAchetee);
                        newStock.stockRestant    = ancienObjet.stockRestant - (ancienObjet.quantiteAchetee - stock.quantiteAchetee);
                    }

                    approvisionnementArticleBL.modifierStock(ancienObjet, newStock);

                    /*List<StockerBE> LStockerBE = approvisionnementArticleBL.listerToutesLesStock();
                     * // on met la liste "LStockerBE" dans le DataGrid
                     * RemplirDataGrid(LStockerBE);*/

                    // ------------------- Chargement de la liste des codes de série dans le comboBox de la fenêtre
                    //(utile pour le filtre)
                    // cmbFilterCode.ItemsSource = getListCodeSerie(LSerieBE);

                    // ------------------- Chargement de la liste des noms de série dans le comboBox de la fenêtre
                    //(utile pour le filtre)
                    //cmbFilterNom.ItemsSource = getListNomSerie(LSerieBE);

                    cmbArticle.Text      = null;
                    cmbMagasin.Text      = null;
                    txtQuantite.Text     = "";
                    txtPrixUnitaire.Text = "";

                    etat = 0;
                }
                else
                {
                    approvisionnementArticleBL.creerStock(stock);
                }

                cmbArticle.Text      = "";
                cmbMagasin.Text      = "";
                txtQuantite.Text     = "";
                txtPrixUnitaire.Text = "";

                annee                 = approvisionnementArticleBL.getAnneeEnCours();
                txtAnnee.Text         = Convert.ToString(annee);
                txtAnneeScolaire.Text = (annee - 1).ToString();
                //dpkDatePeremption.Text = "";

                etat = 0;

                //on liste tous les stocks
                List <StockerBE> LStockerBE = approvisionnementArticleBL.listerToutesLesStock();
                RemplirDataGrid(LStockerBE);
            }
            else
            {
                MessageBox.Show("Tous les champs marqués par un Astérix '(*)' doivent être remplis !");
            }
        }