private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ChoixAffichage();//Affiche ou masque certains champs/colonnes... suivant l'utilisateur
            PlaceUtilisateur();//trouve la place de l'utilisateur dans la listSalarie et place la comboBoxNomSalarie sur le salarié

            if (this.DataContext == null)
            {
                NouveauFrais();//Créé un nouveau frais rattaché au salarié connecté et le met dans le DataContext
            }

            RechargeAvances();//met les avances

            double totalTTC = 0;
            double totalHT = 0;
            double totalTVA = 0;
            double totalARembourser = 0;
            this.listARecupererFicheFrais.Clear();
            foreach (Fiche_Frais item in ((Frais)this.DataContext).Fiche_Frais.OfType<Fiche_Frais>())
            {
                Fiche_Frais tempff = new Fiche_Frais();
                tempff.Total_TVA = 0;
                tempff.Numero = item.Numero;
                tempff.Date_Fiche = item.Date_Fiche;
                if (item.Total_HT != null)
                {
                    totalHT += item.Total_HT.Value;
                }
                if (item.Total_TTC != null)
                {
                    totalTTC += item.Total_TTC.Value;
                }
                if (item.Total_TVA != null)
                {
                    totalTVA += item.Total_TVA.Value;
                }

                foreach (Ligne_Fiche_Frais lff in item.Ligne_Fiche_Frais.OfType<Ligne_Fiche_Frais>())
                {
                    totalARembourser += lff.TVA_Recuperable;
                    tempff.Total_TVA += lff.TVA_Recuperable;
                }
                this.listARecupererFicheFrais.Add(tempff);
            }

            ((Frais)this.DataContext).Total_HT = totalHT;
            ((Frais)this.DataContext).Total_TTC = totalTTC;
            ((Frais)this.DataContext).Total_TVA = totalTVA;
            ((Frais)this.DataContext).Total_A_Rembourser = totalARembourser;

            double Arembourser = 0;
            try
            {
                listFraisKmARembourse.Clear();
                foreach (Frais_Km item in ((Frais)this.DataContext).Frais_Km.OfType<Frais_Km>())
                {
                    //calcul
                    if (item.Km != null && item.Base != null)
                    {
                        int cv = 0; int.TryParse(item.Base.ToString(), out cv);
                        //Arembourser += baremeKM(item.Km, cv);
                        Arembourser += item.Km * item.Base;
                        Frais_Km fk = new Frais_Km();
                        //fk.Km = baremeKM(item.Km, cv);
                        fk.Km = item.Km * item.Base;
                        fk.Libelle = item.Libelle;
                        listFraisKmARembourse.Add(fk);//ajoute le frais Km a la liste des détails des frais Km
                    }
                }
            }
            catch (Exception) { }
            ((Frais)this.DataContext).Total_A_Rembourser += Arembourser;

            double totalAvanceVerser = 0;
            foreach (Avance item in ((Frais)this.DataContext).Avance.OfType<Avance>())
            {
                totalAvanceVerser += item.Somme.Value;
            }
            ((Frais)this.DataContext).Total_Avance = totalAvanceVerser;

            //met la personnalisation des lignes alterné sur le datagrid des Frais Généraux ( pas sur le RowDetails)
            this._dataGridFraisGeneraux.AlternatingRowBackground = ((App)App.Current).personnalisation.BackGroundUserControlDataGridAlternateColor;
        }
        //Ouvre la fenêtre 'FicheFraisWindow' pour modifier une fiche de frais
        private void _buttonModifierFraisGeneraux_Click(object sender, RoutedEventArgs e)
        {
            if (this._dataGridFraisGeneraux.SelectedItems.Count <= 0)
            {
                MessageBox.Show("Vous devez sélectionner une note de frais à modifier.", "Erreur", MessageBoxButton.OK, MessageBoxImage.Stop);
            }
            else if (this._dataGridFraisGeneraux.SelectedItems.Count > 1)
            {
                MessageBox.Show("Vous ne devez sélectionner qu'une note de frais à modifier.", "Erreur", MessageBoxButton.OK, MessageBoxImage.Stop);
            }
            else if (this._dataGridFraisGeneraux.SelectedItem != null)
            {
                try
                {
                    //lance une FicheFraisWindow avec les données du FraisWindow
                    FicheFraisWindow fraisModifierWindow = new FicheFraisWindow();

                    if (((Fiche_Frais)this._dataGridFraisGeneraux.SelectedItem) != null)
                    {
                        int index = (this._dataGridFraisGeneraux).SelectedIndex;
                        Fiche_Frais ff = new Fiche_Frais();

                        ff.Date_Fiche = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Date_Fiche;
                        ff.Numero = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Numero;
                        ff.Total_HT = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_HT;
                        ff.Total_TTC = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_TTC;
                        ff.Total_TVA = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_TVA;

                        foreach (Ligne_Fiche_Frais lff in ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Ligne_Fiche_Frais.OfType<Ligne_Fiche_Frais>())
                        {
                            Ligne_Fiche_Frais templff = new Ligne_Fiche_Frais();
                            templff.Affaire1 = lff.Affaire1;
                            templff.Commentaire = lff.Commentaire;
                            templff.Entreprise1 = lff.Entreprise1;
                            templff.Etranger = lff.Etranger;
                            templff.Imputer_Affaire = lff.Imputer_Affaire;
                            templff.Libelle = lff.Libelle;
                            templff.Plan_Comptable_Imputation1 = lff.Plan_Comptable_Imputation1;
                            templff.Plan_Comptable_Tva1 = lff.Plan_Comptable_Tva1;
                            templff.Taux_Change = lff.Taux_Change;
                            templff.Taux_Change_Reel = lff.Taux_Change_Reel;
                            templff.TTC_En_Euro = lff.TTC_En_Euro;
                            templff.TTC_Sur_Ticket = lff.TTC_Sur_Ticket;
                            templff.TVA_Recuperable = lff.TVA_Recuperable;
                            templff.Type_Frais1 = lff.Type_Frais1;
                            ff.Ligne_Fiche_Frais.Add(templff);
                        }
                        ff.Frais1 = ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Frais1;

                        fraisModifierWindow.DataContext = ff;
                        bool? dialogResult = fraisModifierWindow.ShowDialog();

                        if (dialogResult.Value)
                        {

                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Date_Fiche = ff.Date_Fiche;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Numero = ff.Numero;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_HT = ff.Total_HT;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_TTC = ff.Total_TTC;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Total_TVA = ff.Total_TVA;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Frais1 = ff.Frais1;
                            ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Ligne_Fiche_Frais.Clear();
                            while (ff.Ligne_Fiche_Frais.OfType<Ligne_Fiche_Frais>().Count() != 0)
                            {
                                ((Fiche_Frais)this._dataGridFraisGeneraux.Items[index]).Ligne_Fiche_Frais.Add(ff.Ligne_Fiche_Frais.ElementAt(0));
                            }
                        }
                        try
                        {
                            int compt = 0;
                            while (compt < ff.Ligne_Fiche_Frais.OfType<Ligne_Fiche_Frais>().Count())
                            {
                                try
                                {
                                    ((App)App.Current).mySitaffEntities.Detach(ff.Ligne_Fiche_Frais.ElementAt(compt));
                                }
                                catch (Exception)
                                {
                                    try
                                    {
                                        ((App)App.Current).mySitaffEntities.Ligne_Fiche_Frais.DeleteObject(ff.Ligne_Fiche_Frais.ElementAt(compt));
                                    }
                                    catch (Exception)
                                    {

                                    }
                                }
                                compt++;
                            }
                            ((App)App.Current).mySitaffEntities.Detach(ff);
                        }
                        catch (Exception)
                        {
                            try
                            {
                                ((App)App.Current).mySitaffEntities.Fiche_Frais.DeleteObject(ff);
                            }
                            catch (Exception)
                            {

                            }
                        }
                        this._dataGridFraisGeneraux.Items.Refresh();
                    }
                }
                catch (Exception) { }
            }
            RefreshAllTotaux();
        }
        //calcul totaux Fiche_Frais
        private void CalculFicheFrais()
        {
            if (this._dataGridFraisGeneraux.HasItems)
            {
                double totalTTC = 0;
                double totalHT = 0;
                double totalTVA = 0;
                double totalARembourser = 0;
                this.listARecupererFicheFrais.Clear();
                foreach (Fiche_Frais item in this._dataGridFraisGeneraux.Items.OfType<Fiche_Frais>())
                {
                    Fiche_Frais tempff = new Fiche_Frais();
                    tempff.Total_TVA = 0;
                    tempff.Numero = item.Numero;
                    tempff.Date_Fiche = item.Date_Fiche;
                    if (item.Total_HT != null)
                    {
                        totalHT += item.Total_HT.Value;
                    }
                    if (item.Total_TTC != null)
                    {
                        totalTTC += item.Total_TTC.Value;
                    }
                    if (item.Total_TVA != null)
                    {
                        totalTVA += item.Total_TVA.Value;
                    }

                    foreach (Ligne_Fiche_Frais lff in item.Ligne_Fiche_Frais.OfType<Ligne_Fiche_Frais>())
                    {
                        totalARembourser += lff.TVA_Recuperable;
                        tempff.Total_TVA += lff.TVA_Recuperable;
                    }
                    this.listARecupererFicheFrais.Add(tempff);
                }

                ((Frais)this.DataContext).Total_HT = totalHT;
                ((Frais)this.DataContext).Total_TTC = totalTTC;
                ((Frais)this.DataContext).Total_TVA = totalTVA;
                ((Frais)this.DataContext).Total_A_Rembourser = totalARembourser;
            }
        }
        //Ouvre la fenêtre 'FicheFraisWindow' pour ajouter une fiche de frais
        private void _buttonAjouterFraisGeneraux_Click(object sender, RoutedEventArgs e)
        {
            FicheFraisWindow fraisAjoutWindow = new FicheFraisWindow();
            Fiche_Frais tempff = new Fiche_Frais();

            tempff.Date_Fiche = DateTime.Now.Date;
            if (this._dataGridFraisGeneraux.Items.Count >= 1 && this._dataGridFraisGeneraux.DataContext != null)
            {
                if (this._dataGridFraisGeneraux.Items.GetItemAt(0) != null && ((Fiche_Frais)this._dataGridFraisGeneraux.Items.GetItemAt(this._dataGridFraisGeneraux.Items.Count - 1)).Numero != null)
                {
                    tempff.Numero = ((Fiche_Frais)this._dataGridFraisGeneraux.Items.GetItemAt(this._dataGridFraisGeneraux.Items.Count - 1)).Numero + 1;
                }
                else
                {
                    tempff.Numero = 1;
                }
            }
            else
            {
                tempff.Numero = 1;
            }

            tempff.Ligne_Fiche_Frais.Add(new Ligne_Fiche_Frais());
            tempff.Total_HT = 0;
            tempff.Total_TTC = 0;
            tempff.Total_TVA = 0;
            if (datemoiscourant > ((Frais)this.DataContext).Date_Fin)
            {
                tempff.Date_Fiche = ((Frais)this.DataContext).Date_Debut;
            }
            else
            {
                tempff.Date_Fiche = DateTime.Today.Date;
            }

            tempff.Frais1 = ((Frais)this.DataContext);
            fraisAjoutWindow.DataContext = tempff;

            bool? dialogResult = fraisAjoutWindow.ShowDialog();
            Fiche_Frais ff = (Fiche_Frais)fraisAjoutWindow.DataContext;

            if (dialogResult.HasValue == true && dialogResult.Value == false)
            {
                try
                {
                    ((App)App.Current).mySitaffEntities.Detach(ff);
                }
                catch (Exception)
                {
                    try
                    {
                        ((App)App.Current).mySitaffEntities.Fiche_Frais.DeleteObject(ff);
                    }
                    catch (Exception)
                    {

                    }
                }
            }
            RefreshAllTotaux();
        }