private void ValiderAnnulation()
        {
            CsEnteteFacture laFactureSelect = (CsEnteteFacture)this.cmbFacture.SelectedItem;

            laDetailDemande.LaDemande.USERMODIFICATION = UserConnecte.matricule;

            ServiceAccueil.AcceuilServiceClient services = new ServiceAccueil.AcceuilServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Accueil"));
            services.ValiderAnnulationFactureCompleted += (ss, argss) =>
            {
                if (argss.Cancelled || argss.Error != null)
                {
                    string error = argss.Error.Message;
                    Message.ShowError(error, this.Title.ToString());
                    return;
                }
                if (string.IsNullOrEmpty(argss.Result))
                {
                    Message.ShowInformation("Demande validée avec succès", this.Title.ToString());

                    if (this.chk_Quitance.IsChecked == true)
                    {
                        List <CsEnteteFacture> lstFacture = (List <CsEnteteFacture>) this.dtg_DetailFacture.ItemsSource;
                        Utility.ActionDirectOrientation <ServicePrintings.CsEnteteFacture, ServiceFacturation.CsEnteteFacture>(lstFacture, null, SessionObject.CheminImpression, "QuittanceAnnulation", "Facturation", false);
                    }

                    this.DialogResult = true;
                }
                else
                {
                    Message.ShowError(argss.Result, this.Title.ToString());
                }
            };
            services.ValiderAnnulationFactureAsync(laDetailDemande, laFactureSelect.PK_ID);
            services.CloseAsync();
        }
        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 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 dgMyDataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            DataGrid dg         = (sender as DataGrid);
            var      allObjects = dg.ItemsSource as List <CsEnteteFacture>;

            if (dg.SelectedItem != null)
            {
                CsEnteteFacture SelectedObject = (CsEnteteFacture)dg.SelectedItem;

                if (SelectedObject.IsSelect == false)
                {
                    SelectedObject.IsSelect = true;
                }
                else
                {
                    SelectedObject.IsSelect = false;
                }
            }
        }
        private void cmbFacture_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                if (this.cmbFacture.SelectedItem != null)
                {
                    CsEnteteFacture leEntfacSelect = (CsEnteteFacture)this.cmbFacture.SelectedItem;
                    cmbFacture.Tag = leEntfacSelect;
                    List <CsEnteteFacture> _lstDetail = new List <CsEnteteFacture>();
                    _lstDetail.Add(leEntfacSelect);

                    this.dtg_DetailFacture.ItemsSource = null;
                    this.dtg_DetailFacture.ItemsSource = _lstDetail;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void cmbFacture_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                if (this.cmbFacture.SelectedItem != null)
                {
                    CsEnteteFacture leEntfacSelect = (CsEnteteFacture)this.cmbFacture.SelectedItem;
                    cmbFacture.Tag = leEntfacSelect;
                    List <CsEnteteFacture> _lstDetail = new List <CsEnteteFacture>();
                    _lstDetail.Add(leEntfacSelect);

                    this.dtg_DetailFacture.ItemsSource = null;
                    this.dtg_DetailFacture.ItemsSource = _lstDetail;
                }
                this.OKButton.IsEnabled = (this.cmbFacture.SelectedItem != null) && !string.IsNullOrEmpty(this.txtMotifDemande.Text);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (this.cmbFacture.SelectedItem != null)
                {
                    prgBar.Visibility = System.Windows.Visibility.Visible;
                    CsEnteteFacture laFactureSelect = (CsEnteteFacture)this.cmbFacture.SelectedItem;
                    string          RDlc            = "FactureSimple";

                    List <CsEnteteFacture> lstClientSelect = new List <CsEnteteFacture>();
                    lstClientSelect.Add(laFactureSelect);
                    if (laFactureSelect.PRODUIT == SessionObject.Enumere.ElectriciteMT)
                    {
                        RDlc = "FactureSimpleMT";
                    }

                    if (laFactureSelect.PRODUIT == SessionObject.Enumere.Eau)
                    {
                        RDlc = "FactureSimpleO";
                    }

                    // Envoi des factures au service
                    Shared.ClasseMEthodeGenerique.SetMachineAndPortFromEndPoint(Utility.EndPoint("Facturation"));
                    FacturationServiceClient service = new FacturationServiceClient(Utility.ProtocoleFacturation(), Utility.EndPoint("Facturation"));
                    string key = Utility.getKey();
                    service.EnvoyerFacturesAsync(lstClientSelect, RDlc);
                    service.EnvoyerFacturesCompleted += (er, res) =>
                    {
                        try
                        {
                            prgBar.Visibility = System.Windows.Visibility.Collapsed;

                            if (res.Error != null || res.Cancelled)
                            {
                                //LoadingManager.EndLoading(loaderHandler);
                                throw new Exception("Cannot display report");
                            }
                            if (res.Result != null)
                            {
                                List <CsFactureClient> lstGenerale = res.Result;
                                List <CsFactureClient> lesClient   = ClasseMethodeGenerique.RetourneDistinctClientFacture(res.Result);
                                string print = "Imprimé le " + DateTime.Now + " sur le poste " + SessionObject.LePosteCourant.NOMPOSTE + " par " + UserConnecte.nomUtilisateur + "(" + UserConnecte.matricule + ") du centre " + UserConnecte.LibelleCentre;

                                foreach (CsFactureClient item in lesClient)
                                {
                                    Dictionary <string, string> param = new Dictionary <string, string>();
                                    param.Add("TypeEdition", "Duplicata");
                                    param.Add("Print", print);
                                    List <CsFactureClient> lstDetailClient = lstGenerale.Where(t => t.Centre == item.Centre && t.Client == item.Client).ToList();
                                    Utility.ActionDirectOrientation <ServicePrintings.CsFactureClient, ServiceFacturation.CsFactureClient>(lstDetailClient, param, SessionObject.CheminImpression, RDlc, "Facturation", false);
                                    //prgBar.Visibility = System.Windows.Visibility.Collapsed;
                                }
                                this.DialogResult = true;
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                        finally
                        {
                        }
                    };
                }
            }
            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)
                {
                    if (!facturesCharges)
                    {
                        prgBar.Visibility = System.Windows.Visibility.Visible;
                    }


                    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)
                                {
                                    CsEnteteFacture ent = new CsEnteteFacture();
                                    if (this.laDetailDemande != null && this.laDetailDemande.LstEvenement != null)
                                    {
                                        ServiceAccueil.CsEvenement even = this.laDetailDemande.LstEvenement.First();
                                        ent = res.Result.First(a => a.FACTURE == even.FACTURE && a.PERIODE == even.PERIODE);
                                    }
                                    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];
                                    }
                                    else
                                    {
                                        this.cmbFacture.SelectedItem = ent;
                                    }

                                    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;
            }
        }