ST_CONSULTACNPJ - Provedor de Consulta de CNPJ
Tela de configuração: ADM010 — Parâmetros do Sistema Localização na UI: Aba
Bloqueio/Cadastro Pessoa, campoAut. SSLTabela:PARMSISTEMA.ST_CONSULTACNPJTipo: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:
- Requisições HTTP genericas (
jRequisicoes.pas—RequestJson): escolha entre API REST sem certificado (cnpj.ws) ou com certificado digital (OpenSSL). - 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 / Rotina | Impacto |
|---|---|
| TFA001 — Importação CNPJ/CPF | Define se a consulta usa SEFAZ (exige Estado + Tipo Pessoa) ou cnpj.ws (dispensa Estado no formulario). |
jRequisicoes.pas — RequestJson | Define a estrategia HTTP: REST puro (C) ou REST com certificado OpenSSL (O). |
| ADM010 — Parametros do Sistema | Tela de configuracao do parametro. |
Campos envolvidos
| Campo | Tabela | Tipo | Default |
|---|---|---|---|
ST_CONSULTACNPJ | PARMSISTEMA | CHAR(1) | 'C' |
ST_AUTENTICASSL | PARMSISTEMA | — | — |
ST_AUTENTICASSL(configurado em ADM010 — Parametros do Sistema) armazena o caminho/identificador do certificado digital usado quandoST_CONSULTACNPJ = 'O'.
Opções disponiveis
C — cnpj.ws (API REST)
| O que faz | Detalhe |
|---|---|
| Provedor | API REST publica cnpj.ws |
| Autenticacao | Nenhuma (request simples) |
| Formulário importação | Campo Estado fica oculto; Tipo Pessoa permanece visivel |
| Requests genericos | Usa RequestRest() (HTTP sem certificado) |
| Valor padrão | Sim — 'C' |
Simulação passo a passo
- Acesse ADM010 — Parametros do Sistema.
- Na aba Bloqueio/Cadastro Pessoa, localize o campo Aut. SSL.
- Selecione a opção cnpj.ws.
- Clique em Salvar.
- Abra a tela TFA001 — Importação CNPJ/CPF (
FormShow). - Observe que o campo Estado fica oculto e o campo Tipo Pessoa e movido para a linha do Estado.
- Ao executar um request HTTP via
RequestJson, o sistema utilizaRequestRest()(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 faz | Detalhe |
|---|---|
| Provedor | SEFAZ (via DLL NfeConsultaCadastro) |
| Autenticacao | Certificado digital configurado em CONFIGNFE.NRSERIALCERT |
| Formulário importação | Exige preenchimento de Estado, Tipo Pessoa e CNPJ |
| Requests genericos | Sem tratamento no RequestJson (valor 'S' nao e mapeado) |
| Dependencia | Requer CONFIGNFE configurada com serial de certificado e TPAMB |
Simulação passo a passo
- Acesse ADM010 — Parametros do Sistema.
- Na aba Bloqueio/Cadastro Pessoa, selecione Sefaz no campo Aut. SSL.
- Clique em Salvar.
- Abra a tela TFA001 — Importação CNPJ/CPF.
- Preencha os campos obrigatórios: CNPJ, Estado (UF) e Tipo Pessoa.
- Clique em Importar (
<F6>). - O sistema consulta a SEFAZ utilizando a DLL
NfeConsultaCadastro, lendo o certificado deCONFIGNFE.
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 emRequestJson(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
CONFIGNFEpossua registro valido para a empresa comNRSERIALCERTeTPAMBpreenchidos.
O — OpenSSL (API REST com Certificado Digital)
| O que faz | Detalhe |
|---|---|
| Provedor | API REST com autenticação OpenSSL |
| Autenticação | Certificado digital armazenado em ST_AUTENTICASSL |
| Formulário importação | Campo Estado fica oculto (padrão 'C', pois 'O' nao satisfaz a condicao = 'C' or = 'S') |
| Requests genericos | Usa RequestOpen() com o certificado de ST_AUTENTICASSL |
| Exigencia | ST_AUTENTICASSL deve estar preenchido, senao nenhum metodo e acionado |
Simulação passo a passo
- Acesse ADM010 — Parametros do Sistema.
- Na aba Bloqueio/Cadastro Pessoa, selecione OpenSSL no campo Aut. SSL.
- Verifique se o campo referente ao certificado digital (
ST_AUTENTICASSL) esta preenchido com um valor valido. - Clique em Salvar.
- Ao executar um request HTTP via
RequestJson, o sistema utilizaRequestOpen()passando o certificado como parametro. - 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 condicaoResultado[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_AUTENTICASSLestiver vazio, o branchelse 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
| Opcao | Provedor | Autenticacao | Req. Generico | Form. Importacao | Exige Estado |
|---|---|---|---|---|---|
| C | cnpj.ws REST | Nenhuma | RequestRest() | API REST | Nao |
| S | SEFAZ (DLL NFe) | CONFIGNFE.NRSERIALCERT | Nao tratado | DLL NFe XML | Sim |
| O | API REST + OpenSSL | ST_AUTENTICASSL | RequestOpen() | API REST (padrao C) | Nao |
Regra de Selecao (RequestJson)
A funcao RequestJson em jRequisicoes.pas segue esta ordem de decisao:
- Se
iToken <> ''ouiCaminhoArquivo <> ''→RequestWithBearerToken()(independente do parametro). - Se
ST_CONSULTACNPJ = 'C'→RequestRest()(REST sem certificado). - Se
ST_CONSULTACNPJ = 'O'eST_AUTENTICASSL <> ''→RequestOpen()(REST com certificado). - Caso contrario → nenhum metodo e chamado;
Resultpermanece sem atribuicao.
Procedures Impactadas
Rotinas Delphi com referencia direta ao campo
| Rotina | Arquivo | Linha | Evidencia |
|---|---|---|---|
TfrmADM010.btnSalvarClick | source/ADM010/UADM010.pas | 317 | dmADM010.tabPARMSISTEMAST_CONSULTACNPJ.AsString := cmbTB_CONSULTACNPJ.Value; |
TfrmIMPORTACAOCNPJCPF.FormShow | source/TFA001/UIMPORTACAOCNPJCPF.pas | 77 | 'SELECT ST_CONSULTACNPJ' + #10 + |
TfrmIMPORTACAOCNPJCPF.btnImportarClick | source/TFA001/UIMPORTACAOCNPJCPF.pas | 133 | if stTipoConsulta <> 'C' then |
RequestJson | source/jCommon/jRequisicoes.pas | 239 | ' 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/View | Arquivo |
|---|---|
ARRUMA_MASCARACONTA | Scripts/ARRUMA_MASCARACONTA.sql |
ATUALIZA_CONTACONTABIL | Scripts/ATUALIZA_CONTACONTABIL.sql |
CONTABILIZA_CUPOMFISCAL | Scripts/CONTABILIZA_CUPOMFISCAL.sql |
GERA_SPEDBLOCOL | Scripts/GERA_SPEDBLOCOL.sql |
IMPORTA_ARQUIVOMAGNETICO | Scripts/IMPORTA_ARQUIVOMAGNETICO.sql |
Sem impacto direto identificado — essas rotinas leem outros campos de
PARMSISTEMA(TP_PLANOCONTABIL, etc.).