예제 #1
0
 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;
     }
 }
예제 #2
0
        /// <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;
            }
        }
예제 #4
0
        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;
            }
        }
예제 #5
0
        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;
        }
예제 #6
0
        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;
        }
예제 #7
0
        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;
            }
        }
예제 #8
0
        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;
        }
예제 #9
0
        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;
        }