private void EnregistrerCommandeClientPro()
        {
            if (ClasseGlobale.Client.nom != "")
            {
                if (ClasseGlobale._contentDetailCommande == null)
                {
                    MessageBox.Show("Ajoutez des articles");
                }
                else
                {
                    Commande cmd = new Commande(DateTime.Now, false, 0, ClasseGlobale.Client);

                    //ObservableCollection<ArticlesVM> listeArticles = ClasseGlobale._contentDetailCommande;
                    if (CommandeDAO.insertCommande(cmd) == 1)
                    {
                        cmd = CommandeDAO.lastCommande();
                        foreach (ArticlesVM artVM in ClasseGlobale._contentDetailCommande)
                        {
                            ArticleDAO.insertArticle(artVM.getArticle(cmd.id));
                        }

                        //Mise à jour de la table convoyeur
                        foreach (PlaceConvoyeur place in ClasseGlobale.PlacesLibres.getList())
                        {
                            PlaceConvoyeurDAO.updatePlaceConvoyeur(place);
                        }


                        //Clear l'écran et bloque l'utilisation des touches


                        try
                        {
                            cmd = CommandeDAO.selectCommandeById(cmd.id, true, true, true);
                            RecuPaiement rp = new RecuPaiement(cmd);
                            rp.printRecu();
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Impression refusée");
                        }
                        finally
                        {
                            ClasseGlobale.SET_ALL_NULL();
                            commandePayeeEnDiffere = true;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Erreur lors de la création de la commande. Enregistrement de la commande annulé");
                    }
                }
            }
            else
            {
                MessageBox.Show("La comande a déjà été enregistrée. Veuillez cliquer sur HOME");
            }
        }
        private void btn_detailCommande_rendre_articles_selectionnes_Click(object sender, RoutedEventArgs e)
        {
            dp.Children.Clear();
            //dp.Children.Add(new Accueil());
            //dp.Children.Add(new Paiement());
            //dp.Children.Clear();
            ////Si la commande a déjà été payée je ne pase pas par la page de paiement
            if (ClasseGlobale._renduCommande.payee == false)
            {
                dp.Children.Add(new Paiement());
            }
            else
            {
                //Il faut nettoyer le convoyeur et update les articles

                List <Article> ListeSelectArt = ClasseGlobale._rendreArticlesSelectionnes;
                Commande       comdRendu      = ClasseGlobale._renduCommande;

                foreach (Article art in ListeSelectArt)
                {
                    //Mise à jour de la place convoyeur
                    //1 - dans la table convoyeur : on soustrait l'encombrement
                    //2 - dans la table article : id convoyeur devient nul

                    art.convoyeur.encombrement = (float)((decimal)art.convoyeur.encombrement - (decimal)art.type.encombrement);
                    //Si un article est à la même place, il faut modifier sa place convoyeur pour qu'elle corresponde au changement appliqué
                    //Permet la mise à jour correcte de la table convoyeur
                    foreach (Article art2 in ListeSelectArt)
                    {
                        //Si j'ai un autre article au même emplacement convoyeur
                        if (art2.convoyeur.id == art.convoyeur.id && art2.id != art.id)
                        {
                            //Je lui attribut le bon encombrement
                            art2.convoyeur.encombrement = art.convoyeur.encombrement;
                        }
                    }

                    PlaceConvoyeurDAO.updatePlaceConvoyeur(art.convoyeur);

                    Article artAdd = new Article(art.id, art.photo, art.commentaire, true, art.TVA, art.TTC, art.type, null, comdRendu.id);
                    artAdd.date_rendu = DateTime.Now;
                    //artAdd.date_payee = DateTime.Now;

                    ArticleDAO.updateArticle(artAdd);
                }


                //Mise à jour de la commande
                comdRendu = CommandeDAO.selectCommandeById(comdRendu.id, true, true, true);
                bool tousLesArticlesSontIlsRendus = true;
                //Si j'ai rendu tous les articles de la commande je dois update le champ de la commande
                foreach (Article art in comdRendu.listArticles)
                {
                    //Si l'un au moins des articles n'est pas rendu je ne change pas la date rendu de la commande
                    if (art.ifRendu == false)
                    {
                        tousLesArticlesSontIlsRendus = false;
                        break;
                    }
                }
                if (tousLesArticlesSontIlsRendus == true)
                {
                    comdRendu.date_rendu = DateTime.Now;
                    CommandeDAO.updateCommande(comdRendu);
                }


                comdRendu = CommandeDAO.selectCommandeById(comdRendu.id, true, true, true);
                try
                {
                    RecuPaiement rp = new RecuPaiement(comdRendu);
                    rp.printRecu();
                    rp.printRecu();
                    //if (comdRendu.listArticles != null)
                    //{
                    //    TicketVetement ticketVetement = new TicketVetement(comdRendu);
                    //    ticketVetement.printAllArticleCmd();
                    //}
                    //else
                    //    MessageBox.Show("La commande ne contient pas d'articles");
                }
                catch (Exception)
                {
                    MessageBox.Show("Impression refusée");
                }
                finally
                {
                    //initialise tout
                    ClasseGlobale.SET_ALL_NULL();
                }
            }
        }
        private void ValidationPaiement()
        {
            if (ClasseGlobale.Client != null)
            {
                //Récupération des articles de la commande, du client, et du paiement et enregistrement en bdd

                Client client = ClasseGlobale.Client;

                //Validation du paiement

                if (Reste_a_payer == 0)
                {
                    //Récupère la liste des articles, il y'en a qu'une seule qui soit initialisée. L'autre est nulle
                    ObservableCollection <ArticlesVM> cmdDetail = ClasseGlobale._contentDetailCommande;
                    List <Article> ListeSelectArt = ClasseGlobale._rendreArticlesSelectionnes;

                    //Si je viens de l'écran de nouvelle commande
                    if (cmdDetail != null)
                    {
                        Commande cmd = new Commande(DateTime.Now, true, Txb_paiement_montantRemise, client);
                        CommandeDAO.insertCommande(cmd);
                        cmd = CommandeDAO.selectCommandeById(CommandeDAO.lastCommande().id, false, true, false);

                        //Enregistrement des articles
                        foreach (ArticlesVM artVM in cmdDetail)
                        {
                            Article art = artVM.getArticle(cmd.id);
                            art.date_payee = DateTime.Now;
                            ArticleDAO.insertArticle(art);
                        }

                        //Enregistrement du/des paiement(s)
                        Payement             paiement;
                        ICollection <String> liste_des_moyens_de_paiement = listeDeMontantParMoyenPaiement.dico.Keys;
                        foreach (String monMoyenDePaiement in liste_des_moyens_de_paiement)
                        {
                            paiement = new Payement(DateTime.Now, listeDeMontantParMoyenPaiement[monMoyenDePaiement], monMoyenDePaiement, cmd.id);
                            PayementDAO.insertPaiement(paiement);
                        }

                        //Mise à jour de la table convoyeur
                        foreach (PlaceConvoyeur place in ClasseGlobale.PlacesLibres.getList())
                        {
                            PlaceConvoyeurDAO.updatePlaceConvoyeur(place);
                        }



                        Commande cmdTota = CommandeDAO.selectCommandeById(cmd.id, true, true, true);

                        //MessageBox.Show("La commande " + cmdTota.id + " à été enregistrée avec succès");
                        try
                        {
                            RecuPaiement rp = new RecuPaiement(cmdTota);
                            rp.printRecu();
                            rp.printRecu();

                            if (cmdTota.listArticles != null)
                            {
                                TicketVetement ticketVetement = new TicketVetement(cmdTota);
                                ticketVetement.printAllArticleCmd();
                            }
                            else
                            {
                                MessageBox.Show("La commande ne contient pas d'articles");
                            }
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Impression refusée");
                        }
                        finally
                        {
                            //initialise tout
                            ClasseGlobale.SET_ALL_NULL();
                        }


                        //FactureExcel fe = new FactureExcel(CommandeDAO.selectCommandeById(cmd.id, true, true, true));
                        //fe.printFacture();
                    }
                    //Si je viens de l'écran de rendu des articles
                    else if (ListeSelectArt != null)
                    {
                        Commande comdRendu = ClasseGlobale._renduCommande;

                        foreach (Article art in ListeSelectArt)
                        {
                            //Mise à jour de la place convoyeur
                            //1 - dans la table convoyeur : on soustrait l'encombrement
                            //2 - dans la table article : id convoyeur devient nul

                            art.convoyeur.encombrement = (float)((decimal)art.convoyeur.encombrement - (decimal)art.type.encombrement);
                            //Si un article est à la même place, il faut modifier sa place convoyeur pour qu'elle corresponde au changement appliqué
                            //Permet la mise à jour correcte de la table convoyeur
                            foreach (Article art2 in ListeSelectArt)
                            {
                                //Si j'ai un autre article au même emplacement convoyeur
                                if (art2.convoyeur.id == art.convoyeur.id && art2.id != art.id)
                                {
                                    //Je lui attribut le bon encombrement
                                    art2.convoyeur.encombrement = art.convoyeur.encombrement;
                                }
                            }

                            PlaceConvoyeurDAO.updatePlaceConvoyeur(art.convoyeur);

                            Article artAdd = new Article(art.id, art.photo, art.commentaire, true, art.TVA, art.TTC, art.type, null, comdRendu.id);
                            artAdd.date_rendu = DateTime.Now;
                            artAdd.date_payee = DateTime.Now;

                            ArticleDAO.updateArticle(artAdd);
                        }


                        //Enregistrement du/des paiement(s)
                        Payement             paiement;
                        ICollection <String> liste_des_moyens_de_paiement = listeDeMontantParMoyenPaiement.dico.Keys;
                        foreach (String monMoyenDePaiement in liste_des_moyens_de_paiement)
                        {
                            paiement = new Payement(DateTime.Now, listeDeMontantParMoyenPaiement[monMoyenDePaiement], monMoyenDePaiement, comdRendu.id);
                            PayementDAO.insertPaiement(paiement);
                        }



                        //Mise à jour de la commande
                        comdRendu = CommandeDAO.selectCommandeById(comdRendu.id, true, true, true);

                        //Vérification du paiement
                        //1 - Je calcule le montant total de la commande
                        //2 - Je calcule le montant payé total
                        decimal prixTotalDeLaCommande = 0;
                        foreach (Article article in comdRendu.listArticles)
                        {
                            prixTotalDeLaCommande += (decimal)article.TTC;
                        }


                        decimal prixPayeTotal = 0;
                        if (comdRendu.listPayements.Count > 0)
                        {
                            foreach (Payement paiementEffectue in comdRendu.listPayements)
                            {
                                prixPayeTotal += (decimal)paiementEffectue.montant;
                            }
                        }


                        decimal resteAPayer = prixTotalDeLaCommande - prixPayeTotal - (decimal)Txb_paiement_montantRemise;
                        if (resteAPayer == 0)
                        {
                            //Mise à jour de la commande, le champ cmd_payee passe à 1
                            comdRendu.payee      = true;
                            comdRendu.date_rendu = DateTime.Now;
                        }
                        else
                        {
                            MessageBox.Show("Un reste à payer de " + resteAPayer);
                        }
                        if (Txb_paiement_montantRemise != 0)
                        {
                            comdRendu.remise = Txb_paiement_montantRemise;
                        }
                        if (Txb_paiement_montantRemise != 0 || resteAPayer == 0)
                        {
                            CommandeDAO.updateCommande(comdRendu);
                        }



                        Commande cmdTota = CommandeDAO.selectCommandeById(comdRendu.id, true, true, true);

                        try
                        {
                            RecuPaiement rp = new RecuPaiement(cmdTota);
                            rp.printRecu();
                            rp.printRecu();
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Impression refusée");
                        }
                        finally
                        {
                            //initialise tout
                            ClasseGlobale.SET_ALL_NULL();
                        }
                    }
                    //Si je ne  viens pas des pages précedentes
                    //Mes liste sont vides => paiement déjà effectué

                    else
                    {
                        MessageBox.Show("La commande à été correctement enregistrée, cliquez sur le bouton home pour retourner à l'accueil");
                    }
                    //Accueil page2Obj = new Accueil(); //Create object of Page2
                    //page2Obj.Show(); //Show page2
                    //this.Close();
                }
                else
                {
                    MessageBox.Show("Toute la commande n'a pas été payée. Veuillez s'il vous plait compléter l'intégralité du paiement.");
                }
            }
            else
            {
                MessageBox.Show("La commande à été correctement enregistrée, cliquez sur le bouton home pour retourner à l'accueil");
            }
        }