private void BtnEnregistrerAchatMatierePremiere_Click(object sender, EventArgs e)
 {
     if (float.Parse(txtQuantite.Text) > 0 && int.Parse(txtMontant.Text) > 0)
     {
         if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxComptePaiement, txtMontant))
         {
             try
             {
                 var recep = AjouterNouvelleAchatMatierePremiere();
                 AjouterDecaissementTransportMatierePremiere(recep);
                 AjouterPaiementFournisseur(recep);
                 MessageBox.Show("Un nouvel achat de matière première a été enregistré avec succès");
                 Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
                 txtQuantite.Text    = "0";
                 txtMontant.Text     = "0";
                 txtMontantPaye.Text = "0";
                 txtTransportMatierePremiere.Text = "0";
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
         }
     }
     else
     {
         MessageBox.Show("Veuillez renseigner correctement les champs montant et quantité");
     }
 }
        private void UC_MouvementCompteACompte_Load(object sender, EventArgs e)
        {
            resComptesTresorerieBindingSource.DataSource  = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
            resComptesTresorerieBindingSource1.DataSource = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
            ChargerListeEmployes();

            Tresorerie.AfficherSoldeTresorerie(cbxCompteDebit, txtSoldeCompte);
        }
        private void UC_CreancesClients_Load(object sender, EventArgs e)
        {
            lbxListeClients.DataSource    = Conversion.ListeClientsAvecCreances().OrderBy(c => c.NomClient).ToList();
            lbxListeClients.DisplayMember = "NomClient";
            lbxListeClients.ValueMember   = "CodeClient";

            txtTotalCreances.Text = Tresorerie.CalculerTotalCreancesClients().ToString("c0");
        }
        private List <AgeAutreFournisseur> ListeFournisseursEquipementsInfrastructures()
        {
            var listeFournisseurs = db.AgeAutreFournisseurs.ToList();

            return(listeFournisseurs
                   .Where(f => Tresorerie.CalculerTotalDettesFournisseurMatierePremiere(f.CodeAutreFournisseur) > 0)
                   .ToList());
        }
        private void LoadData()
        {
            ageAutreFournisseursBindingSource.DataSource = db.AgeAutreFournisseurs.OrderBy(af => af.NomAutreFournisseur).ToList();
            ChargerListeEmployes();
            resComptesTresorerieBindingSource.DataSource = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();

            Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
        }
        /************************************************************
        *                         HELPERS
        ************************************************************/
        private List <AgeFournisseursMatieresPremiere> ListeFournisseurMatieresPremieres()
        {
            var listeFournisseurs = db.AgeFournisseursMatieresPremieres.ToList();

            return(listeFournisseurs
                   .Where(f => Tresorerie.CalculerTotalDettesFournisseurMatierePremiere(f.CodeFournisseurMatierePremiere) > 0)
                   .ToList());
        }
Exemple #7
0
        private void LoadData()
        {
            var listePersonnel = (from p in db.AgeEmployes
                                  where p.Actif == true
                                  select new { Nom = p.PrenomNom, p.Poste }).OrderBy(e => e.Nom).ToList();

            dgvListePersonnel.DataSource = listePersonnel;

            cbxTempsEtRemun.DisplayMember = "PrenomNom";
            cbxTempsEtRemun.ValueMember   = "CodeEmploye";
            cbxTempsEtRemun.DataSource    = db.AgeEmployes
                                            .Where(em => em.Actif == true)
                                            .Where(em => !em.Poste.StartsWith("Stagiaire"))
                                            .OrderBy(c => c.PrenomNom)
                                            .ToList();

            ageEmployeBindingSource1.DataSource = db.AgeEmployes
                                                  .Where(em => em.Actif == true)
                                                  .OrderBy(em => em.PrenomNom)
                                                  .ToList();
            resComptesTresorerieBindingSource.DataSource = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
            cbxTimeSheetNomEmploye.DataSource            = db.AgeEmployes
                                                           .Where(em => em.Actif == true)
                                                           .Where(em => !em.Poste.StartsWith("Stagiaire"))
                                                           .OrderBy(c => c.PrenomNom)
                                                           .ToList();
            cbxTimeSheetNomEmploye.DisplayMember = "PrenomNom";
            cbxTimeSheetNomEmploye.ValueMember   = "CodeEmploye";

            cbxTresoriere.DataSource = Conversion.ListeEmployesPresents(dtpDatePaiement)
                                       .Where(em => !em.Poste.StartsWith("Stagiaire"))
                                       .OrderBy(c => c.PrenomNom)
                                       .ToList();
            cbxTresoriere.DisplayMember = "PrenomNom";
            cbxTresoriere.ValueMember   = "CodeEmploye";

            cbxStagiaires.DisplayMember = "PrenomNom";
            cbxStagiaires.ValueMember   = "CodeEmploye";
            cbxStagiaires.DataSource    = db.AgeEmployes
                                          .Where(em => em.Actif == true)
                                          .Where(em => em.Poste.StartsWith("Stagiaire"))
                                          .OrderBy(c => c.PrenomNom)
                                          .ToList();

            cbxComptePaiementStagiare.DataSource  = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
            cbxComptePaiementStagiare.ValueMember = "CodeCompte";
            cbxPaiementFaitPar.DataSource         = Conversion.ListeEmployesPresents(dtpDatePaiement)
                                                    .Where(em => !em.Poste.StartsWith("Stagiaire"))
                                                    .OrderBy(c => c.PrenomNom)
                                                    .ToList();
            cbxPaiementFaitPar.DisplayMember = "PrenomNom";
            cbxPaiementFaitPar.ValueMember   = "CodeEmploye";


            AfficherPresenceEtRemunerationEmploye(dtpDebut.Value.Date, dtpFin.Value.Date);
            Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
        }
        private void LoadData()
        {
            resServicesFournituresBindingSource.DataSource             = db.ResServicesFournitures.OrderBy(sf => sf.NomServiceFourniture).ToList();
            resComptesTresorerieBindingSource.DataSource               = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
            ageFournisseursServicesFournituresBindingSource.DataSource = db.AgeFournisseursServicesFournitures.OrderBy(f => f.NomFournisseurServiceFourniture).ToList();
            ChargerListeEmployes();

            Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
        }
 private void LoadData()
 {
     ageFournisseursMatieresPremieresBindingSource.DataSource = db.AgeFournisseursMatieresPremieres.OrderBy(f => f.Nom).ToList();
     resStockMatieresPremieresBindingSource.DataSource        = db.ResStockMatieresPremieres.OrderBy(m => m.NomMatiere).ToList();
     ChargerListeEmployes();
     resComptesTresorerieBindingSource.DataSource = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();
     cbxTypesMatieres.DataSource    = db.TypesMatieres.OrderBy(tm => tm.NomType).ToList();
     cbxTypesMatieres.DisplayMember = "NomType";
     cbxTypesMatieres.ValueMember   = "codeTypeMatiere";
     //cbxTypesMatieres.DataSource = (from mp in db.ResStockMatieresPremieres select mp.TypeMatiere).Distinct().ToList();
     Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
 }
Exemple #10
0
        private void PayerPersonnel(string employe, int codeEmploye, string debut, string fin, string date, ComboBox cptePaiement,
                                    string tresoriere, TextBox montant)
        {
            string cptePaie   = cptePaiement.GetItemText(cptePaiement.SelectedItem);
            int    codeCompte = Convert.ToInt32(cptePaiement.SelectedValue.ToString());

            if (Validation.VerifierChampsMontant(montant.Text))
            {
                if (RemunerationPasEncorePayePourLaPeriod(codeEmploye))
                {
                    if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cptePaiement, montant))
                    {
                        EvePaiementEmploye paiement = new EvePaiementEmploye
                        {
                            CodeEmployePaye = codeEmploye,
                            DeCetteDate     = DateTime.Parse(debut),
                            ACetteDate      = DateTime.Parse(fin)
                        };

                        db.EvePaiementEmployes.Add(paiement);
                        db.SaveChanges();

                        EveDecaissement decaiss = new EveDecaissement
                        {
                            DateDecaissement    = DateTime.Parse(date),
                            CodePaiementEmploye = paiement.CodePaiementEmploye,
                            CodeCompte          = codeCompte,
                            Description         = "Paiment rémunération de " + employe + " pour la période du " + debut + " au " + fin,
                            CodeEmploye         = int.Parse(tresoriere),
                            Montant             = int.Parse(montant.Text)
                        };

                        db.EveDecaissements.Add(decaiss);
                        db.SaveChanges();

                        MessageBox.Show($"Le paiement de {employe} a été enregistré pour la période du {debut} au {fin}.");
                    }
                }
                else
                {
                    MessageBox.Show($"{employe} a déjà été payé pour la période selectionnée.");
                    return;
                }
            }
            else
            {
                MessageBox.Show("Le montant entré n'est pas valide.");
                return;
            }
        }
Exemple #11
0
        private void UC_NouveauDecaissement_Load(object sender, EventArgs e)
        {
            try
            {
                cbxTypeFournisseur.SelectedIndex = 0;
                DefinirListeDesFournisseursAAfficher();
                ChargerListeEmployes();
                resComptesTresorerieBindingSource.DataSource = db.ResComptesTresoreries.OrderBy(ct => ct.NomCompte).ToList();

                Tresorerie.AfficherSoldeTresorerie(cbxCompte, txtSoldeCompte);

                AfficherDetteDuFournisseurSelectionne();
            }
            catch (Exception)
            {
                MessageBox.Show("Il n'y a pas de fournisseurs à qui nous devons de l'argent.");
            }
        }
Exemple #12
0
        public static List <AgeClient> ListeClientsAvecCreances()
        {
            using (CasaDBEntities db = new CasaDBEntities())
            {
                var listeClients = new List <AgeClient>();
                var newListe     = db.AgeClients.ToList();

                foreach (var client in newListe)
                {
                    var soldeCreanceClient = Tresorerie.CalculerSoldeCreanceClient(client.CodeClient);

                    if (soldeCreanceClient > 0)
                    {
                        listeClients.Add(client);
                    }
                }

                return(listeClients);
            }
        }
        private void AjouterDecaissementTransportMatierePremiere(EveReceptionMatieresPremiere recep)
        {
            ResStockMatieresPremiere matPrem = db.ResStockMatieresPremieres.FirstOrDefault(mp => mp.NomMatiere == cbxNomMatierePremiere.Text);
            AgeEmploye           tresoriere  = db.AgeEmployes.FirstOrDefault(em => em.PrenomNom == cbxTresoriere.Text);
            ResComptesTresorerie tres        = db.ResComptesTresoreries.FirstOrDefault(tr => tr.NomCompte == cbxComptePaiement.Text);

            if (int.Parse(txtTransportMatierePremiere.Text) > 0 && Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxComptePaiement, txtTransportMatierePremiere))
            {
                EveDecaissement decaiss = new EveDecaissement
                {
                    CodeReceptionMatierePremiere = recep.CodeReceptionMatierePremiere,
                    Description      = "Transport de " + matPrem.NomMatiere,
                    DateDecaissement = recep.DateReception,
                    CodeEmploye      = tresoriere.CodeEmploye,
                    CodeCompte       = tres.CodeCompte,
                    Montant          = int.Parse(txtTransportMatierePremiere.Text),
                };

                db.EveDecaissements.Add(decaiss);
                db.SaveChanges();
            }
        }
 private void UC_DettesFournisseurs_Load(object sender, EventArgs e)
 {
     rbtFMatieresPremieres.Checked = true;
     ListerFournisseurAvecDettesFournisseurs();
     txtTotalDettesFournisseurs.Text = Tresorerie.CalculerTotalDettesFournisseurs().ToString("c0");
 }
 private void CbxComptePaiement_SelectedIndexChanged(object sender, EventArgs e)
 {
     Tresorerie.AfficherSoldeTresorerie(cbxComptePaiement, txtSoldeCompte);
 }
Exemple #16
0
        private void AfficherDetteDuFournisseurSelectionne()
        {
            int codeFournisseur = int.Parse(cbxNomFournisseur.SelectedValue.ToString());

            txtDetteFournisseur.Text = Tresorerie.CalculerSoldeDetteParFournisseur(codeFournisseur).ToString("c0");
        }
Exemple #17
0
        private void BtnEnregistrerDecaissement_Click(object sender, EventArgs e)
        {
            if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxCompte, txtMontantPaye))
            {
                ResComptesTresorerie cpte = db.ResComptesTresoreries.FirstOrDefault(c => c.NomCompte == cbxCompte.Text);

                AgeEmploye em = db.AgeEmployes.FirstOrDefault(emp => emp.PrenomNom == cbxTresoriere.Text);

                if (cbxTypeFournisseur.Text == "Fournisseur de matière première")
                {
                    AgeFournisseursMatieresPremiere typeFournisseur = db.AgeFournisseursMatieresPremieres.FirstOrDefault(f => f.Nom == cbxNomFournisseur.Text);
                    var             codeFourniseur = typeFournisseur.CodeFournisseurMatierePremiere;
                    EveDecaissement decaiss        = new EveDecaissement
                    {
                        DateDecaissement = DateTime.Parse(dtpDateDecaissement.Text),
                        CodeFournisseurMatierePremiere = codeFourniseur,
                        CodeEmploye = em.CodeEmploye,
                        Description = "Paiement dette fournisseur matière première",
                        Montant     = int.Parse(txtMontantPaye.Text),
                        CodeCompte  = cpte.CodeCompte,
                    };

                    db.EveDecaissements.Add(decaiss);
                    db.SaveChanges();
                    txtMontantPaye.Clear();
                }
                else if (cbxTypeFournisseur.Text == "Fournisseur d'équipement ou entrepreneur")
                {
                    AgeAutreFournisseur typeFournisseur = db.AgeAutreFournisseurs.FirstOrDefault(f => f.NomAutreFournisseur == cbxNomFournisseur.Text);
                    var             codeFourniseur      = typeFournisseur.CodeAutreFournisseur;
                    EveDecaissement decaiss             = new EveDecaissement
                    {
                        DateDecaissement     = DateTime.Parse(dtpDateDecaissement.Text),
                        CodeAutreFournisseur = codeFourniseur,
                        CodeEmploye          = em.CodeEmploye,
                        Description          = "Paiement dette fournisseur équipements et infrastructures",
                        Montant    = int.Parse(txtMontantPaye.Text),
                        CodeCompte = cpte.CodeCompte,
                    };

                    db.EveDecaissements.Add(decaiss);
                    db.SaveChanges();
                    txtMontantPaye.Clear();
                }
                else if (cbxTypeFournisseur.Text == "Fournisseur de services ou fournitures")
                {
                    AgeFournisseursServicesFourniture typeFournisseur = db.AgeFournisseursServicesFournitures.FirstOrDefault(f => f.NomFournisseurServiceFourniture == cbxNomFournisseur.Text);
                    var             codeFourniseur = typeFournisseur.CodeFournisseurServiceFourniture;
                    EveDecaissement decaiss        = new EveDecaissement
                    {
                        DateDecaissement       = DateTime.Parse(dtpDateDecaissement.Text),
                        CodeFournisseurService = codeFourniseur,
                        CodeEmploye            = em.CodeEmploye,
                        Description            = "Paiement dette fournisseur services et fournitures",
                        Montant    = int.Parse(txtMontantPaye.Text),
                        CodeCompte = cpte.CodeCompte,
                    };

                    db.EveDecaissements.Add(decaiss);
                    db.SaveChanges();
                    txtMontantPaye.Clear();
                }
                MessageBox.Show("Le paiement du fournisseur a été effectué avec succès.");
            }
        }
        private void BtnEnregistrerTransfert_Click(object sender, EventArgs e)
        {
            var codeCpteDebiteur  = int.Parse(cbxCompteDebit.SelectedValue.ToString());
            var codeCpteCrediteur = int.Parse(cbxCompteCredit.SelectedValue.ToString());

            var employe     = cbxEmploye.GetItemText(cbxEmploye.SelectedItem);
            var codeEmploye = (from em in db.AgeEmployes
                               where em.PrenomNom == employe
                               select em.CodeEmploye).FirstOrDefault();

            if (Validation.MontantEstValide(txtMontant.Text))
            {
                if (ComptesDifferents(codeCpteDebiteur, codeCpteCrediteur))
                {
                    if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxCompteDebit, txtMontant))
                    {
                        if (txtDescription.Text.Trim().Length > 0)
                        {
                            EveDecaissement decaissement = new EveDecaissement
                            {
                                DateDecaissement    = dtpDateOperation.Value.Date,
                                Description         = txtDescription.Text,
                                Montant             = int.Parse(txtMontant.Text),
                                DecaissementInterne = true,
                                CodeEmploye         = codeEmploye,
                                CodeCompte          = codeCpteDebiteur
                            };

                            db.EveDecaissements.Add(decaissement);
                            db.SaveChanges();

                            EveEncaissement encaissement = new EveEncaissement
                            {
                                CodeCompte  = codeCpteCrediteur,
                                CodeEmploye = codeEmploye,
                            };

                            db.EveEncaissements.Add(encaissement);
                            db.SaveChanges();

                            EveEncaissementsAutre autreEnc = new EveEncaissementsAutre
                            {
                                CodeEncaissement = encaissement.CodeEncaissement,
                                DateEncaissement = dtpDateOperation.Value.Date,
                                Description      = txtDescription.Text,
                                MontantEncaisse  = int.Parse(txtMontant.Text)
                            };

                            db.EveEncaissementsAutres.Add(autreEnc);
                            db.SaveChanges();

                            var cpteDebiteur  = cbxCompteDebit.GetItemText(cbxCompteDebit.SelectedText);
                            var cpteCrediteur = cbxCompteCredit.GetItemText(cbxCompteCredit.SelectedText);

                            MessageBox.Show($"Le transfert de fonds du compte {cpteDebiteur} au compte {cpteCrediteur} a été enregistré avec succès.");
                            txtDescription.Clear();
                            txtMontant.Clear();

                            Tresorerie.AfficherSoldeTresorerie(cbxCompteDebit, txtSoldeCompte);
                        }
                        else
                        {
                            MessageBox.Show("Veuillez ajouter une description à ce mouvement de compte à compte.");
                            return;
                        }
                    }
                }
            }
        }
 private void AfficherTableauDeTresorerie()
 {
     ReInitialiserTableau(dgvTableauTresorerie);
     Tresorerie.AfficherTresorerie(dgvTableauTresorerie, dtpDebut, dtpFin);
 }
        private void BtnEnregistrerAchatEquipementInfrastructure_Click(object sender, EventArgs e)
        {
            AgeAutreFournisseur  afourIm    = db.AgeAutreFournisseurs.FirstOrDefault(af => af.NomAutreFournisseur == cbxFournisseurImmo.Text);
            AgeEmploye           emp        = db.AgeEmployes.FirstOrDefault(em => em.PrenomNom == cbxRespImmo.Text);
            AgeEmploye           tresoriere = db.AgeEmployes.FirstOrDefault(em => em.PrenomNom == cbxTresoriere.Text);
            ResComptesTresorerie cpte       = db.ResComptesTresoreries.FirstOrDefault(c => c.NomCompte == cbxComptePaiement.Text);

            if (Validation.VerifierChampsMontant(txtMontant1.Text) && Validation.VerifierChampsMontant(txtQuantite.Text))
            {
                ResEquipementsInfrastructure einfr = new ResEquipementsInfrastructure()
                {
                    Nom                  = txtNomEqInfr1.Text,
                    DateAcquisition      = DateTime.Parse(dtpAchatNouveauEqInf.Text),
                    DureeDeVie           = int.Parse(txtDuree1.Text),
                    MaterielDeProduction = cbxImmobilisationLieeAProduction.Checked,
                    Montant              = int.Parse(txtMontant1.Text),
                    Quantite             = int.Parse(txtQuantite.Text)
                };

                db.ResEquipementsInfrastructures.Add(einfr);
                db.SaveChanges();

                EveReceptionEquipementsInfrastructure reinfr = new EveReceptionEquipementsInfrastructure()
                {
                    CodeEquipementInfrastructure = einfr.CodeEquipementInfrastructure,
                    CodeAutreFournisseur         = afourIm.CodeAutreFournisseur,
                    CodeEmploye = emp.CodeEmploye,
                };

                db.EveReceptionEquipementsInfrastructures.Add(reinfr);
                db.SaveChanges();

                // Décaissement effectué lors de l'acquisition de l'équipement ou de l'infrastructure
                // Il s'agit ici du montant au moment d'enregistrer la transaction. Souvent, il s'agit du
                // premier accompte.

                if (int.Parse(txtMontantPaye.Text) > 0)
                {
                    if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxComptePaiement, txtMontantPaye))
                    {
                        EveDecaissement decaiss = new EveDecaissement
                        {
                            CodeReceptionEquipementInfrastructure = reinfr.CodeReceptionEquipementInfrastructure,
                            CodeAutreFournisseur = afourIm.CodeAutreFournisseur,
                            Description          = "Acquisition de " + einfr.Nom,
                            DateDecaissement     = einfr.DateAcquisition,
                            CodeEmploye          = tresoriere.CodeEmploye,
                            CodeCompte           = cpte.CodeCompte,
                            Montant = int.Parse(txtMontantPaye.Text),
                        };
                        db.EveDecaissements.Add(decaiss);
                        db.SaveChanges();
                    }
                }

                MessageBox.Show("Le nouvel achat ou acquisition d'équipement ou d'infrastructure a été enregistré avec succès!");
                txtNomEqInfr1.Text  = "";
                txtDuree1.Text      = "";
                txtMontant1.Text    = "";
                txtQuantite.Text    = "1";
                txtMontantPaye.Text = "";
            }
        }
        private void BtnAchatServiceFourniture_Click(object sender, EventArgs e)
        {
            try
            {
                bool respAchatPresent = db.AgeEmployes.Any(em => em.PrenomNom == cbxRespServFourn.Text);
                bool fournPresent     = db.AgeFournisseursServicesFournitures
                                        .Any(fs => fs.NomFournisseurServiceFourniture == cbxNomFournServFourn.Text);
                bool descriptionAjoutee = !string.IsNullOrEmpty(txtDescription.Text);

                AgeEmploye tresoriere;

                if (int.Parse(txtMontantPayeServFourn.Text) > 0)
                {
                    bool montantValide      = Validation.VerifierChampsMontant(txtMontantPayeServFourn.Text);
                    bool tresorierePresente = db.AgeEmployes.Any(em => em.PrenomNom == cbxTresoriere.Text);
                }

                AgeEmploye emp = db.AgeEmployes.First(em => em.PrenomNom == cbxRespServFourn.Text);

                AgeFournisseursServicesFourniture fsf = db.AgeFournisseursServicesFournitures.First
                                                        (
                    fs => fs.NomFournisseurServiceFourniture == cbxNomFournServFourn.Text
                                                        );
                ResComptesTresorerie  cpte = db.ResComptesTresoreries.FirstOrDefault(c => c.NomCompte == cbxComptePaiement.Text);
                ResServicesFourniture sf   = db.ResServicesFournitures.FirstOrDefault(s => s.NomServiceFourniture == cbxNomServFourniture.Text);

                if (Validation.VerifierChampsMontant(txtMontantServFourn.Text))
                {
                    EveAcquisitionServicesFourniture asf = new EveAcquisitionServicesFourniture
                    {
                        Date                             = DateTime.Parse(dtpDateAchatServFourn.Text),
                        Description                      = txtDescription.Text,
                        Montant                          = int.Parse(txtMontantServFourn.Text),
                        CodeServiceFourniture            = sf.CodeServiceFourniture,
                        CodeFournisseurServiceFourniture = fsf.CodeFournisseurServiceFourniture,
                        CodeEmploye                      = emp.CodeEmploye,
                    };

                    db.EveAcquisitionServicesFournitures.Add(asf);
                    db.SaveChanges();

                    if (int.Parse(txtMontantPayeServFourn.Text) > 0 && Validation.VerifierChampsMontant(txtMontantPayeServFourn.Text))
                    {
                        if (Tresorerie.IlYaAssezDeFondsDansLeCompte(cbxComptePaiement, txtMontantPayeServFourn))
                        {
                            tresoriere = db.AgeEmployes.First(em => em.PrenomNom == cbxTresoriere.Text);

                            EveDecaissement decaiss = new EveDecaissement
                            {
                                CodeAcquisitionServiceFourniture = asf.CodeAcquisitionServiceFourniture,
                                Description            = sf.NomServiceFourniture,
                                DateDecaissement       = asf.Date,
                                CodeEmploye            = tresoriere.CodeEmploye,
                                CodeCompte             = cpte.CodeCompte,
                                Montant                = int.Parse(txtMontantPayeServFourn.Text),
                                CodeFournisseurService = fsf.CodeFournisseurServiceFourniture,
                            };
                            db.EveDecaissements.Add(decaiss);
                            db.SaveChanges();
                        }
                    }

                    MessageBox.Show("Le nouvel achat de service ou de fourniture a été enregistré avec succès!");
                    txtMontantServFourn.Text     = "";
                    txtMontantPayeServFourn.Text = "";
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Erreur: La transaction n'a pas été enregistré.");
            }
        }
        private void AfficherJournalCorrespondant(string nomCompte)
        {
            var query1 = (from c in db.EveEncaissements
                          from env in db.EveEncaissementsVentes
                          where c.CodeEncaissement == env.CodeEncaissement
                          where c.ResComptesTresorerie.NomCompte == nomCompte

                          select new
            {
                Date = env.DateEncaissement,
                Description = "Encaissement vente",              //vpf.ResStockProduitsFini.NomProduit,
                Entree = env.MontantEncaisse,
                Sortie = 0m,
                Solde = 0m
            });
            var query3 = (from c in db.EveEncaissements
                          from aut in db.EveEncaissementsAutres
                          where c.CodeEncaissement == aut.CodeEncaissement
                          where c.ResComptesTresorerie.NomCompte == nomCompte

                          select new
            {
                Date = aut.DateEncaissement,
                aut.Description,
                Entree = aut.MontantEncaisse,
                Sortie = 0m,
                Solde = 0m
            });

            var query4 = (from c in db.EveEncaissements
                          from aut in db.EveEncaissementsCreances
                          where c.CodeEncaissement == aut.CodeEncaissement
                          where c.ResComptesTresorerie.NomCompte == nomCompte

                          select new
            {
                Date = aut.DateEncaissement,
                Description = "Encaissement créance",
                Entree = aut.MontantEncaisse,
                Sortie = 0m,
                Solde = 0m
            });

            var query2 = (from d in db.EveDecaissements
                          where d.ResComptesTresorerie.NomCompte == nomCompte
                          select new
            {
                Date = d.DateDecaissement,
                d.Description,
                Entree = 0m,
                Sortie = d.Montant,
                Solde = 0m
            });
            var combinedQuery = query1
                                .Concat(query4)
                                .Concat(query3)
                                .Concat(query2)
                                .OrderByDescending(o => o.Date)
                                .ToList();


            var soldeInitial = (from c in db.ResComptesTresoreries
                                where c.NomCompte == nomCompte
                                select c.SoldeCompte).FirstOrDefault();


            DataTable dt = Conversion.ConvertirEnTableDeDonnees(combinedQuery);

            DataRow dr = dt.NewRow();

            dt.Rows.InsertAt(dr, dt.Rows.Count);
            dr["Entree"]      = 0;
            dr["Sortie"]      = 0;
            dr["Description"] = "Solde initial";

            dgvJournalTresorerieDetails.DataSource = dt;

            for (int i = dgvJournalTresorerieDetails.Rows.Count - 1; i >= 0; i--)
            {
                if (i < dgvJournalTresorerieDetails.Rows.Count - 1)
                {
                    dgvJournalTresorerieDetails.Rows[i].Cells[4].Value = Convert.ToInt32(dgvJournalTresorerieDetails.Rows[i + 1].Cells[4].Value)
                                                                         + Convert.ToInt32(dgvJournalTresorerieDetails.Rows[i].Cells[2].Value)
                                                                         - Convert.ToInt32(dgvJournalTresorerieDetails.Rows[i].Cells[3].Value);
                }
                else
                {
                    dgvJournalTresorerieDetails.Rows[i].Cells[4].Value = soldeInitial + Convert.ToInt32(dgvJournalTresorerieDetails.Rows[i].Cells[2].Value)
                                                                         - Convert.ToInt32(dgvJournalTresorerieDetails.Rows[i].Cells[3].Value);
                }
            }

            dgvJournalTresorerieDetails.Columns["Entree"].DefaultCellStyle.Format = "n0";
            dgvJournalTresorerieDetails.Columns["Sortie"].DefaultCellStyle.Format = "n0";
            dgvJournalTresorerieDetails.Columns["Solde"].DefaultCellStyle.Format  = "n0";
            dgvJournalTresorerieDetails.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvJournalTresorerieDetails.Columns["Description"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;

            // Calcul des soldes

            var soldeInitiaux = (from c in db.ResComptesTresoreries
                                 select(decimal?) c.SoldeCompte).Sum() ?? 0m;

            var totalEncaissementsVentes = (from c in db.EveEncaissements
                                            from env in db.EveEncaissementsVentes
                                            where c.CodeEncaissement == env.CodeEncaissement
                                            select(decimal?) env.MontantEncaisse).Sum() ?? 0m;

            var encaissementCreance = (from c in db.EveEncaissements
                                       from env in db.EveEncaissementsCreances
                                       where c.CodeEncaissement == env.CodeEncaissement
                                       select(decimal?) env.MontantEncaisse).Sum() ?? 0m;

            var totalAutresEn = (from enc in db.EveEncaissements
                                 from aut in db.EveEncaissementsAutres
                                 where aut.FondsExternes == true
                                 where enc.CodeEncaissement == aut.CodeEncaissement
                                 select(decimal?) aut.MontantEncaisse).Sum() ?? 0m;

            var totalDecaissements = (from d in db.EveDecaissements
                                      where d.DecaissementInterne == false
                                      select(decimal?) d.Montant).Sum() ?? 0m;

            var fondsDisponibleEnCaissesEtEnBanques = soldeInitiaux
                                                      + totalEncaissementsVentes + totalAutresEn + encaissementCreance
                                                      - totalDecaissements;

            txtSoldesInitiaux.Text     = soldeInitiaux.ToString("c0");
            txtTotalEncaissements.Text = (totalEncaissementsVentes + encaissementCreance + totalAutresEn).ToString("c0");
            txtTotalDecaissements.Text = totalDecaissements.ToString("c0");

            txtSolde.Text = Tresorerie.CalculerSoldeTresorerie(DateTime.Today);
        }