Beispiel #1
0
        private EmissioneRate getRateDaEmettere(int idEsercizio, List<RataNotaDTO> lista, string causale, decimal? spesePostali, DateTime? dataEmissione)
        {
            // ----------------------------------------------------------
            //  Creazione testata emissione e aggiornamento stato rate
            // ----------------------------------------------------------
            if (dataEmissione == null)
                dataEmissione = DateTime.Now;

            var testata = new EmissioneRate(_daoFactory.GetEsercizioDao().GetById(idEsercizio, false), dataEmissione) { Causale = causale };
            _daoFactory.GetEmissioneRateDao().SaveOrUpdate(testata);

            const string hql = "FROM RataSoggetto R WHERE R.ID IN (:lista)";
            var rate = _daoFactory.GetRataSoggettoDao().GetByQuery(hql, new QueryParam("lista", lista.Select(item => item.Id).ToList()));

            // Accorpo le rate per unità immobiliare
            var rateAccorpate = accorpaRate(rate);
            foreach (var rata in rateAccorpate)
            {
                var nota = lista.FirstOrDefault(item => item.Id == rata.IdRataSingola);

                var dettaglioRata = new DettaglioEmissioneRate(testata){ SpeseIncasso = spesePostali };

                if (rata.Rate.Count == 0)
                {
                    var rataPrincipale = _daoFactory.GetRataSoggettoDao().GetById(rata.IdRataSingola, false);
                    dettaglioRata.RateCollegate.Add(rataPrincipale);
                    rataPrincipale.Emissione = dettaglioRata;
                    rataPrincipale.SetStato(StatoRataEnum.Spedita);
                }
                else
                {
                    foreach (var rataAccorpata in rata.Rate)
                    {
                        var rataSecondaria = _daoFactory.GetRataSoggettoDao().GetById(rataAccorpata.ID, false);
                        dettaglioRata.RateCollegate.Add(rataSecondaria);
                        rataSecondaria.SetStato(StatoRataEnum.Spedita);
                        rataSecondaria.Emissione = dettaglioRata;
                    }
                }

                if (nota != null && (!string.IsNullOrEmpty(nota.Nota) || (nota.ImportoNota != null && nota.ImportoNota.Value > 0)))
                {
                    dettaglioRata.Nota = nota.Nota;
                    dettaglioRata.ImportoNota = nota.ImportoNota;
                }

                _daoFactory.GetDettaglioEmissioneRateDao().SaveOrUpdate(dettaglioRata);
                testata.Rate.Add(dettaglioRata);
            }

            return testata;
        }
Beispiel #2
0
        public byte[] EmissioneRateDaRichiamare(int idEsercizio, int idBanca, List<int> lista, string causale, string intestazioneAzienda)
        {
            // ----------------------------------------------------------
            //  Creazione testata emissione e aggiornamento stato rate
            // ----------------------------------------------------------
            var testata = new EmissioneRate(_daoFactory.GetEsercizioDao().GetById(idEsercizio, false), DateTime.Now) {Causale = causale};
            _daoFactory.GetEmissioneRateDao().SaveOrUpdate(testata);

            const string hql = "FROM RataSoggetto R WHERE R.Importo > 0 AND R.ID IN (:lista)";
            var rate = _daoFactory.GetRataSoggettoDao().GetByQuery(hql, new QueryParam("lista", lista));

            // Accorpo le rate per unità immobiliare
            foreach (var rata in rate)
            {
                var dettaglioRata = new DettaglioEmissioneRate(testata);
                dettaglioRata.RateCollegate.Add(rata);
                rata.Emissione = dettaglioRata;
                rata.SetStato(StatoRataEnum.Spedita);

                testata.Rate.Add(dettaglioRata);
            }

            // ----------------------------------------------------------
            //  Creazione file CBI
            // ----------------------------------------------------------
            var banca = _daoFactory.GetDatiBancariCondominiDao().GetById(idBanca, false);
            byte[] testoFile = _esecuzioneEmissioneRateService.RichiamoMav(testata, banca, intestazioneAzienda);
            if (testoFile != null)
            {
                // ----------------------------------------------------------
                //  LA CREAZIONE DEI MOVIMENTI CONTABILI DI STORNO AVVIENE 
                //  ALLA CONFERMA DEL SUBENTRO - SubentroService.Conferma()
                // ----------------------------------------------------------
                //_movimentoContabileService.SetMovimentiEmissioneRata(testata);

                return testoFile;
            }
            _persistenceContext.RollbackAndCloseSession(Login.Instance.CurrentLogin().LoginName);
            _persistenceContext.BeginTransaction(Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted);

            return null;
        }
Beispiel #3
0
        private void writeMovimento51(DettaglioEmissioneRate dettaglioEmissione, StreamWriter sw, int numeroDisposizione)
        {
            try
            {
                var sb = new StringBuilder(120);

                // Tipo Record
                sb.Append(" 51");

                // Numero Disposizione
                sb.Append(numeroDisposizione.ToString().PadLeft(7, '0'));

                // -----------------------------------------------------------------------------
                // Numero della disposizione assegnato dal creditore (condominio) - Identificativo della rata oggetto di pagamento
                // -----------------------------------------------------------------------------
                sb.Append(dettaglioEmissione.ID.ToString().PadLeft(10, '0'));

                // filler
                sb.Append(string.Empty.PadLeft(54));

                // -----------------------------------------------------------------------------
                // Codice identificativo univoco
                //
                // codice di identificazione univoco apposto dal cliente creditore, qualora egli
                // stesso effettui la stampa del bollettino di versamento; questo campo è 
                // obbligatorio nel caso sia il cliente a inviare il bollettino al cliente debitore
                // -----------------------------------------------------------------------------
                sb.Append(string.Empty.PadLeft(12));

                // filler
                sb.Append(string.Empty.PadLeft(34));

                sw.WriteLine(sb.ToString());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione di una singola riga di MAV - {0} - esercizio:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dettaglioEmissione.TestataEmissioneRate.Esercizio.ID, dettaglioEmissione.TestataEmissioneRate.Esercizio.CondominioRiferimento.Azienda.ID);
                throw;
            }
        }
Beispiel #4
0
        private void writeMovimento14(DettaglioEmissioneRate dettaglio, DatiBancariCondomini banca, StreamWriter sw, int numeroDisposizione)
        {
            try
            {
                var sb = new StringBuilder(120);

                var rataPrincipale = IesiGenericCollections<RataSoggetto>.GetByIndex(dettaglio.RateCollegate, 0);

                // Tipo Record
                sb.Append(" 14");

                // Numero Disposizione
                sb.Append(numeroDisposizione.ToString().PadLeft(7, '0'));

                // filler
                sb.Append(string.Empty.PadLeft(12));

                // data scadenza
                sb.Append(convertData(rataPrincipale.DataScadenza));

                // causale
                sb.Append("07000");

                // importo
                sb.Append((Math.Round(dettaglio.RateCollegate.Sum(rata => rata.Importo) * 100, 0)).ToString().PadLeft(13, '0'));

                // segno
                sb.Append("-");

                // --------------------------------------------------------------------
                // Coordinate banca assuntrice (banca del condominio)
                // --------------------------------------------------------------------

                // ABI
                sb.Append(banca.Abi);

                // CAB
                sb.Append(banca.Cab);

                // Conto Corrente
                sb.Append(banca.ContoCorrente.PadLeft(12, '0'));

                // filler
                sb.Append(string.Empty.PadLeft(22));

                // --------------------------------------------------------------------
                // Coordinate azienda creditrice (condominio)
                // --------------------------------------------------------------------

                // Codice SIA
                sb.Append(rataPrincipale.Esercizio.CondominioRiferimento.CodiceSIA.Trim().PadLeft(5, ' '));

                // Tipo codice (usato il codice utente del condomino quindi: '1')
                //sb.Append("1");
                sb.Append(" ");

                // Codice (usato il codice utente del condomino)
                //sb.Append(rataPrincipale.Soggetto.Persona.DatiAutenticazione.Username.PadRight(16, ' '));
                sb.Append(string.Empty.PadRight(16));

                // filler
                sb.Append(string.Empty.PadLeft(6));

                // divisa
                sb.Append("E");

                sw.WriteLine(sb.ToString());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione di una singola riga di MAV - {0} - condominio:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), banca.CondominioRiferimento.ID, banca.CondominioRiferimento.Azienda.ID);
                throw;
            }
        }
        private RataEmissioneDTO setDtoEmissione(DettaglioEmissioneRate item)
        {
            var rataSingola = item.RateCollegate.FirstOrDefault(itemRata => itemRata.Soggetto.SoggettoPrincipale == null);
            if (rataSingola == null)
            {
                rataSingola = item.RateCollegate.FirstOrDefault();
                _log.DebugFormat("Non trovata rata principale - {0} - dettaglio:{1}", Utility.GetMethodDescription(), item.ID);                
            }
            if (rataSingola != null)
            {
                var dto = new RataEmissioneDTO
                {
                    ID = item.ID,
                    NomeCondominio = rataSingola.Esercizio.CondominioRiferimento.Descrizione,
                    DescrizioneEsercizio = rataSingola.Esercizio.DisplayName,
                    CodiceFiscaleCondominio = rataSingola.Esercizio.CondominioRiferimento.CodiceFiscale,
                    IdSoggettoCondominio = rataSingola.Soggetto.ID,
                    DescrizioneSoggettoCondominio = rataSingola.Soggetto.DisplayName,
                    IdPersona = rataSingola.Soggetto.Persona.ID,
                    IdUnitaImmobiliare = rataSingola.Soggetto.UnitaImmobiliare.ID,
                    DescrizioneUnitaImmobiliare = rataSingola.Soggetto.UnitaImmobiliare.Descrizione,
                    OrdineUnitaImmobiliare = rataSingola.Soggetto.UnitaImmobiliare.Ordine.GetValueOrDefault(),
                    InternoUnitaImmobiliare = string.Join(", ", item.RateCollegate.Select(rata => rata.Soggetto.UnitaImmobiliare.InternoCompleto).Distinct().OrderBy(interno => interno)),
                    DataScadenza = rataSingola.DataScadenza,
                    Importo = item.RateCollegate.Sum(rate => rate.Importo),
                    SpeseIncasso = item.SpeseIncasso,
                    DisplayName = rataSingola.PianoRatealeDettaglio.Descrizione,
                    Nota = item.Nota,
                    ImportoNota = item.ImportoNota.GetValueOrDefault()
                };

                var indirizzo = rataSingola.Soggetto.Persona.Recapito ?? rataSingola.Soggetto.Persona.IndirizzoResidenza;
                if (indirizzo != null)
                {
                    dto.IndirizzoSoggettoCondominio = indirizzo.Indirizzo;
                    if (!string.IsNullOrEmpty(indirizzo.Presso))
                    {
                        dto.DescrizioneSoggettoCondominio += $"\r\nc/o {indirizzo.Presso}";
                        dto.PressoSoggettoCondominio = $"c/o {indirizzo.Presso}";
                    }
                    dto.CivicoSoggettoCondominio = indirizzo.Civico;
                    dto.CapSoggettoCondominio = indirizzo.Cap;

                    if (indirizzo.Comune != null)
                    {
                        dto.ComuneSoggettoCondominio = indirizzo.Comune.Descrizione;
                        dto.ProvinciaSoggettoCondominio = indirizzo.Comune.ProvinciaAppartenenza.Codice;
                    }
                    else
                    {
                        _log.ErrorFormat("Indirizzo senza comune associato - {0} - condomino:{1} - tipoIndirizzo-RECAPITO:{2}", Utility.GetMethodDescription(), rataSingola.Soggetto.ID, rataSingola.Soggetto.Persona.Recapito != null);
                    }
                }

                if (rataSingola.Esercizio.CondominioRiferimento.Indirizzo != null)
                {
                    dto.IndirizzoCondominio = rataSingola.Esercizio.CondominioRiferimento.Indirizzo.Indirizzo;
                    dto.CivicoCondominio = rataSingola.Esercizio.CondominioRiferimento.Indirizzo.Civico;
                    dto.CapCondominio = rataSingola.Esercizio.CondominioRiferimento.Indirizzo.Cap;
                    dto.ComuneCondominio = rataSingola.Esercizio.CondominioRiferimento.Indirizzo.Comune.Descrizione;
                    dto.ProvinciaCondominio = rataSingola.Esercizio.CondominioRiferimento.Indirizzo.Comune.ProvinciaAppartenenza.Codice;
                }

                return dto;
            }

            return null;
        }