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