private void MiseAjourDemande()
        {
            try
            {
                ServiceAccueil.CsEvenement ev  = new ServiceAccueil.CsEvenement();
                CsEnteteFacture            ent = (CsEnteteFacture)this.cmbFacture.SelectedItem;

                ev.LOTRI            = ent.LOTRI;
                ev.FK_IDABON        = ent.FK_IDABON;
                ev.FACTURE          = ent.FACTURE;
                ev.PERIODE          = ent.PERIODE;
                ev.USERMODIFICATION = UserConnecte.matricule;
                ev.NUMDEM           = this.laDetailDemande.LaDemande.NUMDEM;
                ev.FK_IDDEMANDE     = this.laDetailDemande.LaDemande.PK_ID;


                this.laDetailDemande.LstEvenement.Clear();
                this.laDetailDemande.LstEvenement.Add(ev);
                this.laDetailDemande.LaDemande.ORDRE            = txtOrdre.Text;
                this.laDetailDemande.LaDemande.CLIENT           = ent.CLIENT;
                this.laDetailDemande.LaDemande.SITE             = Txt_CodeSite.Text;
                this.laDetailDemande.LaDemande.CENTRE           = ent.CENTRE;
                this.laDetailDemande.LaDemande.FK_IDCENTRE      = ent.FK_IDCENTRE;
                this.laDetailDemande.LaDemande.DATEMODIFICATION = DateTime.Now;
                this.laDetailDemande.LaDemande.USERMODIFICATION = UserConnecte.matricule;
                this.laDetailDemande.LaDemande.MOTIF            = txtMotifDemande.Text;
                this.laDetailDemande.LaDemande.ISMETREAFAIRE    = false;
                this.laDetailDemande.LaDemande.TYPEDEMANDE      = SessionObject.LstTypeDemande.First(a => a.CODE == "15").CODE;  //AnnulationFacture
                this.laDetailDemande.LaDemande.FK_IDTYPEDEMANDE = SessionObject.LstTypeDemande.First(a => a.CODE == "15").PK_ID; //AnnulationFacture



                ServiceAccueil.AcceuilServiceClient clientDevis = new ServiceAccueil.AcceuilServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Accueil"));
                clientDevis.ValidationDemandeCompleted += (ss, b) =>
                {
                    prgBar.Visibility = System.Windows.Visibility.Collapsed;

                    if (b.Cancelled || b.Error != null)
                    {
                        string error = b.Error.Message;
                        Message.ShowError(error, this.Title.ToString());
                        return;
                    }
                    if (string.IsNullOrEmpty(b.Result))
                    {
                        Message.ShowInformation("Demande transmise avec succès", this.Title.ToString());
                        this.DialogResult = true;
                    }
                    else
                    {
                        Message.ShowError(b.Result, this.Title.ToString());
                    }
                };
                clientDevis.ValidationDemandeAsync(laDetailDemande, true);
            }
            catch (Exception ex)
            {
                Message.ShowError("Une erreur s'est produite à la validation ", this.Title.ToString());
            }
        }
        private void MiseAjourDemande()
        {
            try
            {
                ServiceAccueil.CsEvenement ev = new ServiceAccueil.CsEvenement();
                CsEvenement leVt = (CsEvenement)this.Cbo_Compteur.SelectedItem;

                ev.PK_ID             = leVt.PK_ID;
                ev.INDEXEVT          = int.Parse(this.Txt_NouvIndex.Text);
                ev.INDEXEVTPRECEDENT = int.Parse(this.Txt_AncIndex.Text);
                ev.USERMODIFICATION  = UserConnecte.matricule;
                ev.NUMDEM            = this.laDetailDemande.LaDemande.NUMDEM;
                ev.FK_IDDEMANDE      = this.laDetailDemande.LaDemande.PK_ID;


                this.laDetailDemande.LstEvenement.Clear();
                this.laDetailDemande.LstEvenement.Add(ev);
                this.laDetailDemande.LaDemande.ORDRE            = txtOrdre.Text;
                this.laDetailDemande.LaDemande.PRODUIT          = leVt.PRODUIT;
                this.laDetailDemande.LaDemande.FK_IDPRODUIT     = leVt.FK_IDPRODUIT;
                this.laDetailDemande.LaDemande.CLIENT           = leVt.CLIENT;
                this.laDetailDemande.LaDemande.SITE             = Txt_CodeSite.Text;
                this.laDetailDemande.LaDemande.CENTRE           = leVt.CENTRE;
                this.laDetailDemande.LaDemande.FK_IDCENTRE      = leVt.FK_IDCENTRE;
                this.laDetailDemande.LaDemande.DATEMODIFICATION = DateTime.Now;
                this.laDetailDemande.LaDemande.USERMODIFICATION = UserConnecte.matricule;
                this.laDetailDemande.LaDemande.MOTIF            = txtMotifDemande.Text;
                this.laDetailDemande.LaDemande.ISMETREAFAIRE    = false;
                this.laDetailDemande.LaDemande.TYPEDEMANDE      = SessionObject.LstTypeDemande.First(a => a.CODE == SessionObject.Enumere.ReprisIndex).CODE;
                this.laDetailDemande.LaDemande.FK_IDTYPEDEMANDE = SessionObject.LstTypeDemande.First(a => a.CODE == SessionObject.Enumere.ReprisIndex).PK_ID;



                ServiceAccueil.AcceuilServiceClient clientDevis = new ServiceAccueil.AcceuilServiceClient(Utility.Protocole(), Utility.EndPoint("Accueil"));
                clientDevis.ValidationDemandeCompleted += (ss, b) =>
                {
                    if (b.Cancelled || b.Error != null)
                    {
                        string error = b.Error.Message;
                        Message.ShowError(error, "Reprise d'index");
                        return;
                    }
                    if (string.IsNullOrEmpty(b.Result))
                    {
                        Message.ShowInformation("Demande transmise avec succès", "Reprise d'index");
                        this.DialogResult = true;
                    }
                    else
                    {
                        Message.ShowError(b.Result, "Reprise d'index");
                    }
                };
                clientDevis.ValidationDemandeAsync(laDetailDemande, true);
            }
            catch (Exception ex)
            {
                Message.ShowError("Une erreur s'est produite à la validation ", "Reprise d'index");
            }
        }
        private ServiceAccueil.CsDemande GetDemandeDevisFromScreen(ServiceAccueil.CsDemande pDemandeDevis)
        {
            try
            {
                if (pDemandeDevis == null)
                {
                    pDemandeDevis                               = new ServiceAccueil.CsDemande();
                    pDemandeDevis.LaDemande                     = new ServiceAccueil.CsDemandeBase();
                    pDemandeDevis.Abonne                        = new ServiceAccueil.CsAbon();
                    pDemandeDevis.Ag                            = new ServiceAccueil.CsAg();
                    pDemandeDevis.Branchement                   = new ServiceAccueil.CsBrt();
                    pDemandeDevis.LeClient                      = new ServiceAccueil.CsClient();
                    pDemandeDevis.ObjetScanne                   = new List <ServiceAccueil.ObjDOCUMENTSCANNE>();
                    pDemandeDevis.AppareilDevis                 = new List <ServiceAccueil.ObjAPPAREILSDEVIS>();
                    pDemandeDevis.LstEvenement                  = new List <ServiceAccueil.CsEvenement>();
                    pDemandeDevis.LaDemande.DATECREATION        = DateTime.Now;
                    pDemandeDevis.LaDemande.USERCREATION        = UserConnecte.matricule;
                    pDemandeDevis.LaDemande.FK_IDADMUTILISATEUR = UserConnecte.PK_ID;
                }
                #region Demande

                if (this.Cbo_Compteur.SelectedItem != null && !string.IsNullOrEmpty(Txt_NouvIndex.Text))
                {
                    ServiceAccueil.CsEvenement ev = new ServiceAccueil.CsEvenement();
                    CsEvenement leVt = (CsEvenement)this.Cbo_Compteur.SelectedItem;

                    ev.PK_ID             = leVt.PK_ID;
                    ev.INDEXEVT          = int.Parse(this.Txt_NouvIndex.Text);
                    ev.INDEXEVTPRECEDENT = int.Parse(this.Txt_AncIndex.Text);
                    ev.USERCREATION      = UserConnecte.matricule;

                    pDemandeDevis.LaDemande.ISNEW = true;
                    pDemandeDevis.LstEvenement.Add(ev);
                    pDemandeDevis.LaDemande.ORDRE            = txtOrdre.Text;
                    pDemandeDevis.LaDemande.PRODUIT          = leVt.PRODUIT;
                    pDemandeDevis.LaDemande.FK_IDPRODUIT     = leVt.FK_IDPRODUIT;
                    pDemandeDevis.LaDemande.CLIENT           = leVt.CLIENT;
                    pDemandeDevis.LaDemande.SITE             = Txt_CodeSite.Text;
                    pDemandeDevis.LaDemande.CENTRE           = leVt.CENTRE;
                    pDemandeDevis.LaDemande.FK_IDCENTRE      = leVt.FK_IDCENTRE;
                    pDemandeDevis.LaDemande.DATECREATION     = DateTime.Now;
                    pDemandeDevis.LaDemande.USERCREATION     = UserConnecte.matricule;
                    pDemandeDevis.LaDemande.MOTIF            = txtMotifDemande.Text;
                    pDemandeDevis.LaDemande.ISMETREAFAIRE    = false;
                    pDemandeDevis.LaDemande.TYPEDEMANDE      = SessionObject.LstTypeDemande.First(a => a.CODE == SessionObject.Enumere.ReprisIndex).CODE;
                    pDemandeDevis.LaDemande.FK_IDTYPEDEMANDE = SessionObject.LstTypeDemande.First(a => a.CODE == SessionObject.Enumere.ReprisIndex).PK_ID;
                }

                #endregion


                return(pDemandeDevis);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private ServiceAccueil.CsDemande GetDemandeDevisFromScreen(ServiceAccueil.CsDemande pDemandeDevis)
        {
            try
            {
                if (pDemandeDevis == null)
                {
                    pDemandeDevis                               = new ServiceAccueil.CsDemande();
                    pDemandeDevis.LaDemande                     = new ServiceAccueil.CsDemandeBase();
                    pDemandeDevis.Abonne                        = new ServiceAccueil.CsAbon();
                    pDemandeDevis.Ag                            = new ServiceAccueil.CsAg();
                    pDemandeDevis.Branchement                   = new ServiceAccueil.CsBrt();
                    pDemandeDevis.LeClient                      = new ServiceAccueil.CsClient();
                    pDemandeDevis.ObjetScanne                   = new List <ServiceAccueil.ObjDOCUMENTSCANNE>();
                    pDemandeDevis.AppareilDevis                 = new List <ServiceAccueil.ObjAPPAREILSDEVIS>();
                    pDemandeDevis.LstEvenement                  = new List <ServiceAccueil.CsEvenement>();
                    pDemandeDevis.LaDemande.DATECREATION        = DateTime.Now;
                    pDemandeDevis.LaDemande.USERCREATION        = UserConnecte.matricule;
                    pDemandeDevis.LaDemande.FK_IDADMUTILISATEUR = UserConnecte.PK_ID;
                }
                #region Demande

                if (this.cmbFacture.SelectedItem != null && !string.IsNullOrEmpty(txtMotifDemande.Text))
                {
                    ServiceAccueil.CsEvenement ev  = new ServiceAccueil.CsEvenement();
                    CsEnteteFacture            ent = (CsEnteteFacture)this.cmbFacture.SelectedItem;

                    ev.LOTRI        = ent.LOTRI;
                    ev.FK_IDABON    = ent.FK_IDABON;
                    ev.FACTURE      = ent.FACTURE;
                    ev.PERIODE      = ent.PERIODE;
                    ev.USERCREATION = UserConnecte.matricule;

                    pDemandeDevis.LaDemande.ISNEW = true;
                    pDemandeDevis.LstEvenement.Add(ev);
                    pDemandeDevis.LaDemande.ORDRE            = txtOrdre.Text;
                    pDemandeDevis.LaDemande.CLIENT           = ent.CLIENT;
                    pDemandeDevis.LaDemande.SITE             = Txt_CodeSite.Text;
                    pDemandeDevis.LaDemande.CENTRE           = ent.CENTRE;
                    pDemandeDevis.LaDemande.FK_IDCENTRE      = ent.FK_IDCENTRE;
                    pDemandeDevis.LaDemande.DATECREATION     = DateTime.Now;
                    pDemandeDevis.LaDemande.USERCREATION     = UserConnecte.matricule;
                    pDemandeDevis.LaDemande.MOTIF            = txtMotifDemande.Text;
                    pDemandeDevis.LaDemande.ISMETREAFAIRE    = false;
                    pDemandeDevis.LaDemande.TYPEDEMANDE      = SessionObject.LstTypeDemande.First(a => a.CODE == "15").CODE;  //AnnulationFacture
                    pDemandeDevis.LaDemande.FK_IDTYPEDEMANDE = SessionObject.LstTypeDemande.First(a => a.CODE == "15").PK_ID; //AnnulationFacture
                }

                #endregion


                return(pDemandeDevis);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void UpdateEvenement()
        {
            try
            {
                ServiceAccueil.CsEvenement even = new ServiceAccueil.CsEvenement();
                even = laDetailDemande.LstEvenement.First();
                even.USERMODIFICATION = UserConnecte.matricule;

                laDetailDemande.LaDemande.MATRICULE = UserConnecte.matricule;
                laDetailDemande.LstEvenement.Clear();
                laDetailDemande.LstEvenement.Add(even);

                Galatee.Silverlight.ServiceAccueil.AcceuilServiceClient service = new Galatee.Silverlight.ServiceAccueil.AcceuilServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Accueil"));
                service.ValiderRepriseIndexCompleted += (s, args) =>
                {
                    try
                    {
                        if (args.Cancelled || args.Error != null)
                        {
                            string error = args.Error.Message;
                            Message.ShowError(error, this.Title.ToString());
                            return;
                        }
                        if (string.IsNullOrEmpty(args.Result))
                        {
                            Message.ShowInformation("Demande validée avec succès", this.Title.ToString());
                            this.DialogResult = true;
                        }
                        else
                        {
                            Message.ShowError(args.Result, this.Title.ToString());
                        }
                    }
                    catch (Exception ex)
                    {
                        Message.ShowError(ex, this.Title.ToString());
                    }
                };
                service.ValiderRepriseIndexAsync(laDetailDemande);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void RecherCherFacture()
        {
            try
            {
                if (Txt_CodeCentre.Text.Length == SessionObject.Enumere.TailleCentre &&
                    txtClient.Text.Length == SessionObject.Enumere.TailleClient &&
                    txtOrdre.Text.Length == SessionObject.Enumere.TailleOrdre)
                {
                    centre = Txt_CodeCentre.Text;
                    client = txtClient.Text;
                    ordre  = txtOrdre.Text;
                    this.cmbFacture.ItemsSource = null;

                    if (this.Txt_CodeCentre.Tag == null && this.Txt_CodeSite.Tag != null)
                    {
                        ServiceAccueil.CsCentre st = ClasseMEthodeGenerique.RetourneObjectFromList(LstCentrePerimetre.Where(t => t.FK_IDCODESITE == (int)this.Txt_CodeSite.Tag).ToList(), this.Txt_CodeCentre.Text, "CODE");
                        if (!string.IsNullOrEmpty(st.LIBELLE))
                        {
                            this.Txt_CodeCentre.Tag = st.PK_ID;
                        }
                    }


                    FacturationServiceClient service = new FacturationServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Facturation"));
                    service.retourneFactureAnnulationAsync((int)this.Txt_CodeCentre.Tag, centre, client, ordre);
                    service.retourneFactureAnnulationCompleted += (er, res) =>
                    {
                        try
                        {
                            if (res.Error != null || res.Cancelled)
                            {
                                Message.Show("Erreur dans le traitement des factures : " + res.Error.InnerException.ToString(), "Erreur");
                            }
                            else
                            if (res.Result != null || res.Result.Count != 0)
                            {
                                if (Entetefactures != res.Result)
                                {
                                    if (this.laDetailDemande != null && this.laDetailDemande.LstEvenement != null)
                                    {
                                        ServiceAccueil.CsEvenement even = this.laDetailDemande.LstEvenement.First();
                                        Entetefactures = res.Result.Where(a => a.FACTURE == even.FACTURE && a.PERIODE == even.PERIODE).OrderByDescending(t => t.PERIODE).ToList();
                                    }
                                    else
                                    {
                                        Entetefactures = res.Result.OrderByDescending(t => t.PERIODE).ToList();
                                    }
                                    Entetefactures.ForEach(t => t.REFERENCEATM = t.FACTURE + " " + Shared.ClasseMEthodeGenerique.FormatPeriodeMMAAAA(t.PERIODE));

                                    this.cmbFacture.ItemsSource       = Entetefactures;
                                    this.cmbFacture.DisplayMemberPath = "REFERENCEATM";
                                    if (Entetefactures.Count == 1)
                                    {
                                        this.cmbFacture.SelectedItem = Entetefactures[0];
                                    }

                                    prgBar.Visibility = System.Windows.Visibility.Collapsed;


                                    this.txtNom.Text = Entetefactures.First().NOMABON;
                                }
                            }
                            else
                            {
                                Message.Show("Aucune facture trouvée pour ce client",
                                             "Erreur");
                            }
                        }
                        catch (Exception ex)
                        {
                            prgBar.Visibility = System.Windows.Visibility.Collapsed;
                            Message.Show("Erreur inconnue :" + ex.Message, "Erreur inconnue");
                        }
                        finally
                        {
                            prgBar.Visibility = System.Windows.Visibility.Collapsed;
                        }
                    };
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }