Exemple #1
0
 private static bool isRipartita(IMovimentiContainer testata)
 {
     return testata.Movimenti.Any(movimento => movimento.ContoRiferimento.IsSpesePersonali || movimento.DettaglioRipartizione.Count > 0);
 }
        public ModelloRegistrazioneContabile SalvaModelloRipartizioneContabile(RipartizioneSpeseDTO ripartizione, IMovimentiContainer containerMovimenti, List<MovimentoContabileDTO> movimentiEconomici, decimal importo)
        {
            // Salvataggio modello
            if ( !string.IsNullOrEmpty(ripartizione?.NomeModello))
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                var ripartizioneSpeseService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IRipartizioneSpeseService>();
                var esercizio = daoFactory.GetEsercizioDao().GetById(ripartizione.Testata.IdEsercizio.GetValueOrDefault(), false);
                foreach (var movimento in movimentiEconomici)
                {
                    if (ripartizione.UnitaImmobiliari != null)
                    {
                        var key = ripartizioneSpeseService.GetKey(movimento);
                        if (ripartizione.Lotti.ContainsKey(key) && getListaModificata(ripartizione.Lotti[key]))
                            ripartizioneSpeseService.SetLottiDataSource(key, ripartizione.Lotti[key]);
                        if (ripartizione.Stabili.ContainsKey(key) && getListaModificata(ripartizione.Stabili[key]))
                            ripartizioneSpeseService.SetStabiliDataSource(key, ripartizione.Stabili[key]);
                        if (ripartizione.Gruppi.ContainsKey(key) && getListaModificata(ripartizione.Gruppi[key]))
                            ripartizioneSpeseService.SetGruppiDataSource(key, ripartizione.Gruppi[key]);
                        if(ripartizione.UnitaImmobiliari.ContainsKey(key))
                            ripartizioneSpeseService.SetUnitaDataSource(key, ripartizione.UnitaImmobiliari[key]);
                    }
                }
                ISet<MovimentoContabile> movimenti = new HashSet<MovimentoContabile>();
                foreach (var movimento in containerMovimenti.Movimenti.Where(movimento => movimento.IsEconomico()))
                {
                    movimenti.Add(movimento);
                }

                var modello = ripartizioneSpeseService.CreateModelloRipartizione(esercizio.CondominioRiferimento.ID, movimenti, importo, ripartizione.NomeModello, ripartizione.DescrizioneVoceSpesa);
                daoFactory.GetModelloRegistrazioneContabileDao().SaveOrUpdate(modello);
                return modello;
            }

            return null;
        }