Pular para o conteúdo principal

ST_CONSULTACNPJ - Provedor de Consulta de CNPJ

Tela de configuração: ADM010 — Parâmetros do Sistema Localização na UI: Aba Bloqueio/Cadastro Pessoa, campo Aut. SSL Tabela: PARMSISTEMA.ST_CONSULTACNPJ Tipo: CHAR(1) Valor padrão: 'C' (cnpj.ws) Componente: cmbTB_CONSULTACNPJ (combobox)

Resumo​

Define qual provedor o ERP utiliza para consultar dados de CNPJ via internet. O parametro afeta:

  1. Requisições HTTP genericas (jRequisicoes.pas — RequestJson): escolha entre API REST sem certificado (cnpj.ws) ou com certificado digital (OpenSSL).
  2. Importação de CNPJ/CPF (tela TFA001 — UIMPORTACAOCNPJCPF.pas): define se a consulta usa a SEFAZ (via DLL NFe) ou a API cnpj.ws.

Telas / Rotinas impactadas​

Tela / RotinaImpacto
TFA001 — Importação CNPJ/CPFDefine se a consulta usa SEFAZ (exige Estado + Tipo Pessoa) ou cnpj.ws (dispensa Estado no formulario).
jRequisicoes.pas — RequestJsonDefine a estrategia HTTP: REST puro (C) ou REST com certificado OpenSSL (O).
ADM010 — Parametros do SistemaTela de configuracao do parametro.

Campos envolvidos​

CampoTabelaTipoDefault
ST_CONSULTACNPJPARMSISTEMACHAR(1)'C'
ST_AUTENTICASSLPARMSISTEMA——

ST_AUTENTICASSL (configurado em ADM010 — Parametros do Sistema) armazena o caminho/identificador do certificado digital usado quando ST_CONSULTACNPJ = 'O'.

Opções disponiveis​

C — cnpj.ws (API REST)​

O que fazDetalhe
ProvedorAPI REST publica cnpj.ws
AutenticacaoNenhuma (request simples)
Formulário importaçãoCampo Estado fica oculto; Tipo Pessoa permanece visivel
Requests genericosUsa RequestRest() (HTTP sem certificado)
Valor padrãoSim — 'C'

Simulação passo a passo​

  1. Acesse ADM010 — Parametros do Sistema.
  2. Na aba Bloqueio/Cadastro Pessoa, localize o campo Aut. SSL.
  3. Selecione a opção cnpj.ws.
  4. Clique em Salvar.
  5. Abra a tela TFA001 — Importação CNPJ/CPF (FormShow).
  6. Observe que o campo Estado fica oculto e o campo Tipo Pessoa e movido para a linha do Estado.
  7. Ao executar um request HTTP via RequestJson, o sistema utiliza RequestRest() (sem certificado digital).

Resultado esperado: Consultas de CNPJ são feitas via API REST do cnpj.ws, sem necessidade de certificado digital. No formulario de importação, o campo Estado nao e exibido.

Excecao / Importante: Quando ST_CONSULTACNPJ = 'C', o certificado digital (ST_AUTENTICASSL) e ignorado completamente, mesmo que esteja preenchido.

S — Sefaz (Consulta SEFAZ via DLL NFe)​

O que fazDetalhe
ProvedorSEFAZ (via DLL NfeConsultaCadastro)
AutenticacaoCertificado digital configurado em CONFIGNFE.NRSERIALCERT
Formulário importaçãoExige preenchimento de Estado, Tipo Pessoa e CNPJ
Requests genericosSem tratamento no RequestJson (valor 'S' nao e mapeado)
DependenciaRequer CONFIGNFE configurada com serial de certificado e TPAMB

Simulação passo a passo​

  1. Acesse ADM010 — Parametros do Sistema.
  2. Na aba Bloqueio/Cadastro Pessoa, selecione Sefaz no campo Aut. SSL.
  3. Clique em Salvar.
  4. Abra a tela TFA001 — Importação CNPJ/CPF.
  5. Preencha os campos obrigatórios: CNPJ, Estado (UF) e Tipo Pessoa.
  6. Clique em Importar (<F6>).
  7. O sistema consulta a SEFAZ utilizando a DLL NfeConsultaCadastro, lendo o certificado de CONFIGNFE.

Resultado esperado: A consulta de dados do CNPJ e realizada diretamente na SEFAZ via protocolo NFe. O XML de retorno e processado para importar razao social, endereco e demais dados da pessoa. O formulario exige Estado e Tipo Pessoa antes de permitir a importação.

Excecao / Importante: A opção 'S' (Sefaz) nao e tratada em RequestJson (jRequisicoes.pas). Se algum modulo tentar fazer um request generico com esse valor, nenhum metodo sera executado. O uso de 'S' restringe-se a rotina de importação de CNPJ/CPF (TFA001).

Importante: Requer que a tabela CONFIGNFE possua registro valido para a empresa com NRSERIALCERT e TPAMB preenchidos.

O — OpenSSL (API REST com Certificado Digital)​

O que fazDetalhe
ProvedorAPI REST com autenticação OpenSSL
AutenticaçãoCertificado digital armazenado em ST_AUTENTICASSL
Formulário importaçãoCampo Estado fica oculto (padrão 'C', pois 'O' nao satisfaz a condicao = 'C' or = 'S')
Requests genericosUsa RequestOpen() com o certificado de ST_AUTENTICASSL
ExigenciaST_AUTENTICASSL deve estar preenchido, senao nenhum metodo e acionado

Simulação passo a passo​

  1. Acesse ADM010 — Parametros do Sistema.
  2. Na aba Bloqueio/Cadastro Pessoa, selecione OpenSSL no campo Aut. SSL.
  3. Verifique se o campo referente ao certificado digital (ST_AUTENTICASSL) esta preenchido com um valor valido.
  4. Clique em Salvar.
  5. Ao executar um request HTTP via RequestJson, o sistema utiliza RequestOpen() passando o certificado como parametro.
  6. Na tela TFA001 — Importação CNPJ/CPF, o comportamento do formulario segue o mesmo que 'C' (campo Estado oculto), pois o valor 'O' nao e capturado pela condicao Resultado[0] = 'C' or Resultado[0] = 'S'.

Resultado esperado: Requisicoes HTTP usam RequestOpen() com certificado OpenSSL. Se ST_AUTENTICASSL estiver vazio, nenhum metodo de request e acionado (o Result fica sem atribuicao).

Excecao / Importante: Se ST_AUTENTICASSL estiver vazio, o branch else if ((Resultado[0] = 'O') and (Resultado[1] <> '')) nao e satisfeito e a funcao nao retorna resultado. O certificado deve estar configurado para esta opcao funcionar.

Tabela Comparativa Resumida​

OpcaoProvedorAutenticacaoReq. GenericoForm. ImportacaoExige Estado
Ccnpj.ws RESTNenhumaRequestRest()API RESTNao
SSEFAZ (DLL NFe)CONFIGNFE.NRSERIALCERTNao tratadoDLL NFe XMLSim
OAPI REST + OpenSSLST_AUTENTICASSLRequestOpen()API REST (padrao C)Nao

Regra de Selecao (RequestJson)​

A funcao RequestJson em jRequisicoes.pas segue esta ordem de decisao:

  1. Se iToken <> '' ou iCaminhoArquivo <> '' → RequestWithBearerToken() (independente do parametro).
  2. Se ST_CONSULTACNPJ = 'C' → RequestRest() (REST sem certificado).
  3. Se ST_CONSULTACNPJ = 'O' e ST_AUTENTICASSL <> '' → RequestOpen() (REST com certificado).
  4. Caso contrario → nenhum metodo e chamado; Result permanece sem atribuicao.

Procedures Impactadas​

Rotinas Delphi com referencia direta ao campo​

RotinaArquivoLinhaEvidencia
TfrmADM010.btnSalvarClicksource/ADM010/UADM010.pas317dmADM010.tabPARMSISTEMAST_CONSULTACNPJ.AsString := cmbTB_CONSULTACNPJ.Value;
TfrmIMPORTACAOCNPJCPF.FormShowsource/TFA001/UIMPORTACAOCNPJCPF.pas77'SELECT ST_CONSULTACNPJ' + #10 +
TfrmIMPORTACAOCNPJCPF.btnImportarClicksource/TFA001/UIMPORTACAOCNPJCPF.pas133if stTipoConsulta <> 'C' then
RequestJsonsource/jCommon/jRequisicoes.pas239' P.ST_CONSULTACNPJ, ST_AUTENTICASSL '+#10+

Candidatas por uso da tabela PARMSISTEMA​

Estas procedures/views usam a tabela PARMSISTEMA, mas nao citam o campo ST_CONSULTACNPJ literalmente. Nao foi encontrada referencia direta ao campo em Scripts/.

Procedure/ViewArquivo
ARRUMA_MASCARACONTAScripts/ARRUMA_MASCARACONTA.sql
ATUALIZA_CONTACONTABILScripts/ATUALIZA_CONTACONTABIL.sql
CONTABILIZA_CUPOMFISCALScripts/CONTABILIZA_CUPOMFISCAL.sql
GERA_SPEDBLOCOLScripts/GERA_SPEDBLOCOL.sql
IMPORTA_ARQUIVOMAGNETICOScripts/IMPORTA_ARQUIVOMAGNETICO.sql

Sem impacto direto identificado — essas rotinas leem outros campos de PARMSISTEMA (TP_PLANOCONTABIL, etc.).