Пример #1
0
        public ConsultaSpcResponse ConsultarSPC(
            string tipoPessoaDocumento,
            string documento,
            string usuarioLogado,
            string hash)
        {
            if (tipoPessoaDocumento != "1" && tipoPessoaDocumento != "2" && tipoPessoaDocumento != "F" && tipoPessoaDocumento != "J")
            {
                return(RetornarErro("Tipo de Pessoa informado incorretamente. (1 - PJ | 2 - PF)"));
            }

            if (string.IsNullOrWhiteSpace(documento))
            {
                return(RetornarErro("Número do Documento (CNPJ/CPF) não informado"));
            }

            if (string.IsNullOrWhiteSpace(usuarioLogado))
            {
                return(RetornarErro("ID do usuário CRM não informado"));
            }

            if (hash != Config.Hash)
            {
                return(RetornarErro("Não autorizado (hash inválido)"));
            }

            documento = documento.RemoverCaracteresEspeciaisDocumento();

            TipoPessoaResponse tipoPessoa = TipoPessoaResponse.PessoaFisica;

            if (tipoPessoaDocumento == "2" || tipoPessoaDocumento == "J")
            {
                tipoPessoa = TipoPessoaResponse.PessoaJuridica;
            }

            SPCService service = new SPCService(Parametros.WsSPCUrl, Parametros.WsSPCUsuario, Parametros.WsSPCSenha);

            ConsultaSpcResponse       dadosConsulta             = new ConsultaSpcResponse();
            ContaRepositorio          contaRepositorio          = new ContaRepositorio();
            AnaliseCreditoRepositorio analiseCreditoRepositorio = new AnaliseCreditoRepositorio();
            ParametrosRepositorio     parametrosRepositorio     = new ParametrosRepositorio();

            var parametros = parametrosRepositorio.ObterParametros();

            var contaBusca = contaRepositorio.ObterContaPorDocumento(documento);

            if (contaBusca == null)
            {
                return(RetornarErro($"Conta com documento {documento} é inexistente"));
            }

            var resultadoSpc = service.Consultar(tipoPessoa, documento.RemoverCaracteresEspeciaisDocumento(), Parametros.WsSPCProduto);

            if (resultadoSpc == null)
            {
                return(RetornarErro($"Sem resposta da Consulta S"));
            }

            dadosConsulta.ContaId      = contaBusca.Id;
            dadosConsulta.DataConsulta = DateTime.Now;
            dadosConsulta.Protocolo    = $"{resultadoSpc.protocolo.numero}-{resultadoSpc.protocolo.digito}";
            dadosConsulta.Restricao    = resultadoSpc.restricao;

            if (resultadoSpc.consumidor?.consumidorpessoajuridica != null)
            {
                dadosConsulta.TipoPessoa = TipoPessoaResponse.PessoaJuridica;

                var consumidor = resultadoSpc.consumidor?.consumidorpessoajuridica;

                dadosConsulta.RazaoSocial = consumidor.razaosocial;
                dadosConsulta.Fundacao    = consumidor.datafundacao;
                dadosConsulta.CNPJ        = Convert.ToUInt64(consumidor.cnpj.numero).ToString(@"00\.000\.000\/0000\-00");
                dadosConsulta.Atividade   = consumidor.atividadeeconomicaprincipal?.descricao ?? string.Empty;
                dadosConsulta.Situacao    = consumidor.situacaocnpj?.descricaosituacao ?? string.Empty;

                var endereco = consumidor?.endereco;

                if (endereco != null)
                {
                    dadosConsulta.Logradouro = endereco.logradouro;
                    dadosConsulta.Bairro     = endereco.bairro;
                    dadosConsulta.Cidade     = endereco.cidade.nome;
                    dadosConsulta.Estado     = endereco.cidade.estado.siglauf;
                    dadosConsulta.CEP        = endereco.cep;
                }
            }

            if (resultadoSpc.consumidor?.consumidorpessoafisica != null)
            {
                dadosConsulta.TipoPessoa = TipoPessoaResponse.PessoaFisica;

                var consumidor = resultadoSpc.consumidor?.consumidorpessoafisica;



                /// <summary>
                dadosConsulta.Nome           = consumidor.nome;
                dadosConsulta.DataNascimento = consumidor.datanascimento;
                dadosConsulta.CPF            = Convert.ToUInt64(consumidor.cpf.numero).ToString(@"000\.000\.000\-00");
                dadosConsulta.Situacao       = consumidor.situacaocpf?.descricaosituacao ?? string.Empty;
                dadosConsulta.Nacionalidade  = consumidor.nacionalidade?.nome ?? string.Empty;

                var endereco = consumidor?.endereco;

                if (endereco != null)
                {
                    dadosConsulta.Logradouro = endereco.logradouro;
                    dadosConsulta.Bairro     = endereco.bairro;
                    dadosConsulta.Cidade     = endereco.cidade.nome;
                    dadosConsulta.Estado     = endereco.cidade.estado.siglauf;
                    dadosConsulta.CEP        = endereco.cep;
                }
            }

            if (resultadoSpc.protesto?.resumo != null)
            {
                var protesto = resultadoSpc.protesto?.resumo;

                dadosConsulta.ProtestoQuantidade = protesto.quantidadetotal;
                dadosConsulta.ProtestoData       = protesto.dataultimaocorrencia;
                dadosConsulta.ProtestoValorTotal = protesto.valortotal;

                dadosConsulta.Quantidade += protesto.quantidadetotal;
            }

            if (resultadoSpc.acao?.resumo != null)
            {
                var acao = resultadoSpc.acao?.resumo;

                dadosConsulta.AcaoQuantidade = acao.quantidadetotal;
                dadosConsulta.AcaoData       = acao.dataultimaocorrencia;
                dadosConsulta.AcaoValorTotal = acao.valortotal;

                dadosConsulta.Quantidade += acao.quantidadetotal;
            }

            if (resultadoSpc.pendenciafinanceira?.resumo != null)
            {
                var pendencia = resultadoSpc.pendenciafinanceira?.resumo;

                dadosConsulta.PendenciaFinancQuantidade = pendencia.quantidadetotal;
                dadosConsulta.PendenciaFinancData       = pendencia.dataultimaocorrencia;
                dadosConsulta.PendenciaFinancValorTotal = pendencia.valortotal;

                dadosConsulta.Quantidade += pendencia.quantidadetotal;

                for (int i = 0; i < resultadoSpc.pendenciafinanceira?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoPendenciaFinanceira)resultadoSpc.pendenciafinanceira.Items[i];

                    var detalhe = new DetalhesPendenciaFinanceiraDTO();

                    detalhe.Titulo     = item.tituloocorrencia;
                    detalhe.Avalista   = item.avalista;
                    detalhe.Contrato   = item.contrato;
                    detalhe.Ocorrencia = item.dataocorrencia;
                    detalhe.Filial     = item.filial;
                    detalhe.Origem     = item.origem;
                    detalhe.Moeda      = item.moeda?.simbolo;
                    detalhe.Natureza   = item.naturezaanotacao?.descricaonaturezaanotacao;
                    detalhe.Cidade     = item.cidade?.nome;
                    detalhe.UF         = item.cidade?.estado?.siglauf;
                    detalhe.Valor      = item.valorpendencia;

                    dadosConsulta.DetalhesPendenciasFinanceiras.Add(detalhe);
                }
            }

            if (resultadoSpc.participacaofalencia?.resumo != null)
            {
                var participacaofalencia = resultadoSpc.participacaofalencia?.resumo;

                dadosConsulta.ParticipFalenciaQuantidade = participacaofalencia.quantidadetotal;
                dadosConsulta.ParticipFalenciaData       = participacaofalencia.dataultimaocorrencia;
                dadosConsulta.ParticipFalenciaValorTotal = participacaofalencia.valortotal;

                dadosConsulta.Quantidade += participacaofalencia.quantidadetotal;
            }

            if (resultadoSpc.spc?.resumo != null)
            {
                var spc = resultadoSpc.spc?.resumo;

                dadosConsulta.SpcQuantidade = spc.quantidadetotal;
                dadosConsulta.SpcData       = spc.dataultimaocorrencia;
                dadosConsulta.SpcValorTotal = spc.valortotal;

                dadosConsulta.Quantidade += spc.quantidadetotal;

                for (int i = 0; i < resultadoSpc.spc?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoSPC)resultadoSpc.spc.Items[i];

                    var detalhe = new DetalhesSpcDTO();

                    detalhe.Associado  = item.nomeassociado;
                    detalhe.Contrato   = item.contrato;
                    detalhe.Entidade   = item.nomeentidade;
                    detalhe.Inclusao   = item.datainclusao;
                    detalhe.Vencimento = item.datavencimento;
                    detalhe.Valor      = item.valor;

                    dadosConsulta.DetalhesSpc.Add(detalhe);
                }
            }

            if (resultadoSpc.chequesemfundovarejo?.resumo != null)
            {
                var chequeSemFundoVarejo = resultadoSpc.chequesemfundovarejo?.resumo;

                dadosConsulta.ChequeSFQuantidade = chequeSemFundoVarejo.quantidadetotal;
                dadosConsulta.ChequeSFData       = chequeSemFundoVarejo.dataultimaocorrencia;
                dadosConsulta.ChequeSFValorTotal = chequeSemFundoVarejo.valortotal;

                dadosConsulta.Quantidade += chequeSemFundoVarejo.quantidadetotal;
            }

            if (resultadoSpc.ccf?.resumo != null)
            {
                var ChequeSemFundoCCF = resultadoSpc.ccf?.resumo;

                dadosConsulta.ChequeSFCCFQuantidade = ChequeSemFundoCCF.quantidadetotal;
                dadosConsulta.ChequeSFCCFData       = ChequeSemFundoCCF.dataultimaocorrencia;
                dadosConsulta.ChequeSFCCFValorTotal = ChequeSemFundoCCF.valortotal;

                dadosConsulta.Quantidade += ChequeSemFundoCCF.quantidadetotal;

                for (int i = 0; i < resultadoSpc.ccf?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoCCF)resultadoSpc.ccf.Items[i];

                    var detalhe = new CCFDetalhesDTO();

                    detalhe.Origem           = item.origem;
                    detalhe.DataUltimoCheque = item.dataultimocheque;
                    detalhe.Quantidade       = item.quantidade;
                    detalhe.Motivo           = item.motivo?.descricao;

                    dadosConsulta.DetalhesCCF.Add(detalhe);
                }
            }

            if (resultadoSpc.chequelojista?.resumo != null)
            {
                var chequelojista = resultadoSpc.chequelojista?.resumo;

                dadosConsulta.ChequeLojistaQuantidade = chequelojista.quantidadetotal;
                dadosConsulta.ChequeLojistaData       = chequelojista.dataultimaocorrencia;
                dadosConsulta.ChequeLojistaValorTotal = chequelojista.valortotal;

                dadosConsulta.Quantidade += chequelojista.quantidadetotal;

                for (int i = 0; i < resultadoSpc.chequelojista?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoChequeLojista)resultadoSpc.chequelojista.Items[i];

                    var detalhe = new DetalhesChequeLojistaDTO();

                    detalhe.Associado       = item.nomeassociado;
                    detalhe.Entidade        = item.nomeentidade;
                    detalhe.Inclusao        = item.datainclusao;
                    detalhe.Descricao       = item.alinea?.descricao;
                    detalhe.ChequeEmissao   = item.chequeinicial?.dataemissao;
                    detalhe.ChequeValor     = item.chequeinicial?.valor;
                    detalhe.CidadeAssociado = item.cidadeassociado?.nome;

                    dadosConsulta.DetalhesChequesLojistas.Add(detalhe);
                }
            }

            if (resultadoSpc.chequeoutrasocorrenciassrs?.resumo != null)
            {
                var chequeOutrasOcorrencias = resultadoSpc.chequeoutrasocorrenciassrs?.resumo;

                dadosConsulta.ChequeCOOutrasQuantidade = chequeOutrasOcorrencias.quantidadetotal;
                dadosConsulta.ChequeCOOutrasData       = chequeOutrasOcorrencias.dataultimaocorrencia;
                dadosConsulta.ChequeCOOutrasValorTotal = chequeOutrasOcorrencias.valortotal;

                dadosConsulta.Quantidade += chequeOutrasOcorrencias.quantidadetotal;
            }

            if (resultadoSpc.consultarealizada?.resumo != null)
            {
                var consultaRealizada = resultadoSpc.consultarealizada?.resumo;

                dadosConsulta.ConsultaRealizadaQuantidade = consultaRealizada.quantidadetotal;
                dadosConsulta.ConsultaRealizadaData       = consultaRealizada.dataultimaocorrencia;
                dadosConsulta.ConsultaRealizadaValorTotal = consultaRealizada.valortotal;

                dadosConsulta.Quantidade += consultaRealizada.quantidadetotal;

                for (int i = 0; i < resultadoSpc.consultarealizada?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoConsultaRealizada)resultadoSpc.consultarealizada.Items[i];

                    var detalhe = new ConsultaRealizadaDTO();

                    detalhe.Associado    = item.nomeassociado;
                    detalhe.DataConsulta = item.dataconsulta;
                    detalhe.Entidade     = item.nomeentidadeorigem;
                    detalhe.Cidade       = item.origemassociado?.nome;
                    detalhe.Estado       = item.origemassociado?.estado?.siglauf;

                    dadosConsulta.DetalhesConsultasRealizadas.Add(detalhe);
                }
            }

            if (resultadoSpc.alertadocumento?.resumo != null)
            {
                var alertaDocumento = resultadoSpc.alertadocumento?.resumo;

                dadosConsulta.AlertaDocQuantidade = alertaDocumento.quantidadetotal;
                dadosConsulta.AlertaDocData       = alertaDocumento.dataultimaocorrencia;
                dadosConsulta.AlertaDocValorTotal = alertaDocumento.valortotal;

                dadosConsulta.Quantidade += alertaDocumento.quantidadetotal;

                for (int i = 0; i < resultadoSpc.alertadocumento?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoAlertaDocumento)resultadoSpc.alertadocumento.Items[i];

                    var detalhe = new AlertaDocumentosDTO();

                    detalhe.Inclusao   = item.datainclusao;
                    detalhe.Ocorrencia = item.dataocorrencia;
                    detalhe.Entidade   = item.entidadeorigem;
                    detalhe.Motivo     = item.motivo;

                    if (item.tipodocumentoalerta?.Length > 0)
                    {
                        detalhe.Tipos = string.Join(",", item.tipodocumentoalerta.Select(c => c.nome));
                    }

                    dadosConsulta.DetalhesAlertasDocumentos.Add(detalhe);
                }
            }

            if (resultadoSpc.creditoconcedido?.resumo != null)
            {
                var creditoConcedido = resultadoSpc.creditoconcedido?.resumo;

                dadosConsulta.CreditoConcQuantidade = creditoConcedido.quantidadetotal;
                dadosConsulta.CreditoConcData       = creditoConcedido.dataultimaocorrencia;
                dadosConsulta.CreditoConcValorTotal = creditoConcedido.valortotal;

                dadosConsulta.Quantidade += creditoConcedido.quantidadetotal;
            }

            if (resultadoSpc.contraordem?.resumo != null)
            {
                var contraordem = resultadoSpc.contraordem?.resumo;

                dadosConsulta.ContraOrdemQuantidade = contraordem.quantidadetotal;
                dadosConsulta.ContraOrdemData       = contraordem.dataultimaocorrencia;
                dadosConsulta.ContraOrdemValorTotal = contraordem.valortotal;

                dadosConsulta.Quantidade += contraordem.quantidadetotal;
            }

            if (resultadoSpc.contraordemdocumentodiferente?.resumo != null)
            {
                var contraordemDoc = resultadoSpc.contraordemdocumentodiferente?.resumo;

                dadosConsulta.ContraOrdemDFQuantidade = contraordemDoc.quantidadetotal;
                dadosConsulta.ContraOrdemDFData       = contraordemDoc.dataultimaocorrencia;
                dadosConsulta.ContraOrdemDFValorTotal = contraordemDoc.valortotal;

                dadosConsulta.Quantidade += contraordemDoc.quantidadetotal;

                for (int i = 0; i < resultadoSpc.contraordemdocumentodiferente?.Items?.Length; i++)
                {
                    var item = (WsSPC.InsumoContraOrdemDocumentoDiferente)resultadoSpc.contraordemdocumentodiferente.Items[i];

                    var detalhe = new ContraOrdemDocumentoDiferenteDTO();

                    detalhe.Documento  = item.documento;
                    detalhe.Inclusao   = item.datainclusao;
                    detalhe.Ocorrencia = item.dataocorrencia;
                    detalhe.Origem     = item.origem;
                    detalhe.Informante = item.informante;
                    detalhe.Descricao  = item.motivo?.descricao;

                    dadosConsulta.DetalhesContraOrdemDocumentoDiferente.Add(detalhe);
                }
            }

            dadosConsulta.UsuarioId = Convert.ToInt32(usuarioLogado);

            bool fluxoAprovacao = true;

            var pendenciasFinanceiras = analiseCreditoRepositorio
                                        .ObterPendenciasFinanceiras(contaBusca.Documento.RemoverCaracteresEspeciaisDocumento());

            dadosConsulta.TotalDividaEcoporto  = pendenciasFinanceiras.Sum(c => c.Valor);
            dadosConsulta.InadimplenteEcoporto = dadosConsulta.TotalDividaEcoporto > 0;

            dadosConsulta.TotalDividaSpc  = ObterTotalDividaSpc(resultadoSpc);
            dadosConsulta.InadimplenteSpc = dadosConsulta.TotalDividaSpc > parametros.DividaSpc;

            if (dadosConsulta.TotalDividaSpc < parametros.DividaSpc)
            {
                dadosConsulta.Validade = DateTime.Now.AddYears(1);
            }

            if (dadosConsulta.TotalDividaSpc > parametros.DividaSpc && fluxoAprovacao == false)
            {
                dadosConsulta.Validade = DateTime.Now.AddMonths(3);
            }

            if (dadosConsulta.TotalDividaSpc > parametros.DividaSpc && fluxoAprovacao == true)
            {
                dadosConsulta.Validade = DateTime.Now.AddYears(1);
            }

            var contasRaizCnpj = contaRepositorio
                                 .ObterContasPorRaizDocumento(contaBusca.Documento.RemoverCaracteresEspeciaisDocumento());

            dadosConsulta.StatusAnaliseDeCredito = StatusAnaliseDeCreditoResponse.PENDENTE;
            if ((dadosConsulta.TotalDividaSpc <= parametros.DividaSpc) && (dadosConsulta.TotalDividaEcoporto == 0))
            {
                dadosConsulta.StatusAnaliseDeCredito = StatusAnaliseDeCreditoResponse.APROVADO;
            }

            analiseCreditoRepositorio.GravarConsultaSpc(dadosConsulta, contasRaizCnpj);

            return(dadosConsulta);
        }
Пример #2
0
        public ConsultaSpcResponse ConsultarBancoDeDados(string documento, string hash)
        {
            ConsultaSpcResponse       dadosConsulta             = new ConsultaSpcResponse();
            AnaliseCreditoRepositorio analiseCreditoRepositorio = new AnaliseCreditoRepositorio();
            ContaRepositorio          contaRepositorio          = new ContaRepositorio();
            ParametrosRepositorio     parametrosRepositorio     = new ParametrosRepositorio();

            var parametros = parametrosRepositorio.ObterParametros();

            if (string.IsNullOrWhiteSpace(documento))
            {
                return(RetornarErro("Número do Documento (CNPJ/CPF) não informado"));
            }

            if (hash != Config.Hash)
            {
                return(RetornarErro("Não autorizado (hash inválido)"));
            }

            documento = documento.RemoverCaracteresEspeciaisDocumento();

            var contaBusca = contaRepositorio.ObterContaPorId(documento.ToInt());

            if (contaBusca == null)
            {
                return(RetornarErro($"Conta com documento {documento} não encontrada"));
            }

            var analiseCreditoBusca = analiseCreditoRepositorio.ObterConsultaSpc(contaBusca.Id);

            if (analiseCreditoBusca != null)
            {
                dadosConsulta.ContaId        = contaBusca.Id;
                dadosConsulta.Id             = analiseCreditoBusca.Id;
                dadosConsulta.DataConsulta   = analiseCreditoBusca.DataConsulta;
                dadosConsulta.Protocolo      = analiseCreditoBusca.Protocolo;
                dadosConsulta.Restricao      = analiseCreditoBusca.Restricao;
                dadosConsulta.TipoPessoa     = analiseCreditoBusca.TipoPessoa;
                dadosConsulta.Validade       = analiseCreditoBusca.Validade;
                dadosConsulta.RazaoSocial    = analiseCreditoBusca.RazaoSocial;
                dadosConsulta.Fundacao       = analiseCreditoBusca.Fundacao;
                dadosConsulta.CNPJ           = analiseCreditoBusca.CNPJ;
                dadosConsulta.Nome           = analiseCreditoBusca.Nome;
                dadosConsulta.DataNascimento = analiseCreditoBusca.DataNascimento;
                dadosConsulta.CPF            = analiseCreditoBusca.CPF;
                dadosConsulta.Nacionalidade  = analiseCreditoBusca.Nacionalidade;
                dadosConsulta.Atividade      = analiseCreditoBusca.Atividade;
                dadosConsulta.Situacao       = analiseCreditoBusca.Situacao;
                dadosConsulta.Logradouro     = analiseCreditoBusca.Logradouro;
                dadosConsulta.Bairro         = analiseCreditoBusca.Bairro;
                dadosConsulta.Cidade         = analiseCreditoBusca.Cidade;
                dadosConsulta.Estado         = analiseCreditoBusca.Estado;
                dadosConsulta.CEP            = analiseCreditoBusca.CEP;

                dadosConsulta.ProtestoQuantidade = analiseCreditoBusca.ProtestoQuantidade;
                dadosConsulta.ProtestoData       = analiseCreditoBusca.ProtestoData;
                dadosConsulta.ProtestoValorTotal = analiseCreditoBusca.ProtestoValorTotal;

                dadosConsulta.AcaoQuantidade         = analiseCreditoBusca.AcaoQuantidade;
                dadosConsulta.AcaoData               = analiseCreditoBusca.AcaoData;
                dadosConsulta.AcaoValorTotal         = analiseCreditoBusca.AcaoValorTotal;
                dadosConsulta.StatusAnaliseDeCredito = analiseCreditoBusca.StatusAnaliseDeCredito;

                dadosConsulta.PendenciaFinancQuantidade = analiseCreditoBusca.PendenciaFinancQuantidade;
                dadosConsulta.PendenciaFinancData       = analiseCreditoBusca.PendenciaFinancData;
                dadosConsulta.PendenciaFinancValorTotal = analiseCreditoBusca.PendenciaFinancValorTotal;

                dadosConsulta.ParticipFalenciaQuantidade = analiseCreditoBusca.ParticipFalenciaQuantidade;
                dadosConsulta.ParticipFalenciaData       = analiseCreditoBusca.ParticipFalenciaData;
                dadosConsulta.ParticipFalenciaValorTotal = analiseCreditoBusca.ParticipFalenciaValorTotal;

                dadosConsulta.SpcQuantidade = analiseCreditoBusca.SpcQuantidade;
                dadosConsulta.SpcData       = analiseCreditoBusca.SpcData;
                dadosConsulta.SpcValorTotal = analiseCreditoBusca.SpcValorTotal;

                dadosConsulta.ChequeSFQuantidade = analiseCreditoBusca.ChequeSFQuantidade;
                dadosConsulta.ChequeSFData       = analiseCreditoBusca.ChequeSFData;
                dadosConsulta.ChequeSFValorTotal = analiseCreditoBusca.ChequeSFValorTotal;

                dadosConsulta.ChequeSFCCFQuantidade = analiseCreditoBusca.ChequeSFCCFQuantidade;
                dadosConsulta.ChequeSFCCFData       = analiseCreditoBusca.ChequeSFCCFData;
                dadosConsulta.ChequeSFCCFValorTotal = analiseCreditoBusca.ChequeSFCCFValorTotal;

                dadosConsulta.ChequeLojistaQuantidade = analiseCreditoBusca.ChequeLojistaQuantidade;
                dadosConsulta.ChequeLojistaData       = analiseCreditoBusca.ChequeLojistaData;
                dadosConsulta.ChequeLojistaValorTotal = analiseCreditoBusca.ChequeLojistaValorTotal;

                dadosConsulta.ChequeCOOutrasQuantidade = analiseCreditoBusca.ChequeCOOutrasQuantidade;
                dadosConsulta.ChequeCOOutrasData       = analiseCreditoBusca.ChequeCOOutrasData;
                dadosConsulta.ChequeCOOutrasValorTotal = analiseCreditoBusca.ChequeCOOutrasValorTotal;

                dadosConsulta.ConsultaRealizadaQuantidade = analiseCreditoBusca.ConsultaRealizadaQuantidade;
                dadosConsulta.ConsultaRealizadaData       = analiseCreditoBusca.ConsultaRealizadaData;
                dadosConsulta.ConsultaRealizadaValorTotal = analiseCreditoBusca.ConsultaRealizadaValorTotal;

                dadosConsulta.AlertaDocQuantidade = analiseCreditoBusca.AlertaDocQuantidade;
                dadosConsulta.AlertaDocData       = analiseCreditoBusca.AlertaDocData;
                dadosConsulta.AlertaDocValorTotal = analiseCreditoBusca.AlertaDocValorTotal;

                dadosConsulta.CreditoConcQuantidade = analiseCreditoBusca.CreditoConcQuantidade;
                dadosConsulta.CreditoConcData       = analiseCreditoBusca.CreditoConcData;
                dadosConsulta.CreditoConcValorTotal = analiseCreditoBusca.CreditoConcValorTotal;

                dadosConsulta.ContraOrdemQuantidade = analiseCreditoBusca.ContraOrdemQuantidade;
                dadosConsulta.ContraOrdemData       = analiseCreditoBusca.ContraOrdemData;
                dadosConsulta.ContraOrdemValorTotal = analiseCreditoBusca.ContraOrdemValorTotal;

                dadosConsulta.ContraOrdemDFQuantidade = analiseCreditoBusca.ContraOrdemDFQuantidade;
                dadosConsulta.ContraOrdemDFData       = analiseCreditoBusca.ContraOrdemDFData;
                dadosConsulta.ContraOrdemDFValorTotal = analiseCreditoBusca.ContraOrdemDFValorTotal;

                dadosConsulta.DetalhesSpc = analiseCreditoRepositorio
                                            .ObterDetalhesSpc(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesPendenciasFinanceiras = analiseCreditoRepositorio
                                                              .ObterDetalhesPendenciasFinanceiras(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesChequesLojistas = analiseCreditoRepositorio
                                                        .ObterDetalhesChequesLojistas(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesContraOrdemDocumentoDiferente = analiseCreditoRepositorio
                                                                      .ObterDetalhesContraOrdemDocumentoDiferente(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesConsultasRealizadas = analiseCreditoRepositorio
                                                            .ObterDetalhesHistoricoConsultas(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesAlertasDocumentos = analiseCreditoRepositorio
                                                          .ObterDetalhesAlertasDocumentos(analiseCreditoBusca.Id).ToList();

                dadosConsulta.DetalhesCCF = analiseCreditoRepositorio
                                            .ObterDetalhesCCF(analiseCreditoBusca.Id).ToList();

                var pendenciasFinanceiras = analiseCreditoRepositorio
                                            .ObterPendenciasFinanceiras(contaBusca.Documento.RemoverCaracteresEspeciaisDocumento());
                if (pendenciasFinanceiras != null)
                {
                    dadosConsulta.TotalDividaEcoporto = pendenciasFinanceiras.Sum(c => c.Valor);
                }
                dadosConsulta.StatusAnaliseDeCredito = analiseCreditoBusca.StatusAnaliseDeCredito;

                dadosConsulta.TotalDividaSpc  = analiseCreditoBusca.TotalDividaSpc;
                dadosConsulta.InadimplenteSpc = dadosConsulta.TotalDividaSpc > parametros.DividaSpc;
                if ((dadosConsulta.TotalDividaSpc <= parametros.DividaSpc) && (dadosConsulta.TotalDividaEcoporto == 0))

                {
                    dadosConsulta.StatusAnaliseDeCredito = StatusAnaliseDeCreditoResponse.APROVADO;
                }
                dadosConsulta.InadimplenteEcoporto = dadosConsulta.TotalDividaEcoporto > 0;
            }

            return(dadosConsulta);
        }
Пример #3
0
        public void GravarConsultaSpc(ConsultaSpcResponse consultaSpc, IEnumerable <Conta> contas)
        {
            using (OracleConnection con = new OracleConnection(Parametros.StringConexao))
            {
                con.Open();

                using (var transaction = con.BeginTransaction())
                {
                    var parametros = new DynamicParameters();

                    var sequencia = con.Query <int>("SELECT CRM.SEQ_CRM_SPC_CONSULTAS.NEXTVAL FROM DUAL").Single();

                    parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContaId", value: consultaSpc.ContaId, direction: ParameterDirection.Input);
                    parametros.Add(name: "StatusAnaliseDeCredito", value: consultaSpc.StatusAnaliseDeCredito, direction: ParameterDirection.Input);
                    parametros.Add(name: "Protocolo", value: consultaSpc.Protocolo, direction: ParameterDirection.Input);
                    parametros.Add(name: "Validade", value: consultaSpc.Validade, direction: ParameterDirection.Input);
                    parametros.Add(name: "InadimplenteSpc", value: consultaSpc.InadimplenteSpc.ToInt(), direction: ParameterDirection.Input);
                    parametros.Add(name: "InadimplenteEcoporto", value: consultaSpc.InadimplenteEcoporto.ToInt(), direction: ParameterDirection.Input);
                    parametros.Add(name: "Quantidade", value: consultaSpc.Quantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "Tipo", value: consultaSpc.TipoPessoa, direction: ParameterDirection.Input);
                    parametros.Add(name: "RazaoSocial", value: consultaSpc.RazaoSocial, direction: ParameterDirection.Input);
                    parametros.Add(name: "Fundacao", value: consultaSpc.Fundacao, direction: ParameterDirection.Input);
                    parametros.Add(name: "Nome", value: consultaSpc.Nome, direction: ParameterDirection.Input);
                    parametros.Add(name: "DataNascimento", value: consultaSpc.DataNascimento, direction: ParameterDirection.Input);
                    parametros.Add(name: "CNPJ", value: consultaSpc.CNPJ, direction: ParameterDirection.Input);
                    parametros.Add(name: "CPF", value: consultaSpc.CPF, direction: ParameterDirection.Input);
                    parametros.Add(name: "Atividade", value: consultaSpc.Atividade, direction: ParameterDirection.Input);
                    parametros.Add(name: "Situacao", value: consultaSpc.Situacao, direction: ParameterDirection.Input);
                    parametros.Add(name: "Logradouro", value: consultaSpc.Logradouro, direction: ParameterDirection.Input);
                    parametros.Add(name: "Bairro", value: consultaSpc.Bairro, direction: ParameterDirection.Input);
                    parametros.Add(name: "Cidade", value: consultaSpc.Cidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "Estado", value: consultaSpc.Estado, direction: ParameterDirection.Input);
                    parametros.Add(name: "CEP", value: consultaSpc.CEP, direction: ParameterDirection.Input);
                    parametros.Add(name: "TotalDividaSpc", value: consultaSpc.TotalDividaSpc, direction: ParameterDirection.Input);
                    parametros.Add(name: "TotalDividaEcoporto", value: consultaSpc.TotalDividaEcoporto, direction: ParameterDirection.Input);
                    parametros.Add(name: "ProtestoQuantidade", value: consultaSpc.ProtestoQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ProtestoData", value: consultaSpc.ProtestoData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ProtestoValorTotal", value: consultaSpc.ProtestoValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "AcaoQuantidade", value: consultaSpc.AcaoQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "AcaoData", value: consultaSpc.AcaoData, direction: ParameterDirection.Input);
                    parametros.Add(name: "AcaoValorTotal", value: consultaSpc.AcaoValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "PendenciaFinancQuantidade", value: consultaSpc.PendenciaFinancQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "PendenciaFinancData", value: consultaSpc.PendenciaFinancData, direction: ParameterDirection.Input);
                    parametros.Add(name: "PendenciaFinancValorTotal", value: consultaSpc.PendenciaFinancValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ParticipFalenciaQuantidade", value: consultaSpc.ParticipFalenciaQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ParticipFalenciaData", value: consultaSpc.ParticipFalenciaData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ParticipFalenciaValorTotal", value: consultaSpc.ParticipFalenciaValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "SpcQuantidade", value: consultaSpc.SpcQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "SpcData", value: consultaSpc.SpcData, direction: ParameterDirection.Input);
                    parametros.Add(name: "SpcValorTotal", value: consultaSpc.SpcValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFQuantidade", value: consultaSpc.ChequeSFQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFData", value: consultaSpc.ChequeSFData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFValorTotal", value: consultaSpc.ChequeSFValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFCCFQuantidade", value: consultaSpc.ChequeSFCCFQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFCCFData", value: consultaSpc.ChequeSFCCFData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeSFCCFValorTotal", value: consultaSpc.ChequeSFCCFValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeLojistaQuantidade", value: consultaSpc.ChequeLojistaQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeLojistaData", value: consultaSpc.ChequeLojistaData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeLojistaValorTotal", value: consultaSpc.ChequeLojistaValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeCOOutrasQuantidade", value: consultaSpc.ChequeCOOutrasQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeCOOutrasData", value: consultaSpc.ChequeCOOutrasData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ChequeCOOutrasValorTotal", value: consultaSpc.ChequeCOOutrasValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ConsultaRealizadaQuantidade", value: consultaSpc.ConsultaRealizadaQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ConsultaRealizadaData", value: consultaSpc.ConsultaRealizadaData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ConsultaRealizadaValorTotal", value: consultaSpc.ConsultaRealizadaValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "AlertaDocQuantidade", value: consultaSpc.AlertaDocQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "AlertaDocData", value: consultaSpc.AlertaDocData, direction: ParameterDirection.Input);
                    parametros.Add(name: "AlertaDocValorTotal", value: consultaSpc.AlertaDocValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "CreditoConcQuantidade", value: consultaSpc.CreditoConcQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "CreditoConcData", value: consultaSpc.CreditoConcData, direction: ParameterDirection.Input);
                    parametros.Add(name: "CreditoConcValorTotal", value: consultaSpc.CreditoConcValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemQuantidade", value: consultaSpc.ContraOrdemQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemData", value: consultaSpc.ContraOrdemData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemValorTotal", value: consultaSpc.ContraOrdemValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemDFQuantidade", value: consultaSpc.ContraOrdemDFQuantidade, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemDFData", value: consultaSpc.ContraOrdemDFData, direction: ParameterDirection.Input);
                    parametros.Add(name: "ContraOrdemDFValorTotal", value: consultaSpc.ContraOrdemDFValorTotal, direction: ParameterDirection.Input);
                    parametros.Add(name: "UsuarioId", value: consultaSpc.UsuarioId, direction: ParameterDirection.Input);

                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_CONSULTA_FILIAL WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_CCF WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_ALERTAS_DOCS WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_HIST_CONSULTAS WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_CONTRA_ORDEM_DOC WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_DETALHES_CH_LOJISTA WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_DETALHES_PEND_FIN WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_DETALHES_SPC WHERE ConsultaId IN (SELECT Id FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId)", parametros, transaction);
                    con.Execute("DELETE FROM CRM.TB_CRM_SPC_CONSULTAS WHERE ContaId = :ContaId", parametros, transaction);

                    con.Execute(@"
							INSERT INTO
								CRM.TB_CRM_SPC_CONSULTAS
									(
										ID,
										CONTAID,
										STATUSANALISEDECREDITO,
										DATACONSULTA,
										VALIDADE,
										PROTOCOLO,
										INADIMPLENTE_SPC,
										INADIMPLENTE_ECOPORTO,
										TIPO,
										RAZAOSOCIAL,
										FUNDACAO,
										NOME,
										DATANASCIMENTO,
										CNPJ,
										CPF,
										ATIVIDADE,
										SITUACAO,
										LOGRADOURO,
										BAIRRO,
										CIDADE,
										ESTADO,
										CEP,
										TOTALDIVIDA_SPC,
										TOTALDIVIDA_ECOPORTO,
										PROTESTO_QTDE,
										PROTESTO_DATA,
										PROTESTO_VALOR_TOTAL,
										ACAO_QTDE,
										ACAO_DATA,
										ACAO_VALOR_TOTAL,
										PEND_FINANC_QTDE,
										PEND_FINANC_DATA,
										PEND_FINANC_TOTAL,
										PART_FALENC_QTDE,
										PART_FALENC_DATA,
										PART_FALENC_VALOR_TOTAL,
										SPC_QTDE,
										SPC_DATA,
										SPC_TOTAL,
										CHEQUE_SF_QTDE,
										CHEQUE_SF_DATA,
										CHEQUE_SF_TOTAL,
										CHEQUE_SF_CCF_QTDE,
										CHEQUE_SF_CCF_DATA,
										CHEQUE_SF_CCF_TOTAL,
										CHEQUE_LOJISTA_QTDE,
										CHEQUE_LOJISTA_DATA,
										CHEQUE_LOJISTA_TOTAL,
										CHEQUE_CO_OUTRAS_QTDE,
										CHEQUE_CO_OUTRAS_DATA,
										CHEQUE_CO_OUTRAS_TOTAL,
										CONSULTA_REALIZADA_QTDE,
										CONSULTA_REALIZADA_DATA,
										CONSULTA_REALIZADA_TOTAL,
										ALERTA_DOC_QTDE,
										ALERTA_DOC_DATA,
										ALERTA_DOC_TOTAL,
										CREDITO_CONCEDIDO_QTDE,
										CREDITO_CONCEDIDO_DATA,
										CREDITO_CONCEDIDO_TOTAL,
										CONTRA_ORDEM_QTDE,
										CONTRA_ORDEM_DATA,
										CONTRA_ORDEM_TOTAL,
										CONTRA_ORDEM_DF_QTDE,
										CONTRA_ORDEM_DF_DATA,
										CONTRA_ORDEM_DF_TOTAL,
										USUARIOID
									) VALUES (
										:Sequencia,
										:ContaId,
										:StatusAnaliseDeCredito,
										SYSDATE,
										:Validade,
										:Protocolo,
										:InadimplenteSpc,
										:InadimplenteEcoporto,
										:Tipo,
										:RazaoSocial,
										:Fundacao,
										:Nome,
										:DataNascimento,
										:CNPJ,
										:CPF,
										:Atividade,
										:Situacao,
										:Logradouro,
										:Bairro,
										:Cidade,
										:Estado,
										:CEP,
										:TotalDividaSpc,
										:TotalDividaEcoporto,
										:ProtestoQuantidade,
										:ProtestoData,
										:ProtestoValorTotal,
										:AcaoQuantidade,
										:AcaoData,
										:AcaoValorTotal,
										:PendenciaFinancQuantidade,
										:PendenciaFinancData,
										:PendenciaFinancValorTotal,
										:ParticipFalenciaQuantidade,
										:ParticipFalenciaData,
										:ParticipFalenciaValorTotal,
										:SpcQuantidade,
										:SpcData,
										:SpcValorTotal,
										:ChequeSFQuantidade,
										:ChequeSFData,
										:ChequeSFValorTotal,
										:ChequeSFCCFQuantidade,
										:ChequeSFCCFData,
										:ChequeSFCCFValorTotal,
										:ChequeLojistaQuantidade,
										:ChequeLojistaData,
										:ChequeLojistaValorTotal,
										:ChequeCOOutrasQuantidade,
										:ChequeCOOutrasData,
										:ChequeCOOutrasValorTotal,
										:ConsultaRealizadaQuantidade,
										:ConsultaRealizadaData,
										:ConsultaRealizadaValorTotal,
										:AlertaDocQuantidade,
										:AlertaDocData,
										:AlertaDocValorTotal,
										:CreditoConcQuantidade,
										:CreditoConcData,
										:CreditoConcValorTotal,
										:ContraOrdemQuantidade,
										:ContraOrdemData,
										:ContraOrdemValorTotal,
										:ContraOrdemDFQuantidade,
										:ContraOrdemDFData,
										:ContraOrdemDFValorTotal,
										:UsuarioId
									)"                                    , parametros, transaction);

                    foreach (var item in consultaSpc.DetalhesSpc)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Associado", value: item.Associado, direction: ParameterDirection.Input);
                        parametros.Add(name: "Inclusao", value: item.Inclusao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Vencimento", value: item.Vencimento, direction: ParameterDirection.Input);
                        parametros.Add(name: "Entidade", value: item.Entidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Contrato", value: item.Contrato, direction: ParameterDirection.Input);
                        parametros.Add(name: "Valor", value: item.Valor, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_DETALHES_SPC 
									(
										Id,
										ConsultaId,
										Associado,
										Inclusao,
										Vencimento,
										Entidade,
										Contrato,
										Valor
									) VALUES (
										CRM.SEQ_CRM_SPC_DETALHES_SPC.NEXTVAL,
										:Sequencia,
										:Associado,
										:Inclusao,
										:Vencimento,
										:Entidade,
										:Contrato,
										:Valor
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesPendenciasFinanceiras)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Titulo", value: item.Titulo, direction: ParameterDirection.Input);
                        parametros.Add(name: "Avalista", value: item.Avalista.ToInt(), direction: ParameterDirection.Input);
                        parametros.Add(name: "Contrato", value: item.Contrato, direction: ParameterDirection.Input);
                        parametros.Add(name: "Ocorrencia", value: item.Ocorrencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Filial", value: item.Filial, direction: ParameterDirection.Input);
                        parametros.Add(name: "Origem", value: item.Origem, direction: ParameterDirection.Input);
                        parametros.Add(name: "Moeda", value: item.Moeda, direction: ParameterDirection.Input);
                        parametros.Add(name: "Natureza", value: item.Natureza, direction: ParameterDirection.Input);
                        parametros.Add(name: "Cidade", value: item.Cidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "UF", value: item.UF, direction: ParameterDirection.Input);
                        parametros.Add(name: "Valor", value: item.Valor, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_DETALHES_PEND_FIN 
									(
										Id,
										ConsultaId,
										Titulo,
										Avalista,
										Contrato,
										Ocorrencia,
										Filial,
										Origem,
										Moeda,
										Natureza,
										Cidade,
										UF,
										Valor
									) VALUES (
										CRM.SEQ_CRM_SPC_DETALHES_PEND_FIN.NEXTVAL,
										:Sequencia,
										:Titulo,
										:Avalista,
										:Contrato,
										:Ocorrencia,
										:Filial,
										:Origem,
										:Moeda,
										:Natureza,
										:Cidade,
										:UF,
										:Valor
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesChequesLojistas)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Associado", value: item.Associado, direction: ParameterDirection.Input);
                        parametros.Add(name: "Entidade", value: item.Entidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Inclusao", value: item.Inclusao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Descricao", value: item.Descricao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Emissao", value: item.ChequeEmissao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Valor", value: item.ChequeValor, direction: ParameterDirection.Input);
                        parametros.Add(name: "Cidade", value: item.CidadeAssociado, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_DETALHES_CH_LOJISTA
									(
										Id,
										ConsultaId,
										Associado,
										Entidade,
										Inclusao,
										Descricao,
										Emissao,
										Valor,
										Cidade
									) VALUES (
										CRM.SEQ_CRM_SPC_DETALHES_CH_LOJ.NEXTVAL,
										:Sequencia,
										:Associado,
										:Entidade,
										:Inclusao,
										:Descricao,
										:Emissao,
										:Valor,
										:Cidade
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesContraOrdemDocumentoDiferente)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Documento", value: item.Documento, direction: ParameterDirection.Input);
                        parametros.Add(name: "Inclusao", value: item.Inclusao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Ocorrencia", value: item.Ocorrencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Origem", value: item.Origem, direction: ParameterDirection.Input);
                        parametros.Add(name: "Informante", value: item.Informante, direction: ParameterDirection.Input);
                        parametros.Add(name: "Descricao", value: item.Descricao, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_CONTRA_ORDEM_DOC 
									(
										Id,
										ConsultaId,
										Documento,
										Inclusao,
										Ocorrencia,
										Origem,
										Informante,
										Descricao
									) VALUES (
										CRM.SEQ_CRM_SPC_CONTRA_ORDEM_DOC.NEXTVAL,
										:Sequencia,
										:Documento,
										:Inclusao,
										:Ocorrencia,
										:Origem,
										:Informante,
										:Descricao
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesConsultasRealizadas)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Associado", value: item.Associado, direction: ParameterDirection.Input);
                        parametros.Add(name: "DataConsulta", value: item.DataConsulta, direction: ParameterDirection.Input);
                        parametros.Add(name: "Entidade", value: item.Entidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Cidade", value: item.Cidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Estado", value: item.Estado, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_HIST_CONSULTAS 
									(
										Id,
										ConsultaId,
										Associado,
										DataConsulta,
										Entidade,
										Cidade,
										Estado
									) VALUES (
										CRM.SEQ_CRM_SPC_DETALHES_SPC.NEXTVAL,
										:Sequencia,
										:Associado,
										:DataConsulta,
										:Entidade,
										:Cidade,
										:Estado
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesAlertasDocumentos)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Inclusao", value: item.Inclusao, direction: ParameterDirection.Input);
                        parametros.Add(name: "Ocorrencia", value: item.Ocorrencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Entidade", value: item.Entidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Motivo", value: item.Motivo, direction: ParameterDirection.Input);
                        parametros.Add(name: "Tipos", value: item.Tipos, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_ALERTAS_DOCS 
									(
										Id,
										ConsultaId,
										Inclusao,
										Ocorrencia,
										Entidade,
										Motivo,
										Tipos
									) VALUES (
										CRM.SEQ_CRM_SPC_ALERTAS_DOCS.NEXTVAL,
										:Sequencia,
										:Inclusao,
										:Ocorrencia,
										:Entidade,
										:Motivo,
										:Tipos
									)"                                    , parametros, transaction);
                    }

                    foreach (var item in consultaSpc.DetalhesCCF)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "Sequencia", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "Origem", value: item.Origem, direction: ParameterDirection.Input);
                        parametros.Add(name: "UltimoCheque", value: item.DataUltimoCheque, direction: ParameterDirection.Input);
                        parametros.Add(name: "Quantidade", value: item.Quantidade, direction: ParameterDirection.Input);
                        parametros.Add(name: "Motivo", value: item.Motivo, direction: ParameterDirection.Input);

                        con.Execute(@"
								INSERT INTO 
									CRM.TB_CRM_SPC_CCF 
									(
										Id,
										ConsultaId,
										Origem,
										UltimoCheque,
										Quantidade,
										Motivo
									) VALUES (
										CRM.SEQ_CRM_SPC_CCF.NEXTVAL,
										:Sequencia,
										:Origem,
										:UltimoCheque,
										:Quantidade,
										:Motivo
									)"                                    , parametros, transaction);
                    }

                    foreach (var conta in contas)
                    {
                        parametros = new DynamicParameters();

                        parametros.Add(name: "ConsultaId", value: sequencia, direction: ParameterDirection.Input);
                        parametros.Add(name: "ContaId", value: conta.Id, direction: ParameterDirection.Input);

                        con.Execute("INSERT INTO CRM.TB_CRM_SPC_CONSULTA_FILIAL (Id, ConsultaId, ContaId) VALUES (CRM.SEQ_CRM_SPC_CCF.NEXTVAL, :ConsultaId, :ContaId)", parametros, transaction);
                    }

                    transaction.Commit();
                }
            }
        }