public void InserirMovimentoClienteRetroativo() { PersistenciaDB lDb = new PersistenciaDB(); MovimentoCCSinacorResponse _movimentoCCSinacor; CompraETFResponse _CompraETFResponse; ClienteMovCCRequest _clienteMovCCRequest = new ClienteMovCCRequest(); CustodiaValorizadaRequest _CustodiaValorizadaRequest; decimal ValorAplicacao = 0; decimal ValorCompra = 0; decimal ValorResquiso = 0; decimal ValorPrecoMedio = 0; DateTime dataTransacao = DateTime.Now; AcessaDados _AcessaDados = new AcessaDados(); _AcessaDados.ConnectionStringName = PersistenciaDB.ConexaoSQL; _AcessaDados.Conexao._ConnectionStringName = PersistenciaDB.ConexaoSQL; DbTransaction transacao; DbConnection ConnectionSql; ConnectionSql = _AcessaDados.Conexao.CreateIConnection(); ConnectionSql.Open(); transacao = ConnectionSql.BeginTransaction(); try { ClienteProdutoResponse ClienteSemMovimentoMes = lDb.SelecionarClienteRentabilidadeRetroativa(48054, new DateTime(2011, 11, 25)); //seleciona os clientes do poupe direct com data de movimento para hoje DateTime dataInicioVencimento = DateTime.MinValue; DateTime dataFimVencimento = DateTime.MinValue; decimal _CustoPapelHoje = 0; decimal _PercentualVariazao = 0; decimal _ValorPapelRentabilizado = 0; gLogger.InfoFormat("Quantidade de clientes com vencimento hoje - {0} .", ClienteSemMovimentoMes.ListaClienteProduto.Count); foreach (ClienteProdutoInfo clienteProduto in ClienteSemMovimentoMes.ListaClienteProduto) { _movimentoCCSinacor = new MovimentoCCSinacorResponse(); dataFimVencimento = clienteProduto.DtInicioTrocaPlano.Value.AddDays(-1); dataInicioVencimento = clienteProduto.DtVencimento.Value.AddDays(-clienteProduto.QtdDiasVencimento); _movimentoCCSinacor = lDb.SelecionarMovimentoCliente(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento); //Seleciona do SINACOR movimento do mes corrente _CompraETFResponse = lDb.SelecionarMovimentoCompraETF(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento, clienteProduto.CodigoAtivo); //Seleciona a compra de ETFs if (_movimentoCCSinacor.ListaMovimentoCCSinacor.Count > 0 && _CompraETFResponse.ListaCompraETF.Count > 0) { gLogger.InfoFormat("Usuário - {0} - vai ser rentabilizado.", clienteProduto.CodigoClientePoupe); ValorAplicacao = _movimentoCCSinacor.ListaMovimentoCCSinacor[0].ValorLancamento; ValorCompra = _CompraETFResponse.ListaCompraETF[0].ValorLiquido < 0 ? _CompraETFResponse.ListaCompraETF[0].ValorLiquido * -1 : _CompraETFResponse.ListaCompraETF[0].ValorLiquido; ValorResquiso = ValorAplicacao - ValorCompra; ValorResquiso = ValorAplicacao - ValorCompra; ValorPrecoMedio = lDb.ObterPrecoMedio(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento, clienteProduto.CodigoAtivo); _clienteMovCCRequest.ClienteMovCC = new ClienteMovCCInfo(); _clienteMovCCRequest.ClienteMovCC.CodigoClienteProduto = clienteProduto.CodigoClienteProduto; _clienteMovCCRequest.ClienteMovCC.CodigoCliente = clienteProduto.CodigoCliente; _clienteMovCCRequest.ClienteMovCC.ValorAplicacao = ValorAplicacao; _clienteMovCCRequest.ClienteMovCC.ValorConsumido = ValorCompra; _clienteMovCCRequest.ClienteMovCC.ValorResquicio = ValorResquiso; _clienteMovCCRequest.ClienteMovCC.ValorCorretagem = _CompraETFResponse.ListaCompraETF[0].ValorCorretagem;//tenho que definir de onde vem _clienteMovCCRequest.ClienteMovCC.DtSistema = DateTime.Now; _clienteMovCCRequest.ClienteMovCC.DtTransacao = _CompraETFResponse.ListaCompraETF[0].DataNegocio; _clienteMovCCRequest.ClienteMovCC.DescMovCC = "Movimento Sinacor para POUPE DIRECT"; lDb.InserirAtualizarClienteMovCC(_clienteMovCCRequest, transacao, _AcessaDados); //inseri na tabela tb_cliente_mov_cc _CustodiaValorizadaRequest = new CustodiaValorizadaRequest(); _CustodiaValorizadaRequest.CustodiaValorizada = new CustodiaValorizadaInfo(); _CustoPapelHoje = lDb.ObterPosicaoFechamentoCotacao(clienteProduto.CodigoAtivo); _PercentualVariazao = ((_CustoPapelHoje - _CompraETFResponse.ListaCompraETF[0].ValorPapel) * 100) / _CompraETFResponse.ListaCompraETF[0].ValorPapel; _ValorPapelRentabilizado = _CompraETFResponse.ListaCompraETF[0].QuantidadePapel * _CustoPapelHoje; RentabilidadeInfo rentabilidade = lDb.RentabilizarCarteira(clienteProduto.CodigoCliente, clienteProduto.CodigoProduto, _ValorPapelRentabilizado, _PercentualVariazao); _CustodiaValorizadaRequest.CustodiaValorizada.CodigoClienteProduto = clienteProduto.CodigoClienteProduto; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoCliente = clienteProduto.CodigoCliente; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoProduto = clienteProduto.CodigoProduto; _CustodiaValorizadaRequest.CustodiaValorizada.ValorAplicacao = ValorAplicacao; _CustodiaValorizadaRequest.CustodiaValorizada.ValorConsumido = ValorCompra; _CustodiaValorizadaRequest.CustodiaValorizada.ValorResquicio = ValorResquiso; _CustodiaValorizadaRequest.CustodiaValorizada.ValorCarteira = rentabilidade.ValorTotalCarteira + ValorResquiso; _CustodiaValorizadaRequest.CustodiaValorizada.ValorCustoMedio = ValorPrecoMedio; _CustodiaValorizadaRequest.CustodiaValorizada.DtRentabilizacao = DateTime.Now; _CustodiaValorizadaRequest.CustodiaValorizada.QtdTitulos = _CompraETFResponse.ListaCompraETF[0].QuantidadePapel; _CustodiaValorizadaRequest.CustodiaValorizada.PercentVariacao = rentabilidade.PercentVariacaoTotal; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoAtivo = clienteProduto.CodigoAtivo; _CustodiaValorizadaRequest.CustodiaValorizada.ValorAtivo = _CompraETFResponse.ListaCompraETF[0].ValorPapel; lDb.InserirAtualizarCustodiaValorizada(_CustodiaValorizadaRequest, transacao, _AcessaDados); //inseri na tabela TB_CUSTODIA_VALORIZADA } //zera as variáveis ValorAplicacao = 0; ValorCompra = 0; ValorResquiso = 0; } transacao.Commit(); } catch (Exception ex) { transacao.Rollback(); gLogger.ErrorFormat("Erro ao Pegar o movimento do cliente para o poupe - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } finally { ConnectionSql.Close(); ConnectionSql.Dispose(); ConnectionSql = null; transacao = null; } }
public BaseRepository(string connectionString) { _connectionSql = new ConnectionSql(connectionString); }