Ejemplo n.º 1
0
        public void Reload()
        {
            // Lista Scadenze
            listaRitenute.InitializeRow += listaRitenute_InitializeRow;
            var filter = new RitenutaFilter
            {
                Detraibile = getDetraibile(),
                MeseRiferimento = (int) meseRiferimento.Value,
                AnnoRiferimento = (int) annoRiferimento.Value
            };

            // Load dati con messaggio di attesa
            var form = new ExecuteLoadDataListAsync<RitenutaAccontoDTO>("E' in corso la ricerca delle ritenute da versare ....." + Environment.NewLine + "Si prega di attendere.");
            Func<List<RitenutaAccontoDTO>> loadDati = () => getRitenutaAccontoService().GetByFilter(filter, dataPagamento.DateTime);
            form.LoadData(loadDati);
            form.ShowDialog();
            ritenutaAccontoDtoBindingSource.DataSource = form.DataSourceObject;

            listaRitenute.InitializeRow -= listaRitenute_InitializeRow;

            setVisibleLista(true);
            if (listaRitenute.Rows.Count > 0)
                btnAvanti.Enabled = true;

            form.Dispose();
        }
Ejemplo n.º 2
0
        public List<RitenutaAccontoDTO> GetRitenute(RitenutaFilter filter, DateTime dataPagamento)
        {
            try
            {
                var dataFinale = new DateTime(filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), DateTime.DaysInMonth(filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault()));

                var hql = new StringBuilder("FROM Pagamento PAG LEFT JOIN FETCH PAG.ScadenzaRiferimento SC LEFT JOIN FETCH SC.SpesaRiferimento SP LEFT JOIN FETCH SP.EsercizioRiferimento ES LEFT JOIN FETCH ES.CondominioRiferimento COND LEFT JOIN FETCH COND.DatiBancari BANCA LEFT JOIN FETCH SP.FornitoreRiferimento FORN LEFT JOIN FETCH FORN.PersonaRiferimento PERS WHERE PAG.Stato <> :statoAnnullato AND PAG.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.Azienda.ID = :azienda AND PAG.RitenutaAcconto.Stato = :stato AND PAG.Data <= :dataFinale AND PAG.RitenutaAcconto.Importo > 0 AND PAG.Tipo <> :tipoPagamento ");
                var parameters = new List<QueryParam>
                {
                    new QueryParam("azienda", filter.CodiceAzienda.ToString(CultureInfo.InvariantCulture)),
                    new QueryParam("stato", Conversione.ToHQLParameter(StatoRitenutaEnum.Inserita)),
                    new QueryParam("statoAnnullato", Conversione.ToHQLParameter(StatoSpesaEnum.Annullata)),
                    new QueryParam("tipoPagamento", Conversione.ToHQLParameter(TipoPagamentoFatturaEnum.Storno)),
                    new QueryParam("dataFinale", dataFinale)
                };

                if (filter.Detraibile != null)
                {
                    hql.Append(filter.Detraibile.Value
                                   ? " AND PAG.ScadenzaRiferimento.SpesaRiferimento.Detrazione > 0 "
                                   : " AND PAG.ScadenzaRiferimento.SpesaRiferimento.Detrazione is null ");
                }

                hql.Append(" ORDER BY PAG.Data");

                var pagamenti = _daoFactory.GetPagamentoDao().GetByQuery(hql.ToString(), parameters.ToArray());
                var ritenute = new List<RitenutaAccontoDTO>(pagamenti.Count);

                var allCab = PreLoadedCollection.Instance.GetCab("01");
                foreach (var pag in pagamenti)
                {
                    try
                    {
                        if (pag.RitenutaAcconto != null)
                        {
                            DateTime dataUltima;
                            var annoPagamento = pag.Data.GetValueOrDefault().AddMonths(1).Year;
                            var mesePagamento = pag.Data.GetValueOrDefault().AddMonths(1).Month;
                            var dataCalendario = _daoFactory.GetCalendarioScadenzeDao().GetByAnnoMese(annoPagamento, mesePagamento);
                            if (dataCalendario != null)
                                dataUltima = dataCalendario.Data;
                            else
                            {
                                dataUltima = new DateTime(annoPagamento, mesePagamento, 16);
                                switch (dataUltima.DayOfWeek)
                                {
                                    case DayOfWeek.Saturday:
                                        dataUltima = dataUltima.AddDays(2);
                                        break;
                                    case DayOfWeek.Sunday:
                                        dataUltima = dataUltima.AddDays(1);
                                        break;
                                }

                                // In caso di Agosto 2014 è stato prorogato al 20 il termine ultimo bugid#5426
                                if (dataUltima.Month == 8 && dataUltima.Year == 2014)
                                    dataUltima = new DateTime(2014, 8, 20);
                            }

                            RitenutaAccontoDTO ritenuta;
                            try
                            {
                                ritenuta = new RitenutaAccontoDTO
                                {
                                    CodiceTributo = pag.ScadenzaRiferimento.SpesaRiferimento.FornitoreRiferimento.CodiceTributo,
                                    IdCondominio = pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.ID,
                                    Condominio = pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DisplayName,
                                    DataDocumento = pag.ScadenzaRiferimento.SpesaRiferimento.DataDocumento,
                                    Archiviazione = _archiviazioneOtticaService.GetIdentificativoArchiviazione(pag.ScadenzaRiferimento.SpesaRiferimento, true),
                                    DataPagamento = pag.Data,
                                    Detrazione = pag.ScadenzaRiferimento.SpesaRiferimento.Detrazione,
                                    Fornitore = pag.ScadenzaRiferimento.SpesaRiferimento.FornitoreRiferimento.DisplayName,
                                    IdPagamento = pag.ID,
                                    ImportoPagamento = pag.Importo,
                                    ImportoRitenuta = pag.RitenutaAcconto.Importo,
                                    NumeroDocumento = pag.ScadenzaRiferimento.SpesaRiferimento.NumeroDocumento,
                                    Selezionabile = true,
                                    Stato = pag.RitenutaAcconto.Stato,
                                    TipoDocumento = Decodifica.Instance.GetElement("TipoDocumentoContabile", pag.ScadenzaRiferimento.SpesaRiferimento.TipoDocumento).Descrizione,
                                    Valuta = pag.Valuta,
                                    PeriodoRiferimento = pag.RitenutaAcconto.GetPeriodoRiferimento(true)
                                };
                                if (pag.RitenutaAcconto != null && pag.RitenutaAcconto.TestataRiferimento != null)
                                    ritenuta.DataVersamentoRitenuta = pag.RitenutaAcconto.TestataRiferimento.Data.GetValueOrDefault();
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore nella ricerca delle ritenute - INIZIALIZZAZIONE DTO - {0} - banca:{1} - pagamento:{2} - detrazione:{3} - anno:{4} - mese:{5} - dataPagamento:{6}", ex, Utility.GetMethodDescription(), pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DatiBancariPrincipale.ID, pag.ID, filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString());
                                throw;
                            }

                            try
                            {
                                if (pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DatiBancariPrincipale != null)
                                {
                                    var datibancari = pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DatiBancariPrincipale;
                                    if (datibancari != null)
                                    {
                                        var cabDTO = allCab.FirstOrDefault(item => item.Abi == datibancari.Abi && item.Cab == datibancari.Cab);
                                        if (cabDTO != null)
                                        {
                                            var abi = cabDTO.Abi;
                                            var cab = cabDTO.Cab;
                                            if (!string.IsNullOrEmpty(cabDTO.DescrizioneAbi))
                                                abi += " - " + cabDTO.DescrizioneAbi;
                                            if (!string.IsNullOrEmpty(cabDTO.DescrizioneCab))
                                                cab += " - " + cabDTO.DescrizioneCab;

                                            ritenuta.AbiCondominio = abi;
                                            ritenuta.CabCondominio = cab;
                                        }
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore nella ricerca delle ritenute - LETTURA ABI CAB - {0} - banca:{1} - pagamento:{2} - detrazione:{3} - anno:{4} - mese:{5} - dataPagamento:{6}", ex, Utility.GetMethodDescription(), pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DatiBancariPrincipale.ID, pag.ID, filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString());
                                throw;
                            }

                            // Eventuale calcolo di interessi passivi e sanzioni
                            if (dataPagamento > dataUltima)
                            {
                                try
                                {
                                    InteressiSanzioniLibrary.CalcoloInteressiSanzioni(ritenuta, dataPagamento, dataUltima);
                                }
                                catch (Exception ex)
                                {
                                    _log.ErrorFormat("Errore nella ricerca delle ritenute - CALCOLO INTERESSI SANZIONI - {0} - banca:{1} - pagamento:{2} - detrazione:{3} - anno:{4} - mese:{5} - dataPagamento:{6}", ex, Utility.GetMethodDescription(), pag.ScadenzaRiferimento.SpesaRiferimento.EsercizioRiferimento.CondominioRiferimento.DatiBancariPrincipale.ID, pag.ID, filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString());
                                    throw;
                                }
                            }

                            ritenute.Add(ritenuta);
                        }

                    }
                    catch (Exception ex)
                    {
                        _log.ErrorFormat("Errore nella ricerca delle ritenute - SINGOLO PAGAMENTO - {0} - pagamento:{1} - detrazione:{2} - anno:{3} - mese:{4} - dataPagamento:{5}", ex, Utility.GetMethodDescription(), pag.ID, filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString());
                        throw;
                    }

                }

                return ritenute;

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella ricerca delle ritenute - {0} - detrazione:{1} - anno:{2} - mese:{3} - dataPagamento:{4}", ex, Utility.GetMethodDescription(), filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString());
                throw; 
            }
        }
Ejemplo n.º 3
0
        public List<RitenutaAccontoDTO> GetByFilter(RitenutaFilter filter, DateTime dataPagamento)
        {
            try
            {
                filter.CodiceAzienda = Login.Instance.CurrentLogin().Azienda;
                var result = GetServiceClient().GetRitenutaAccontoByFilter(filter, dataPagamento, GetUserInfo());
                CloseService();
                return result;
            }
            catch (CommunicationObjectAbortedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (CommunicationObjectFaultedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (CommunicationException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (IOException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (ObjectDisposedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
                throw;
            }

            return new List<RitenutaAccontoDTO>();
        }
Ejemplo n.º 4
0
		public List<RitenutaAccontoDTO> GetRitenutaAccontoByFilter(RitenutaFilter filter, DateTime dataPagamento, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
                var ritenutaService = windsorRep.GetContainer(userinfo.Azienda).Resolve<IRitenutaAccontoService>();
                var item = ritenutaService.GetRitenute(filter, dataPagamento);
				windsorRep.Commit();
				return item;
			}
			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nella esecuzione della funzione - {0} - detrazione:{1} - anno:{2} - mese:{3} - dataPagamento:{4} - azienda:{5}", ex, Utility.GetMethodDescription(), filter.Detraibile.GetValueOrDefault(), filter.AnnoRiferimento.GetValueOrDefault(), filter.MeseRiferimento.GetValueOrDefault(), dataPagamento.ToShortDateString(), userinfo.Azienda);
				windsorRep.Rollback();
				throw;
			}
		}