// 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; }
// Calcul des soldes opérations pour une série d'opérations et une série de comte banque public void EnrichirAvecSoldeArchivable(IEnumerable<Budget> budgets) { // Reset solde opérations budgets.ToList().ForEach(c => c.SoldeOperationArchivables = 0.0M); budgets.ToList().ForEach(c => c.SoldeFinancementArchivables = 0.0M); budgets.ToList().ForEach(c => c.SoldeProvisionArchivables = 0.0M); budgets.ToList().ForEach(c => c.SoldeArchivable = 0.0M); // Contrats var s1 = new BudgetContratEnrichisseur(uow, groupeId); s1.EnrichirAvecNbContrats(budgets); // Inputs: opérations FacadeRepo facade = new FacadeRepo(uow, groupeId); InputSoldeBudgets inputs = facade.InputSoldeArchivableBudgets(dateLimiteArchivage); // Enrichissement solde des opérations var enrichisseur = new BudgetSoldeOperationArchivableEnrichisseur(); enrichisseur.Executer(inputs, budgets); // Enrichissement solde archive foreach (var budget in budgets) { budget.EnrichirAvecSoldeArchivable(); } }
// Archivage public void Executer() { // Récupération des opérations, financements et provisions archivables FacadeRepo facade = new FacadeRepo(uow, groupeId); Archivables arch = facade.Archivables(dateLimiteArchivage); // Si besoin, on archive if (arch.Besoin()) { // Caisses IEnumerable<Caisse> caisses = uow.CompteCaisse .GetAllByGroupeId(groupeId) .ToList() ; // Budgets IEnumerable<Budget> budgets = uow.Budget .GetAllByGroupeId(groupeId) .ToList() ; // Comptes IEnumerable<CompteBanque> comptes = uow.CompteBanque .GetAllByGroupeId(groupeId) .Include(x => x.Banque) .ToList() ; // Solde archive - Caisse SoldeArchiveCaisses(groupeId, dateArchivage, dateLimiteArchivage, caisses); // Solde archivae - Budget SoldeArchiveBudgets(groupeId, dateArchivage, dateLimiteArchivage, budgets); // Solde archive - Compte banque SoldeArchiveCompteBanques(groupeId, dateArchivage, dateLimiteArchivage, comptes); // Attention: il faut calculer les soldes avant d'archiver les opérations ArchiverOperations(dateArchivage, dateLimiteArchivage, arch.operations); ArchiverFinancements(dateArchivage, dateLimiteArchivage, arch.financements); ArchiverProvisions(dateArchivage, dateLimiteArchivage, arch.provisions); // Tracer le processus var traceur = new ArchivageTraceur(groupeId); string rapport = traceur.SaveForRapportSuccess(dateArchivage, arch.operations , arch.financements, arch.provisions); int nb = arch.operations.Count() + arch.financements.Count() + arch.provisions.Count() ; TraceLog trace = traceur.Success(dateArchivage, nb, rapport); // Ajout repo uow.TraceLog.Add(trace); } }
// // GET: GetCompteBanquesCalcules public IEnumerable<CompteBanque> EnrichirAvecSoldeCalcules(IEnumerable<CompteBanque> comptes) { // Inputs: opérations FacadeRepo facade = new FacadeRepo(uow, groupeId); InputSoldeCompteBanqueRaws inputRaws = facade.InputSoldeCompteBanqueRaws(); // Enrichissement avec Calcul des soldes raw estimation pour les comptes banque var s1 = new CompteBanqueRawSoldeOperationEnrichisseur(); s1.Executer(comptes.ToList(), inputRaws); // Retour return comptes; }
// Calcul des soldes opérations pour une série d'opérations et une série de comte banque public void EnrichirAvecSoldeNonArchivable(IEnumerable<CompteBanque> comptes) { // Reset solde opérations comptes.ToList().ForEach(c => c.SoldeOperationNonArchivables = 0.0M); comptes.ToList().ForEach(c => c.SoldeNonArchivable = 0.0M); // Inputs: opérations FacadeRepo facade = new FacadeRepo(uow, groupeId); InputSoldeCompteBanques inputs = facade.InputSoldeNonArchivableCompteBanques(dateLimiteArchivage); // Enrichissement solde des opérations var enrichisseur = new CompteBanqueSoldeOperationNonArchivableEnrichisseur(); enrichisseur.Executer(comptes, inputs); // Enrichissement solde archive comptes.ToList().ForEach(c => c.EnrichirAvecSoldeNonArchivable()); }