public AnteprimaStampaLetteraDetrazione(CondominioDTO condominio, int anno, int detrazione, IList<SpesaDTO> spese, IList<PersonaContattoDTO> persone, LetteraPersonaleDetrazioneReportParameters reportParameters, ModelloLetteraTestoDTO modelloLetteraTesto)
        {
            InitializeComponent();
            inizializza();

            _condominio = condominio;
            _anno = anno;
            _detrazione = detrazione;
            _spese = spese;
            _persone = persone;
            _reportParameters = reportParameters;
            _modelloLetteraTesto = modelloLetteraTesto;

            loadReport();
        }
        private void btnFineClick(object sender, EventArgs e)
        {
            validationSummaryCreazioneFile.Validate();
            if (validationSummaryCreazioneFile.IsValid)
            {
                // ====================================================================
                // Descrizione del condominio
                // ====================================================================
                var righeCondominio = sceltaCondominioCombo1.CondominioSelected.IndirizzoCompleto.Split('&');
                var righeDaPubblicare = new string[4];

                if (righeCondominio.Length > 0)
                    righeDaPubblicare[0] = righeCondominio[0];
                for (var i = 1; i < 4; i++)
                {
                    if (righeCondominio.Length > i)
                    {
                        if (!string.IsNullOrEmpty(righeDaPubblicare[1]))
                            righeDaPubblicare[1] += " - ";
                        righeDaPubblicare[1] += righeCondominio[i];
                    }
                    if (i > 1)
                        righeDaPubblicare[i] = string.Empty;
                }

                // ====================================================================
                // Recupero l'intestazione dello studio
                // ====================================================================
                var azienda = getAziendaService().GetAzienda();
                var intestazioneStudio = azienda.Descrizione;
                var viaStudio = string.Empty;
                var capStudio = string.Empty;
                var localitaStudio = string.Empty;
                var comuneLettera = string.Empty;
                if (azienda.IndirizzoSede != null)
                {
                    viaStudio = azienda.IndirizzoSede.Indirizzo + " n. " + azienda.IndirizzoSede.Civico;
                    capStudio = azienda.IndirizzoSede.Cap;
                    localitaStudio = azienda.IndirizzoSede.DescrizioneComune + " " + azienda.IndirizzoSede.CodiceProvincia;
                    if(!string.IsNullOrEmpty(azienda.IndirizzoSede.DescrizioneComune))
                        comuneLettera = azienda.IndirizzoSede.DescrizioneComune.Substring(0, 1).ToUpper() + azienda.IndirizzoSede.DescrizioneComune.Substring(1).ToLower();

                    // Collasso diverse informazioni nel campo viaStudio
                    viaStudio += " - " + capStudio + " " + localitaStudio;
                }

                if (bilancioRiparto.Value.ToString() != "L")
                {
                    var tipo = TipoReportBilancio.Rendiconto;
                    if (bilancioRiparto.Value.ToString() == "R")
                        tipo = TipoReportBilancio.Ripartizione;

                    var reportParameters =
                        new BilancioConsuntivoReportParameters
                            (
                            righeDaPubblicare,
                            _condominio.Codice,
                            string.Empty,
                            string.Empty,
                            griglia.Checked,
                            getTipoDettaglio(),
                            false,
                            tipo,
                            TipoRendiconto.Detrazione,
                            false,
                            stampaMillesimi.Checked,false,
                            Conversione.ToString(note.GetDocumento("HTML")),
                            intestazioneStudio,
                            viaStudio,
                            capStudio,
                            localitaStudio,
                            0,
                            0,
                            new DateTime((int)anno.Value, 12, 31),
                            true,
                            true,
                            accorpamentoUnita.Checked,
                            totalePerPersona.Checked,
                            getTipoAccorpamento(),
                            numeroRegistrazioneDatiFattura.Value.ToString(),
                            numeroInterno.Checked,
                            false,
                            Security.Login.Instance.CurrentLogin().InversioneSaldiCondomini,
                            new DateTime((int)anno.Value, 1, 1),
                            new DateTime((int)anno.Value, 12, 31)
                            );

                    var speseSelezionate = DataGridHelper.GetRigheSelezionate<SpesaDTO>(lista, true);
                    var anteprima = new AnteprimaStampaDetrazione(_condominio, (int)anno.Value, (int)detrazione.Value, speseSelezionate, reportParameters);
                    anteprima.ShowDialog();
                    anteprima.Dispose();
                }
                else
                {
                    var descrizioneCondominio = "CONDOMINIO: " + _condominio.DisplayName;
                    var amministratore = getReferenteService().GetById(azienda.CodiceAmministratore);

                    var firmaAmministratore = amministratore.NominativoPersona;

                    var titoloAmministratore = "Il sottoscritto";
                    if(amministratore.Sesso == "Femmina")
                        titoloAmministratore = "La sottoscritta";

                    var indirizzoCondominio = string.Empty;
                    if(_condominio.Indirizzo != null)
                        indirizzoCondominio += _condominio.Indirizzo.Indirizzo + ", " + _condominio.Indirizzo.Civico + " " + _condominio.Indirizzo.Cap + " " + _condominio.Indirizzo.DescrizioneComune + " " + _condominio.Indirizzo.CodiceProvincia;

                    var partitaIvaAmministratore = amministratore.PartitaIva;
                    if (string.IsNullOrEmpty(amministratore.PartitaIva))
                        partitaIvaAmministratore = azienda.PartitaIva;

                    var stampaFirmaAmministratore = "SI";
                    if(!stampaFirma.Checked)
                        stampaFirmaAmministratore = "NO";

                    var reportParameters =
                        new LetteraPersonaleDetrazioneReportParameters
                            (
                                righeDaPubblicare,
                                string.Empty,
                                firmaAmministratore,
                                viaStudio,
                                capStudio,
                                localitaStudio,
                                comuneLettera,
                                DateTime.Today,
                                descrizioneCondominio,
                                amministratore.NominativoPersona,
                                amministratore.CodiceFiscale,
                                partitaIvaAmministratore,
                                indirizzoCondominio,
                                _condominio.CodiceFiscale,
                                titoloAmministratore,
                                ((ModelloLetteraTestoDTO)modelliLetteraDetrazione.SelectedItem.ListObject).Oggetto,
                                stampaFirmaAmministratore
                            );

                    var speseSelezionate = DataGridHelper.GetRigheSelezionate<SpesaDTO>(lista, true);
                    var personeSelezionate = DataGridHelper.GetRigheSelezionate<PersonaContattoDTO>(listaPersone, true);
                    var anteprima = new AnteprimaStampaLetteraDetrazione(_condominio, (int)anno.Value, (int)detrazione.Value, speseSelezionate, personeSelezionate, reportParameters, (ModelloLetteraTestoDTO)modelliLetteraDetrazione.SelectedItem.ListObject);
                    try
                    {
                        anteprima.ShowDialog();
                        anteprima.Dispose();
                    }
                    catch (Exception ex)
                    {
                        _log.ErrorFormat("Errore nella visualizzazione della form - {0} - condominio:{1} - azienda:{2}", ex , Utility.GetMethodDescription(), _condominio?.ID.ToString(), Security.Login.Instance.CurrentLogin().Azienda);
                    }
                }
            }
            else
                validationSummaryCreazioneFile.ShowErrorSummary();
        }