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); }
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>(); }
/// <summary> /// Construtor de ServicoAplicacaoContaCorrente /// </summary> /// <param name="servico"></param> public ServicoAplicacaoContaCorrente(IServicoContaCorrente servico) { _servico = servico; }
/// <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); }