public static string GenererPrefac(string annee, string mois, int intmois) { DateTime dateselectionnee = new DateTime(2010, intmois, 1); string mmmoisselectionne = dateselectionnee.ToString("MM"); if (cheminmodeleprefacexcel == "") { //Message d'alerte //MessageBox.Show("Vous devez spécifier le répertoire de destination des préfacs"); //Extraction du modèle depuis une ressource. cheminmodeleprefacexcel = Directory.GetCurrentDirectory() + "\\Doc\\" + "2020-01 PREFAC - modele.xls"; using (FolderBrowserDialog openBrowserDialog = new FolderBrowserDialog()) { openBrowserDialog.Description = "Sélectionnez le répertoire de génération des préfacs"; if (openBrowserDialog.ShowDialog() == DialogResult.OK) { //Get the path of specified file chemindestinationprefac = openBrowserDialog.SelectedPath + "\\"; } } } //écrire dans excel Excel.Application excelApp = new Excel.Application(); if (excelApp != null) { //ouverture du modèle Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(cheminmodeleprefacexcel); Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelWorkbook.Sheets["Feuil1"]; //récupération des comptes dans la méthode DBConnect.DbConnection(); List <ENT_Comptes> listeComptes = DAL_Comptes.GetAllComptes(DBConnect.dbconn); //récupération des actités dans la méthode List <ENT_Activites> ListeActivites = DAL_Activites.GetAllActivites(DBConnect.dbconn); //récupération des nom utilisateur distinct List <ENT_Activites> ListeUtilisateurs = DAL_Activites.SelectDistinctUserofActivites(DBConnect.dbconn); //Boucle création des pre factures //on commence par les montants mensuel et ponctuels foreach (ENT_Comptes entcompt in listeComptes) { float totalgtht = 0; excelWorksheet.Cells[14, 6] = entcompt.Filiale; if (entcompt.Nomclient != null) { excelWorksheet.Cells[15, 1] = "Contact : " + entcompt.Nomclient; } //Ajout des lignes pour Montant Mensuel excelWorksheet.Cells[29, 2] = entcompt.Descriptionmontantmensuel; excelWorksheet.Cells[29, 7] = entcompt.Montantmensuel; excelWorksheet.Cells[29, 10] = entcompt.Montantmensuel; //ajout des lignes pour montant ponctuel excelWorksheet.Cells[30, 2] = entcompt.Descriptionmontantponctuel; excelWorksheet.Cells[30, 7] = entcompt.Montantponctuel; excelWorksheet.Cells[30, 10] = entcompt.Montantponctuel; excelWorksheet.Cells[31, 2] = "Prestation de Gestion de projet informatique"; totalgtht += entcompt.Montantmensuel; totalgtht += entcompt.Montantponctuel; //on supprimer le montant ponctuel du compte entcompt.Montantponctuel = 0; entcompt.Descriptionmontantponctuel = ""; DAL_Comptes.UpdateComptes(DBConnect.dbconn, entcompt); //excelApp.ActiveWorkbook.SaveAs(Path.Combine(Path.GetDirectoryName(chemindestinationprefac), annee + "-" + mmmoisselectionne + " - " + entcompt.Filiale + ".xlsx"), Excel.XlFileFormat.xlWorkbookDefault); int y = 2; //boucle dans les utilisateurs distinct d'activite foreach (ENT_Activites ActNomutilisateur in ListeUtilisateurs) { //MessageBox.Show("je suis ici " + ActNomutilisateur.Nomutilisateur); //Boucle sur les utilisateurs float compteurtemps = 0; float tauxjournalier = 0; float totalhtparutilisateur = 0; switch (ActNomutilisateur.Nomutilisateur) { case "Lepain": Console.WriteLine("Lepain"); tauxjournalier = 71; //Console.WriteLine("Case 1"); break; case "Coste": Console.WriteLine("Coste"); tauxjournalier = 85; //Console.WriteLine("Case 2"); break; case "Boumahrou": Console.WriteLine("Boumahrou"); tauxjournalier = 64; break; default: //Console.WriteLine("Default case"); break; } //boucle dans les activités foreach (ENT_Activites Activite in ListeActivites) { if (ActNomutilisateur.Nomutilisateur == Activite.Nomutilisateur & entcompt.Id == Activite.ENT_ComptesId) { Console.WriteLine("Compteur de temps : " + compteurtemps); compteurtemps += Activite.Temps; } } totalhtparutilisateur = compteurtemps * tauxjournalier; totalgtht += totalhtparutilisateur; excelWorksheet.Cells[30 + y, 2] = "Gestion de projet - " + ActNomutilisateur.Nomutilisateur; excelWorksheet.Cells[30 + y, 7] = totalhtparutilisateur; excelWorksheet.Cells[30 + y, 10] = totalhtparutilisateur; y++; } Console.WriteLine("le totalht est : " + totalgtht); excelWorksheet.Cells[14, 6] = entcompt.Filiale; excelWorksheet.Cells[15, 1] = "Contact : " + entcompt.Contact; excelWorksheet.Cells[49, 10] = totalgtht; //excelWorksheet.Cells[49, 10] = "et oui mon petit"; excelWorksheet.Cells[24, 2] = "Gestion de projet du mois de " + mois + " pour : " + entcompt.Nomclient; excelApp.ActiveWorkbook.SaveAs(Path.Combine(Path.GetDirectoryName(chemindestinationprefac), annee + "-" + mmmoisselectionne + " - " + entcompt.Filiale + ".xlsx"), Excel.XlFileFormat.xlWorkbookDefault); Console.WriteLine("fin du fichier excel"); }//fin de foreach liste comptes excelWorkbook.Close(); excelApp.Quit(); } return("Prefac générées !"); }
//Bouton Importer fichier csv private void SélectionnerLeFichierDactivitéToolStripMenuItem_Click(object sender, EventArgs e) { //initialisation de la db DBConnect.DbConnection(); //Variables de sélection du mois en cours int monthcombo = comboBox1.SelectedIndex + 1; int yearcombo = Int32.Parse(comboBox3.Text); DateTime DateSelectionnee = new DateTime(yearcombo, monthcombo, 1); //Liste des activités à charger depuis csv List <ENT_Activites> activiteCollection = new List <ENT_Activites>(); //on ouvre la sélection d'un fichier var filePath = string.Empty; using (OpenFileDialog openFileDialog = new OpenFileDialog()) { //openFileDialog.InitialDirectory = "c:\\"; openFileDialog.Filter = "fichier csv (*.csv)|*.csv|Tous les fichiers (*.*)|*.*"; openFileDialog.FilterIndex = 1; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog() == DialogResult.OK) { //Get the path of specified file filePath = openFileDialog.FileName; } } //suppression des activités pour le mois en cours DAL_Activites.DeleteAll(DBConnect.dbconn); //On charge tout dans la collection d'activite if (filePath != "") { using (TextFieldParser parser = new TextFieldParser(filePath)) { parser.TextFieldType = FieldType.Delimited; parser.SetDelimiters(";"); while (!parser.EndOfData) { //Processing row string[] fields = parser.ReadFields(); //MessageBox.Show(fields[0]); if (fields[0] != "Date") { try { DateTime madate = DateTime.ParseExact(fields[0], "dd/MM/yy", CultureInfo.InvariantCulture); if (madate.Month == DateSelectionnee.Month & madate.Year == DateSelectionnee.Year) { //MessageBox.Show("on est dans la date ! " + fields[0]); //on ajoute la ligne dans notre activitecsv ENT_Activites monActivite = new ENT_Activites(); Console.WriteLine(fields[0]); monActivite.Dateact = DateTime.ParseExact(fields[0], "dd/MM/yy", CultureInfo.InvariantCulture); monActivite.Temps = float.Parse(fields[1], CultureInfo.InvariantCulture.NumberFormat); monActivite.Tache = fields[2]; monActivite.Nomutilisateur = fields[3]; monActivite.Projet = fields[4]; //récupération du compte ENT_Comptes Moncompte = DAL_Comptes.GetOneComptesByFiliale(DBConnect.dbconn, fields[7]); if (Moncompte.Id > 0) { //on affecte le compte à l'activité monActivite.ENT_ComptesId = Moncompte.Id; monActivite.ENT_Comptes = Moncompte; //MessageBox.Show(Moncompte.Id.ToString()); } else { //on créé le compte ENT_Comptes Moncompte2 = new ENT_Comptes(); Moncompte2.Filiale = fields[7]; DAL_Comptes.CreateComptes(DBConnect.dbconn, Moncompte2); //on affecte le compte à l'activité monActivite.ENT_Comptes = Moncompte2; monActivite.ENT_ComptesId = Moncompte2.Id; } //on ajout l'activité à la liste d'activite activiteCollection.Add(monActivite); } } catch (FormatException) { Console.WriteLine("{0} n'est pas dans le format dd/MM/yy", fields[0]); } } } //on persiste toutes les activités en base DAL_Activites.InsertListofActivities(DBConnect.dbconn, activiteCollection); //GestionCSVActivite.listeActivite = activiteCollection; /* * GestionCSVActivite.ListeClientDistinct(); * GestionCSVActivite.ListeUtilisateurDistinct(); */ MessageBox.Show("Activitès chargées !"); //on raffraichit notre grid refreshDataGridView(); } } }