public IList<MovimentoContabileBollettaDTO> GetRipartizioneByUtenza(int idUtenza, RipartizioneBollettaDTO ripartizioneCondominio, bool decodificaDescrizione) { try { var utenza = _daoFactory.GetUtenzaDao().Find(idUtenza, false); var movimenti = new List<MovimentoContabileBollettaDTO>(); // ================================ // Ripartizione Movimenti // ================================ if (utenza?.ModelloRegistrazione != null) { foreach (var conto in utenza.ModelloRegistrazione.Conti) { try { if(conto.ContoRiferimento != null) { var ripartizioneModello = conto.Unita.Where(item => item.UnitaRiferimento != null || item.LottoRiferimento != null || item.PalazzinaRiferimento != null || item.GruppoStabileRiferimento != null).ToList(); var movimento = new MovimentoContabileBollettaDTO { ID = 0, IdConto = conto.ContoRiferimento.ID, PercentualeRiparto = conto.PercentualeRipartizione, MovimentoEconomico = true }; if (conto.SottoContoRiferimento != null) movimento.IdSottoConto = conto.SottoContoRiferimento.ID; // ---------------------------------------------------------- // Ripartizione Lotti, Stabili, Gruppi e Unità Immobiliari // ---------------------------------------------------------- RipartizioneBollettaDTO ripartizione; if (ripartizioneCondominio != null) ripartizione = (RipartizioneBollettaDTO)ripartizioneCondominio.Clone(); else ripartizione = GetRipartizioneByCondominio(utenza.Condominio, DateTime.Today, false); // Inizializzo il flag di selezione // -------------------------------- // Lotti movimento.RipartoAggiornato = "U"; foreach (var item in ripartizione.Lotti) { item.Selezionato = getSelezionatoLotto(_daoFactory.GetLottoDao().GetById(item.ID, false), ripartizioneModello); if (item.Selezionato) movimento.RipartoAggiornato = "L"; } // Stabili foreach (var item in ripartizione.Stabili) { item.Selezionato = getSelezionatoStabile(_daoFactory.GetPalazzinaDao().GetById(item.ID, false), ripartizioneModello); if (item.Selezionato) movimento.RipartoAggiornato = "S"; } // Scale foreach (var item in ripartizione.Gruppi) { item.Selezionato = getSelezionatoScala(_daoFactory.GetGruppoStabileDao().GetById(item.ID, false), ripartizioneModello); if (item.Selezionato) movimento.RipartoAggiornato = "G"; } // Unità Immobiliari foreach (var item in ripartizione.UnitaImmobiliari) item.Selezionato = getSelezionatoUnita(_daoFactory.GetUnitaImmobiliareDao().GetById(item.ID, false), ripartizioneModello); movimento.Ripartizione = ripartizione; movimenti.Add(movimento); } else { _log.WarnFormat("ATTENZIONE Modello con riga di riparto senza conto definito - {0} - conto:{1} - utenza:{2}", Utility.GetMethodDescription(), conto.ID, idUtenza); } } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura di una ripartizione per utenza - Conto - {0} - conto:{1} - utenza:{2}", ex, Utility.GetMethodDescription(), conto.ID, idUtenza); throw; } } } return movimenti; } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura di una ripartizione per utenza - {0} - idUtenza:{1}", ex, Utility.GetMethodDescription(), idUtenza); throw; } }
public IList<MovimentoContabileBollettaDTO> GetRipartizioneByBolletta(int idBolletta) { try { var spesa = _daoFactory.GetSpesaDao().GetById(idBolletta, false); var movimenti = new List<MovimentoContabileBollettaDTO>(); // ================================ // Movimenti // ================================ foreach (var movimento in spesa.MovimentiBollette) { try { var movimentoDto = new MovimentoContabileBollettaDTO { ID = movimento.ID, IdConto = movimento.ContoRiferimento.ID, Importo = movimento.GetImportoConSegno(), PercentualeRiparto = (spesa.ImportoBolletta != 0) ? movimento.GetImportoConSegno() / spesa.ImportoBolletta : 0, Descrizione = movimento.Descrizione, MovimentoEconomico = true }; if (movimento.SottoContoRiferimento != null) movimentoDto.IdSottoConto = movimento.SottoContoRiferimento.ID; // ---------------------------------------------------------- // Ripartizione Lotti, Stabili, Gruppi e Unità Immobiliari // ---------------------------------------------------------- var ripartizione = GetRipartizioneByCondominio(spesa.EsercizioRiferimento.CondominioRiferimento, spesa.EsercizioRiferimento.DataApertura.GetValueOrDefault(), movimento.ContoRiferimento.IsSpesePersonali); // Inizializzo il flag di selezione // -------------------------------- movimentoDto.RipartoAggiornato = "U"; // Lotti if (!string.IsNullOrEmpty(movimento.LottiAddebito)) { var id = getIdArray(movimento.LottiAddebito.Split('&')); foreach (var item in ripartizione.Lotti) { item.Selezionato = id.Contains(item.ID); if (item.Selezionato) movimentoDto.RipartoAggiornato = "L"; } } // Stabili if (!string.IsNullOrEmpty(movimento.StabiliAddebito)) { var id = getIdArray(movimento.StabiliAddebito.Split('&')); foreach (var item in ripartizione.Stabili) { item.Selezionato = id.Contains(item.ID); if (item.Selezionato) movimentoDto.RipartoAggiornato = "S"; } } // Scale if (!string.IsNullOrEmpty(movimento.GruppiAddebito)) { var id = getIdArray(movimento.GruppiAddebito.Split('&')); foreach (var item in ripartizione.Gruppi) { item.Selezionato = id.Contains(item.ID); if (item.Selezionato) movimentoDto.RipartoAggiornato = "G"; } } // Unità Immobiliari foreach (var unita in ripartizione.UnitaImmobiliari) unita.Selezionato = movimento.DettaglioRipartizione.Any(item => (item.UnitaRiferimento != null && item.UnitaRiferimento.ID == unita.ID) || (item.SoggettoCondominio != null && item.SoggettoCondominio.UnitaImmobiliare.ID == unita.ID)); movimentoDto.Ripartizione = ripartizione; movimenti.Add(movimentoDto); } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura di una ripartizione per bolletta - MOVIMENTO - {0} - idMovimento:{1} - idBolletta:{2}", ex, Utility.GetMethodDescription(), movimento.ID, idBolletta); throw; } } // ================================ // Se l'importo della spesa è 0 e NON sono in un caso di riparto personalizzato // recupero le percentuali dal modello // ================================ if (spesa.ImportoBolletta == 0 && !spesa.IsRipartoPersonalizzato && spesa.Utenza?.ModelloRegistrazione != null) { var indexMovimento = 0; foreach (var conto in spesa.Utenza.ModelloRegistrazione.Conti) { if (movimenti.Count > indexMovimento) { movimenti[indexMovimento].PercentualeRiparto = conto.PercentualeRipartizione; indexMovimento++; } } } return movimenti; } catch (Exception ex) { _log.ErrorFormat("Errore durante la lettura di una ripartizione per utenza - {0} - idBolletta:{1}", ex, Utility.GetMethodDescription(), idBolletta); throw; } }
public RipartizioneBollettaDTO SetRipartizione(string tipo, BusinessInstanceSelectedDTO item, RipartizioneBollettaDTO ripartizione, MovimentoContabileBollettaDTO dto) { try { if (ripartizione != null) { dto.RipartoAggiornato = tipo; if (tipo != "L") { foreach (BusinessInstanceSelectedDTO lotto in ripartizione.Lotti) lotto.Selezionato = false; } if (tipo != "S") { foreach (BusinessInstanceSelectedDTO stabile in ripartizione.Stabili) stabile.Selezionato = false; } if (tipo != "G") { foreach (BusinessInstanceSelectedDTO scala in ripartizione.Gruppi) scala.Selezionato = false; } } else { var log = LogManager.GetLogger("Sfera"); log.Fatal("ATTENZIONE: Ripartizione a null - " + Utility.GetMethodDescription() + " - tipo: " + tipo); } return ripartizione; } catch (Exception ex) { var log = LogManager.GetLogger("Sfera"); log.Fatal("Errore inaspettato durante il set della ripartizione per una bolletta - " + Utility.GetMethodDescription() + " - tipo: " + tipo, ex); throw; } }