/// <summary> /// Crea una Spesa Unità valida /// </summary> public SpeseUnita(decimal? importo, UnitaImmobiliare unita, SoggettoCondominio soggettoCondominio, RipartizioneSpesa ripartizioneSpesa) { _importo = importo; _unitaRiferimento = unita; _soggettoCondominio = soggettoCondominio; if (ripartizioneSpesa != null) { _ripartizioneSpesa = ripartizioneSpesa; _ripartizioneSpesa.DettaglioRipartizione.Add(this); } }
private RipartizioneSpesaDTO setRipartizioneSpesaDTO(RipartizioneSpesa item) { try { var dto = new RipartizioneSpesaDTO { ID = item.ID, GruppiAddebito = item.GruppiAddebito, IdConto = item.ContoRiferimento.ID, IdSottoConto = item.SottoContoRiferimento != null ? item.SottoContoRiferimento.ID : (int?) null, Importo = item.Importo, LottiAddebito = item.LottiAddebito, Segno = item.Segno, Descrizione = item.Descrizione, Stato = "RIPARTIZIONE" }; return dto; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato nella creazione dell'istanza DTO per un dettaglio di una spesa - {0} - ripartizione:{1}", ex, Utility.GetMethodDescription(), item.ID); throw; } }
public RipartizioneSpesaDTO GetRipartizioneSpesaByDomainEntity(RipartizioneSpesa ripartizioneSpesa) { try { return setRipartizioneSpesaDTO(ripartizioneSpesa); } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento dei movimenti da item spesa - {0} - id:{1}", ex, Utility.GetMethodDescription(), ripartizioneSpesa != null ? ripartizioneSpesa.ID.ToString(CultureInfo.InvariantCulture) : "<NULL>"); throw; } }
public string SalvaMovimentiDetrazione(IList<SpesaDetrazioneDTO> speseDetrazione) { try { var message = string.Empty; if (speseDetrazione != null) { foreach (var spesaDetrazioneDTO in speseDetrazione) { if (spesaDetrazioneDTO != null) { var spesa = _daoFactory.GetSpesaDao().Find(spesaDetrazioneDTO.ID, false); if (spesa != null) { spesa.RipartizioneSpesa.Clear(); foreach (var ripartizioneSpesaDTO in spesaDetrazioneDTO.RipartizioneDetrazione) { try { var ripartizioneDetrazione = _daoFactory.GetRipartizioneSpesaDao().Find(ripartizioneSpesaDTO.ID, false); if (ripartizioneDetrazione == null) { var conto = _daoFactory.GetContoDao().Find(ripartizioneSpesaDTO.IdConto, false); var segno = "D"; if (ripartizioneSpesaDTO.Importo < 0) { segno = "A"; ripartizioneSpesaDTO.Importo = ripartizioneSpesaDTO.Importo * -1; } SottoConto sottoconto = null; if (ripartizioneSpesaDTO.IdSottoConto != null) sottoconto = _daoFactory.GetSottoContoDao().Find(ripartizioneSpesaDTO.IdSottoConto.Value, false); if (spesa != null && conto != null) { ripartizioneDetrazione = new RipartizioneSpesa(spesa, conto, sottoconto, ripartizioneSpesaDTO.Importo, segno, ripartizioneSpesaDTO.Descrizione); _daoFactory.GetRipartizioneSpesaDao().SaveOrUpdate(ripartizioneDetrazione); } } else { ripartizioneDetrazione.Importo = ripartizioneSpesaDTO.Importo; ripartizioneDetrazione.Descrizione = ripartizioneSpesaDTO.Descrizione; spesa.RipartizioneSpesa.Add(ripartizioneDetrazione); } if (ripartizioneDetrazione != null) { if (ripartizioneDetrazione.ContoRiferimento.ID != ripartizioneSpesaDTO.IdConto) { ripartizioneDetrazione.ContoRiferimento = _daoFactory.GetContoDao().Find(ripartizioneSpesaDTO.IdConto, false); if (ripartizioneSpesaDTO.IdSottoConto != null) ripartizioneDetrazione.SottoContoRiferimento = _daoFactory.GetSottoContoDao().Find(ripartizioneSpesaDTO.IdSottoConto.Value, false); } // =================================================== // Elaborazione ripartizione // =================================================== if (ripartizioneSpesaDTO.Ripartizione != null) { ripartizioneDetrazione.LottiAddebito = string.Empty; ripartizioneDetrazione.StabiliAddebito = string.Empty; ripartizioneDetrazione.GruppiAddebito = string.Empty; foreach (var spesaUnita in ripartizioneDetrazione.DettaglioRipartizione) { spesaUnita.UnitaRiferimento?.DettaglioSpese.Remove(spesaUnita); spesaUnita.SoggettoCondominio?.DettaglioSpese.Remove(spesaUnita); _daoFactory.GetSpeseUnitaDao().Delete(spesaUnita); } ripartizioneDetrazione.DettaglioRipartizione.Clear(); // Lotti var lotti = ripartizioneSpesaDTO.Ripartizione.Lotti.SingleOrDefault(); if (lotti.Value.Any(item => !item.Selezionato) && lotti.Value.Any(item => item.Selezionato)) { var lottiAddebito = lotti.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, lotto) => current + (lotto.ID + "&")); ripartizioneDetrazione.LottiAddebito = lottiAddebito.Substring(0, lottiAddebito.Length - 1); continue; } // Stabili var stabili = ripartizioneSpesaDTO.Ripartizione.Stabili.SingleOrDefault(); if (stabili.Value.Any(item => !item.Selezionato) && stabili.Value.Any(item => item.Selezionato)) { var stabiliAddebito = stabili.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, stabile) => current + (stabile.ID + "&")); ripartizioneDetrazione.StabiliAddebito = stabiliAddebito.Substring(0, stabiliAddebito.Length - 1); continue; } // Gruppi var gruppi = ripartizioneSpesaDTO.Ripartizione.Gruppi.SingleOrDefault(); if (gruppi.Value.Any(item => !item.Selezionato) && gruppi.Value.Any(item => item.Selezionato)) { var gruppiAddebito = gruppi.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, gruppo) => current + (gruppo.ID + "&")); ripartizioneDetrazione.GruppiAddebito = gruppiAddebito.Substring(0, gruppiAddebito.Length - 1); continue; } // Unità Immobiliari var unita = ripartizioneSpesaDTO.Ripartizione.UnitaImmobiliari.SingleOrDefault(); ripartizioneDetrazione.IsRipartoPersonalizzato = false; if (unita.Value.Any(item => !item.Selezionato) && unita.Value.Any(item => item.Selezionato)) { var conto = ripartizioneDetrazione.ContoRiferimento; foreach (var unitaImmobiliare in unita.Value.Where(item => item.Selezionato)) { var speseUnita = conto.IsSpesePersonali ? new SpeseUnita(unitaImmobiliare.Importo, null, _daoFactory.GetSoggettoCondominioDao().GetById(unitaImmobiliare.ID, false), ripartizioneDetrazione) : new SpeseUnita(null, _daoFactory.GetUnitaImmobiliareDao().GetById(unitaImmobiliare.ID, false), null, ripartizioneDetrazione); _daoFactory.GetSpeseUnitaDao().SaveOrUpdate(speseUnita); } ripartizioneDetrazione.IsRipartoPersonalizzato = true; } } } } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio dei movimenti per detrazione - SINGOLO MOVIMENTO - {0} - movimento:{1}", ex, Utility.GetMethodDescription(), ripartizioneSpesaDTO.ID); throw; } } } } } } return message; } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio dei movimenti per detrazione - {0}", ex, Utility.GetMethodDescription()); throw; } }