예제 #1
0
        public List<MovimentiBancariDTO> GetByFilter(MovimentoBancarioFilter filter)
        {
            try
            {
                var result = GetServiceClient().GetMovimentiByFilter(filter, null, null, false, GetUserInfo());
                CloseService();
                return result;
            }
            catch (CommunicationObjectAbortedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Gipasoft.Library.Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (CommunicationObjectFaultedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Gipasoft.Library.Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (IOException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Gipasoft.Library.Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (ObjectDisposedException ex)
            {
                _log.DebugFormat("Errore nella chiamata al servizio - {0} - azienda:{1}", ex, Gipasoft.Library.Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento degli Abi Cab - {0} - azienda:{1}", ex, Gipasoft.Library.Utility.GetMethodDescription(), Login.Instance.CurrentLogin().Azienda);
            }

            return new List<MovimentiBancariDTO>();
        }
예제 #2
0
        public void LoadData(MovimentoBancarioFilter filter)
        {
            var form = new ExecuteLoadDataListAsync<MovimentiBancariDTO>("E' in corso la ricerca dei movimenti bancari ....." + Environment.NewLine + "Si prega di attendere.");
            Func<List<MovimentiBancariDTO>> loadDati = () => getMovimentoBancarioService().GetByFilter(filter);
            form.LoadData(loadDati);
            form.ShowDialog();
            loadData(form.DataSourceObject);
            form.Dispose();

            panelButton.Visible = filtroGroup.Visible;

            SferaServiceProxy.Instance.Close();
        }
예제 #3
0
        public DatiCondomini Get([FromUri]SearchCriteria json)
        {
            var service = new SferaService();
            var info = new UserInfo(0, json.Azienda);

            var filter = new MovimentoBancarioFilter
            {
                IdCondominio = json.Condominio,
                DataContabileIniziale = json.DataIniziale,
                DataContabileFinale = json.DataFinale
            };

            var inizio = ((json.PageNumber - 1)*json.PageSize);
            var movimentiBancari = service.GetMovimentiByFilter(filter, inizio, json.PageSize, true, info);
            foreach (var movimentiBancariDTO in movimentiBancari)
            {
                if (movimentiBancariDTO.Segno == "D")
                    movimentiBancariDTO.Importo = movimentiBancariDTO.Importo*-1;
                movimentiBancariDTO.Descrizione = movimentiBancariDTO.DescrizioneBreve + movimentiBancariDTO.Descrizione;
            }

            var totaleMovimenti = service.GetMovimentiCountByFilter(filter, info);

            // Saldi
            var saldiBancari = service.GetSaldiBancariByCondominio(json.Condominio, info);
            var condominio = service.GetCondominioById(json.Condominio, true, false, info);
            var saldi = new List<SaldoContoCorrente>();
            foreach (var saldoBancarioDTO in saldiBancari)
            {
                var idContoCorrente = saldoBancarioDTO.IdContoCorrente;
                var datiBancari = condominio.DatiBancari.FirstOrDefault(item => item.ID == idContoCorrente);
                if (datiBancari != null)
                {
                    var descrizione = datiBancari.DisplayName;
                    var iban = datiBancari.Iban;
                    var importo = saldoBancarioDTO.SaldoContabileBanca;
                    saldi.Add(new SaldoContoCorrente(descrizione, iban, importo.GetValueOrDefault()));
                }
            }

            return new DatiCondomini { MovimentiBancari = movimentiBancari, TotalItems = totaleMovimenti, Saldi = saldi};
        }
예제 #4
0
        public static object GetMovimentiBancari(int? numRows, int? page, string sortField, string sortOrder, bool isSearch, string searchField, string searchString, string searchOper, string dataIniziale, string dataFinale, int idAzienda)
        {
            if (HttpContext.Current.Session["condomino"] != null)
            {
                var service = new SferaService();
                var info = new UserInfo(0, idAzienda);
                var condomino = (SoggettoCondominioDTO) HttpContext.Current.Session["condomino"];
                var filter = new MovimentoBancarioFilter
                                 {
                                     IdCondominio = condomino.IdCondominio,
                                     DataContabileIniziale = GetDataIniziale(),
                                     DataContabileFinale = GetDataFinale()
                                 };

                if (isSearch)
                {
                    switch (searchField)
                    {
                        case "Descrizione":
                            filter.Descrizione = searchString;
                            break;
                        case "DescrizioneCausale":
                            filter.DescrizioneCausale = searchString;
                            break;
                    }
                }

                if (!string.IsNullOrEmpty(dataIniziale))
                    filter.DataContabileIniziale = DateTime.Parse(dataIniziale);
                if (!string.IsNullOrEmpty(dataFinale))
                    filter.DataContabileFinale = DateTime.Parse(dataFinale);

                var inizio = (page*numRows) - numRows;
                var movimentiBancari = service.GetMovimentiByFilter(filter, inizio, numRows, true, info).OrderBy(item => item.DataContabile).ThenBy(item => item.ID).ToList();

                switch (sortField)
                {
                    case "DataContabile":
                        movimentiBancari = sortOrder == "asc"
                                               ? movimentiBancari.OrderBy(item => item.DataContabile).ToList()
                                               : movimentiBancari.OrderByDescending(item => item.DataContabile).ToList();
                        break;
                    case "Importo":
                        movimentiBancari = sortOrder == "asc"
                                               ? movimentiBancari.OrderBy(item => item.Importo).ToList()
                                               : movimentiBancari.OrderByDescending(item => item.Importo).ToList();
                        break;
                    case "DescrizioneCausale":
                        movimentiBancari = sortOrder == "asc"
                                               ? movimentiBancari.OrderBy(item => item.Causale).ToList()
                                               : movimentiBancari.OrderByDescending(item => item.Causale).ToList();
                        break;
                    case "Descrizione":
                        movimentiBancari = sortOrder == "asc"
                                               ? movimentiBancari.OrderBy(item => item.DescrizioneBreve).ToList()
                                               : movimentiBancari.OrderByDescending(item => item.DescrizioneBreve).
                                                     ToList();
                        break;
                }

                //--- format json
                var pageIndex = page ?? 1; //--- current page
                var pageSize = numRows ?? 10; //--- number of rows to show per page
                var totalRecords = service.GetMovimentiCountByFilter(filter, info);
                    //--- number of total items from query
                var totalPages = (int) Math.Ceiling(totalRecords/(decimal) pageSize); //--- number of pages

                var jsonData = new
                {
                    totalpages = totalPages,
                    //--- number of pages
                    page = pageIndex,
                    //--- current page
                    totalrecords = totalRecords,
                    //--- total items
                    rows = (
                                from row in movimentiBancari
                                select new {i = row.ID, cell =
                                    new[] { row.IdentificativoDocumentoSpesa, row.DescrizioneCausale,
                                            row.DescrizioneBreve + " " + row.Descrizione,
                                            row.DataContabile.GetValueOrDefault().ToShortDateString(),
                                            row.Importo.GetValueOrDefault().ToString("c") }
                                            }).ToArray()
                };

                return Newtonsoft.Json.JsonConvert.SerializeObject(jsonData);
            }

            return null;
        }
예제 #5
0
        private void btnRicercaClick(object sender, EventArgs e)
        {
            // Per Luca è meglio poter vedere tutti i movimenti bancari senza alcun filtro per condominio
            //if (!validationSummary1.Validators.Contains(condominioRequiredFieldValidator) && (_idFile == null || _idFile <= 0))
            //    validationSummary1.Validators.Add(condominioRequiredFieldValidator);

            validationSummary1.Validate();
            if (validationSummary1.IsValid)
            {
                var filter = new MovimentoBancarioFilter();
                if (sceltaCondominioCombo1.CondominioSelected != null)
                    filter.IdCondominio = sceltaCondominioCombo1.CondominioSelected.ID;
                filter.IdFileCBI = _idFile;
                if (bonificiAttivi.CheckState != CheckState.Indeterminate)
                    filter.VersamentiMav = bonificiAttivi.Checked;
                else
                    filter.VersamentiMav = null;

                if (mavCondomini.CheckState != CheckState.Indeterminate)
                    filter.VersamentiCondomini = mavCondomini.Checked;
                else
                    filter.VersamentiCondomini = null;

                if (evasi.CheckState != CheckState.Indeterminate)
                    filter.Evasi = evasi.Checked;
                else
                    filter.Evasi = null;

                if (importoDa.Value != 0)
                    filter.ImportoIniziale = importoDa.Value;
                if (importoA.Value != 0)
                    filter.ImportoFinale = importoA.Value;

                filter.DataContabileIniziale = (DateTime?)dataContabileIniziale.Value;
                filter.DataContabileFinale = (DateTime?)dataContabileFinale.Value;

                LoadData(filter);
            }
            else
                validationSummary1.ShowErrorSummary();
        }
예제 #6
0
        public List<MovimentiBancariDTO> GetMovimentiDaEvadere(MovimentoBancarioFilter filter)
        {
            var movimentiBancariService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IMovimentiBancariService>();
            var movimenti = movimentiBancariService.GetDaEvadere(filter);

            var movimentiDto = new List<MovimentiBancariDTO>(movimenti.Count);
            foreach (var movimento in movimenti)
            {
                var movimentoDto = GetByDomainEntity(movimento);
                if (movimento.Segno == "D")
                    movimentoDto.Importo = movimentoDto.Importo * -1;
                movimentiDto.Add(movimentoDto);
            }

            return movimentiDto;
        }
예제 #7
0
        private HqlFilter getHqlFromFilter(MovimentoBancarioFilter filter)
        {
            try
            {
                var hql = "FROM MovimentoBancario M LEFT JOIN FETCH M.Banca B LEFT JOIN FETCH B.CondominioRiferimento C LEFT JOIN FETCH M.Esercizio E LEFT JOIN FETCH M.Fornitore FO LEFT JOIN FETCH M.File FILECBI WHERE FILECBI.Azienda = :azienda";

                var whereClause = new StringBuilder(string.Empty);
                var parameters = new List<QueryParam> { new QueryParam("azienda", _info.Azienda) };

                if (!string.IsNullOrEmpty(filter.Descrizione))
                {
                    whereClause.Append(" AND M.Descrizione LIKE :descrizione ");
                    parameters.Add(new QueryParam("descrizione", "%" + filter.Descrizione + "%"));
                }

                if (!string.IsNullOrEmpty(filter.DescrizioneCausale))
                {
                    whereClause.Append(" AND M.Causale = :causale ");
                    parameters.Add(new QueryParam("causale", filter.DescrizioneCausale));
                }

                if (filter.Evasi != null)
                {
                    if (filter.Evasi.Value)
                    {
                        whereClause.Append(" AND M.Stato = :stato ");
                        parameters.Add(new QueryParam("stato", Conversione.ToHQLParameter(StatoMovimentoBancarioEnum.Contabilizzato)));
                    }
                    else
                    {
                        whereClause.Append(" AND M.Stato <> :stato ");
                        parameters.Add(new QueryParam("stato", Conversione.ToHQLParameter(StatoMovimentoBancarioEnum.Contabilizzato)));
                    }
                }

                if (filter.VersamentiCondomini != null)
                {
                    if (!filter.VersamentiCondomini.Value)
                    {
                        whereClause.Append(" AND M.Causale <> :causaleVersamentiCondomini ");
                        parameters.Add(new QueryParam("causaleVersamentiCondomini", "56"));
                    }
                    else
                    {
                        whereClause.Append(" AND M.Causale = :causaleVersamentiCondomini ");
                        parameters.Add(new QueryParam("causaleVersamentiCondomini", "56"));
                    }
                }

                if (filter.IdFileCBI != null)
                {
                    whereClause.Append(" AND FILECBI = :filecbi");
                    parameters.Add(new QueryParam("filecbi", filter.IdFileCBI));
                }

                if (filter.IdEvasioneBancaria != null)
                {
                    whereClause.Append(" AND M.EvasioneBancaria = :evasioneBancaria");
                    parameters.Add(new QueryParam("evasioneBancaria", filter.IdEvasioneBancaria.Value));
                }

                if (filter.IdCondominio != null)
                {
                    whereClause.Append(" AND C.ID = :condominio");
                    parameters.Add(new QueryParam("condominio", filter.IdCondominio));
                }

                if (filter.ImportoIniziale != null)
                {
                    whereClause.Append(" AND M.Importo >= :importoIniziale");
                    parameters.Add(new QueryParam("importoIniziale", filter.ImportoIniziale));
                }

                if (filter.ImportoFinale != null)
                {
                    whereClause.Append(" AND M.Importo <= :importoFinale");
                    parameters.Add(new QueryParam("importoFinale", filter.ImportoFinale));
                }

                if (filter.DataContabileIniziale != null)
                {
                    whereClause.Append(" AND M.DataContabile >= :dataIniziale");
                    parameters.Add(new QueryParam("dataIniziale", filter.DataContabileIniziale.Value));
                }

                if (filter.DataContabileFinale != null)
                {
                    whereClause.Append(" AND M.DataContabile <= :dataFinale");
                    parameters.Add(new QueryParam("dataFinale", filter.DataContabileFinale.Value));
                }

                if (filter.VersamentiMav != null)
                {
                    whereClause.Append(!filter.VersamentiMav.Value
                                           ? " AND M.Causale <> :causaleVersamentiMav"
                                           : " AND M.Causale = :causaleVersamentiMav");
                    parameters.Add(new QueryParam("causaleVersamentiMav", "48"));
                }

                if (filter.TipoPagamento != null)
                {
                    if (filter.TipoPagamento.Value == TipoPagamentoEnum.RitenutaAcconto)
                    {
                        whereClause.Append(" AND M.Causale = :causalePagamentoDelega");
                        parameters.Add(new QueryParam("causalePagamentoDelega", "19"));
                    }
                }

                hql += whereClause + " ORDER BY M.DataContabile";

                return new HqlFilter(hql, parameters);

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella composizione della stringa HQL - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }
예제 #8
0
        public int GetMovimentiCountByFilter(MovimentoBancarioFilter filter, int azienda)
        {
            try
            {
                const string hql = "SELECT count(M) FROM MovimentoBancario M WHERE M.Banca.CondominioRiferimento = :condominio AND M.DataContabile >= :dataIniziale AND M.DataContabile <= :dataFinale";
                var parameters = new[] { new QueryParam("condominio", filter.IdCondominio.GetValueOrDefault()), new QueryParam("dataIniziale", filter.DataContabileIniziale.GetValueOrDefault()), new QueryParam("dataFinale", filter.DataContabileFinale.GetValueOrDefault()) };

                return Convert.ToInt32(_daoFactory.GetMovimentoBancarioDao().GetUniqueResult(hql, parameters));
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nel conteggio dei movimenti bancari per filter - " + Utility.GetMethodDescription() + " - filter:" + filter, ex);
                throw;
            }
        }
예제 #9
0
        public List<MovimentiBancariDTO> GetMovimentiByFilter(MovimentoBancarioFilter filter, int? inizio, int? numeroRighe, bool loadIdentificativoArchiviazione, int azienda)
        {
            List<MovimentiBancariDTO> movimentiDto = null;

            try
            {
                var hqlFilter = getHqlFromFilter(filter);

                IList<MovimentoBancario> movimenti;
                if(numeroRighe.GetValueOrDefault() > 0)
                    movimenti = _daoFactory.GetMovimentoBancarioDao().GetByQuery(hqlFilter.Hql, inizio.GetValueOrDefault(), numeroRighe.GetValueOrDefault(), hqlFilter.Parameters.ToArray());
                else
                    movimenti = _daoFactory.GetMovimentoBancarioDao().GetByQuery(hqlFilter.Hql, hqlFilter.Parameters.ToArray());

                movimentiDto = new List<MovimentiBancariDTO>(movimenti.Count);
                movimentiDto.AddRange(movimenti.Select(movimentoBancario => setDto(movimentoBancario, loadIdentificativoArchiviazione)));
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento dei movimenti bancari - {0} - filter:{1}", ex, Utility.GetMethodDescription(), filter);
            }
            return movimentiDto;
        }
예제 #10
0
        public IList<MovimentoBancario> GetDaEvadere(MovimentoBancarioFilter filter)
        {
            var where = new StringBuilder();
            var hql = "FROM MovimentoBancario B LEFT JOIN FETCH B.File FILECBI LEFT JOIN FETCH B.Banca BANCA LEFT JOIN FETCH B.Fornitore FOR LEFT JOIN FETCH FOR.PersonaRiferimento PERS LEFT JOIN FETCH PERS.IndirizzoResidenza.Comune COM LEFT JOIN FETCH B.Condominio COND LEFT JOIN FETCH B.Esercizio ESE WHERE B.Stato <> :stato ";
            var parameters = new List<QueryParam>
            {
                new QueryParam("stato", Conversione.ToHQLParameter(StatoMovimentoBancarioEnum.Contabilizzato))
            };

            if (filter.VersamentiCondomini != null)
            {
                if (!filter.VersamentiCondomini.Value)
                {
                    where.Append(" AND B.Causale <> :causaleVersamentiCondomini ");
                    parameters.Add(new QueryParam("causaleVersamentiCondomini", "56"));
                }
                else
                {
                    where.Append(" AND B.Causale = :causaleVersamentiCondomini ");
                    parameters.Add(new QueryParam("causaleVersamentiCondomini", "56"));
                }
            }

            if (filter.VersamentiMav != null)
            {
                var causaliBonificiAttivi = new List<string> {"48", "56"};
                parameters.Add(new QueryParam("causaliBonificiAttivi", causaliBonificiAttivi));

                where.Append(!filter.VersamentiMav.Value
                                 ? " AND B.Causale NOT IN (:causaliBonificiAttivi) "
                                 : " AND B.Causale IN (:causaliBonificiAttivi) ");
            }

            // Filtri di ricerca
            if (filter.IdCondominio != null)
            {
                where.Append(" AND COND = :condominio");
                parameters.Add(new QueryParam("condominio", filter.IdCondominio.Value));
            }
            hql += where.ToString();

            return _daoFactory.GetMovimentoBancarioDao().GetByQuery(hql, parameters.ToArray());
        }
예제 #11
0
		public List<MovimentiBancariDTO> GetMovimentiDaEvadere(MovimentoBancarioFilter filter, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
				var rep = new MovimentoBancarioRepository(userinfo, windsorRep);
                var item = rep.GetMovimentiDaEvadere(filter);
				windsorRep.Commit();
				return item;
			}
			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nella esecuzione della funzione - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), userinfo.Azienda);
                windsorRep.Rollback();
				throw;
			}
		}
예제 #12
0
		public List<MovimentiBancariDTO> GetMovimentiByFilter(MovimentoBancarioFilter filter, int? inizio, int? numeroRighe, bool loadIdentificativoArchiviazione, UserInfo userinfo)
		{
            var retryCount = 10;
            var success = false;
            var windsorRep = new WindsorConfigRepository();
            List<MovimentiBancariDTO> item = null;
            while (retryCount >= 0 && !success)
            {
                try
                {
                    windsorRep.BeginTransaction(userinfo);
                    var rep = new MovimentoBancarioRepository(userinfo, windsorRep);
                    item = rep.GetMovimentiByFilter(filter, inizio, numeroRighe, loadIdentificativoArchiviazione, userinfo.Azienda);
                    windsorRep.Commit();
                    success = true;
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nella esecuzione della funzione - TENTATIVO:{0} - {1} - numeroRighe:{2} - azienda:{3} - number:{4}", ex, (11 - retryCount), Utility.GetMethodDescription(), numeroRighe, userinfo.Azienda, getExceptionId(ex));

                    windsorRep.Rollback();
                    if (!isRetryException(ex))
                        throw;

                    // Add delay here if you wish. 
                    System.Threading.Thread.Sleep(1000 * (11 - retryCount));
                    retryCount--;
                    _log.InfoFormat("Esecuzione della funzione - INIZIO TENTATIVO:{0} - {1} - {2}", (11 - retryCount), Utility.GetMethodDescription(), userinfo.Azienda);
                }
            }

            if (!success)
                windsorRep.Rollback();

            return item;
		}
예제 #13
0
 public List<MovimentiBancariDTO> GetDaEvadere(MovimentoBancarioFilter filter)
 {
     var result = GetServiceClient().GetMovimentiDaEvadere(filter, GetUserInfo());
     CloseService();
     return result;
 }
예제 #14
0
        private MatchDataSource loadDataSource()
        {
            try
            {
                if (_condominio != null)
                {
                    var contoBancario = _pianoContiService.GetBancarioByCondominio(_condominio);
                    if (contoBancario != null)
                    {
                        // Filter movimenti contabili
                        var filterMovimenti = new MovimentoContabileFilter
                        {
                            CodiceCondominio = _condominio.ID,
                            IdConto = contoBancario.ID,
                            VersamentiMav = versamentiMav.Checked
                        };
                        if (versamentiMav.CheckState != CheckState.Indeterminate)
                            filterMovimenti.VersamentiMav = versamentiMav.Checked;
                        else
                            filterMovimenti.VersamentiMav = null;

                        // Filter movimenti bancari
                        var filterMovimentiBancari = new MovimentoBancarioFilter { IdCondominio = _condominio.ID };
                        if (versamentiMav.CheckState != CheckState.Indeterminate)
                            filterMovimentiBancari.VersamentiMav = versamentiMav.Checked;
                        else
                            filterMovimentiBancari.VersamentiMav = null;

                        return new MatchDataSource(_movimentoContabileService.GetListaDaEvadereByFilter(filterMovimenti), _movimentoBancarioService.GetDaEvadere(filterMovimentiBancari));
                    }
                    else
                    {
                        CommonMessages.DisplayWarning("Non trovato nessun conto bancario");
                    }

                    _log.ErrorFormat("Non trovato conto bancario - {0} - condominio:{1} - azienda:{2}", Utility.GetMethodDescription(), _condominio.ID, Security.Login.Instance.CurrentLogin().Azienda);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel load del datasource - {0} - condominio:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), _condominio != null ? _condominio.ID.ToString() : "<NULL>", Security.Login.Instance.CurrentLogin().Azienda);
            }

            return new MatchDataSource(new List<MovimentoContabileListaDTO>(), new List<MovimentiBancariDTO>());
        }
예제 #15
0
 public void LoadData(MovimentoBancarioFilter filter)
 {
     _control.LoadData(filter);
 }