예제 #1
0
 // CreateProvision
 public Provision CreateProvision()
 {
     var service = new ProvisionServices(uow, groupeId);
     var dateProvisions = service.ProchaineDateProvision(svcDate);
     var _fabrique = new ProvisionFabrique(uow, groupeId);
     return _fabrique.creerProvision(dateProvisions);
 }
예제 #2
0
        // Production des refinancements
        public IList<SoldeBudget> Make(IQueryable<Budget> _budgets, DateTime dateArchivage)
        {
            // EnrichirAvecNbreContratsEtPeriodeFinancementRestantes
            var e1 = new BudgetContratEnrichisseur(uow, groupeId);
            var _budgetAvecContrats = e1.EnrichirAvecNbreContratsEtPeriodeFinancementRestantes(_budgets);

            // Constitution des feeds à partir des budgets
            IList<SoldeBudget> _soldeBudgets = InitSoldeBudgets(_budgetAvecContrats);

            // Inputs: opérations - mouvements - financements - échéances à venir
            FacadeRepo facade = new FacadeRepo(uow, groupeId);
            InputSoldeBudgets _inputs = facade.InputSoldeBudgetsForRefi(dateArchivage);

            // Mouvements à venir
            var f1 = new ProvisionFabrique(uow, groupeId);
            _inputs.mouvementAVenirs = f1.CalculerMouvementsAVenir(_budgetAvecContrats);

            // Enrichissement des soldes budgets avec les montants
            var s1 = new SoldeBudgetMontantsEnrichisseur();
            s1.EnrichirMontants(_soldeBudgets, _inputs);

            // Calcul des soldes courant & écart financement
            foreach (var _solde in _soldeBudgets)
            {
                _solde.Calculer();
            }

            // Retour
            return _soldeBudgets;
        }
예제 #3
0
        // Fabrique des mouvements
        // Mouvements à venir
        private IEnumerable<MouvementBudget> CalculerMouvementsAVenir(Budget _budget)
        {
            // Init liste des mouvements
            IList<MouvementBudget> mouvementsAVenir = new List<MouvementBudget>();

            if (_budget.MontantProvisionCourante != 0)
            {
                // Fabrique provision
                var fabrique = new ProvisionFabrique(uow, ProfileUser.GroupeId);

                // Récupération de la date de la dernère provision
                DateTime _dateDerniereProvision = uow.Provision.GetDateDerniereProvision(ProfileUser.GroupeId);

                // Calcul des péridoes à venir
                _budget.CalculerPeriodesFinancementRestantes(_dateDerniereProvision);

                // Date de départ
                DateTime dateProv = _dateDerniereProvision;

                // Calcul des mouvements provisions à venir
                int nbPeriodesAVenir = _budget.PeriodeFinancementRestante;
                for (int i = 0; i < nbPeriodesAVenir; i++)
                {
                    DateTime dateMouvement = dateProv.AddMonths(i + 1);

                    MouvementBudget mouv = fabrique
                        .creerMouvementAVenirFromProvisionBudget(dateMouvement, _budget);

                    mouv.Id = -i;

                    // Calcul de la provision
                    Provision _prov = new Provision
                    {
                        DateSaisie = dateMouvement,
                        Active = true,
                        Archivee = false,
                        GroupeId = ProfileUser.GroupeId,
                        Id = -i
                    };

                    mouv.Provision = _prov;

                    mouvementsAVenir.Add(mouv);
                }

            }            // Retour
            return mouvementsAVenir;
        }
예제 #4
0
        // Exécution du processus de provisionnement à date voulue
        private Boolean ExecuterProcessus(DateTime date)
        {
            // Init
            Boolean exec = false;

            // Tentative provision
            var service = new ProvisionServices(uow, groupeId);
            var traceur = new ProvisionTraceur(groupeId);

            if (service.VerifierPrerequis())
            {
                // Exécuter provision
                var _fabrique = new ProvisionFabrique(uow, groupeId);
                var provision = _fabrique.creerProvision(date);

                // Ajout repo
                uow.Provision.Add(provision);

                // Trace execution
                int nbMouvs = 0;
                var mvts = new List<MouvementBudget>().AsQueryable<MouvementBudget>();
                if (provision.Mouvements != null)
                {
                    mvts = provision.Mouvements.AsQueryable<MouvementBudget>();
                    nbMouvs = provision.Mouvements.Count;
                }
                var rapportS = traceur.SaveForRapportSuccess(provision.DateSaisie, mvts);
                TraceLog trace = traceur.Success(date, nbMouvs, rapportS);

                // Ajout repo
                uow.TraceLog.Add(trace);

                // Succès
                exec = true;

            }
            else
            {
                //// Récupération du libellé de la provision
                //ServiceDate svc = new ServiceDate();
                //string lib = "Provision du mois "
                //    + svc.LibelleMoisInFrench(date.Month)
                //    + " "
                //    + date.Year;

                // Trace execution
                var rapport = traceur.SaveForRapportEchec(date);
                TraceLog trace = traceur.Echec(date, 0, rapport);

                // Ajout repo
                uow.TraceLog.Add(trace);

            };

            // Retour
            return exec;
        }