// Calcul des soldes opérations pour une série d'opérations et une série de budgets
        public void Executer(InputSoldeBudgets inputs
            , IEnumerable<Budget> budgets
            )
        {
            // Inputs
            IEnumerable<Operation> operations = inputs.operations;
            IEnumerable<MouvementBudget> mouvements = inputs.mouvements;
            IEnumerable<FinancementBudget> financementBudgets = inputs.financementBudgets;

            // Enrichissement avec calcul solde opérations et nbre opés
            var budgetsEnrichis = budgets.GroupJoin(operations
                , b => b.Id, o => o.CompteAId
                    , (b, opes) => b.CalculerCompteurs_CompteA_Archivable(opes)
                        )
                        .GroupJoin(operations
                , b => b.Id, o => o.CompteBId
                    , (b, opes) => b.CalculerCompteurs_CompteB_Archivable(opes)
                        )
                        .GroupJoin(mouvements
                , b => b.Id, m => m.BudgetId
                    , (b, ms) => b.CalculerCompteursProvisions_Archivable(ms)
                        )
                        .GroupJoin(financementBudgets
                , b => b.Id, f => f.BudgetId
                    , (b, fiBus) => b.CalculerCompteursFinancementBudgets_Archivable(fiBus)
                        )
                        .ToList()
                        ;
        }
        // Calcul des montants des soldes budgets
        public void EnrichirMontants(IList<SoldeBudget> _soldeBudgets
            , InputSoldeBudgets _inputs
            )
        {
            // Inputs
            IQueryable<Operation> _operations = _inputs.operations.AsQueryable<Operation>();
            IQueryable<MouvementBudget> _mouvements = _inputs.mouvements.AsQueryable<MouvementBudget>();
            IQueryable<FinancementBudget> _financementBudgets = _inputs.financementBudgets.AsQueryable<FinancementBudget>();
            IQueryable<EcheanceContrat> _echeances = _inputs.echeanceAVenirs.AsQueryable<EcheanceContrat>();
            IQueryable<MouvementBudget> _mouvementAVenirs = _inputs.mouvementAVenirs.AsQueryable<MouvementBudget>();

            // Jointures pour produire les feeds
            _soldeBudgets = _soldeBudgets.GroupJoin(_operations
                , _solde => _solde.Budget.Id, ope => ope.CompteAId
                    , (_solde, opeAs) => _solde.CalculerMontantOperationsRealiseesA(opeAs)
                        )
                        .GroupJoin(_operations
                , _solde => _solde.Budget.Id, ope => ope.CompteBId
                    , (_solde, opeBs) => _solde.CalculerMontantOperationsRealiseesB(opeBs)
                        )
                        .GroupJoin(_echeances
                , _solde => _solde.Budget.Id, ech => ech.Contrat.BudgetId
                    , (_solde, echeances) => _solde.CalculerMontantEcheancesAVenir(echeances)
                        )
                        .GroupJoin(_mouvements
                , _solde => _solde.Budget.Id, mouv => mouv.BudgetId
                    , (_solde, mouvementRealises) => _solde.CalculerMontantMouvementBudgetsRealises(mouvementRealises)
                        )
                        .GroupJoin(_mouvementAVenirs
                , _solde => _solde.Budget.Id, mouv => mouv.BudgetId
                    , (_solde, mouvementAVenirs) => _solde.CalculerMontantMouvementBudgetsAVenir(mouvementAVenirs)
                        )
                        .GroupJoin(_financementBudgets
                , _solde => _solde.Budget.Id, fi => fi.BudgetId
                    , (_solde, financementBudgets) => _solde.CalculerMontantFinancementBudgetRealises(financementBudgets)
                        )
                        .ToList()
                        ;

            //return _soldeBudgets;
        }