/// <summary> /// Crea il Dettaglio delle unità immobiliari partecipanti ad un modello di ripartizione /// </summary> public DettaglioEmissioneRate(EmissioneRate testataEmissioneRate) { TestataEmissioneRate = testataEmissioneRate; Stato = StatoMavEnum.Emesso; if (TestataEmissioneRate != null) TestataEmissioneRate.Rate.Add(this); }
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; }
public virtual IUpdatableBusinessEntity Copy() { EmissioneRate emissione = new EmissioneRate(Esercizio, Data); return emissione; }
// ======================================================================================================================= // Azienda Mittente --> Condominio // Banca Assuntrice --> Banca del Condominio che deve ricevere i pagamenti e a cui devovo essere inviare le disposizioni // Destinatario --> Banca del Fornitore (beneficiario) // ======================================================================================================================= public byte[] EmissioneMav(EmissioneRate testataEmissione, DatiBancariCondomini banca, string intestazioneAzienda) { _testata = testataEmissione; byte[] bytes = null; StreamWriter sw = null; try { _impostazioniAzienda = _daoFactory.GetImpostazioniAziendaDao().GetByAzienda(testataEmissione.Esercizio.CondominioRiferimento.Azienda.ID) ?? new ImpostazioniAzienda(testataEmissione.Esercizio.CondominioRiferimento.Azienda) { TipoIndirizzoComunicazioni = TipoIndirizzo.Residenza}; if(_impostazioniAzienda == null) _log.ErrorFormat("Non sono definite le impostazioni dell'azienda - {0} - azienda:{1}", Utility.GetMethodDescription(), testataEmissione.Esercizio.CondominioRiferimento.Azienda.ID); var fileName = Path.GetTempPath() + "\\" + Guid.NewGuid(); if (ApplicationDeployment.IsNetworkDeployed) fileName = ApplicationDeployment.CurrentDeployment.DataDirectory + "\\" + Guid.NewGuid(); if (File.Exists(fileName)) File.Delete(fileName); // ============================================================================================= // Creo il file // ============================================================================================= using (sw = File.CreateText(fileName)) { // Creo le riga di testa writeTestataIM(testataEmissione.Esercizio, banca, sw); decimal importoTotale = 0; var numeroRighe = 1; var numeroDisposizione = 0; foreach (var rata in testataEmissione.Rate) { try { var rataPrincipale = rata.RateCollegate.FirstOrDefault(item => item.Soggetto.SoggettoPrincipale == null); if (rataPrincipale == null) { rataPrincipale = rata.RateCollegate.FirstOrDefault(); _log.WarnFormat("Non trovata nessun rata principale - {0} - rata:{1}", Utility.GetMethodDescription(), rata.ID); } importoTotale += rata.RateCollegate.Sum(rt => rt.Importo); numeroDisposizione++; numeroRighe++; writeMovimento14(rata, banca, sw, numeroDisposizione); numeroRighe++; writeMovimento16(rataPrincipale, banca, sw, numeroDisposizione); numeroRighe++; writeMovimento20(rataPrincipale, sw, numeroDisposizione, intestazioneAzienda); numeroRighe++; writeMovimento30(rataPrincipale, sw, numeroDisposizione); numeroRighe++; writeMovimento40(rataPrincipale, sw, numeroDisposizione); numeroRighe++; writeMovimento50(rataPrincipale, testataEmissione, sw, numeroDisposizione); numeroRighe++; writeMovimento51(rata, sw, numeroDisposizione); numeroRighe++; writeMovimento70(sw, numeroDisposizione); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la elaborazione di una singola riga per la creazione del file CBI dei MAV - {0} - rata:{1}", ex, Utility.GetMethodDescription(), rata.ID); throw; } } numeroRighe++; writeCodaEF(testataEmissione.Esercizio, banca, sw, numeroDisposizione, importoTotale, numeroRighe); } _notifier.Notify("Il file dei MAV è stato correttamente creato."); var infile = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); bytes = new byte[infile.Length]; infile.Read(bytes, 0, bytes.Length); testataEmissione.File = Conversione.ToString(bytes); return bytes; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la creazione del file CBI dei MAV - {0}", ex, Utility.GetMethodDescription()); _notifier.Notify("Si sono verificati problemi inaspettati durante la creazione del file CBI dei MAV." + Environment.NewLine + "Controllare il log per ulteriori dettagli."); return bytes; } finally { if (sw != null) { sw.Close(); sw.Dispose(); } } }
public byte[] RichiamoMav(EmissioneRate testataEmissione, DatiBancariCondomini banca, string intestazioneAzienda) { _testata = testataEmissione; byte[] bytes = null; StreamWriter sw = null; try { var fileName = Path.GetTempPath() + "\\" + Guid.NewGuid(); if (ApplicationDeployment.IsNetworkDeployed) fileName = ApplicationDeployment.CurrentDeployment.DataDirectory + "\\" + Guid.NewGuid().ToString(); if (File.Exists(fileName)) File.Delete(fileName); // ============================================================================================= // Creo il file // ============================================================================================= using (sw = File.CreateText(fileName)) { // Creo le riga di testa writeTestataIM(testataEmissione.Esercizio, banca, sw); decimal importoTotale = 0; int numeroRighe = 1; int numeroDisposizione = 0; foreach (var rata in testataEmissione.Rate) { var rataPrincipale = IesiGenericCollections<RataSoggetto>.GetByIndex(rata.RateCollegate, 0); importoTotale += rata.RateCollegate.Sum(rt => rt.Importo); numeroDisposizione++; numeroRighe++; writeMovimentoRichiamo14(rataPrincipale, banca, sw, numeroDisposizione); numeroRighe++; writeMovimento16(rataPrincipale, banca, sw, numeroDisposizione); numeroRighe++; writeMovimento20(rataPrincipale, sw, numeroDisposizione, intestazioneAzienda); numeroRighe++; writeMovimento30(rataPrincipale, sw, numeroDisposizione); numeroRighe++; writeMovimento40(rataPrincipale, sw, numeroDisposizione); numeroRighe++; writeMovimento50(rataPrincipale, testataEmissione, sw, numeroDisposizione); numeroRighe++; writeMovimento51(rata, sw, numeroDisposizione); numeroRighe++; writeMovimentoRichiamo70(sw, numeroDisposizione); } numeroRighe++; writeCodaEF(testataEmissione.Esercizio, banca, sw, numeroDisposizione, importoTotale, numeroRighe); } _notifier.Notify("Il file dei MAV è stato correttamente creato."); var infile = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); bytes = new byte[infile.Length]; infile.Read(bytes, 0, bytes.Length); return bytes; } catch (Exception ex) { _log.FatalFormat("Errore inaspettato durante la creazione del file CBI per il richiamo dei MAV - {0} - intestazioneAzienda:{1}", ex, Utility.GetMethodDescription(), intestazioneAzienda); _notifier.Notify("Si sono verificati problemi inaspettati durante la creazione del file CBI per il richiamo dei MAV." + Environment.NewLine + "Controllare il log per ulteriori dettagli."); return bytes; } finally { if (sw != null) { sw.Close(); sw.Dispose(); } } }
private void writeMovimento50(RataSoggetto rata, EmissioneRate testata, StreamWriter sw, int numeroDisposizione) { try { var sb = new StringBuilder(120); // Tipo Record sb.Append(" 50"); // Numero Disposizione sb.Append(numeroDisposizione.ToString().PadLeft(7, '0')); // ----------------------------------------------------------------------------- // Riferimenti al debito (è suddiviso in due segmenti di 40 caratteri ciascuno) // ----------------------------------------------------------------------------- var descrizioneMav = rata.GetDescrizioneMAV(testata.Causale); sb.Append(descrizioneMav[0].PadRight(40, ' ')); sb.Append(descrizioneMav[1].PadRight(40, ' ')); // filler sb.Append(string.Empty.PadLeft(30)); 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(), rata?.Esercizio.ID, rata?.Esercizio.CondominioRiferimento.Azienda.ID); throw; } }