public decimal GetImportoCompetenza(decimal importo, IRipartizioneSpesa movimento, TipoSoggetto tipoSoggetto, int? anno, int? detrazione)
        {
            decimal importoCompetenza;

            var contoRiferimento = movimento.ContoRiferimento;
            var sottoContoRiferimento = movimento.SottoContoRiferimento;

            if (anno != null)
                importo = importo*movimento.GetPercentualePagata(anno, detrazione);

            var percentualeProprieta = contoRiferimento.PercentualeProprieta;
            if (sottoContoRiferimento?.PercentualeProprieta != null)
                percentualeProprieta = sottoContoRiferimento.PercentualeProprieta.Value;
            if (movimento.PercentualeProprieta != null)
                percentualeProprieta = movimento.PercentualeProprieta.Value;
            var importoCompetenzaProprietario = importo * percentualeProprieta;

            if (tipoSoggetto == TipoSoggetto.Proprietario)
                importoCompetenza = importoCompetenzaProprietario;
            else
                importoCompetenza = importo - importoCompetenzaProprietario;

            return importoCompetenza;
        }
        public decimal GetImportoCompetenza(decimal? importo, GruppoStabile gruppo, IRipartizioneSpesa movimento, List<int> stabili, List<int> gruppi, TipoSoggetto tipoSoggetto, int? anno, int? detrazione)
        {
            if (importo == null)
                importo = movimento.GetImportoConSegno(detrazione != null).GetValueOrDefault();

            if (gruppo == null)
                return GetImportoCompetenza(importo.GetValueOrDefault() * movimento.GetPercentualePagata(anno, detrazione), movimento, tipoSoggetto);

            var contoRiferimento = movimento.ContoRiferimento;

            if (gruppi == null && !string.IsNullOrEmpty(movimento.GruppiAddebito))
                gruppi = movimento.GruppiAddebito.Split('&').Select(int.Parse).ToList();

            var millesimiTotali = _millesimiService.GetByConto(contoRiferimento, null, gruppi, movimento.GetEsercizio());
            if (millesimiTotali.Count > 0)
            {
                var millesimi = _millesimiService.GetByConto(contoRiferimento, null, new List<int> { gruppo.ID }, movimento.GetEsercizio());
                var denominatore = millesimiTotali.Sum(item => item.Valore.GetValueOrDefault());
                if(denominatore != 0)
                    importo = importo.GetValueOrDefault() * millesimi.Sum(item => item.Valore.GetValueOrDefault()) / denominatore;
            }
            else
                importo = movimento.GetImportoConSegno(detrazione != null).GetValueOrDefault();
            
            return GetImportoCompetenza(importo.GetValueOrDefault(), movimento, tipoSoggetto, anno, detrazione);
        }