// 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); }
// 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; }
// 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; }
// 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; }