예제 #1
0
        public List<SpesaDTO> GetByFilter(SpesaFilter filter)
        {
            try
            {
                filter.CodiceAzienda = Login.Instance.CurrentLogin().Azienda;
                var result = GetServiceClient().GetSpeseByFilter(filter, 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<SpesaDTO>();
        }
예제 #2
0
        public List<SpesaDTO> GetAllByFilter(SpesaFilter filter)
        {
            try
            {
                var spesaService = _windsorRepository.GetContainer(_info.Azienda).Resolve<ISpesaService>();
                var lista = spesaService.GetByFilter(filter);
                var listaDto = new List<SpesaDTO>();

                if (filter.TipoDocumento != "MOVIMENTO")
                    listaDto.AddRange(lista.Select(item => setDto(item, false, false, null, null)));

                if (string.IsNullOrEmpty(filter.TipoDocumento) || filter.TipoDocumento == "MOVIMENTO")
                {
                    if (string.IsNullOrEmpty(filter.NumeroDocumento) && filter.Detrazione == null)
                        listaDto.AddRange(from testata in spesaService.GetMovimentiByFilter(filter) where (isRipartita(testata) || testata.Tipo == TipoTestataMovimentoContabileEnum.Manuale) && testata.IsAllowUpdate select convertTestataToDto(testata));
                }

                return listaDto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento delle scadenze delle fatture - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), filter.CodiceAzienda);
                throw;
            }
        }
예제 #3
0
        private void loadData()
        {
            try
            {
                if (sceltaCondominioCombo != null && speseBindingSource != null)
                {
                    int? valoreDetrazione = null;
                    if (detrazione.Value != null && Convert.ToInt32(detrazione.Value) > 0)
                        valoreDetrazione = Convert.ToInt32(detrazione.Value);

                    var filter = new SpesaFilter
                                     {
                                         CodiceEsercizio = (int?) esercizi.Value,
                                         ImportoInizio = (importoDa.Value != 0) ? (decimal?)importoDa.Value : null,
                                         ImportoFine = (importoA.Value != 0) ? (decimal?) importoA.Value : null,
                                         Detrazione = valoreDetrazione,
                                         Protocollo = (int?) protocollo.Value
                                     };

                    if(tipoDocumento.Value != null)
                        filter.TipoDocumento = (string)tipoDocumento.Value;
                    if (numeroDocumento.Value != null)
                        filter.NumeroDocumento = (string)numeroDocumento.Value;

                    if (sceltaCondominioCombo.CondominioSelected != null)
                        filter.CodiceCondominio = sceltaCondominioCombo.CondominioSelected.ID;

                    if (sceltaFornitoreCombo.SelectedFornitore != null)
                        filter.CodiceFornitore = sceltaFornitoreCombo.SelectedFornitore.ID;

                    if (dataDocumentoIniziale.Value != null)
                    {
                        filter.DataDocumentoInizio = dataDocumentoIniziale.DateTime;
                        filter.DataDocumentoFine = filter.DataDocumentoInizio;
                    }
                    if (dataDocumentoFinale.Value != null)
                    {
                        filter.DataDocumentoFine = dataDocumentoFinale.DateTime;
                    }

                    var form = new ExecuteLoadDataListAsync<SpesaDTO>("E' in corso la ricerca delle spese ....." + Environment.NewLine + "Si prega di attendere.");
                    Func<List<SpesaDTO>> loadDati = () => getFatturaService().GetByFilter(filter);
                    form.LoadData(loadDati);
                    form.ShowDialog();
                    speseBindingSource.DataSource = form.DataSourceObject;

                    if (lista.DisplayLayout != null)
                    {
                        if (lista.DisplayLayout.Bands[0].Summaries.Count == 0)
                        {
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "ImportoLordo", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "Imponibile", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "ImportoIva", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "ImportoRitenuta", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "ImportoNettoAPagare", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "AltreSpese", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "AltreSpeseEsenti", "c");
                            DataGridHelper.AddSummary(lista.DisplayLayout.Bands[0], "CassaProfessionisti", "c");
                        }
                        lista.DisplayLayout.Override.CellClickAction = CellClickAction.Edit;
                    }

                    form.Dispose();

                }
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore non previsto nel caricamento dei dati - " + Utility.GetMethodDescription() + " - azienda:" + Login.Instance.CurrentLogin().Azienda.ToString(), ex);
            }
        }
예제 #4
0
        public IList<TestataMovimentoContabile> GetMovimentiByFilter(SpesaFilter filter)
        {
            var hql = new StringBuilder("FROM TestataMovimentoContabile TES LEFT JOIN FETCH TES.Movimenti MOV LEFT JOIN FETCH MOV.DettaglioRiferimento DETT LEFT JOIN FETCH TES.EsercizioRiferimento ESE WHERE TES.IsAllowUpdate = 1 AND ESE.CondominioRiferimento.Azienda = :azienda");

            var parameters = new List<QueryParam> {new QueryParam("azienda", filter.CodiceAzienda)};

            // Condominio
            if (filter.CodiceCondominio != null)
            {
                hql.Append(" AND ESE.CondominioRiferimento = :condominio");
                parameters.Add(new QueryParam("condominio", filter.CodiceCondominio.Value));
            }

            // Esercizio
            if (filter.CodiceEsercizio != null)
            {
                hql.Append(" AND ESE = :esercizio");
                parameters.Add(new QueryParam("esercizio", filter.CodiceEsercizio.Value));
            }

            // Fornitore
            if (filter.CodiceFornitore != null)
            {
                hql.Append(" AND MOV.FornitoreRiferimento = :fornitore");
                parameters.Add(new QueryParam("fornitore", filter.CodiceFornitore.Value));
            }

            // Protocollo
            if (filter.Protocollo > 0)
            {
                hql.Append(" AND TES.NumeroProtocollo = :protocollo");
                parameters.Add(new QueryParam("protocollo", filter.Protocollo.Value));
            }
            
            // Data Documento
            if (filter.DataDocumentoInizio != null)
            {
                hql.Append(" AND TES.DataRegistrazione = :dataRegistrazione");
                parameters.Add(new QueryParam("dataRegistrazione", filter.DataDocumentoInizio.Value));
            }

            IList<TestataMovimentoContabile> spese = _daoFactory.GetTestataMovimentoContabileDao().GetByQuery(hql.ToString(), parameters.ToArray());
            if (filter.ImportoInizio != null || filter.ImportoFine != null)
            {
                var speseImportoFilter = new List<TestataMovimentoContabile>(spese.Count);
                foreach (var spesa in spese)
                {
                    var importo = spesa.Movimenti.Sum(item => item.GetImportoConSegno()).GetValueOrDefault() / 2;

                    if (filter.ImportoInizio != null && filter.ImportoFine != null)
                    {
                        if (importo >= filter.ImportoInizio && importo <= filter.ImportoFine)
                            speseImportoFilter.Add(spesa);
                    }
                    else if (filter.ImportoInizio != null && filter.ImportoFine == null)
                    {
                        if (importo >= filter.ImportoInizio)
                            speseImportoFilter.Add(spesa);
                    }
                    else if (filter.ImportoInizio == null && filter.ImportoFine != null)
                    {
                        if (importo <= filter.ImportoFine)
                            speseImportoFilter.Add(spesa);
                    }
                }
                return speseImportoFilter;
            }
            return spese;
        }
예제 #5
0
        public IList<GestioneCondomini.Domain.Spesa> GetByFilter(SpesaFilter filter)
        {
            var hql = new StringBuilder("FROM Spesa SPE LEFT JOIN FETCH SPE.Dettagli DETT LEFT JOIN FETCH SPE.EsercizioRiferimento ESE LEFT JOIN FETCH SPE.FornitoreRiferimento FOR LEFT JOIN FETCH FOR.PersonaRiferimento PERS LEFT JOIN FETCH DETT.Movimenti MOV LEFT JOIN FETCH MOV.ContoRiferimento CONT LEFT JOIN FETCH MOV.Testata TES LEFT JOIN FETCH SPE.TestateMovimenti TESSPE LEFT JOIN FETCH TESSPE.Movimenti MOVSPE WHERE ESE.CondominioRiferimento.Azienda = :azienda");

            var parameters = new List<QueryParam> {new QueryParam("azienda", filter.CodiceAzienda)};

            // Condominio
            if (filter.CodiceCondominio != null)
            {
                hql.Append(" AND ESE.CondominioRiferimento = :condominio");
                parameters.Add(new QueryParam("condominio", filter.CodiceCondominio.Value));
            }

            // Esercizio
            if (filter.CodiceEsercizio != null)
            {
                hql.Append(" AND ESE = :esercizio");
                parameters.Add(new QueryParam("esercizio", filter.CodiceEsercizio.Value));
            }

            // Fornitore
            if (filter.CodiceFornitore != null)
            {
                hql.Append(" AND SPE.FornitoreRiferimento.ID = :fornitore");
                parameters.Add(new QueryParam("fornitore", filter.CodiceFornitore.Value));
            }

            // Numero Documento
            if (!string.IsNullOrEmpty(filter.NumeroDocumento))
            {
                hql.Append(" AND SPE.NumeroDocumento LIKE :numeroDocumento");
                parameters.Add(new QueryParam("numeroDocumento", filter.NumeroDocumento + "%"));
            }

            // Data Documento
            if (filter.DataDocumentoInizio != null)
            {
                hql.Append(" AND SPE.DataDocumento >= :dataDocumentoInizio");
                parameters.Add(new QueryParam("dataDocumentoInizio", filter.DataDocumentoInizio.Value));
            }
            if (filter.DataDocumentoFine != null)
            {
                hql.Append(" AND SPE.DataDocumento <= :dataDocumentoFine");
                parameters.Add(new QueryParam("dataDocumentoFine", filter.DataDocumentoFine.Value));
            }

            // Protocollo
            if (filter.Protocollo > 0)
            {
                hql.Append(" AND SPE.NumeroProtocollo = :protocollo");
                parameters.Add(new QueryParam("protocollo", filter.Protocollo.Value));
            }

            // Detraibile
            if (filter.Detrazione != null)
            {
                hql.Append(" AND SPE.Detrazione = :detrazione");
                parameters.Add(new QueryParam("detrazione", filter.Detrazione));
            }

            // Tipo Documento
            if (!string.IsNullOrEmpty(filter.TipoDocumento))
            {
                hql.Append(" AND SPE.TipoDocumento = :tipo");
                parameters.Add(new QueryParam("tipo", filter.TipoDocumento));
            }

            var spese = _daoFactory.GetSpesaDao().GetByQuery(hql.ToString(), parameters.ToArray());
            if(filter.ImportoInizio != null || filter.ImportoFine != null)
            {
                var speseImportoFilter = new List<GestioneCondomini.Domain.Spesa>(spese.Count);
                foreach(var spesa in spese)
                {
                    decimal importo = spesa.ImportoLordo;
                    if (spesa.TipoDocumento == "BOLLETTA")
                        importo = spesa.ImportoBolletta.GetValueOrDefault();

                    if (filter.ImportoInizio != null && filter.ImportoFine != null)
                    {
                        if (importo >= filter.ImportoInizio && importo <= filter.ImportoFine)
                            speseImportoFilter.Add(spesa);
                    }
                    else if (filter.ImportoInizio != null && filter.ImportoFine == null)
                    {
                        if (importo >= filter.ImportoInizio)
                            speseImportoFilter.Add(spesa);
                    }
                    else if (filter.ImportoInizio == null && filter.ImportoFine != null)
                    {
                        if (importo <= filter.ImportoFine)
                            speseImportoFilter.Add(spesa);
                    }
                }
                return speseImportoFilter;
            }
            return spese;
        }
예제 #6
0
		public List<SpesaDTO> GetSpeseByFilter(SpesaFilter filter, UserInfo userinfo)
		{
            var retryCount = 5;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            List<SpesaDTO> item = null;
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var repo = new SpesaRepository(userinfo, windsorRep);
                    item = repo.GetAllByFilter(filter);
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nella lettura delle spese - TENTATIVO:{0} - {1} - condominio:{2} - esercizio:{3} - fornitore:{4} - numero documento:{5} - data inizio:{6} - data fine:{7} - protocollo:{8} - importo inizio:{9} - importo fine:{10} - tipo documento:{11} - azienda:{12} - number:{13}", ex, (6 - retryCount), Utility.GetMethodDescription(), filter.CodiceCondominio, filter.CodiceEsercizio, filter.CodiceFornitore, filter.NumeroDocumento, filter.DataDocumentoInizio.GetValueOrDefault(), filter.DataDocumentoFine.GetValueOrDefault(), filter.Protocollo, filter.ImportoInizio.GetValueOrDefault(), filter.ImportoFine.GetValueOrDefault(), filter.TipoDocumento, userinfo.Azienda, getExceptionId(ex));
                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (6 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Lettura delle spese - INIZIO TENTATIVO:{0} - {1} - condominio:{2} - esercizio:{3} - fornitore:{4} - numero documento:{5} - data inizio:{6} - data fine:{7} - protocollo:{8} - importo inizio:{9} - importo fine:{10} - tipo documento:{11} - azienda:{12}", (6 - retryCount), Utility.GetMethodDescription(), filter.CodiceCondominio, filter.CodiceEsercizio, filter.CodiceFornitore, filter.NumeroDocumento, filter.DataDocumentoInizio.GetValueOrDefault(), filter.DataDocumentoFine.GetValueOrDefault(), filter.Protocollo, filter.ImportoInizio.GetValueOrDefault(), filter.ImportoFine.GetValueOrDefault(), filter.TipoDocumento, userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}