public IEnumerable <Facture> EnumererFacture() { return(Facture.Enumerer(Connexion, Connexion.Enumerer(@"SELECT * FROM facture JOIN reparation ON facture.id_facture = reparation.fk_id_facture JOIN article ON reparation.fk_id_article = article.id_article JOIN facture_entretien ON facture.id_facture = facture_entretien.id_facture_entretien JOIN entretien ON facture_entretien.fk_id_entretien = entretien.id_entretien JOIN rendez_vous_entretien_reparation ON facture.fk_id_rdv = rendez_vous_entretien_reparation.id_rendez_vous_entretien_reparation JOIN client_vehicule ON rendez_vous_entretien_reparation.fk_id_client_vehicule = client_vehicule.id_client_vehicule JOIN client ON client_vehicule.fk_id_client = client.id_client JOIN vehicule ON client_vehicule.fk_id_vehicule = vehicule.id_vehicule WHERE facture.fk_id_rdv = {0}", Id))); }
private void pictureBoxRetirerH_Click(object sender, EventArgs e) { if ((CalendrierRdv.FactureSelectionnee != null) && (CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation != "Terminé") && (CalendrierRdv.FactureSelectionnee.RendezVous.DateFin >= DateTime.Now)) { Facture FactureExiste = Program.GMBD.EnumererFacture(null, new MyDB.CodeSql("JOIN rendez_vous_entretien_reparation ON facture.fk_id_rdv = .rendez_vous_entretien_reparation.id_rendez_vous_entretien_reparation"), new MyDB.CodeSql("WHERE id_facture = {0}", CalendrierRdv.FactureSelectionnee.Id), null).FirstOrDefault(); if (FactureExiste != null) { FactureExiste.HeurePrestation = FactureExiste.HeurePrestation - 1; if ((FactureExiste.EstValide) && (Program.GMBD.ModifierFacture(FactureExiste))) { numericUpDownH.Value = FactureExiste.HeurePrestation; double x = double.Parse(textBoxPrixTotal.Text.Remove(textBoxPrixTotal.Text.Length - 1)) - c_PrixParHeure; textBoxPrixTotal.Text = string.Format("{0} €", x); } } } }
/// <summary> /// Constructeur par défaut /// </summary> public FactureEntretien() : base() { m_FactureLiee = null; m_Entretien = null; }
public Element(Facture Facture) { this.Facture = Facture; }
private bool MettreAJourListe <T>(IEnumerable <T> Entites) where T : class, IEntiteMySQL { bool EstRdv = typeof(T).Equals(typeof(Facture)); if (!EstRdv) { return(false); } listViewClientRdv.Items.Clear(); if (Entites == null) { return(false); } if (EstRdv && (listViewClientRdv.Columns.Count != 2)) { listViewClientRdv.Columns.Clear(); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "Statut", Text = "Statut", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "PrenomNom", Text = "Nom - Prénom", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "DateArrivee", Text = "Date d'arrivée", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "DateFin", Text = "Date de fin", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "Modele", Text = "Modèle", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "Immatriculation", Text = "Immatriculation", TextAlign = HorizontalAlignment.Left }); listViewClientRdv.Columns.Add(new ColumnHeader() { Name = "Type", Text = "Type", TextAlign = HorizontalAlignment.Left }); } foreach (T Entite in Entites) { Facture Facture = Entite as Facture; ListViewItem NouvelElement = new ListViewItem() { Tag = Entite, Text = Facture.RendezVous.Statut.StatutOperation, }; NouvelElement.SubItems.Add(string.Format("{0} - {1}", Facture.RendezVous.ClientVehicule.Client.Nom, Facture.RendezVous.ClientVehicule.Client.Prenom)); NouvelElement.SubItems.Add(Facture.RendezVous.DateDebut.ToString()); NouvelElement.SubItems.Add(Facture.RendezVous.DateFin.ToString()); NouvelElement.SubItems.Add(Facture.RendezVous.ClientVehicule.Vehicule.Modele); NouvelElement.SubItems.Add(Facture.RendezVous.ClientVehicule.Immatriculation); FactureEntretien AUnEntretien = Program.GMBD.EnumererFactureEntretien(null, null, new MyDB.CodeSql("WHERE fk_id_facture = {0}", Facture.Id), null).FirstOrDefault(); if ((Facture.Informations != "") && (AUnEntretien == null)) { NouvelElement.SubItems.Add("Réparation"); } else if ((Facture.Informations == "") && (AUnEntretien != null)) { NouvelElement.SubItems.Add("Entretien"); } else if ((Facture.Informations != "") && (AUnEntretien != null)) { NouvelElement.SubItems.Add("Réparation et entretien"); } listViewClientRdv.Items.Add(NouvelElement); } listViewClientRdv.Visible = false; foreach (ColumnHeader Colonne in listViewClientRdv.Columns) { Colonne.TextAlign = HorizontalAlignment.Center; Colonne.Width = listViewClientRdv.Width / listViewClientRdv.Columns.Count; } listViewClientRdv.Visible = true; listViewRdv_SelectedIndexChanged(listViewClientRdv, EventArgs.Empty); return(true); }
private void buttonModifier_Click(object sender, EventArgs e) { errorProvider.Clear(); ValidationProvider.Clear(); if (CalendrierRdv.FactureSelectionnee != null) { bool SuppressionEntretienLier = false; Entretien EntretienIndisponibleExiste = null; Facture FactureEnEdition = CalendrierRdv.FactureSelectionnee; FactureEnEdition.SurErreur += FactureEnEdition_SurErreur; FactureEnEdition.NumeroFacture = CalendrierRdv.FactureSelectionnee.NumeroFacture; if (checkBoxReparation.Checked == true) { FactureEnEdition.m_ReparationCoche = true; } else { textBoxInfoReparation.Text = ""; FactureEnEdition.m_ReparationCoche = false; } if ((checkBoxReparation.Checked == true) || (listeDeroulanteEntretien.EntretienSelectionne != null)) { FactureEnEdition.Commentaire = ""; FactureEnEdition.HeurePrestation = 0; FactureEnEdition.Informations = textBoxInfoReparation.Text; if (listeDeroulanteEntretien.EntretienSelectionne != null) { FactureEnEdition.PrixTotal = listeDeroulanteEntretien.EntretienSelectionne.Prix; } else if (listeDeroulanteEntretien.TextBoxNomEntretien.Length > 1) { int IndexDuTiretSeparateur = 0; for (int i = listeDeroulanteEntretien.TextBoxNomEntretien.Length - 1; i > 0; i--) { if (listeDeroulanteEntretien.TextBoxNomEntretien[i] == ('-')) { IndexDuTiretSeparateur = i; break; } } int PrixEntretien = int.Parse(listeDeroulanteEntretien.TextBoxNomEntretien.Substring(IndexDuTiretSeparateur + 1, (listeDeroulanteEntretien.TextBoxNomEntretien.Length - 3) - IndexDuTiretSeparateur)); string NomEntretien = listeDeroulanteEntretien.TextBoxNomEntretien.Substring(0, IndexDuTiretSeparateur - 1); EntretienIndisponibleExiste = Program.GMBD.EnumererEntretien(null, null, new MyDB.CodeSql("WHERE disponible = 0 AND type_entretien = {0} AND prix = {1}", NomEntretien.Trim(), PrixEntretien), null).FirstOrDefault(); FactureEnEdition.PrixTotal = 0; } else { SuppressionEntretienLier = true; FactureEnEdition.PrixTotal = 0; } FactureEnEdition.RendezVous.DateDebut = dateTimePickerArrivee.Value; FactureEnEdition.RendezVous.DateFin = dateTimePickerFin.Value; if (ClientVehicule.ClientVehiculeEnCoursDeTraitement != CalendrierRdv.FactureSelectionnee.RendezVous.ClientVehicule) { FactureEnEdition.RendezVous.ClientVehicule = ClientVehicule.ClientVehiculeEnCoursDeTraitement; } else { FactureEnEdition.RendezVous.ClientVehicule = CalendrierRdv.FactureSelectionnee.RendezVous.ClientVehicule; } FactureEnEdition.RendezVous.Statut = Program.GMBD.EnumererStatut(null, null, new MyDB.CodeSql("WHERE statut = {0}", "En attente"), null).FirstOrDefault(); if (((listeDeroulanteEntretien.EntretienSelectionne != null) || (EntretienIndisponibleExiste != null) || (SuppressionEntretienLier == true)) || (textBoxInfoReparation.Text != "")) { // Test de validation sur les 2 objets pour ne pas faire une requête si un des 2 n'est pas valide if ((FactureEnEdition.EstValide) && (FactureEnEdition.RendezVous.EstValide) && (Program.GMBD.ModifierFacture(FactureEnEdition))) { if (Program.GMBD.ModifierRendezvous(FactureEnEdition.RendezVous)) { if ((listeDeroulanteEntretien.EntretienSelectionne != null) && (CalendrierRdv.FactureSelectionnee.EnumFactureEntretien.ElementAt(0) == null)) { FactureEntretien NouvelEntretien = new FactureEntretien(FactureEnEdition, listeDeroulanteEntretien.EntretienSelectionne); if (Program.GMBD.AjouterFactureEntretien(NouvelEntretien)) { ValidationProvider.SetError(buttonModifier, "Le rendez-vous a été correctement modifié"); CalendrierRdv.ChargerListViewRdv(); RechargementApresModification = true; CalendrierRdv.FactureSelectionnee = FactureEnEdition; } } else if ((listeDeroulanteEntretien.EntretienSelectionne != null) && (listeDeroulanteEntretien.EntretienSelectionne.Id != CalendrierRdv.FactureSelectionnee.EnumFactureEntretien.ElementAt(0).Entretien.Id)) { FactureEntretien EntretienLie = FactureEnEdition.EnumFactureEntretien.ElementAt(0); EntretienLie.Entretien = listeDeroulanteEntretien.EntretienSelectionne; EntretienLie.FactureLiee = FactureEnEdition; // Si il modifie l'entretien if (Program.GMBD.ModifierFactureEntretien(EntretienLie)) { CalendrierRdv.ChargerListViewRdv(); ValidationProvider.SetError(buttonModifier, "Le rendez-vous a été correctement modifié"); RechargementApresModification = true; CalendrierRdv.FactureSelectionnee = FactureEnEdition; } } else if ((listeDeroulanteEntretien.EntretienSelectionne == null) && (EntretienIndisponibleExiste == null)) { FactureEntretien EntretienLier = FactureEnEdition.EnumFactureEntretien.FirstOrDefault(); if (EntretienLier != null) { // Si il y a une réparation alors la suppresion de l'entretien est autorisée if ((SuppressionEntretienLier == true) && (checkBoxReparation.Checked == true)) { // S'il retire l'entretien de la sélection Program.GMBD.SupprimerFactureEntretien(EntretienLier); ValidationProvider.SetError(buttonModifier, "Le rendez-vous a été correctement modifié"); CalendrierRdv.ChargerListViewRdv(); RechargementApresModification = true; CalendrierRdv.FactureSelectionnee = FactureEnEdition; } else { errorProvider.SetError(buttonModifier, "Vous devez choisir un entretien ou une réparation"); listeDeroulanteEntretien.EntretienSelectionne = CalendrierRdv.FactureSelectionnee.EnumFactureEntretien.FirstOrDefault().Entretien; } } else { ValidationProvider.SetError(buttonModifier, "Le rendez-vous a été correctement modifié"); CalendrierRdv.ChargerListViewRdv(); RechargementApresModification = true; CalendrierRdv.FactureSelectionnee = FactureEnEdition; } } else { ValidationProvider.SetError(buttonModifier, "Le rendez-vous a été correctement modifié"); CalendrierRdv.ChargerListViewRdv(); RechargementApresModification = true; CalendrierRdv.FactureSelectionnee = FactureEnEdition; } } } } } else { errorProvider.SetError(buttonModifier, "Vous devez choisir un entretien ou une réparation à effectuer"); } } }
private void buttonAjouter_Click(object sender, EventArgs e) { ValidationProvider.Clear(); errorProvider.Clear(); if ((ClientVehicule.ClientVehiculeEnCoursDeTraitement != null) && (ClientVehicule.ClientVehiculeEnCoursDeTraitement.Immatriculation != "")) { Facture NouvelleFacture = new Facture(); NouvelleFacture.RendezVous = new RendezVousEntretienReparation(); NouvelleFacture.SurErreur += FactureEnEdition_SurErreur; Facture DerniereFacture = Program.GMBD.EnumererFacture(null, null, null, new MyDB.CodeSql("ORDER BY id_facture DESC")).FirstOrDefault(); if (DerniereFacture != null) { NouvelleFacture.NumeroFacture = string.Format("er{0}-{1}", DateTime.Now.Year, DerniereFacture.Id); } else { NouvelleFacture.NumeroFacture = string.Format("er{0}-1", DateTime.Now.Year); } if (checkBoxReparation.Checked == true) { NouvelleFacture.Informations = textBoxInfoReparation.Text; NouvelleFacture.m_ReparationCoche = true; } else { NouvelleFacture.Informations = ""; NouvelleFacture.m_ReparationCoche = false; } if ((NouvelleFacture.m_ReparationCoche == true) || (listeDeroulanteEntretien.EntretienSelectionne != null)) { NouvelleFacture.Commentaire = string.Empty; NouvelleFacture.HeurePrestation = 0; if (listeDeroulanteEntretien.EntretienSelectionne != null) { NouvelleFacture.PrixTotal = listeDeroulanteEntretien.EntretienSelectionne.Prix; } else { NouvelleFacture.PrixTotal = 0; } NouvelleFacture.RendezVous.DateDebut = dateTimePickerArrivee.Value; NouvelleFacture.RendezVous.DateFin = dateTimePickerFin.Value; if (ClientVehicule.ClientSelectionneCalendrier != null) { NouvelleFacture.RendezVous.ClientVehicule = ClientVehicule.ClientSelectionneCalendrier; } else if (ClientVehicule.ClientVehiculeEnCoursDeTraitement != null) { NouvelleFacture.RendezVous.ClientVehicule = ClientVehicule.ClientVehiculeEnCoursDeTraitement; } NouvelleFacture.RendezVous.Statut = Program.GMBD.EnumererStatut(null, null, new MyDB.CodeSql("WHERE statut = {0}", "En attente"), null).FirstOrDefault(); if (dateTimePickerArrivee.Value < dateTimePickerFin.Value) { if ((NouvelleFacture.EstValide) && (NouvelleFacture.RendezVous.EstValide) && (Program.GMBD.AjouterRendezvous(NouvelleFacture.RendezVous))) { if (Program.GMBD.AjouterNouvelleFacture(NouvelleFacture)) { if (listeDeroulanteEntretien.EntretienSelectionne != null) { FactureEntretien EntretienLiee = new FactureEntretien(NouvelleFacture, listeDeroulanteEntretien.EntretienSelectionne); if (Program.GMBD.AjouterFactureEntretien(EntretienLiee)) { CalendrierRdv.ChargerListViewRdv(); ValidationProvider.Clear(); ValidationProvider.SetError(buttonAjouter, "Le rendez-vous a été correctement ajouté"); } } else if (checkBoxReparation.Checked == true) { ValidationProvider.Clear(); ValidationProvider.SetError(buttonAjouter, "Le rendez-vous a été correctement ajouté"); } } else { Program.GMBD.SupprimerRendezvous(NouvelleFacture.RendezVous); } } } else { errorProvider.SetError(dateTimePickerFin, "La date de fin ne peut pas être inférieure ou égale à la date d'arrivée"); } } else { errorProvider.SetError(buttonAjouter, "Vous devez choisir un entretien ou une réparation à effectuer"); } } else { errorProvider.SetError(buttonAjouter, "L'immatriculation doit être indiquée et validée"); } }
/// <summary> /// S'active au moment d'une nouvelle sélection ou d'une première sélection sur mon userControl de calendrier /// </summary> private void FormCalendrier_ChangementSelectionClient(object sender, EventArgs e) { if (CalendrierRdv.FactureSelectionnee != null) { if (!RechargementApresModification) { errorProvider.Clear(); ValidationProvider.Clear(); } ClientVehicule.DesactiverListeClient = false; buttonReactualiser.Enabled = true; ClientVehicule.ClientSelectionneCalendrier = CalendrierRdv.FactureSelectionnee.RendezVous.ClientVehicule; ClientVehicule.ListeDeroulante_ChangementClient(sender, e); dateTimePickerArrivee.Value = CalendrierRdv.FactureSelectionnee.RendezVous.DateDebut; dateTimePickerFin.Value = CalendrierRdv.FactureSelectionnee.RendezVous.DateFin; listeDeroulanteEntretien.EntretienSelectionne = Program.GMBD.EnumererEntretien(null, new MyDB.CodeSql("JOIN facture_entretien ON entretien.id_entretien = facture_entretien.fk_id_entretien"), new MyDB.CodeSql("WHERE fk_id_facture = {0}", CalendrierRdv.FactureSelectionnee.Id), null).FirstOrDefault(); // Si mon statut correspond à "En attente" et est différent de "Terminé" et que la date de début du rendez-vous est supérieure à la date du jour if ((CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation == "En attente") && (CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation != "Terminé") && (CalendrierRdv.FactureSelectionnee.RendezVous.DateDebut > DateTime.Now)) { buttonReactiveRdv.Enabled = false; buttonAnnulationRendezvous.Enabled = true; buttonAjouter.Enabled = false; buttonModifier.Enabled = true; buttonImprimerLaFacture.Enabled = false; } // Si mon statut correspond à "Annuler" et est différent de "Terminé" et que la date de début du rendez-vous est supérieure à la date du jour else if ((CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation == "Annuler") && (CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation != "Terminé") && (CalendrierRdv.FactureSelectionnee.RendezVous.DateDebut > DateTime.Now)) { buttonReactiveRdv.Enabled = true; buttonAnnulationRendezvous.Enabled = false; buttonAjouter.Enabled = false; buttonModifier.Enabled = true; buttonImprimerLaFacture.Enabled = false; } // Si mon statut correspond à "Annuler" et que la date de début du rendez-vous est inférieure à la date du jour else if ((CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation == "Annuler") && (CalendrierRdv.FactureSelectionnee.RendezVous.DateDebut < DateTime.Now)) { ClientVehicule.ButtonModifier = false; ClientVehicule.ButtonAjouter = false; buttonModifier.Enabled = false; buttonAjouter.Enabled = false; buttonAnnulationRendezvous.Enabled = false; buttonImprimerLaFacture.Enabled = false; } // Si la réparation et/ou l'entretien sont terminés else if (CalendrierRdv.FactureSelectionnee.RendezVous.Statut.StatutOperation == "Terminé") { ClientVehicule.ButtonModifier = false; ClientVehicule.ButtonAjouter = false; buttonModifier.Enabled = false; buttonAjouter.Enabled = false; buttonAnnulationRendezvous.Enabled = false; buttonImprimerLaFacture.Enabled = true; } else { buttonImprimerLaFacture.Enabled = false; } if (CalendrierRdv.FactureSelectionnee.Informations != "") { textBoxInfoReparation.Enabled = true; checkBoxReparation.Checked = true; textBoxInfoReparation.Text = CalendrierRdv.FactureSelectionnee.Informations; } else { textBoxInfoReparation.Enabled = false; checkBoxReparation.Checked = false; textBoxInfoReparation.Text = ""; } Facture ClientDejaReference = Program.GMBD.EnumererFacture(null, new MyDB.CodeSql(@"JOIN rendez_vous_entretien_reparation ON facture.fk_id_rdv = rendez_vous_entretien_reparation.id_rendez_vous_entretien_reparation JOIN statut ON rendez_vous_entretien_reparation.fk_id_statut = statut.id_statut"), new MyDB.CodeSql("WHERE rendez_vous_entretien_reparation.fk_id_client_vehicule = {0} AND (statut.statut = \"Terminé\" OR statut.statut != \"Annuler\")", ClientVehicule.ClientVehiculeEnCoursDeTraitement.Id), null).FirstOrDefault(); if (ClientDejaReference != null) { ClientVehicule.DesactiverTextBoxImmatriculation = false; ClientVehicule.DesactiverTextBoxNumChassis = false; ClientVehicule.DesactiverListeModele = false; } else { ClientVehicule.DesactiverTextBoxImmatriculation = true; ClientVehicule.DesactiverTextBoxNumChassis = true; ClientVehicule.DesactiverListeModele = true; } RechargementApresModification = false; } }
/// <summary> /// Met à jour la listview des Factures et y insére les elements /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Entites"></param> /// <returns></returns> private bool MettreAJourListe <T>(IEnumerable <T> Entites) where T : class, IEntiteMySQL { bool EstFacture = typeof(T).Equals(typeof(Facture)); if (!EstFacture) { return(false); } listViewFacture.Items.Clear(); if (Entites == null) { return(false); } if (EstFacture && (listViewFacture.Columns.Count != 2)) { listViewFacture.Columns.Clear(); listViewFacture.Columns.Add(new ColumnHeader() { Name = "Prenom", Text = "Prénom", TextAlign = HorizontalAlignment.Center, }); listViewFacture.Columns.Add(new ColumnHeader() { Name = "Nom", Text = "Nom", TextAlign = HorizontalAlignment.Center, }); listViewFacture.Columns.Add(new ColumnHeader() { Name = "NumeroFacture", Text = "Numéro de facture", TextAlign = HorizontalAlignment.Center, }); listViewFacture.Columns.Add(new ColumnHeader() { Name = "Modele", Text = "Modèle du véhicule", TextAlign = HorizontalAlignment.Center, }); listViewFacture.Columns.Add(new ColumnHeader() { Name = "Immatriculation", Text = "Immatriculation", TextAlign = HorizontalAlignment.Center, }); listViewFacture.Columns.Add(new ColumnHeader() { Name = "Statut", Text = "Statut", TextAlign = HorizontalAlignment.Center, }); } foreach (T Entite in Entites) { Facture Facture = Entite as Facture; ListViewItem NouvelElement = new ListViewItem() { Tag = Entite, Text = Facture.RendezVous.ClientVehicule.Client.Prenom, }; NouvelElement.SubItems.Add(Facture.RendezVous.ClientVehicule.Client.Nom); NouvelElement.SubItems.Add(Facture.NumeroFacture); NouvelElement.SubItems.Add(Facture.RendezVous.ClientVehicule.Vehicule.Modele); NouvelElement.SubItems.Add(Facture.RendezVous.ClientVehicule.Immatriculation); NouvelElement.SubItems.Add(Facture.RendezVous.Statut.StatutOperation); listViewFacture.Items.Add(NouvelElement); } listViewFacture.Visible = false; foreach (ColumnHeader Colonne in listViewFacture.Columns) { Colonne.Width = listViewFacture.Width / listViewFacture.Columns.Count; } listViewFacture.Visible = true; listViewFacture_SelectedIndexChanged(listViewFacture, EventArgs.Empty); return(true); }