private void btnRicevutaClick(object sender, EventArgs e)
        {
            try
            {
                var condominio = sceltaCondominioCombo1.CondominioSelected;

                if (condominio != null)
                {
                    // ====================================================================
                    // Descrizione del condominio
                    // ====================================================================
                    var righeDaPubblicare = new string[4];
                    if (!string.IsNullOrEmpty(condominio.IndirizzoCompleto))
                    {
                        var righeCondominio = condominio.IndirizzoCompleto.Split('&');
                        for (var i = 0; i < 4; i++)
                        {
                            if (righeCondominio.Length > i)
                            {
                                if (!string.IsNullOrEmpty(righeDaPubblicare[0]))
                                    righeDaPubblicare[0] += " ";
                                righeDaPubblicare[0] += righeCondominio[i];
                            }
                            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 && !string.IsNullOrEmpty(azienda.IndirizzoSede.DescrizioneComune))
                    {
                        viaStudio = azienda.IndirizzoSede.Indirizzo + " n. " + azienda.IndirizzoSede.Civico;
                        capStudio = azienda.IndirizzoSede.Cap;
                        localitaStudio = azienda.IndirizzoSede.DescrizioneComune + " " + azienda.IndirizzoSede.CodiceProvincia;
                        comuneLettera = azienda.IndirizzoSede.DescrizioneComune.Substring(0, 1).ToUpper() + azienda.IndirizzoSede.DescrizioneComune.Substring(1).ToLower();

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

                    var nominativoFornitore = string.Empty;
                    if (sceltaFornitoreSottocontoCombo.SelectedFornitore != null)
                        nominativoFornitore = sceltaFornitoreSottocontoCombo.SelectedFornitore.DisplayNominativo;

                    var numeroRiferimento = numeroProtocollo.Text;
                    var descrizioneCondominio = "CONDOMINIO: " + condominio.DisplayName;

                    // Conversione lista movimenti
                    IList<MovimentoContabileDTO> movimentiDto;
                    if (_testata != null && _testata.Movimenti != null && _testata.Movimenti.Count > 0)
                        movimentiDto = _testata.Movimenti.Where(item => item.NumeroRiga > 1).ToList();
                    else
                        movimentiDto = _movimentiDare;

                    var movimenti = new List<MovimentoContabileListaDTO>(movimentiDto.Count());
                    foreach (var movimento in movimentiDto)
                    {
                        try
                        {
                            if (movimento.IdConto.GetValueOrDefault() > 0)
                            {
                                var descrizioneConto = string.Empty;
                                SottoContoDTO sottoConto = null;
                                if (_esercizio != null)
                                {
                                    var conto = getPianoContiService().GetById(movimento.IdConto.GetValueOrDefault(), _esercizio.ID);
                                    descrizioneConto = conto.Descrizione;

                                    if (movimento.IdSottoConto != null)
                                        sottoConto = conto.SottoConti.SingleOrDefault(item => item.ID == movimento.IdSottoConto.GetValueOrDefault());
                                    if (sottoConto != null)
                                        descrizioneConto += " - " + sottoConto.Descrizione;
                                }

                                var movimentoLista = new MovimentoContabileListaDTO
                                {
                                    ID = movimento.ID,
                                    Descrizione = getMovimentoContabileService().GetDescrizioneMovimento(movimento, sceltaCondominioCombo1.CondominioSelected, descrizioneDettaglio.Text, (DateTime?)dataInizioCompetenza.Value, (DateTime?)dataFineCompetenza.Value),
                                    IdConto = movimento.IdConto.GetValueOrDefault(),
                                    Conto = descrizioneConto,
                                    IdSottoConto = movimento.IdSottoConto,
                                    SottoConto = (sottoConto != null) ? sottoConto.Descrizione : string.Empty,
                                    Importo = movimento.Importo
                                };
                                movimenti.Add(movimentoLista);
                            }

                        }
                        catch (Exception ex)
                        {
                            _log.ErrorFormat("Errore non previsto nella stampa della ricevuta del movimento economico - SINGOLO MOVIMENTO - {0} - movimento:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), movimento != null ? movimento.ID.ToString() : "<NULL>", Login.Instance.CurrentLogin().Azienda);
                            throw;
                        }
                    }

                    if(movimentiDto.Count > 0)
                    {
                        var identificativoArchiviazioneOttica = "<NON DISPONIBILE>";
                        if (_testata != null)
                            identificativoArchiviazioneOttica = _testata.IdentificativoArchiviazioneOttica;

                        var addebitiPersonali = getMovimentoContabileService().GetAddebitiPersonaliByMovimenti(movimentiDto.Select(item => item.ID).ToList());

                        var anteprima = new AnteprimaStampa(movimenti, addebitiPersonali,
                                new RicevutaSpesaReportParameters
                                    (
                                        righeDaPubblicare,
                                        string.Empty,
                                        intestazioneStudio,
                                        viaStudio,
                                        capStudio,
                                        localitaStudio,
                                        comuneLettera,
                                        dataRegistrazione.DateTime,
                                        nominativoFornitore,
                                        numeroRiferimento,
                                        identificativoArchiviazioneOttica,
                                        descrizioneCondominio,
                                        addebitiPersonali.Count > 0
                                    ));

                        anteprima.ShowDialog();
                        anteprima.Dispose();
                    }

                }

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore non previsto nella stampa della ricevuta del movimento economico - {0} - movimento:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), _movimentoAvere != null ? _movimentoAvere.ID.ToString() : "<NULL>", Login.Instance.CurrentLogin().Azienda);
            }
        }
Ejemplo n.º 2
0
        public Form GetStampaRicevutaSpesa(int idTestata, CondominioDTO condominio, EsercizioDTO esercizio)
        {
            try
            {
                Form form = null;
                var testata = _movimentoContabileService.GetTestataById(idTestata);

                if (condominio != null && testata != null && testata.Movimenti.Count > 0)
                {
                    // ====================================================================
                    // Descrizione del condominio
                    // ====================================================================
                    var righeCondominio = condominio.IndirizzoCompleto.Split('&');
                    var righeDaPubblicare = new string[4];
                    for (var i = 0; i < 4; i++)
                    {
                        if (righeCondominio.Length > i)
                        {
                            if (!string.IsNullOrEmpty(righeDaPubblicare[0]))
                                righeDaPubblicare[0] += " ";
                            righeDaPubblicare[0] += righeCondominio[i];
                        }
                        righeDaPubblicare[i] = string.Empty;
                    }

                    // ====================================================================
                    // Recupero l'intestazione dello studio
                    // ====================================================================
                    var azienda = _aziendaService.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;

                        if (!string.IsNullOrEmpty(azienda.IndirizzoSede.DescrizioneComune))
                        {
                            localitaStudio = azienda.IndirizzoSede.DescrizioneComune + " " + azienda.IndirizzoSede.CodiceProvincia;
                            comuneLettera = azienda.IndirizzoSede.DescrizioneComune.Substring(0, 1).ToUpper() + azienda.IndirizzoSede.DescrizioneComune.Substring(1).ToLower();
                        }

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

                    var nominativoFornitore = string.Empty;
                    var movimentoAvere = _movimentoContabileService.GetMovimentoSingolo(testata);
                    if (movimentoAvere.IdFornitore > 0)
                        nominativoFornitore = _fornitoreService.GetById(movimentoAvere.IdFornitore.GetValueOrDefault()).DisplayNominativo;

                    var numeroRiferimento = testata.NumeroProtocollo.ToString();
                    var descrizioneCondominio = "CONDOMINIO: " + condominio.DisplayName;

                    // Conversione lista movimenti
                    var movimentiDto = _movimentoContabileService.GetMovimentiLista(testata);

                    var movimenti = new List<MovimentoContabileListaDTO>(movimentiDto.Count());
                    foreach (var movimento in movimentiDto)
                    {
                        int? idEsercizio = null;
                        if (esercizio != null)
                            idEsercizio = esercizio.ID;
                        var conto = _pianoContiService.GetById(movimento.IdConto.GetValueOrDefault(), idEsercizio);
                        if (conto != null)
                        {
                            SottoContoDTO sottoConto = null;
                            if (movimento.IdSottoConto != null)
                                sottoConto = conto.SottoConti.SingleOrDefault(item => item.ID == movimento.IdSottoConto.GetValueOrDefault());

                            var descrizioneConto = conto.Descrizione;
                            if (sottoConto != null)
                                descrizioneConto += " - " + sottoConto.Descrizione;

                            var movimentoLista = new MovimentoContabileListaDTO
                            {
                                ID = movimento.ID,
                                Descrizione = _movimentoContabileService.GetDescrizioneMovimento(movimento, condominio, testata.Descrizione, testata.DataInizioCompetenza, testata.DataFineCompetenza),
                                IdConto = movimento.IdConto.GetValueOrDefault(),
                                Conto = descrizioneConto,
                                IdSottoConto = movimento.IdSottoConto,
                                SottoConto = (sottoConto != null) ? sottoConto.Descrizione : string.Empty,
                                Importo = movimento.Importo
                            };
                            movimenti.Add(movimentoLista);
                        }
                    }

                    if(movimentiDto.Count > 0)
                    {
                        var addebitiPersonali = _movimentoContabileService.GetAddebitiPersonaliByMovimenti(movimentiDto.Select(item => item.ID).ToList());

                        form = new AnteprimaStampa(movimenti, addebitiPersonali,
                            new RicevutaSpesaReportParameters
                                (
                                    righeDaPubblicare,
                                    string.Empty,
                                    intestazioneStudio,
                                    viaStudio,
                                    capStudio,
                                    localitaStudio,
                                    comuneLettera,
                                    testata.DataRegistrazione.GetValueOrDefault(),
                                    nominativoFornitore,
                                    numeroRiferimento,
                                    testata.IdentificativoArchiviazioneOttica,
                                    descrizioneCondominio,
                                    addebitiPersonali.Count > 0
                                ));
                    }
                }

                return form;

            }
            catch (Exception ex)
            {
                var idEsercizio = string.Empty;
                if (esercizio != null)
                    idEsercizio = esercizio.ID.ToString();

                var idCondominio = string.Empty;
                if (condominio != null)
                    idCondominio = condominio.ID.ToString();
                
                _log.ErrorFormat("Errore nella stampa della ricevuta - {0} - testata:{1} - esercizio:{2} - condominio:{3}", ex, Gipasoft.Library.Utility.GetMethodDescription(), idTestata, idEsercizio, idCondominio);

                throw;
            }
        }