3 ARQUITETURA DE COMUNICAÇÃO COM O CONTRIBUINTE
3.1 Modelo Conceitual
Utilizando Web Service, o Sistema de Notas Fiscais de Serviços
Serviço Eletrônicas das Administrações Tributárias Municipais disponibilizará serviços
que poderão ser acessados pelos sistemas sistemas dos contribuintes. A seguir, estão
resumidos os serviços disponíveis e suas respectivas funcionalidades básicas.
3.1.1 Recepção e Processamento de Lote de RPS (Gerar NFS-e)
Esse serviço compreende a recepção do Lote de RPS, a resposta com o número do protocolo gerado para esta transação e o processamento do lote. Quando efetuada a recepção, o Lote entrará na fila para processamento posterior quando serão feitas as validações necessárias e geração das NFS-e.
XML de Envio é validado pelo elemento do schema do arquivo nfse.xsd:gerarNFSe
Passos para execução:
A aplicação acessa o serviço de “Recepção e Processamento de Lote de RPS” enviando o lote de RPS (fluxo “b”).
A requisição é recebida pelo servidor do Web Service que grava as informações recebidas e gera o número de protocolo de recebimento (fluxo “c”).
O Web Service retorna uma mensagem com o resultado do processamento do serviço, (fluxo “d”).
A URL do serviço será:
https://www.janelaunica.srv.br:8443/wsjanelaunica/NfseWS?wsdl
3.1.3 Consulta de NFS-e
Esse serviço efetua a consulta da(s) NFS-e(s) gerada(s).
XML de Envio é validado pelo elemento do schema do arquivo nfse.xsd:buscarNfse
Passos para execução:
A aplicação acessa o serviço de “Consulta de NFS-e” e submete os dados para processamento.
A requisição é recebida pelo servidor do Web Service, que verifica os dados preenchidos e identifica a(s) NFS-e(s) correspondente (s).
O Web Service retorna uma mensagem com o resultado do processamento do serviço.
4 PADRÕES TÉCNICOS
O meio físico de comunicação utilizado entre os sistemas de informação dos contribuintes e o Sistema de Notas Fiscais de Serviço Eletrônicas das Administrações Tributárias Municipais será a Internet, com o uso do protocolo SSL, que além de garantir um duto de comunicação seguro na Internet, permite a utilização de nome ou código de usuário e senha em tráfego seguro.
O modelo de comunicação segue o padrão de Web Services definido pelo WS-I Basic Profile (Basic 128).
A troca de mensagens entre o Web Service do Sistema de Notas Fiscais de Serviço Eletrônicas das Administrações Tributárias Municipais e o sistema do contribuinte será realizada no padrão SOAP, com troca de mensagens XML no padrão Style/Enconding: Document/Literal, wrapped. A opção “wrapped”
representa esenta a chamada aos métodos disponíveis com a passagem de mais de um parâmetro. Para descrever os serviços disponibilizados, será utilizado um documento WSDL (Web Service DescriptionLanguage). O WSDL é o padrão recomendado para descrição de serviços SOAP.
As chamadas aos serviços serão feitas enviando como parâmetro um documento XML a ser processado pelo sistema. Esse documento não fará parte da descrição do serviço (arquivo WSDL), e o formato do XML
correspondente ao serviço está definido neste manual de integração, seção 5.
4.1 Habilitando Login
Para conectar um sistema gerador de RPS com o sistema emissor de NFS-e
Siga os seguintes passos:
1 - acesse a Área do Prestador de Serviços, no portal Janela Única.
2 - clique em Contribuinte e depois em RPS.
3 - clique no botão Alterar Senha.
A senha cadastrada será utilizada tanto na integração ao web Service de teste
quanto no Web Service de Produção. Uma vez cadastrada a nova senha a empresa
estará homologada.
As informações necessárias para acessar o Web Service são o código do usuário e
a senha.
5 PADRÃO DAS MENSAGENS XML
A especificação adotada para as mensagens XML é a recomendação W3C para XML 1.0, disponível em http://www.w3.org/TR/REC-xmle a codificação dos caracteres será em UTF-8.
As chamadas dos Web Services disponibilizados Administrações Tributárias Municipais e os respectivos resultados do processamento são realizadas com utilização de mensagens com o seguinte padrão:
• Área de Cabeçalho – estrutura XML padrão para todas as mensagens de chamada e retorno de resultado dos Web Services disponibilizados pelas Administrações Tributárias Municipais, que contêm os dados de controle da mensagem. A área de cabeçalho está sendo utilizada para armazenar a versão do leiaute da estrutura XML informada na área de dados
• Área de Dados – estrutura XML variável definida na documentação do Web Service acessado.
Abaixo, o leiaute da Área de Cabeçalho:
# | Nome | Elemento | Pai | Tipo | Ocorrência | Tamanho | Descrição |
---|---|---|---|---|---|---|---|
1 | cabeçalho | G | 1-1 | TAG raiz do cabeçalho da | |||
username | A | 1 | C | 1-1 | Login para autenticação | ||
password | A | 1 | C | 1-1 | Senha para autenticação | ||
timestamp | A | 1 | DT | 1-1 | Timestamp da requisição |
6 ESTRUTURA DE DADOS DO WEB SERVICE
Existe um único Web Service com todos os serviços apresentados no item 3.1. O fluxo de comunicação é sempre iniciado pelo sistema do contribuinte com o envio de uma mensagem XML ao Web Service com o
pedido do serviço desejado.
6.1 Modelo Operacional
A forma de processamento das solicitações de serviços no projeto Nota Fiscal de Serviços Eletrônica pode ser síncrona, caso o atendimento da solicitação de serviço seja realizada na mesma conexão ou assíncrona, quando o processamento do serviço solicitado não é atendido na mesma conexão, devido a uma demanda de processamento de grande quantidade de informação. Nessa situação torna-se necessária a realização de mais uma conexão para a obtenção do resultado do processamento.
As solicitações de serviços que exigem processamento intenso serão executadas de forma assíncrona e as demais solicitações de serviços de forma síncrona.
Assim, os serviços da NFS-e serão implementados da seguinte forma:
Serviço | Implementação |
---|---|
Recepção e Processamento de Lote de RPS | Assíncrona |
Consulta de Lote de RPS | Síncrona |
Consulta de NFS-e | Síncrona |
6.1.1 Serviços Síncronos
As solicitações de serviços de implementação síncrona são processadas imediatamente e o resultado do processamento é obtido em uma única conexão.
Abaixo, o fluxo simplificado de funcionamento:
O aplicativo do contribuinte inicia a conexão enviando uma mensagem de solicitação de serviço para o Web Service;
O Web Service recebe a mensagem de solicitação de serviço e encaminha ao aplicativo da NFS-e que irá processar o serviço solicitado;
O aplicativo da NFS-e recebe a mensagem de solicitação de serviços e realiza o processamento, devolvendo uma mensagem de resultado do processamento ao Web Service;
O Web Service recebe a mensagem de resultado do processamento e o encaminha ao aplicativo do contribuinte;
O aplicativo do contribuinte recebe a mensagem de resultado do processamento e caso não exista outra mensagem, encerra a conexão.
6.1.2 Serviços Assíncronos
As solicitações de serviços de implementação assíncrona são processadas de forma distribuída por vários processos e o resultado do processamento somente é obtido na segunda conexão.
Abaixo, o fluxo simplificado de funcionamento para solicitação e processamento:
O aplicativo do contribuinte inicia a conexão enviando uma mensagem de solicitação de serviço para o Web Service de recepção de solicitação de serviços;
O Web Service de recepção recebe a mensagem de solicitação de serviço e a coloca na fila de serviços solicitados;
O Web Service de recepção de solicitação de serviços retorna o protocolo da solicitação de serviço e a data e hora de gravação na fila de serviços solicitados ao aplicativo do contribuinte;
O aplicativo do contribuinte recebe o protocolo;
Na estrutura interna do aplicativo de NFS-e a solicitação de serviços é retirada da fila de serviços solicitados pelo aplicativo da NFS-e em momento específico, definido pela equipe técnica da NFS-e;
O serviço solicitado é processado pelo aplicativo da NFS-e e o resultado do processamento é colocado na fila de serviços processados;
Obtenção do resultado do serviço:O aplicativo do contribuinte, utilizando o protocolo recebido, envia uma consulta ao serviço que retornará o resultado do processamento daquele protocolo, iniciando uma conexão com o Web Service;
O Web Service recebe a mensagem de consulta e localiza o resultado de processamento da solicitação de serviço;
O Web Service devolve o resultado do processamento ao aplicativo contribuinte;
O aplicativo do contribuinte recebe a mensagem de resultado do processamento e, caso não exista outra mensagem, encerra a conexão.
7 FORMATOS E PADRÕES UTILIZADOS
Abaixo seguem algumas formatações de dados que devem ser seguidas para geração correta na estrutura dos arquivos.
Formado | Observação |
---|---|
Data (date) | Formato: AAAA-MM-DD |
Data/Hora (datetime) | Formato AAAA-MM-DDTHH:mm:ss |
Valores Decimais (decimal) | Formato: 0.00 |
Valores Percentuais (decimal) | Formato 00.00 |
Não deve ser inserido caractere não significativo para preencher o tamanho completo do campo, ou seja, zeros antes de número ou espaço em branco após a cadeia de caracteres. A posição do campo é definida na estrutura do documento XML através de TAGs (<tag>conteúdo</tag>).
A regra constante do parágrafo anterior deverá estender-se para os campos para os quais não há indicação de obrigatoriedade e que, no entanto, seu preenchimento torna-se obrigatório seja condicionado à legislação específica ou ao negócio do contribuinte. Nesse caso, deverá constar a TAG com o valor correspondente e, para os demais campos, deverão ser eliminadas as TAGs.
Para reduzir o tamanho final do arquivo XML da NFS-e alguns cuidados de programação deverão ser assumidos:
• não incluir "zeros não significativos" para campos numéricos;
• não incluir "espaços" no início ou no final de campos numéricos e alfanuméricos;
• não incluir comentários no arquivo XML;
• não incluir anotação e documentação no arquivo XML (TAG annotation e TAG documentation);
• não incluir caracteres de formatação no arquivo XML ("line-feed", "carriagereturn", "tab", caractere de "espaço" entre as TAGs);
• para quebra de linha na exibição para os campos contendo caracteres Discriminação e Outras informacões, utilizar a sequência “\s\n”.
As TAGs que permitirem valores nulos devem ser omitidas da estrutura XML a ser enviada quando seus valores forem nulos.
7.1 Tipos Simples
A seguir encontra-se a tabela com a lista dos tipos simples que serão utilizados como tipos de dados. A tabela está dividida em 4 colunas, a saber:
Campo: nome do tipo simples;
Tipo: tipo primitivo de dados utilizados pelo campo:
C: Caractere;
N: Número;
D: Data ou Data/Hora;
T: Token (não utilizado)
Descrição: descreve informações sobre o campo;
Tam.: tamanho do campo:
Quando forem caracteres o tamanho define a quantidade máxima de caracteres que o texto poderá ter;
Quando for numérico o tamanho pode ser representado das seguintes formas;
Número inteiro, que define o total de dígitos existente no número. Exemplo: “15” significa que o número poderá ter, no máximo, 15 dígitos;
Número fracionário, que define o total de dígitos e quantos deles serão designados para a parte fracionária. Exemplo: “15,2” significa que o número poderá ter, no máximo, 15 dígitos sendo 2 deles a da parte fracionária. A parte fracionária não é obrigatória quando assim definido;
Quando for data, não haverá definição de tamanho.
Campo | Tipo | Descrição | Tam. |
---|---|---|---|
numeroNfse | N | Número da Nota Fiscal de Serviço Eletrônica, formado | 15 |
codigoVerificacao | C | Código de verificação do número da nota | 9 |
outrasInformacoes | C | Informações adicionais ao documento | 255 |
status | N | Código de status da NFS-e e RPS | 1 |
numeroRps | N | Número do RPS | 15 |
serieRps | C | Número de série do RPS | 5 |
codigoServico | C | Código do serviço prestado Item da LC 116/2003 | 5 |
tipoRps | N | Código de tipo de RPS | 1 |
valor | N | Valor monetário. Formato: 0.00 (ponto separando casa | 15,2 |
cep | C | Número do CEP | 8 |
municipio | N | Código de identificação do município conforme tabela | 7 |
complementoEndereco | C | Complemento de endereço | 60 |
C | 80 | ||
endereço | C | Tipo e nome do logradouro (Av., Rua, ...) | 125 |
nomeFantasia | C | Nome fantasia | 60 |
numeroEndereco | C | Número do imóvel | 10 |
pais | C | Código de identificação do município conforme tabela | 4 |
razaoSocial | C | Razão Social do contribuinte | 150 |
telefone | C | Telefone | 20 |
uf | C | Sigla da unidade federativa | 2 |
aliquota | N | Alíquota. Valor percentual. | 4,2 |
numeroLote | N | Número do Lote de RPS | 15 |
cpfCnpj | C | Número de CPF ou CNPJ | 14 |
inscricao | C | Número de inscrição municipal | 15 |
nif | C | Número de Identificação Fiscal | 40 |
discriminação | C | Discriminação do conteúdo da NFS-e | 2000 |
quantidade | N | Quantidade de itens da nfs-e | 15,2 |
detalhe | C | Código de Obra e código ART | 15 |
cnae | N | Código CNAE | 7 |
codigoNbs | C | Código de NBS | 9 |
codTributacao | C | Código de Tributação | 20 |
exigibilidade | N | Código de natureza da operação | 1 |
simnao | N | Identificação de Sim/Não | 1 |
numProcesso | C | Número do processo judicial ou administrativo de | 30 |
regime | N | Código de identificação do regime especial de tributação | 1 |
responsavelRetencao | N | Identificação do responsável pela retenção do ISS | 1 |
tipoFiltroLote | N | Código de tipo de busca de lote | 1 |
tipoFiltroNota | N | Código de tipo de busca de NFS-e | 1 |
tipoLote | N | Código do tipo de lote | 1 |
mensagemErro | C | Código e mensagem de erro |
7.2 Tipos Complexos
A seguir são detalhadas as tabelas de cada tipo composto e seus campos.
A tabela está dividida da seguinte forma:
(1) | ||||
---|---|---|---|---|
(2) | ||||
Nome | Tipo | Ocorrência | Descrição | |
(3) | (4) | (5) | (6) | (7) |
(4) | (5) | (6) | (7) |
Legenda da tabela:
(1) Nome do tipo complexo;
(2) Descrição do tipo complexo;
(3) Identifica se a sequência de campos fará parte de uma escolha (choice);
(4) Nome do campo que faz parte do tipo complexo;
(5) Tipo do campo, que pode ser simples ou complexo;
(6) Quantas vezes o campo se repete na estrutura de dados: a. Formato: “x-y” onde “x” é a quantidade mínima e “y” a quantidade máxima. Se a quantidade máxima for indefinida, será utilizado “N” no lugar do “y”;
(7) Descrição do campo.
notaFiscalServicoEletronica | |||
---|---|---|---|
Representa dados de identificação da Nfs-e. | |||
Nome | Tipo | Ocorrência | Descrição |
numeroNfse | numeroNfse | 1 - 1 | |
codigoVerificacao | codigoVerificacao | 1 - 1 | |
dataEmissao | date | 1 - 1 | |
numeroNfseSubstituta | numeroNfse | 0 - 1 | Não utilizado |
outrasinformacoes | outrasinformacoes | 0 - 1 | |
status | status | 1 - 1 | 1 ou 2 |
descStatus | string | 0 - 1 | 1 - Normal |
creditoGerado | creditoGerado | 0 - 1 | Tabela creditoGerado |
complementoPrestador | complementoPrestadorServico | 0 - 1 | |
valorNfse | valorNfse | 0 - 1 | |
identificacaoOrgaoGerador | identificacaoOrgaoGerador | 0 - 1 | Tabela identificacaoOrgaoGerador |
rps | reciboProvisorioDeServico | 0 - 1 | Tabela reciboProvisorioDeServico |
loteRPS | |||
---|---|---|---|
Representa dados de identificação do Lote. | |||
Nome | Tipo | Ocorrência | Descrição |