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; }
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; }
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; } }
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; }