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;
        }
        public ObservableCollection<Frais_Km> PasteDataFraisWindow()
        {
            if (Clipboard.ContainsText(TextDataFormat.Text))
            {
                ObservableCollection<Frais_Km> toReturn = new ObservableCollection<Frais_Km>();
                String data = Clipboard.GetText();
                ObservableCollection<String> listLignes = new ObservableCollection<string>(data.Split('\n'));
                int nbLignes = 1;
                int ligneToIgnore = listLignes.Count();
                foreach (String ligne in listLignes)
                {
                    if (nbLignes != ligneToIgnore)
                    {
                        if (this.verifNombreColonnes(ligne, 6))
                        {
                            ObservableCollection<String> listColonnes = new ObservableCollection<string>(ligne.Split('\t'));
                            int i = 1;
                            Frais_Km toAdd = new Frais_Km();

                            foreach (String colonne in listColonnes)
                            {
                                if (i == 1)
                                {
                                    //on ne colle pas l'affaire
                                }
                                if (i == 2)
                                {
                                    bool val;
                                    bool.TryParse(colonne, out val);
                                    toAdd.ImputerAffaire = val;
                                }
                                if (i == 3)
                                {
                                    toAdd.Libelle = colonne;
                                }
                                if (i == 4)
                                {
                                    //one ne colle pas la puissance fiscale
                                }
                                if (i == 5)
                                {
                                    double val;
                                    if (double.TryParse(colonne, out val))
                                    {
                                        toAdd.Km = double.Parse(colonne.Replace(".", ","));
                                    }
                                    else
                                    {
                                        MessageBox.Show("Le collage s'arrete car à  la ligne n°" + nbLignes + ", vous essayez de rentrer un Kilomètre erroner", "Coller : erreur !", MessageBoxButton.OK, MessageBoxImage.Error);
                                        return null;
                                    }
                                }

                                if (i == 6)
                                {
                                    double val;
                                    if (double.TryParse(colonne, out val))
                                    {
                                        toAdd.Base = double.Parse(colonne.Replace(".", ","));
                                    }
                                    else
                                    {
                                        MessageBox.Show("Le collage s'arrete car à  la ligne n°" + nbLignes + ", vous essayez de rentrer une Base de chevaux fiscaux erroner", "Coller : erreur !", MessageBoxButton.OK, MessageBoxImage.Error);
                                        return null;
                                    }
                                }
                                toReturn.Add(toAdd);
                                i = i + 1;
                            }
                            nbLignes = nbLignes + 1;
                        }
                        else
                        {
                            MessageBox.Show("Le collage s'arrete car à la ligne n°" + nbLignes + ", le nombre de colonne n'est pas bon, il doit y en avoir 5 (Affaire,Imputer sur affaire,Libellé,Km,Base).", "Coller : erreur !", MessageBoxButton.OK, MessageBoxImage.Error);
                            return null;
                        }
                    }
                }
                return toReturn;
            }
            else
            {
                return null;
            }
        }
 //calcul totaux Frais_Km
 private void CalculFraisKm()
 {
     if (this._dataGridFraisKm.HasItems)
     {
         double Arembourser = 0;
         try
         {
             listFraisKmARembourse.Clear();
             foreach (Frais_Km item in this._dataGridFraisKm.Items.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;
     }
 }