public PianoRatealeDTO GetByDomainEntity(PianoRateale item) { try { return setDto(item, true); } catch (Exception ex) { _log.ErrorFormat("Errore nel caricamento del piano rateale - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), item.ID, _info.Azienda); throw; } }
/// <summary> /// Crea un dettaglio di piano di riparto valido. /// </summary> public PianoRatealeDettaglio(PianoRateale pianoRatealeRiferimento, DateTime? dataScadenza, decimal? percentualeRiparto, int progressivoRata, bool daSubentro, LogTransazione logTransazione) { PianoRatealeRiferimento = pianoRatealeRiferimento; DataScadenza = dataScadenza; PercentualeRiparto = percentualeRiparto; Progressivo = progressivoRata; Stato = StatoRataEnum.Inserita; DaSubentro = daSubentro; if (pianoRatealeRiferimento != null) pianoRatealeRiferimento.Rate.Add(this); LogTransazione = logTransazione; if (LogTransazione != null) LogTransazione.PianoRatealeDettaglio.Add(this); }
private ImpostazioneReportDTO setDto(ImpostazioniReport item, IList<Conto> conti, IList<DatiBancariCondomini> banche, PianoRateale pianoRateale, IDaoFactory daoFactory) { try { if (item != null) { const float tolerance = 0.01f; var dto = new ImpostazioneReportDTO { ID = item.ID, ReportKey = item.ReportKey, FontName = item.DefaultFont.Name, FontSize = item.DefaultFont.Size, FontStyle = item.DefaultFont.Style, Descrizione = item.Descrizione, TipoLogo = item.TipoLogo, PosizioneLogo = item.PosizioneLogo, PaperKind = item.PaperKind, Landscape = item.Landscape, CellPadding = item.CellPadding, CaptionBackColor = item.CaptionBackColor, HeaderBackColor = item.HeaderBackColor, TotaleBackColor = item.TotaleBackColor, CaptionRowHeight = item.CaptionRowHeight, CaptionTopMargin = item.CaptionTopMargin, CaptionLeftMargin = item.CaptionLeftMargin, HeaderRowHeight = item.HeaderRowHeight, TotaleRowHeight = item.TotaleRowHeight, ArrotondamentiRowHeight = item.ArrotondamentiRowHeight, RowHeight = item.RowHeight, CaptionAlignment = item.CaptionAlignment, HeaderAlignment = item.HeaderAlignment, BorderColor = item.BorderColor, BorderInsideGroup = item.BorderInsideGroup, DescrizioneContoCompleta = item.DescrizioneContoCompleta, StabilePageBreak = item.StabilePageBreak, ScalaPageBreak = item.ScalaPageBreak, StabileTotali = item.StabileTotali, ScalaTotali = item.ScalaTotali, MultiPage = item.MultiPage, MultiPageOrdered = item.MultiPageOrdered, RiepilogoText = item.RiepilogoText, RiepilogoTopMargin = item.RiepilogoTopMargin, RiepilogoLeftMargin = item.RiepilogoLeftMargin, RiepilogoRtf = item.RiepilogoRtf, IndirizzoDestinatarioTopMargin = item.IndirizzoDestinatarioTopMargin, IndirizzoDestinatarioLeftMargin = item.IndirizzoDestinatarioLeftMargin, IndirizzoDestinatarioRtf = item.IndirizzoDestinatarioRtf, IndirizzoPerConoscenzaTopMargin = item.IndirizzoPerConoscenzaTopMargin, IndirizzoPerConoscenzaLeftMargin = item.IndirizzoPerConoscenzaLeftMargin, IndirizzoPerConoscenzaRtf = item.IndirizzoPerConoscenzaRtf, TestoLetteraTopMargin = item.TestoLetteraTopMargin, TestoLetteraLeftMargin = item.TestoLetteraLeftMargin, TestoLetteraRtf = item.TestoLetteraRtf, TestoLetteraWidth = item.TestoLetteraWidth, TestoUnitaImmobiliareTopMargin = item.TestoUnitaImmobiliareTopMargin, TestoUnitaImmobiliareLeftMargin = item.TestoUnitaImmobiliareLeftMargin, TestoUnitaImmobiliareRtf = item.TestoUnitaImmobiliareRtf, FirmaLetteraTopMargin = item.FirmaLetteraTopMargin, FirmaLetteraLeftMargin = item.FirmaLetteraLeftMargin, FirmaLetteraRtf = item.FirmaLetteraRtf, PrintTotale = item.PrintTotale, TopMargin = 10, BottomMargin = 10, LeftMargin = 10, RightMargin = 10, FitToPage = item.FitToPage, DateTimeFormat = item.DateTimeFormat, OrdineUnitaAllRows = item.OrdineUnitaAllRows, NoteBorder = item.NoteBorder, NoteWidth = item.NoteWidth, NotePadding = item.NotePadding, NoteTopMargin = item.NoteTopMargin, NoteLeftMargin = item.NoteLeftMargin, HeaderContoBackColor = item.HeaderContoBackColor, TotaleContoBackColor = item.TotaleContoBackColor, HeaderSottoContoBackColor = item.HeaderSottoContoBackColor, TotaleSottoContoBackColor = item.TotaleSottoContoBackColor, TotaleStabileBackColor = item.TotaleStabileBackColor, TotaleScalaBackColor = item.TotaleScalaBackColor, SottoContoTotali = item.SottoContoTotali, DettaglioPersonali = item.DettaglioPersonali, OrdineStampaMovimenti = item.OrdineStampaMovimenti, NumeroColonne = item.NumeroColonne, DirezioneColonne = item.DirezioneColonne, OrdineStampaContoSottoconto = item.OrdineStampaContoSottoconto, LimitePagamenti = item.LimitePagamenti, TemplateFatturePagate = item.TemplateFatturePagate, Dettaglio = new List<ImpostazioneReportDettaglioDTO>(item.Dettaglio.Count) }; if (dto.TestoLetteraWidth == null) dto.TestoLetteraWidth = 600f; if (dto.DateTimeFormat == DateTimeFormat.Undefined) dto.DateTimeFormat = DateTimeFormat.ShortDateTime; #region Bilancio Annuale if (item.HeaderContoFont != null) { dto.HeaderContoFontName = item.HeaderContoFont.Name; dto.HeaderContoFontSize = item.HeaderContoFont.Size; dto.HeaderContoFontStyle = item.HeaderContoFont.Style; } if (item.TotaleContoFont != null) { dto.TotaleContoFontName = item.TotaleContoFont.Name; dto.TotaleContoFontSize = item.TotaleContoFont.Size; dto.TotaleContoFontStyle = item.TotaleContoFont.Style; } if (item.HeaderSottoContoFont != null) { dto.HeaderSottoContoFontName = item.HeaderSottoContoFont.Name; dto.HeaderSottoContoFontSize = item.HeaderSottoContoFont.Size; dto.HeaderSottoContoFontStyle = item.HeaderSottoContoFont.Style; } if (item.TotaleSottoContoFont != null) { dto.TotaleSottoContoFontName = item.TotaleSottoContoFont.Name; dto.TotaleSottoContoFontSize = item.TotaleSottoContoFont.Size; dto.TotaleSottoContoFontStyle = item.TotaleSottoContoFont.Style; } if (item.TotaleStabileFont != null) { dto.TotaleStabileFontName = item.TotaleStabileFont.Name; dto.TotaleStabileFontSize = item.TotaleStabileFont.Size; dto.TotaleStabileFontStyle = item.TotaleStabileFont.Style; } if (item.TotaleScalaFont != null) { dto.TotaleScalaFontName = item.TotaleScalaFont.Name; dto.TotaleScalaFontSize = item.TotaleScalaFont.Size; dto.TotaleScalaFontStyle = item.TotaleScalaFont.Style; } #endregion Bilancio Annuale if (dto.RowHeight == null) dto.RowHeight = 23f; if (dto.TotaleRowHeight == null) dto.TotaleRowHeight = 23f; if (dto.CellPadding == null) dto.CellPadding = 4; if (dto.HeaderAlignment == null) dto.HeaderAlignment = TextAlignmentEnum.TopCenter; if (item.Condominio != null) dto.IdCondominio = item.Condominio.ID; if (item.ReportMargin != null) { dto.TopMargin = item.ReportMargin.Top; dto.BottomMargin = item.ReportMargin.Bottom; dto.LeftMargin = item.ReportMargin.Left; dto.RightMargin = item.ReportMargin.Right; } if (item.CaptionFont != null) { dto.CaptionFontName = item.CaptionFont.Name; dto.CaptionFontSize = item.CaptionFont.Size; dto.CaptionFontStyle = item.CaptionFont.Style; } if (item.HeaderFont != null) { dto.HeaderFontName = item.HeaderFont.Name; dto.HeaderFontSize = item.HeaderFont.Size; dto.HeaderFontStyle = item.HeaderFont.Style; } if (item.TotaleFont != null) { dto.TotaleFontName = item.TotaleFont.Name; dto.TotaleFontSize = item.TotaleFont.Size; dto.TotaleFontStyle = item.TotaleFont.Style; } if (item.ArrotondamentiFont != null) { dto.ArrotondamentiFontName = item.ArrotondamentiFont.Name; dto.ArrotondamentiFontSize = item.ArrotondamentiFont.Size; dto.ArrotondamentiFontStyle = item.ArrotondamentiFont.Style; } if (item.PageInfoFont != null) { dto.PageInfoFontName = item.PageInfoFont.Name; dto.PageInfoFontSize = item.PageInfoFont.Size; dto.PageInfoFontStyle = item.PageInfoFont.Style; } if (item.MillesimiFont != null) { dto.MillesimiFontName = item.MillesimiFont.Name; dto.MillesimiFontSize = item.MillesimiFont.Size; dto.MillesimiFontStyle = item.MillesimiFont.Style; } if (item.RiepilogoFont != null) { dto.RiepilogoFontName = item.RiepilogoFont.Name; dto.RiepilogoFontSize = item.RiepilogoFont.Size; dto.RiepilogoFontStyle = item.RiepilogoFont.Style; } if (item.ImportoRiepilogoFont != null) { dto.ImportoRiepilogoFontName = item.ImportoRiepilogoFont.Name; dto.ImportoRiepilogoFontSize = item.ImportoRiepilogoFont.Size; dto.ImportoRiepilogoFontStyle = item.ImportoRiepilogoFont.Style; } #region Legenda Unità Immobiliare dto.LegendaUnitaCaptionBackColor = item.LegendaUnitaCaptionBackColor; dto.LegendaUnitaCodiceWidth = item.LegendaUnitaCodiceWidth; dto.LegendaUnitaDescrizioneWidth = item.LegendaUnitaDescrizioneWidth; dto.LegendaUnitaTipoWidth = item.LegendaUnitaTipoWidth; dto.LegendaUnitaInternoWidth = item.LegendaUnitaInternoWidth; dto.LegendaUnitaSubalternoWidth = item.LegendaUnitaSubalternoWidth; if (item.LegendaUnitaCaptionFont != null) { dto.LegendaUnitaCaptionFontName = item.LegendaUnitaCaptionFont.Name; dto.LegendaUnitaCaptionFontSize = item.LegendaUnitaCaptionFont.Size; dto.LegendaUnitaCaptionFontStyle = item.LegendaUnitaCaptionFont.Style; } if (item.LegendaUnitaHeaderFont != null) { dto.LegendaUnitaHeaderFontName = item.LegendaUnitaHeaderFont.Name; dto.LegendaUnitaHeaderFontSize = item.LegendaUnitaHeaderFont.Size; dto.LegendaUnitaHeaderFontStyle = item.LegendaUnitaHeaderFont.Style; } if (item.LegendaUnitaTabellaFont != null) { dto.LegendaUnitaTabellaFontName = item.LegendaUnitaTabellaFont.Name; dto.LegendaUnitaTabellaFontSize = item.LegendaUnitaTabellaFont.Size; dto.LegendaUnitaTabellaFontStyle = item.LegendaUnitaTabellaFont.Style; } #endregion Legenda Unità Immobiliare if (item.LogoLocation != null) { dto.LogoLocationX = item.LogoLocation.LocationX; dto.LogoLocationY = item.LogoLocation.LocationY; } if (item.LogoSize != null) { dto.LogoWidth = item.LogoSize.Width; dto.LogoHeight = item.LogoSize.Height; } if (item.ReportSize != null) { dto.ReportWidth = Convert.ToInt32(item.ReportSize.Width); dto.ReportWidth = Convert.ToInt32(item.ReportSize.Height); } foreach (var impostazioniReportDettaglio in item.Dettaglio) { var dettaglioDTO = new ImpostazioneReportDettaglioDTO { ID = impostazioniReportDettaglio.ID, Hidden = impostazioniReportDettaglio.Hidden, ColumnType = impostazioniReportDettaglio.ColumnType, Width = impostazioniReportDettaglio.Width, WidthMillesimi = impostazioniReportDettaglio.WidthMillesimi, PrintPage = impostazioniReportDettaglio.PrintPage, OrdineConto = impostazioniReportDettaglio.OrdineConto, Conto = impostazioniReportDettaglio.ColumnType.ToString(), DescrizioneImporto = impostazioniReportDettaglio.DescrizioneImporto, DescrizioneMillesimi = impostazioniReportDettaglio.DescrizioneMillesimi, HideMillesimi = impostazioniReportDettaglio.HideMillesimi, GroupName = impostazioniReportDettaglio.GroupName }; if (impostazioniReportDettaglio.Font != null) { dettaglioDTO.FontName = impostazioniReportDettaglio.Font.Name; if (impostazioniReportDettaglio.Font.Size > 0) dettaglioDTO.FontSize = impostazioniReportDettaglio.Font.Size; if (!string.IsNullOrEmpty(impostazioniReportDettaglio.Font.Style)) dettaglioDTO.FontStyle = impostazioniReportDettaglio.Font.Style; } if (impostazioniReportDettaglio.MillesimiFont != null) { dettaglioDTO.MillesimiFontName = impostazioniReportDettaglio.MillesimiFont.Name; if (impostazioniReportDettaglio.MillesimiFont.Size > 0) dettaglioDTO.MillesimiFontSize = impostazioniReportDettaglio.MillesimiFont.Size; if (!string.IsNullOrEmpty(impostazioniReportDettaglio.MillesimiFont.Style)) dettaglioDTO.MillesimiFontStyle = impostazioniReportDettaglio.MillesimiFont.Style; } if (impostazioniReportDettaglio.Conto != null) { dettaglioDTO.IdConto = impostazioniReportDettaglio.Conto.ID; dettaglioDTO.Conto = impostazioniReportDettaglio.Conto.Descrizione; if (dettaglioDTO.OrdineConto.GetValueOrDefault() == 0) dettaglioDTO.OrdineConto = impostazioniReportDettaglio.Conto.Ordine; if (Math.Abs(impostazioniReportDettaglio.WidthMillesimi.GetValueOrDefault()) < tolerance) dettaglioDTO.WidthMillesimi = 50f; } else if (impostazioniReportDettaglio.PianoRatealeDettaglio != null) { dettaglioDTO.IdConto = impostazioniReportDettaglio.PianoRatealeDettaglio.ID; dettaglioDTO.Conto = impostazioniReportDettaglio.PianoRatealeDettaglio.Descrizione; if (dettaglioDTO.OrdineConto.GetValueOrDefault() == 0) dettaglioDTO.OrdineConto = impostazioniReportDettaglio.PianoRatealeDettaglio.Progressivo; } else { dettaglioDTO.Conto = impostazioniReportDettaglio.Nome; if (string.IsNullOrEmpty(dettaglioDTO.Conto)) dettaglioDTO.Conto = getColumnName(impostazioniReportDettaglio.ColumnType, impostazioniReportDettaglio.OrdineConto.GetValueOrDefault()); } if (impostazioniReportDettaglio.Banca != null) dettaglioDTO.IdBanca = impostazioniReportDettaglio.Banca.ID; if (Math.Abs(impostazioniReportDettaglio.Width.GetValueOrDefault()) < tolerance) dettaglioDTO.Width = getColumnWidth(impostazioniReportDettaglio.ColumnType, impostazioniReportDettaglio.OrdineConto.GetValueOrDefault()); dto.Dettaglio.Add(dettaglioDTO); } if (item.ReportKey == "PIARAT") { if (pianoRateale != null) { foreach (var rata in pianoRateale.Rate) { if (dto.Dettaglio.All(itemDettaglio => itemDettaglio.IdConto != rata.ID)) { var dettaglioDTO = new ImpostazioneReportDettaglioDTO { IdConto = rata.ID, Conto = rata.Descrizione, DescrizioneImporto = "Importo", ColumnType = ColumnTypeEnum.Conto, PrintPage = 1, OrdineConto = rata.Progressivo, Width = 80f, WidthMillesimi = 50f, FontStyle = "Bold" }; dto.Dettaglio.Add(dettaglioDTO); } } } addColumnConto(dto, -30); addColumnConto(dto, -20); addColumnConto(dto, -10); addColumn(ColumnTypeEnum.OrdineUnita, dto, -100, false); addColumn(ColumnTypeEnum.Nominativo, dto, -90, false); addColumn(ColumnTypeEnum.TipoUnita, dto, -80, true); addColumn(ColumnTypeEnum.Interno, dto, -70, true); addColumn(ColumnTypeEnum.Piano, dto, -60, true); addColumn(ColumnTypeEnum.Subalterno, dto, -50, true); addColumn(ColumnTypeEnum.ProprietaConduzione, dto, -40, false); } if (item.ReportKey == "RICECO") { addColumn(ColumnTypeEnum.Descrizione, dto, 10, false, null, 250); addColumn(ColumnTypeEnum.Importo, dto, 20, false, null, 110); } if (item.ReportKey.StartsWith("RIP")) { if (conti != null) { foreach (var conto in conti) { if (dto.Dettaglio.All(itemDettaglio => itemDettaglio.IdConto != conto.ID)) { var dettaglioDTO = new ImpostazioneReportDettaglioDTO { IdConto = conto.ID, Conto = conto.Descrizione, DescrizioneImporto = "Importo", DescrizioneMillesimi = "Mill.", ColumnType = ColumnTypeEnum.Conto, PrintPage = 1, OrdineConto = conto.Ordine, Width = 80f, WidthMillesimi = 50f }; if (conto.IsSpesePersonali) dettaglioDTO.HideMillesimi = true; dto.Dettaglio.Add(dettaglioDTO); } } } addColumnConto(dto, 9990); addColumnConto(dto, 9991); addColumnConto(dto, 9992); addColumnConto(dto, 9993); addColumnConto(dto, 9994); addColumnConto(dto, 9995); addColumnConto(dto, 9996); addColumnConto(dto, 9997); addColumn(ColumnTypeEnum.OrdineUnita, dto, -100, false); addColumn(ColumnTypeEnum.Nominativo, dto, -90, false); addColumn(ColumnTypeEnum.TipoUnita, dto, -80, true); addColumn(ColumnTypeEnum.Interno, dto, -70, true); addColumn(ColumnTypeEnum.Piano, dto, -60, true); addColumn(ColumnTypeEnum.Subalterno, dto, -50, true); addColumn(ColumnTypeEnum.ProprietaConduzione, dto, -40, false); addColumn(ColumnTypeEnum.MillesimiProprieta, dto, -30, true); } if (item.ReportKey.StartsWith("BIL")) { addColumn(ColumnTypeEnum.CodiceConto, dto, 10, false); addColumn(ColumnTypeEnum.DescrizioneConto, dto, 20, false); addColumn(ColumnTypeEnum.DataFattura, dto, 30, true); addColumn(ColumnTypeEnum.NumeroFattura, dto, 40, true); addColumn(ColumnTypeEnum.Protocollo, dto, 50, true); addColumn(ColumnTypeEnum.DataPagamento, dto, 60, true); addColumn(ColumnTypeEnum.DataVersamentoRitenuta, dto, 70, true); addColumn(ColumnTypeEnum.Fornitore, dto, 80, true); addColumn(ColumnTypeEnum.Importo, dto, 90, false); addColumn(ColumnTypeEnum.ImportoProprieta, dto, 100, true); addColumn(ColumnTypeEnum.ImportoConduzione, dto, 110, true); addColumn(ColumnTypeEnum.Totale, dto, 120, false); addColumn(ColumnTypeEnum.ImportoConsuntivoAnnoPrecedente, dto, 130, true); addColumn(ColumnTypeEnum.ImportoPreventivoAnnoPrecedente, dto, 140, true); addColumn(ColumnTypeEnum.ImportoScostamentoAnnoPrecedente, dto, 150, true); } if (item.ReportKey.StartsWith("REGCONT")) { addColumn(ColumnTypeEnum.NumeroRiga, dto, 10, false); addColumn(ColumnTypeEnum.Data, dto, 20, false); addColumn(ColumnTypeEnum.Descrizione, dto, 30, false); addColumn(ColumnTypeEnum.TipoDocumento, dto, 40, false, "Documento"); addColumn(ColumnTypeEnum.NumeroDocumento, dto, 50, false, "Documento"); addColumn(ColumnTypeEnum.DataDocumento, dto, 60, false, "Documento"); addColumn(ColumnTypeEnum.NumeroProtocollo, dto, 70, false, "Documento"); addColumn(ColumnTypeEnum.ImportoCassaDare, dto, 80, false, "Cassa"); addColumn(ColumnTypeEnum.ImportoCassaAvere, dto, 90, false, "Cassa"); addColumn(ColumnTypeEnum.ImportoCassaSaldo, dto, 100, false, "Cassa"); // Una colonna per ogni Banca if (banche != null) { var index = 100; foreach (var banca in banche.OrderBy(b => b.DataValidita.GetValueOrDefault())) { index = index + 10; addColumnBanca(dto, banca, index, daoFactory); } } } if (item.ReportKey.StartsWith("PERSRI")) { addColumn(ColumnTypeEnum.CodiceConto, dto, 10, false, null, 60); addColumn(ColumnTypeEnum.DescrizioneConto, dto, 20, false, null, 310); addColumn(ColumnTypeEnum.MillesimiProprieta, dto, 30, false, null, 80, "Mill."); addColumn(ColumnTypeEnum.Importo, dto, 40, false, null, 100); addColumn(ColumnTypeEnum.ImportoProprieta, dto, 50, true); addColumn(ColumnTypeEnum.ImportoConduzione, dto, 60, true); addColumn(ColumnTypeEnum.Totale, dto, 70, false, null, 100); } dto.Dettaglio = dto.Dettaglio.OrderBy(itemDettaglio => itemDettaglio.OrdineConto).ToList(); return dto; } return new ImpostazioneReportDTO(); } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura delle impostazioni di report - {0} - id:{1}", ex, Utility.GetMethodDescription(), item.ID); throw; } }
public string CopiaRate(IList<PianoRatealeDettaglioDTO> dettaglioRate, int idEsercizio, TipoAccorpamentoRateEnum tipoAccorpamento, LogTransazione logTransazione) { try { var message = string.Empty; LogTransazione logTransazioneDettaglio = null; var esercizio = _daoFactory.GetEsercizioDao().GetById(idEsercizio, false); PianoRateale pianoRateale; if (GetPianoRatealeByEsercizio(idEsercizio) != null) { pianoRateale = GetPianoRatealeByEsercizio(idEsercizio); logTransazioneDettaglio = logTransazione; } else pianoRateale = new PianoRateale(esercizio, tipoAccorpamento, logTransazione); int progressivo = 0; if(pianoRateale.Rate.Count > 0) progressivo = pianoRateale.Rate.Max(item => item.Progressivo); foreach (var dettaglioDto in dettaglioRate) { progressivo++; var dettaglio = _daoFactory.GetPianoRatealeDettaglioDao().GetById(dettaglioDto.ID, false); var dettaglioNew = new PianoRatealeDettaglio(pianoRateale, dettaglioDto.DataScadenza, null, progressivo, false, logTransazioneDettaglio) { Descrizione = dettaglioDto.Descrizione, IsAcconto = dettaglioDto.IsAcconto }; foreach (var rata in dettaglio.RateSoggetti.Where(item => !item.DaRichiamare)) { var rataNew = new RataSoggetto(esercizio, _soggettoService.GetSoggettoAttuale(rata.Soggetto, esercizio, esercizio.DataApertura.GetValueOrDefault()), dettaglioDto.DataScadenza, rata.Importo, null) {PianoRatealeDettaglio = dettaglioNew}; dettaglioNew.RateSoggetti.Add(rataNew); } } return message; } catch (Exception ex) { _log.ErrorFormat("Errore nella copia delle rate - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), idEsercizio); throw; } }
public string CreazioneRateFuoriPreventivo(Esercizio esercizio, Dictionary<DateTime, Dictionary<int, RataSoggettoDTO>> listaRate, bool daSubentro, string descrizione, LogTransazione logTransazione) { var message = string.Empty; var pianoCorrente = _daoFactory.GetPianoRatealeDao().GetByEsercizio(esercizio); if (pianoCorrente == null) { pianoCorrente = new PianoRateale(esercizio, TipoAccorpamentoRateEnum.Nessuno, logTransazione); _daoFactory.GetPianoRatealeDao().SaveOrUpdate(pianoCorrente); } foreach (var kvp in listaRate) { LogTransazione logTransazioneDettaglio = null; if (pianoCorrente.ID > 0) logTransazioneDettaglio = logTransazione; var dettaglio = new PianoRatealeDettaglio(pianoCorrente, kvp.Key, null, 0, daSubentro, logTransazioneDettaglio) { Importo = kvp.Value.Sum(rata => rata.Value.Importo) }; if (pianoCorrente.ID == 0) dettaglio.IsAcconto = true; if (!string.IsNullOrEmpty(descrizione) && descrizione.Length > 50) descrizione = descrizione.Substring(0, 50); dettaglio.Descrizione = descrizione; _daoFactory.GetPianoRatealeDettaglioDao().SaveOrUpdate(dettaglio); var progressivo = 0; foreach (var kvpDett in kvp.Value) { progressivo++; var rata = new RataSoggetto(dettaglio, _daoFactory.GetSoggettoCondominioDao().GetById(kvpDett.Value.IdSoggettoCondominio, false), kvp.Key, kvpDett.Value.Importo.GetValueOrDefault(), logTransazione) { Progressivo = progressivo }; _daoFactory.GetRataSoggettoDao().SaveOrUpdate(rata); } } return message; }
private PianoRatealeDettaglio getPianoRatealeDettaglio(Dictionary<DateTime, PianoRatealeDettaglio> dettagliPianoRateale, PianoRateale pianoRateale, Esercizio esercizio, RataSoggettoAggiornamentoDTO rata, bool rateAcconto, TipoAccorpamentoRateEnum tipo, LogTransazione logTransazione, LogTransazione logTransazioneDettaglio, string message) { if (dettagliPianoRateale.ContainsKey(rata.DataScadenza)) return dettagliPianoRateale[rata.DataScadenza]; var listaPianoRateale = _daoFactory.GetPianoRatealeDettaglioDao().GetByDataEsercizio(esercizio, rata.DataScadenza).Where(item => !item.DaSubentro).ToList(); if (listaPianoRateale.Count > 1) message += $"E' stato trovato più di un piano rateale per la data: {rata.DataScadenza:d} e il soggetto: {rata.IdSoggettoCondominio}{Environment.NewLine}"; else if (listaPianoRateale.Count == 1) return listaPianoRateale[0]; else if (listaPianoRateale.Count == 0) { if (pianoRateale == null) { pianoRateale = _daoFactory.GetPianoRatealeDao().GetByEsercizio(esercizio); if (pianoRateale == null) pianoRateale = new PianoRateale(esercizio, tipo, logTransazione); else logTransazioneDettaglio = logTransazione; } if(pianoRateale.LogTransazione == null || pianoRateale.LogTransazione.Identificativo != logTransazione.Identificativo) logTransazioneDettaglio = logTransazione; var pianoDettaglio = new PianoRatealeDettaglio(pianoRateale, rata.DataScadenza, null, pianoRateale.Rate.Count + 1, false, logTransazioneDettaglio); dettagliPianoRateale.Add(rata.DataScadenza, pianoDettaglio); var descrizione = "Rata manuale del "; if (rateAcconto) descrizione = "Rata di acconto del "; pianoDettaglio.Descrizione = descrizione + rata.DataScadenza.ToShortDateString(); pianoDettaglio.IsAcconto = rateAcconto; return pianoDettaglio; } return null; }
public void SalvaPianoRateale(PianoRatealeSoggetti pianoRatealeSoggetti, LogTransazione logTransazione) { /* Vecchio Codice per rimozione rendiconti // -------------------------------------------------- // Rimozione rendiconti preesistenti // -------------------------------------------------- Esercizio esercizio =_daoFactory.GetEsercizioDao().GetById(pianoRatealeSoggetti.PianoRateale.IdEsercizio, false); foreach (RendicontoAnnuale rendiconto in esercizio.Rendiconti) { foreach (PianoRateale piano in rendiconto.PianiRateali) { _daoFactory.GetPianoRatealeDao().Delete(piano); piano.Rendiconto = null; foreach (PianoRatealeDettaglio dettaglio in piano.Rate) dettaglio.PianoRatealeRiferimento = null; } rendiconto.PianiRateali.Clear(); } //List<RataSoggetto> rate = new List<RataSoggetto>(esercizio.Rate.Count); foreach (RataSoggetto rata in esercizio.Rate) { rata.Soggetto.Rate.Clear(); if (rata.PianoRatealeDettaglio != null) { rata.PianoRatealeDettaglio.RateSoggetti.Remove(rata); rata.PianoRatealeDettaglio = null; rata.Soggetto.Rate.Clear(); rata.Soggetto = null; } _daoFactory.GetRataSoggettoDao().Delete(rata); rate.Add(rata); } esercizio.Rate.Clear(); foreach (RataSoggetto rata in rate) { esercizio.Rate.Remove(rata); rata.Esercizio = null; } */ try { // ==================================================================================================== // Rimozione piani rateali preesistenti (solo se non è una rata di acconto) // ==================================================================================================== var esercizio = _daoFactory.GetEsercizioDao().Find(pianoRatealeSoggetti.PianoRateale.IdEsercizio, false); // leggo ora le rate da richiamare per evitare successivi problemi di cascade var rateDaRichiamare = _daoFactory.GetRataSoggettoDao().GetDaRichiamareByEsercizio(esercizio); var pianiEliminati = new List<PianoRateale>(); if (esercizio != null) { // ---------------------------------------------------------------------- // Rimozione piani da rendiconti // ---------------------------------------------------------------------- try { foreach (var rendiconto in esercizio.Rendiconti) { var pianiDaRimuovere = rendiconto.PianiRateali.ToList(); foreach (var piano in pianiDaRimuovere) { try { var listaDettaglioRate = piano.Rate.ToList(); foreach (var dettaglioPiano in listaDettaglioRate) { try { if (!dettaglioPiano.IsAcconto) { // Elimino impostazioni report dettaglio deleteImpostazioniReportDettaglioPiano(dettaglioPiano); piano.Rate.Remove(dettaglioPiano); dettaglioPiano.PianoRatealeRiferimento = null; if (dettaglioPiano.LogTransazione != null) { dettaglioPiano.LogTransazione.PianoRateale.Remove(piano); dettaglioPiano.LogTransazione = null; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - SINGOLO DETTAGLIO PIANO - {0} - dettaglio piano:{1}", ex, Utility.GetMethodDescription(), dettaglioPiano.ID); throw; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - SINGOlO PIANO - {0} - piano:{1}", ex, Utility.GetMethodDescription(), piano.ID); throw; } if (piano.Rate.Count == 0) { pianiEliminati.Add(piano); rendiconto.PianiRateali.Remove(piano); piano.Rendiconto = null; if (piano.LogTransazione != null) { piano.LogTransazione.PianoRateale.Remove(piano); piano.LogTransazione = null; } } } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - RIMOZIONE PIANI RATEALI DA RENDICONTI - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } // ---------------------------------------------------------------------- // Rimozione singole rate // ---------------------------------------------------------------------- var rateToDelete = new List<PianoRatealeDettaglio>(); var ratePresenti = esercizio.Rate.ToList(); ratePresenti.AddRange(rateDaRichiamare); try { foreach (var rata in ratePresenti) { try { if (rata.PianoRatealeDettaglio != null && !rata.PianoRatealeDettaglio.IsAcconto) { if (!rateToDelete.Contains(rata.PianoRatealeDettaglio)) rateToDelete.Add(rata.PianoRatealeDettaglio); rata.Esercizio?.Rate.Remove(rata); rata.PianoRatealeDettaglio.RateSoggetti.Remove(rata); rata.Esercizio = null; rata.PianoRatealeDettaglio = null; if (rata.Soggetto != null) { rata.Soggetto.Rate.Remove(rata); rata.Soggetto = null; } if (rata.SoggettoEmissione != null) { rata.SoggettoEmissione.Rate.Remove(rata); rata.SoggettoEmissione = null; } if (rata.LogTransazione != null) { rata.LogTransazione.Rate.Remove(rata); rata.LogTransazione = null; } //_daoFactory.GetRataSoggettoDao().Delete(rata); } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - SINGOlA RATA - {0} - rata:{1}", ex, Utility.GetMethodDescription(), rata.ID); throw; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - RIMOZIONE SINGOLE RATE SOGGETTI - {0} - rataesercizio:{1}", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } // ---------------------------------------------------------------------- // Rimozione singoli dettaglio rate // ---------------------------------------------------------------------- try { foreach (var dettaglio in rateToDelete) { try { if (dettaglio.PianoRatealeRiferimento != null) { dettaglio.PianoRatealeRiferimento.Rate.Remove(dettaglio); dettaglio.PianoRatealeRiferimento = null; } dettaglio.RateSoggetti.Clear(); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - SINGOLO DETTAGLIO - {0} - dettaglio:{1}", ex, Utility.GetMethodDescription(), dettaglio.ID); throw; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rimozione dei piani rateali precedenti - RIMOZIONE DETTAGLI - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } // ==================================================================================================== // Creazione nuovo piano rateale // ==================================================================================================== // ---------------------------------------------------------------------- // Oggetto PianoRateale // ---------------------------------------------------------------------- LogTransazione logTransazioneDettaglio = null; PianoRateale pianoRateale = null; try { // Non devo considerare piani rateali eliminati nelle elaborazioni precedenti if (pianiEliminati.All(item => item.ID != pianoRatealeSoggetti.PianoRateale.ID)) pianoRateale = _daoFactory.GetPianoRatealeDao().Find(pianoRatealeSoggetti.PianoRateale.ID, false); if (pianoRateale == null) { pianoRateale = new PianoRateale(_daoFactory.GetRendicontoAnnualeDao().GetById(pianoRatealeSoggetti.PianoRateale.IdRendiconto.GetValueOrDefault(), false), pianoRatealeSoggetti.PianoRateale.Tipo, logTransazione); } else { pianoRateale.Rendiconto = _daoFactory.GetRendicontoAnnualeDao().GetById(pianoRatealeSoggetti.PianoRateale.IdRendiconto.GetValueOrDefault(), false); logTransazioneDettaglio = logTransazione; } pianoRateale.Tipo = pianoRatealeSoggetti.PianoRateale.Tipo; pianoRateale.ArrotondamentoImporti = pianoRatealeSoggetti.PianoRateale.ArrontondamentoImporti; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - CREAZIONE O AGGIORNAMENTO OGGETTO PianoRateale - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } // ---------------------------------------------------------------------- // Dettagli del piano rateale // ---------------------------------------------------------------------- try { foreach (var dettaglioDto in pianoRatealeSoggetti.PianoRateale.Rate) { if (dettaglioDto.ID == 0) { try { if (Conversione.IsSqlSmallDateTime(dettaglioDto.DataScadenza)) { var dettaglio = new PianoRatealeDettaglio(pianoRateale, dettaglioDto.DataScadenza, dettaglioDto.PercentualeRiparto, dettaglioDto.Progressivo, false, logTransazioneDettaglio) { Descrizione = dettaglioDto.Descrizione, Importo = dettaglioDto.Importo, PercentualeSaldoEsercizioPrecedente = dettaglioDto.PercentualeRipartoSaldo }; } else { _log.ErrorFormat("Tentativo di salvare rata con data di scadenza errata - {0} - data:{1} - esercizio:{2}", Utility.GetMethodDescription(), dettaglioDto.DataScadenza, esercizio.ID); } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - SINGOLO DETTAGLIO DTO - {0} - dettaglio:{1} - esercizio:{2} ", ex, Utility.GetMethodDescription(), dettaglioDto.ID, esercizio.ID); throw; } } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - ELABORAZIONE DETTAGLI - {0} - esercizio:{1} ", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } // ---------------------------------------------------------------------- // Singole rate // ---------------------------------------------------------------------- try { foreach (var rataSoggettoDto in pianoRatealeSoggetti.RateSoggetti) { try { if (rataSoggettoDto.ID == 0) { var rata = new RataSoggetto(pianoRateale.Esercizio, _daoFactory.GetSoggettoCondominioDao().GetById(rataSoggettoDto.IdSoggettoCondominio, false), rataSoggettoDto.DataScadenza.GetValueOrDefault(), rataSoggettoDto.Importo.GetValueOrDefault(), null) { Progressivo = rataSoggettoDto.Progressivo }; if (rataSoggettoDto.Progressivo > 0) { PianoRatealeDettaglio dettaglio = null; var dto = rataSoggettoDto; var dettagli = (pianoRateale.Rate.Where(dett => dett.Progressivo == dto.Progressivo)).ToList(); if (dettagli.Any()) { if (dettagli.Count > 1) _log.DebugFormat("Trovata più di una rata con lo stesso progressivo - SINGOLO SOGGETTO - Valorizzazione progressivo - {0} - rata:{1} - soggetto:{2} - esercizio:{3}", Utility.GetMethodDescription(), rataSoggettoDto.ID, rataSoggettoDto.IdSoggettoCondominio, esercizio.ID); dettaglio = dettagli.First(); } if (dettaglio == null) { _log.ErrorFormat("Non trovata la rata di dettaglio - Valorizzazione progressivo - {0} - rata:{1} - soggetto:{2} - esercizio:{3}", Utility.GetMethodDescription(), rataSoggettoDto.ID, rataSoggettoDto.IdSoggettoCondominio, esercizio.ID); } else dettaglio.RateSoggetti.Add(rata); rata.PianoRatealeDettaglio = dettaglio; } if (rata.PianoRatealeDettaglio == null || rata.PianoRatealeDettaglio.ID > 0) rata.LogTransazione = logTransazione; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - Valorizzazione progressivo - {0} - rata:{1} - soggetto:{2} - esercizio:{3}", ex, Utility.GetMethodDescription(), rataSoggettoDto.ID, rataSoggettoDto.IdSoggettoCondominio, esercizio.ID); throw; } } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - ELABORAZIONE DETTAGLIO SOGGETTO - {0} - esercizio:{1}", ex, Utility.GetMethodDescription(), esercizio.ID); throw; } var rateArrotondamenti = pianoRateale.Rate.Where(dettaglio => dettaglio.Progressivo == pianoRatealeSoggetti.PianoRateale.IdRataArrotondamenti).ToList(); if(rateArrotondamenti.Count > 1) throw new InvalidDataException(string.Format("Errore nel salvataggio del piano rateale.{0}Il valore di progressivo non è corretto.{0}Si prega di contattare l'assistenza.", Environment.NewLine)); pianoRateale.RataArrotondamenti = rateArrotondamenti.SingleOrDefault(); } else { _log.WarnFormat("Esercizio non trovato nel salvataggio del piano rateale - {0} - esercizio:{1}", Utility.GetMethodDescription(), pianoRatealeSoggetti.PianoRateale.IdEsercizio); } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante il salvataggio del piano rateale - {0} - pianoRatealeSoggetti:{1}", ex, Utility.GetMethodDescription(), pianoRatealeSoggetti.PianoRateale.ID); throw; } }
private VersamentiRate setRataVersamentoDopoChiusura(VersamentoSoggetto versamento, Esercizio esercizio, LogTransazione logTransazione) { VersamentiRate rataVersamento = null; LogTransazione logTransazioneRata = null; if (esercizio.Gestione == GestioneEsercizioEnum.Ordinario && esercizio.Stato == StatoEsercizioEnum.Aperto && versamento.TipoVersamentoDopoChiusura == TipoVersamentoDopoChiusuraEnum.RicEsSucc) { var pianoRatealeDettaglio = _daoFactory.GetPianoRatealeDettaglioDao().GetRataVersamentoDopoChiusura(esercizio); if (pianoRatealeDettaglio == null) { var pianoRateale = _daoFactory.GetPianoRatealeDao().GetByEsercizio(esercizio); LogTransazione logTransazioneDettaglio = null; if (pianoRateale == null) pianoRateale = new PianoRateale(esercizio, TipoAccorpamentoRateEnum.Nessuno, logTransazione); else logTransazioneDettaglio = logTransazione; pianoRatealeDettaglio = new PianoRatealeDettaglio(pianoRateale, esercizio.DataApertura, null, 0, false, logTransazioneDettaglio) { Descrizione = "Versamenti eseguiti dopo la chiusura", IsAcconto = true, VersamentiDopoChiusura = true }; } else logTransazioneRata = logTransazione; var rataSoggetto = new RataSoggetto(pianoRatealeDettaglio, versamento.Soggetto, versamento.Data, versamento.Importo, logTransazioneRata); rataVersamento = new VersamentiRate(versamento, rataSoggetto, versamento.Importo); rataSoggetto.SetStato(); } return rataVersamento; }
private PianoRatealeDTO setDto(PianoRateale item, bool dettaglioRate) { var dto = new PianoRatealeDTO { Version = item.Version, ArrontondamentoImporti = item.ArrotondamentoImporti.GetValueOrDefault(), ID = item.ID, IdEsercizio = item.Esercizio.ID, Tipo = item.Tipo }; if (item.RataArrotondamenti != null) { try { dto.IdRataArrotondamenti = item.RataArrotondamenti.ID; } catch (Exception ex) { _log.ErrorFormat("Errore nella lettura della rata di arrotondamento - {0} - pianoRateale:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), item.ID, _info.Azienda); } } if(item.Rendiconto != null) dto.IdRendiconto = item.Rendiconto.ID; // Dettaglio Rate dto.Rate = new List<PianoRatealeDettaglioDTO>(item.Rate.Count); if (dettaglioRate) { foreach (var dettaglio in item.Rate.OrderBy(itemDettaglio => itemDettaglio.Progressivo)) { var dettaglioDTO = new PianoRatealeDettaglioDTO { DataScadenza = dettaglio.DataScadenza.GetValueOrDefault(), Descrizione = dettaglio.Descrizione, DisplayName = dettaglio.Descrizione, ID = dettaglio.ID, IdPianoRatealeRiferimento = item.ID, Importo = dettaglio.RateSoggetti.Sum(itemRata => itemRata.Importo), PercentualeRiparto = dettaglio.PercentualeRiparto, PercentualeRipartoSaldo = dettaglio.PercentualeSaldoEsercizioPrecedente, Progressivo = dettaglio.Progressivo, IsAcconto = dettaglio.IsAcconto, StatoRata = dettaglio.Stato }; dto.Rate.Add(dettaglioDTO); } } return dto; }