O plugin de integração com a ReceitaWS (https://receitaws.com.br/) tem os seguintes propósitos funcionais
O plugin com a ReceitaWS está sujeito às precificações da utilização da API do fornecedor, que hoje possui plano gratuito inicial, com algumas restrições.
Para consultar quais são as restrições / benefícios / custos dos planos da ReceitaWS, acesse https://receitaws.com.br/#section-plans
Para utilizar o plugin de integração, acesse a tela da aplicação Web em: Configuração > Integração > Plugins de Integração e Ative o Card referente ao plugin.
Ao clicar no botão "Configurar", é aberto a Tela de configurações do Receitaws.
Informe cada campo conforme a configuração detalhada a seguir:
| Configurações da ReceitaWS | |
|---|---|
| Token | Campo referente ao token do plano contratado, quando utilizado os planos não gratuitos. O valor será disponibilizado na conta do usuário no site da ReceitaWS. Caso possua dúvidas, consulte https://receitaws.com.br/faq |
| Dias de defasagem | Campo referente ao número de dias relativo à data de atualização do cliente que se aceita buscar os dados de clientes da base interna da ReceitaWS ao invés de buscar diretamente no banco de dados da Receita Federal. |
| Configurações do SFA | |
|---|---|
| Timeout consulta | Tempo máximo, em segundos, que o sistema permanecerá aguardando a resposta da ReceitaWS antes de abortar a requisição e notificar o usuário: "O servidor da ReceitaWS não respondeu a tempo" |
| Tipo local | Campo de seleção de tipos de local que serão mapeados no preenchimento dos campos vindos da API consultada. Se selecionado, por exemplo: "PRINCIPAL", somente os locais do tipo PRINCIPAL serão atualizados com os campos retornados. |
| Tipo e-mail | Campo de seleção de tipos de e-mail que serão mapeados no preenchimento dos campos vindos da API consultada. Se selecionado, por exemplo: "NFE", somente os e-mails do tipo NFE serão atualizados/inseridos com os campos retornados. |
| Tipo telefone | Campo de seleção de tipos de telefones que serão mapeados no preenchimento dos campos vindos da API consultada. Se selecionado, por exemplo: "NFE", somente os telefones do tipo NFE serão atualizados/inseridos com os campos retornados. |
| Exibir botão buscar | Campo de opções fixas, com opções:
|
| Mapeamento de Campos | Definição de campos que serão mapeados do SFA com os campos retornados pela API consultada. Ou seja, são os campos que serão preenchidos automaticamente no retorno dos dados da ReceitaWS. Para isso o usuário deve ativar ou não o campo Situação. Por exemplo, se não é desejado que o campo de telefone seja atualizado, poderá der desmarcado o campo do SFA local.telefone |
| Comportamento por situação | Neste quadro é possível mapear os valores dos campos de retorno "situação" e "situacaoespecial" para que possam servir de critério de filtro para o comportamento definido no campo "Comportamento", cujos campo editáveis são:
|
Para que se possa saber os possíveis valores dos campos "situação" e "situacaoespecial" retornados pela API da ReceitaWS, utilize o link https://receitaws.com.br/v1/cnpj/${cnpj} substituindo o ${cnpj} com o CNPJ desejado, sem pontuações. Com o resultado em tela, observar os campos "situação" e "situacaoespecial".
Lembrando que para devido funcionamento, é necessário Configurar o serviço de integração Pentaho Carte
Outra melhoria é entre os botões disponíveis, que agora possui o botão "Testar Plugin" que permite o usuário fazer uma chamada para o carte e verificar se o Plugin está funcionando corretamente:
A consulta é realizada e exibida em tela:
Gerando um retorno de dados, conforme o exemplo:
Agora a conexão já está funcionando conforme o esperado.
Após a configuração realizada, agora no Cadastro de Clientes é disponibilizado o Botão "Consultar" ao lado do campo CNPJ
Quando o usuário Clicar no botão, há um disparo da requisição para o Plugin ReceitaWS e em tela é exibido o aviso que a consulta está sendo realizada:
Assim que a consulta é concluída é exibido para o usuário o retorno dos campos, DE - PARA conforme configurados no Plugin para o preenchimento:
A mesma consulta pode ser realizada no Android, visto que o mobile faz uma requisição na aplicação web para retornar os registros:
INSERT INTO public.wsconfigentidadecampo (nomecampo,idnpermitecadastrar,idnpermiteeditar,idnpermitevisualizar,idnobrigatorio,ordem,idwsconfigentidade,idnexiberelatorio)
VALUES ('situacaocadastral',0,0,0,0,0,(select idwsconfigentidade from wsconfigentidade where nomeentidade = 'pessoajuridica'),0);
INSERT INTO public.wsconfigentidadecampo (nomecampo,idnpermitecadastrar,idnpermiteeditar,idnpermitevisualizar,idnobrigatorio,ordem,idwsconfigentidade,idnexiberelatorio)
VALUES ('situacaoespecial',0,0,0,0,0,(select idwsconfigentidade from wsconfigentidade where nomeentidade = 'pessoajuridica'),0);
INSERT INTO public.wsconfigentidadecampo (nomecampo,idnpermitecadastrar,idnpermiteeditar,idnpermitevisualizar,idnobrigatorio,ordem,idwsconfigentidade,idnexiberelatorio)
VALUES ('unidadefederativa',0,0,0,0,0,(select idwsconfigentidade from wsconfigentidade where nomeentidade = 'local'),0);
| "Campo SFA": Registros somente visualização, representando o campo do SFA que será populado | "Campo ReceitaWS": Registros somente visualização, representando o campo do retorno da API | "Situação": Campo editável com opções Ativo/Inativo, checkbox |
parceiro.nomeparceiro |
nome |
Ativo |
| parceiro.nomeparceirofantasia | fantasia | Ativo |
| parceiro.cnae | atividade_principal // "{code}:{text}" | Ativo |
| pessoajuridica.datafundacao | abertura | Ativo |
| pessoajuridica.valorcapitalsocial | capital_social | Ativo |
| pessoajuridica.situacaocadastral | situacao | Ativo |
| pessoajuridica.situacaoespecial | situacao_especial | Ativo |
| local.descricao | tipo | Ativo |
| local.numero | numero | Ativo |
| local.logradouro | logradouro | Ativo |
| local.bairro | bairro | Ativo |
| local.complemento | complemento | Ativo |
| local.cep | cep | Ativo |
| local.telefone | telefone // Se houver mais de um telefone, realizar a persistência de N registros, realizando o split pelo caracter "/" | Ativo |
| local.email | Ativo | |
| local.cidade | municipio // select idcidade from cidade where upper(descricao) = upper(:municipio) and idunidadefederativa = (select idunidadefederativa from unidadefederativa where upper(sigla) = upper(:uf)) | Ativo |
| local.unidadefederativa | uf // select idunidadefederativa from unidadefederativa where upper(sigla) = upper(:uf) | Ativo |
Label "Comportamento por situação"
| No cabeçalho da grid deverá ter função "adicionar" para ter possibilidade de cadastrar-se múltiplos registros | ||
|---|---|---|
| Situação cadastral | Situação especial | Comportamento |
Campo texto, editável O campo servirá para definir qual o código da propriedade "situacao" que definirá o comportamento do cadastro pelo campo "Lógica" |
Campo texto, editável O campo servirá para definir qual o código da propriedade "situacao_especial" que definirá o comportamento do cadastro pelo campo "Lógica" |
Campo de seleção fixa, com opções:
|
Se em tela, o usuário tiver preenchido os registros:
| Situação cadastral | Situação especial | Comportamento |
| ok | bloqueado | APR |
| inativo | BLQ |
| codigoelemento (varchar20) | agrupador (integer) | sglcampo (varchar80) | valor (varchar200) |
| comportamento | 1 | situacaocadastral | ok |
| comportamento | 1 | situacaoespecial | bloqueado |
| comportamento | 1 | comportamento | APR |
| comportamento | 2 | situacaocadastral | INATIVO |
| comportamento | 2 | comportamento | BLQ |
O pentaho responderá com XML, contendo 2 Tags:
Caso a resposta seja bem sucedida, o conteúdo do campo RETORNO terá o modelo conforme:
| Situação cadastral | Situação especial | Comportamento |
ATIVO |
BLOQUEADO |
Permitir finalização, gerando aprovação |
| BAIXADO | Não permitir finalização |
No exemplo acima, para o primeiro registro, caso o campo "situacao"="ATIVO" e "situacao_especial"="BLOQUEADO",