public ValidarContaCorrenteResponse ObterSaldoContaCorrente(ValidarContaCorrenteRequest request)
        {
            SaldoContaCorrenteRequest    requestSaldoContaCorrente = new SaldoContaCorrenteRequest();
            ValidarContaCorrenteResponse response = new ValidarContaCorrenteResponse();

            requestSaldoContaCorrente.IdCliente = request.IdCliente;


            try
            {
                IServicoContaCorrente servico = Ativador.Get <IServicoContaCorrente>();

                SaldoContaCorrenteResponse <ContaCorrenteInfo> responseSaldoContaCorrente = new SaldoContaCorrenteResponse <ContaCorrenteInfo>();
                responseSaldoContaCorrente = servico.ObterSaldoContaCorrente(requestSaldoContaCorrente);

                response.SaldoD0          = responseSaldoContaCorrente.Objeto.SaldoD0;
                response.SaldoD1          = responseSaldoContaCorrente.Objeto.SaldoD1;
                response.SaldoD2          = responseSaldoContaCorrente.Objeto.SaldoD2;
                response.SaldoD3          = responseSaldoContaCorrente.Objeto.SaldoD3;
                response.SaldoContaMargem = responseSaldoContaCorrente.Objeto.SaldoContaMargem;
                response.SaldoBloqueado   = responseSaldoContaCorrente.Objeto.SaldoBloqueado;

                response.SaldoProjetado = ((
                                               response.SaldoD0 +
                                               response.SaldoD1 +
                                               response.SaldoD2 +
                                               response.SaldoD3) +
                                           (decimal.Parse(response.SaldoContaMargem.ToString())) +
                                           (decimal.Parse(response.SaldoBloqueado.ToString())));


                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                response.DescricaoResposta = "Saldos carregados com sucesso.";
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.Exception         = ex;
                response.DescricaoResposta = ex.Message;
            }
            return(response);
        }
Exemple #2
0
        private TransporteSaldoDeConta BuscarSaldoEmContaNoServico()
        {
            TransporteSaldoDeConta lRetorno = new TransporteSaldoDeConta();

            try
            {
                IServicoContaCorrente servicoCC = this.InstanciarServico <IServicoContaCorrente>();
                SaldoContaCorrenteResponse <ContaCorrenteInfo> resCC = servicoCC.ObterSaldoContaCorrente(new SaldoContaCorrenteRequest()
                {
                    IdCliente = this.GetCodigoBovespa
                });

                SaldoContaCorrenteResponse <ContaCorrenteBMFInfo> resBMF = servicoCC.ObterSaldoContaCorrenteBMF(new SaldoContaCorrenteRequest()
                {
                    IdCliente = this.GetCodigoBMF
                });

                if (resCC.StatusResposta == OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK && resBMF.StatusResposta != OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK)
                {
                    lRetorno = new TransporteSaldoDeConta(resCC.Objeto);
                }
                else if (resCC.StatusResposta != OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK && resBMF.StatusResposta == OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK)
                {
                    lRetorno = new TransporteSaldoDeConta(resBMF.Objeto);
                }
                else if (resCC.StatusResposta == OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK && resBMF.StatusResposta == OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK)
                {
                    lRetorno = new TransporteSaldoDeConta(resCC.Objeto, resBMF.Objeto);
                }
                else
                {
                    gLogger.Error(string.Format("Erro: {0}\r\n{1}", resCC.StatusResposta, resCC.DescricaoResposta));
                }
            }
            catch (Exception ex)
            {
                gLogger.Error(string.Format("Erro: {0}\r\n{1}", ex.Message, ex.StackTrace));
            }

            return(lRetorno);
        }
 public ContaCorrenteServico()
 {
     gServicoContaCorrente = Ativador.Get <IServicoContaCorrente>();
 }
Exemple #4
0
 /// <summary>
 /// Construtor de ServicoAplicacaoContaCorrente
 /// </summary>
 /// <param name="servico"></param>
 public ServicoAplicacaoContaCorrente(IServicoContaCorrente servico)
 {
     _servico = servico;
 }
Exemple #5
0
        /// <summary>
        /// Método que busca os valores de conta-corrente no serviço de contacorrente
        /// </summary>
        /// <returns>Retorna uma string json com os valores de contacorrente do cliente selecionado</returns>
        public string ResponderBuscarLimites()
        {
            string lRetorno = string.Empty;

            int lCodigoCliente = RequestCodigoCliente.Value;

            try
            {
                IServicoContaCorrente servicoCC = this.InstanciarServico <IServicoContaCorrente>();

                decimal lTotalSaldoCC = 0M;

                var lResponseSaldo = servicoCC.ObterSaldoContaCorrente(new SaldoContaCorrenteRequest()
                {
                    IdCliente = lCodigoCliente
                });

                if (lResponseSaldo != null && lResponseSaldo.StatusResposta == OMS.ContaCorrente.Lib.Enum.CriticaMensagemEnum.OK)
                {
                    lTotalSaldoCC = lResponseSaldo.Objeto.SaldoD0;
                }

                ///Buscanso valor de fundos
                List <Transporte_PosicaoCotista> ListaPosicao = base.PosicaoFundosSumarizado(lCodigoCliente, CpfCnpj);

                decimal lTotalFundos = 0M;

                foreach (var lFundo in ListaPosicao)
                {
                    lTotalFundos += decimal.Parse(lFundo.ValorLiquido);
                }


                var lRequestCustodia = new MonitorCustodiaRequest();

                var lResponseCustodia = new MonitorCustodiaResponse();

                var gServicoCustodia = Ativador.Get <IServicoMonitorCustodia>();

                lRequestCustodia.CodigoCliente = lCodigoCliente;

                lResponseCustodia = gServicoCustodia.ObterMonitorCustodiaMemoria(lRequestCustodia);

                var lRetornoCustodia = new List <TransporteCustodiaInfo>();

                IEnumerable <MonitorCustodiaInfo.CustodiaPosicao> Lista = from a in lResponseCustodia.MonitorCustodia.ListaCustodia orderby a.Resultado descending select a;

                lRetornoCustodia = TransporteCustodiaInfo.TraduzirCustodiaInfo(Lista.ToList());

                var lListaCustodia = lRetornoCustodia;

                decimal lSomatoriaCustodia = 0M;

                IServicoCotacao lServicoCotacao = Ativador.Get <IServicoCotacao>();

                foreach (TransporteCustodiaInfo lCus in lListaCustodia)
                {
                    var lCotacao = lServicoCotacao.ReceberTickerCotacao(lCus.CodigoNegocio);

                    var lMsgCotacao = new Gradual.Intranet.Www.App_Codigo.TransporteJson.TransporteMensagemDeNegocio(lCotacao);

                    lSomatoriaCustodia += (Convert.ToDecimal(lCus.QtdAtual) * Convert.ToDecimal(lMsgCotacao.Preco));
                }

                decimal lTotalLimiteSomado = (lTotalFundos + lSomatoriaCustodia + lTotalSaldoCC);

                var lObjetoRetorno = new ClienteCallBackLimite(lCodigoCliente, RequestCodigoIPOCliente, lTotalLimiteSomado);

                lRetorno = RetornarSucessoAjax(lObjetoRetorno, "Limite do cliente " + lCodigoCliente + " atualizado com sucesso");
            }
            catch (Exception ex)
            {
                lRetorno = RetornarErroAjax("Erro ao Buscar dados de limites", ex);
            }

            return(lRetorno);
        }
        private AdesaoClienteResponse CalcularRiscoCliente(AdesaoClienteRequest request)
        {
            AdesaoClienteResponse response = new AdesaoClienteResponse();
            decimal saldoProjetado         = 0;
            decimal saldoCustodia          = 0;
            decimal valorCarteira          = 0;

            // Obtendo saldo projetado do cliente
            SaldoContaCorrenteResponse <ContaCorrenteInfo> responseSaldo = new SaldoContaCorrenteResponse <ContaCorrenteInfo>();

            try
            {
                SaldoContaCorrenteRequest requestSaldoContaCorrente = new SaldoContaCorrenteRequest();
                requestSaldoContaCorrente.IdCliente = request.IdCliente;

                IServicoContaCorrente servico = Ativador.Get <IServicoContaCorrente>();

                responseSaldo = servico.ObterSaldoContaCorrente(requestSaldoContaCorrente);

                saldoProjetado = ((
                                      responseSaldo.Objeto.SaldoD0 +
                                      responseSaldo.Objeto.SaldoD1 +
                                      responseSaldo.Objeto.SaldoD2 +
                                      responseSaldo.Objeto.SaldoD3) +
                                  (decimal.Parse(responseSaldo.Objeto.SaldoContaMargem.ToString())) +
                                  (decimal.Parse(responseSaldo.Objeto.SaldoBloqueado.ToString())));
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.bSucesso          = false;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.Exception         = ex;
                response.DescricaoResposta = ex.Message;
                return(response);
            }

            // Obtendo saldo da custódia do cliente
            string listaCustodia = "";

            try
            {
                SaldoCustodiaRequest requestCustodia = new SaldoCustodiaRequest();
                requestCustodia.IdCliente = request.IdCliente;

                IServicoCustodia servico = Ativador.Get <IServicoCustodia>();
                SaldoCustodiaResponse <CustodiaClienteInfo> responseCustodia = servico.ObterSaldoCustodiaClienteIntranet(requestCustodia);

                foreach (CustodiaClienteInfo custodia in responseCustodia.ColecaoObjeto)
                {
                    decimal ultimaCotacao = ObterUltimaCotacao(custodia.CodigoInstrumento);
                    if (ultimaCotacao != 0)
                    {
                        saldoCustodia += (custodia.QtdeDisponivel * ultimaCotacao);
                        listaCustodia += custodia.CodigoInstrumento + "(" + custodia.QtdeDisponivel + "*" + ultimaCotacao + ") ";
                    }
                    else
                    {
                        saldoCustodia += Convert.ToDecimal(custodia.ValorPosicao);
                        listaCustodia += custodia.CodigoInstrumento + "(" + custodia.ValorPosicao + ") ";
                    }
                }
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.bSucesso          = false;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.Exception         = ex;
                response.DescricaoResposta = ex.Message;
                return(response);
            }

            // Obtendo valor total da composicao da carteira recomendada
            string listaCarteira = "";

            try
            {
                ListarComposicaoRequest requestComposicao = new ListarComposicaoRequest();
                requestComposicao.idProduto = request.IdProduto;

                ListarComposicaoResponse responseComposicao = SolicitarListaComposicao(requestComposicao);

                foreach (CarteiraRecomendadaComposicaoInfo composicao in responseComposicao.listaComposicao)
                {
                    decimal ultimaCotacao = ObterUltimaCotacao(composicao.IdAtivo);
                    valorCarteira += (composicao.Quantidade * ultimaCotacao);

                    listaCarteira += composicao.IdAtivo + "(" + composicao.Quantidade + "*" + ultimaCotacao + ") ";
                }
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.bSucesso          = false;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.Exception         = ex;
                response.DescricaoResposta = ex.Message;
                return(response);
            }


            logger.Debug("Saldo Projetado: " + saldoProjetado + " (" +
                         responseSaldo.Objeto.SaldoD0 + " + " +
                         responseSaldo.Objeto.SaldoD1 + " + " +
                         responseSaldo.Objeto.SaldoD2 + " + " +
                         responseSaldo.Objeto.SaldoD3 + " + " +
                         responseSaldo.Objeto.SaldoContaMargem.ToString() + " + " +
                         responseSaldo.Objeto.SaldoBloqueado.ToString() + ")");
            logger.Debug("Saldo Custodia: " + saldoCustodia + " (" + listaCustodia + ")");
            logger.Debug("Valor Carteira: " + valorCarteira + " (" + listaCarteira + ")");

            // Verifica o risco do cliente
            if (saldoCustodia + saldoProjetado < valorCarteira)
            {
                response.DataResposta      = DateTime.Now;
                response.bSucesso          = false;
                response.CriticaResposta   = StatusRespostaEnum.ErroNegocio;
                response.DescricaoResposta = "Cliente não possui saldo suficiente para adesão à Carteira Recomendada solicitada.";
                logger.Debug("Cliente não possui saldo suficiente para adesão à Carteira Recomendada solicitada");
            }
            else
            {
                response.DataResposta      = DateTime.Now;
                response.bSucesso          = true;
                response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                response.DescricaoResposta = SUCESSO;
            }

            return(response);
        }