Ato COTEPE/ICMS nº 5 de 14/04/2008
Norma Federal - Publicado no DO em 16 abr 2008
Altera o Ato COTEPE/ICMS nº 17/04, de 29 de março de 2004, que dispõe sobre as especificações técnicas para geração do arquivo eletrônico a que se refere o item 20, do inciso III da cláusula sétima do Protocolo ICMS nº 41/06, de 15 de dezembro de 2006.
O Secretário Executivo do Conselho Nacional de Política Fazendária - CONFAZ, no uso de suas atribuições que lhe confere o art. 12, XIII, do Regimento da Comissão Técnica Permanente do ICMS - COTEPE/ICMS, de 12 de dezembro de 1997, torna público que a Comissão, na sua 132ª reunião ordinária, realizada nos dias 17 a 19 de março de 2008, em Brasília, DF, aprovou as alterações do Ato COTEPE/ICMS nº 17/04, de 29 de março de 2004, referentes às especificações técnicas para geração do arquivo eletrônico a que se refere o item 20 do inciso III da cláusula sétima do Protocolo ICMS nº 41/06, de 15 de dezembro de 2006.
Art. 1º O item 5 do Ato COTEPE/ICMS nº 17/04, de 29 de março de 2004, passa a vigorar com a redação que se segue:
"5 - GERAÇÃO DO ARQUIVO:
5.1 - O arquivo eletrônico deverá ser gerado e assinado digitalmente por DLL (Dynamic Link Library) que atenda às especificações estabelecidas no Anexo I deste ato, desenvolvida pelo fabricante do ECF para funcionamento com o programa aplicativo eECFc versão 3.03 ou posterior, disponibilizado pelo Fisco e que execute as seguintes funções de acordo com o comando previsto na tela de interface de usuário do programa eECFc, após selecionado o fabricante e o modelo de ECF e a origem dos dados (Porta Serial ou Arquivo Binário):
5.1.1 - Comando "Gerar Arquivo Binário":
5.1.1.1 - Botão de Seleção: "MF - Leit. Dados da Memória Fiscal":
5.1.1.1.1 - deve gerar arquivo binário contendo todas as informações do período solicitado gravadas na Memória Fiscal e gravá-lo com o nome "xxxxxx_aaaammdd_hhmmss.MF", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos Binários" existente no diretório do respectivo fabricante do ECF;
5.1.1.2 - Botão de Seleção: "MFD - Leit. Dados da Memória Fita-Detalhe":
5.1.1.2.1 - deve gerar arquivo binário contendo todas as informações do período solicitado gravadas na Memória de Fita Detalhe e gravá-lo com o nome "xxxxxx_aaaammdd_hhmmss.MFD", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos Binários" existente no diretório do respectivo fabricante do ECF;
5.1.1.3 - Botão de Seleção: "TDM - Leit. Dados das Memórias do ECF":
5.1.1.3.1 - deve gerar dois arquivos binários em conformidade com o previsto nos itens 5.1.1.1.1 e 5.1.1.2.1.
5.1.2 - Comando "Gerar Arquivo Texto":
5.1.2.1 - Botão de Seleção: "MF - Leit. Dados da Memória Fiscal":
5.1.2.1.1 - deve abrir um arquivo binário, previamente selecionado pelo usuário, com extensão ".MF" gerado conforme disposto no item 5.1.1.1.1;
5.1.2.1.2 - deve gerar arquivo texto conforme os itens 6 e 7 deste ato contendo os seguintes tipos de registro: E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12, E13, observado o disposto nos itens 3.1, 3.2 e 5.2 deste ato e gravá-lo com o nome "MFxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Formatados" existente no diretório do respectivo fabricante do ECF;
5.1.2.2 - Botão de Seleção: "MFD - Leit. Dados da Memória Fita-Detalhe":
5.1.2.2.1 - deve abrir um arquivo binário, previamente selecionado pelo usuário, com extensão ".MFD" gerado conforme disposto no item 5.1.1.2.1;
5.1.2.2.2 - deve gerar arquivo texto conforme os itens 6 e 7 deste ato contendo os seguintes tipos de registro: E01, E02, E14, E15, E16, E17, E18, E19, E20 e E21, observado o disposto nos itens 3.1, 3.2 e 5.2 deste ato e gravá-lo com o nome "MFDxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Formatados" existente no diretório do respectivo fabricante do ECF;
5.1.2.3 - Botão de Seleção: "TDM - Leit. Dados das Memórias do ECF":
5.1.2.3.1 - deve abrir dois arquivos binários, previamente selecionados pelo usuário, com extensão ".MF" e ".MFD" gerados conforme disposto no item 5.1.1.3.1;
5.1.2.3.2 - deve gerar arquivo texto conforme os itens 6 e 7 deste ato contendo os seguintes tipos de registro: E01, E02, E03, E04, E05, E06, E07, E08, E09, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20 e E21, observado o disposto nos itens 3.1, 3.2 e 5.2 deste ato e gravá-lo com o nome "TDMxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Formatados" existente no diretório do respectivo fabricante do ECF;
5.1.2.4 - Botão de Seleção: "RZ - Recup. Dados da Redução Z":
5.1.2.4.1 - deve abrir um arquivo binário, previamente selecionado pelo usuário, com extensão ".RZ" gerado conforme disposto no item 5.1.3.1 deste ato;
5.1.2.4.2 - deve gerar arquivo texto conforme os itens 6 e 7 deste ato contendo os seguintes tipos de registro: E01, E02, E14, E15 e E16, observado o disposto nos itens 3.1, 3.2 e 5.2 deste ato e graválo com o nome "RZxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Formatados" existente no diretório do respectivo fabricante do ECF;
5.1.3 - Comando "Ler Bitmap RZ":
5.1.3.1 - deve gerar arquivo binário contendo todas as informações representadas nos arquivos de imagem do BitMap e gravá-lo com o nome "xxxxxx_aaaammdd_hhmmss.RZ", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos Binários" existente no diretório do respectivo fabricante do ECF;
5.1.3.2 - deve gerar arquivo texto conforme os itens 6 e 7 deste ato contendo os seguintes tipos de registro: E01, E02, E14, E15 e E16, observado o disposto nos itens 3.1, 3.2 e 5.2 deste ato e graválo com o nome "RZxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Formatados" existente no diretório do respectivo fabricante do ECF;
5.1.4 - Comando "Gerar Espelho da LMF":
5.1.4.1 - deve abrir um arquivo binário, previamente selecionado pelo usuário, com extensão ".BIN" gerado conforme disposto no item 5.1.7;
5.1.4.2 - deve possibilitar a seleção da Leitura Simplificada ou Completa e o período por data ou intervalos de CRZ;
5.1.4.3 - deve gerar arquivo texto contendo a Leitura da Memória Fiscal em formato de espelho do documento e gravá-lo com o nome "EMFxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Espelho" existente no diretório do respectivo fabricante do ECF;
5.1.5 - Comando "Gerar Espelho da MFD":
5.1.5.1 - deve abrir um arquivo binário, previamente selecionado pelo usuário, com extensão ".MFD" gerado conforme disposto no item 5.1.1.2.1;
5.1.5.2 - deve possibilitar a seleção do período por data ou intervalos de COO ou a impressão total;
5.1.5.3 - deve gerar arquivo texto contendo a Leitura da Memória de Fita Detalhe em formato de espelho do documento e gravá-lo com o nome "EMFDxxxxxx_aaaammdd_hhmmss.TXT", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos TXT Espelho" existente no diretório do respectivo fabricante do ECF;
5.1.6 - Comando "Leitura do Software Básico": deve gerar arquivo no formato binário correspondente ao conteúdo gravado no dispositivo de armazenamento do Software Básico do ECF e gravá-lo com o nome "SBxxxxxx_aaaammdd_hhmmss.BIN", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos SB" existente no diretório do respectivo fabricante do ECF;
5.1.7 - Comando "Leitura do Binário da Memória Fiscal": deve gerar arquivo no formato binário correspondente ao conteúdo gravado no dispositivo de armazenamento da Memória Fiscal do ECF e gravá-lo com o nome "MFxxxxxx_aaaammdd_hhmmss.BIN", onde "xxxxxx" representa o número de fabricação do ECF, "aaaammdd" representa a data de geração do arquivo e "hhmmss" representa o horário de geração do arquivo, na pasta "Arquivos MF" existente no diretório do respectivo fabricante do ECF;
5.1.8 - Comando "Leitura X": deve enviar ao ECF comando para impressão da Leitura X;
5.1.9 - Comando "Leitura da Memória Fiscal": deve enviar ao ECF comando para impressão da Leitura da Memória Fiscal possibilitando selecionar Leitura Simplificada ou Completa e período por data ou intervalos de CRZ;
5.1.10 - Comando "Impressão da Fita-Detalhe": deve enviar ao ECF comando para impressão da Fita Detalhe possibilitando selecionar período por data ou intervalos de COO ou a impressão total;
5.2 - Quando não houver informação relativa ao tipo de registro que deve ser gerado deverá ser gerado apenas um registro do respectivo tipo devendo:
5.2.1 - conter a informação dos quatro primeiros campos do registro, de modo a identificar o ECF;
5.2.2 - observar o disposto nos itens 3.1 e 3.2 para os demais campos do registro;"
Art. 2º O Ato COTEPE/ICMS nº 17/04, de 29 de março de 2004, fica acrescido do Anexo I deste ato.
Art. 3º Os fabricantes de equipamentos ECF deverão apresentar à COTEPE\ICMS até o dia 30 de junho de 2008, arquivo DLL (Dynamic Link Library) que atenda às especificações e requisitos estabelecidos neste ato, ficando as Unidades Federadas autorizadas a suspender novas autorizações de uso de equipamento ECF produzido por fabricante que não apresentar o arquivo no prazo estabelecido.
§ 1º Ressalvado o disposto no § 2º, para cumprimento do disposto no caput:
I - a Secretaria da Fazenda do Estado de São Paulo disponibilizará aos fabricantes de ECF o programa eECFc versão 3.03 até o dia 30 de abril de 2008;
II - o fabricante de ECF deverá dirigir-se à Secretaria da Fazenda do Estado de São Paulo, em data previamente agendada, a qual submeterá o arquivo DLL a testes e distribuirá às demais Unidades Federadas.
§ 2º Ficam as unidades federadas autorizadas a exigir a apresentação do arquivo DLL diretamente à respectiva Secretaria de Fazenda.
Art. 4º Este ato entra em vigor na data de sua publicação no Diário Oficial da União.
MANUEL DOS ANJOS MARQUES TEIXEIRA
ANEXOESPECIFICAÇÃO DA DLL PARA FUNCIONAMENTO COM O PROGRAMA eECFc
1 - FUNCIONAMENTO E INSTALAÇÃO:
1.1 O Aplicativo eECFc é instalado no diretório "...\Arquivos de programas\eECFc" e esta pasta deverá conter um subdiretório para cada fabricante, no qual deve existir um arquivo com o mesmo nome do subdiretório e com a extensão ".XML", que informa ao programa eECFc quais são os modelos suportados pela DLL do respectivo fabricante.
1.2 As DLL necessárias ao funcionamento do programa eECFc devem ser instaladas no subdiretório do respectivo fabricante e devem possibilitar o funcionamento independentemente de sua instalação em outro diretório ou uso de componentes instalados fora deste local.
2 - ARQUIVO XML PARA CONFIGURAÇÃO DOS MODELOS DE ECF:
O arquivo XML deve ser criado conforme exemplo abaixo:
Fabricante1.dll
Modelo 1
Modelo 2
Modelo 3
Modelo n
3 - LISTA DE COMANDOS DO PROGRAMA eECFc:
A DLL do fabricante deve seguir a lista de funções definidas abaixo seguindo a sintaxe indicada:
int Open (char* szComPortOrFileName, char* szModelo);
char * szComPortOrFileName
Nome da fonte de dados para geração dos registros. Há duas possibilidades:
- identificação da porta serial, por exemplo "COM1:"
Caso a impressora não seja encontrada na porta selecionada a DLL do fabricante deve apresentar uma janela contendo a mensagem "ERRO DE COMUNICAÇÃO COM O ECF", podendo opcionalmente fazer auto-detecção e localizar automaticamente o ECF. Neste caso a DLL deve apresentar uma janela com a mensagem: "PAUSA PARA AVISO: ECF detectado na PORTA: COM X. VELOCIDADE: XXXX. Tecle OK para continuar!".
- nome do arquivo com os dados da MF, MFD ou RZ (nesse caso o relatório gerado não conterá os dados da memória de trabalho).
char * szModelo
Identificação do modelo do ECF, por exemplo "MP-20 FI II"
retorno: sucesso (0) ou erro (-1).
int Close (void);
retorno: sucesso (0) ou erro (-1).
int DownloadMemorias (char* szCmd, char* szTipo, char* szIni, char* szFinal);
Os nomes dos arquivos binários que serão criados devem ser gerados automaticamente pela DLL seguindo os padrões definidos por este ato.
char * szCmd
Identifica as memórias que deverão ser lidas:
- "0" - MF
- "1" - MFD
- "2" - MF e MFD
char * szTipo
- "0" - por faixa de Data
- "1" - por faixa de CRZ
- "2" - por faixa de COO (apenas para leitura de MFD - szCmd=1)
- "3" - leitura total
char * szIni
Valor inicial da faixa de leitura desejada.
char * szFinal
Valor final da faixa de leitura desejada.
retorno: conforme lista abaixo.
int GeraRegistrosTipoE (char* szMFFileName, char* szMFDRZFileName, char* szCmd);
O nome do arquivo texto que será criado deve ser gerado automaticamente pela DLL seguindo os padrões definidos por este ato.
char * szMFFileName
Nome do arquivo binário da MF. Opcional dependendo da leitura.
char * szMFDRZFileName
Nome do arquivo binário da MFD ou da Redução Z.
char * szCmd
Identificação do comando segundo o ATO COTEPE 17/04:
- "0" - MF (item 5.1.2.1 do ATO COTEPE 17/04)
- "1" - MFD (item 5.1.2.2 do ATO COTEPE 17/04)
- "2" - TDM (item 5.1.2.3 do ATO COTEPE 17/04)
- "3" - RZ (item 5.1.2.4 do ATO COTEPE 17/04)
retorno: conforme lista abaixo.
int GeraEspelhos (char* szMFDFileName, char* szTipo, char* szIni, char* szFinal, char* szData);
O nome do arquivo texto que será criado deve ser gerado automaticamente pela DLL seguindo os padrões definidos por este ato.
char * szMFDFileName
Nome do arquivo binário da MFD.
char * szTipo
- "0" - por faixa de Data
- "1" - por faixa de COO
- "2" - total char * szIni
Valor inicial da faixa de leitura desejada.
char * szFinal
Valor final da faixa de leitura desejada.
char* szData
Data de referência para geração de espelhos por COO no formato DDMMAAAA (preenchimento opcional). Esta referência por data é usada apenas no caso de existir mais de uma faixa de COO correspondente a solicitação no arquivo MFD selecionado
retorno: conforme lista abaixo.
int GeraEspelhoLMF (char* szMFFileName, char* szTipo, char* szRange, char* szIni, char* szFinal);
O nome do arquivo texto que será criado deve ser gerado automaticamente pela DLL seguindo os padrões definidos por este ato.
char * szMFFileName
Nome do arquivo binário da MF.
char * szTipo
- "0" - completa
- "1" - simplificada
char * szRange
- "0" - por faixa de Data
- "1" - por faixa de CRZ
char * szIni
Valor inicial da faixa de leitura desejada.
char * szFinal
Valor final da faixa de leitura desejada.
retorno: conforme lista abaixo.
int ImprimeFitaDetalhe (char* szCmd, char* p1, char* p2, char* p3);
char * szCmd, char * p1, char * p2, char * p3
Identificam os parâmetros para impressão da fita-detalhe:
szCmd= "0" - Impressão de toda a fita-detalhe
p1 - sem função
p2 - sem função
p3 - sem função
szCmd= "1" - Impressão da fita-detalhe por intervalo de COO's
p1 - COO Inicial, por exemplo "000100"
p2 - COO Final, por exemplo "000200"
p3 - Data de referência no formato DDMMAAAA (opcional)
szCmd= "2" - Impressão da fita-detalhe por intervalo de datas
p1 - Data Inicial no formato DDMMAAAA, por exemplo "01112004"
p2 - Data Final no formato DDMMAAAA, por exemplo "01122004"
p3 - sem função
retorno: conforme lista abaixo.
int LeSoftwareBasico (void);
O nome do arquivo binário que será criado deve ser gerado automaticamente pela DLL seguindo os padrões definidos por este ato.
retorno: conforme lista abaixo.
int LeBinarioMF (void);
O nome do arquivo binário que será criado deve ser gerado automaticamente pela DLL seguindo os padrões definidos por este ato.
retorno: conforme lista abaixo.
int ImprimeLeituraX (void);
retorno: conforme lista abaixo.
int ImprimeLeituraMemoriaFiscal (char* szCmd, char* p1, char* p2);
char * szCmd, char * p1, char * p2
Identificam os parâmetros para impressão da Leitura da Memória Fiscal:
szCmd= "D" - Impressão da Leitura da MF completa por intervalo de datas
p1 - Data Inicial no formato DDMMAAAA, por exemplo "01112004"
p2 - Data Final no formato DDMMAAAA, por exemplo "01122004"
szCmd= "d" - Impressão da Leitura da MF simplificada por intervalo de datas
p1 - Data Inicial no formato DDMMAAAA, por exemplo "01112004"
p2 - Data Final no formato DDMMAAAA, por exemplo "01122004"
szCmd= "C" - Impressão da Leitura da MF completa por intervalo de COO's
p1 - CRZ Inicial, por exemplo "000100"
p2 - CRZ Final, por exemplo "000200"
szCmd= "c" - Impressão da Leitura da MF simplificada por intervalo de COO's
p1 - CRZ Inicial, por exemplo "000100"
p2 - CRZ Final, por exemplo "000200"
retorno: conforme lista abaixo.
int LeituraRZ( char* szModelo );
Realiza leitura do código de barras de uma Redução Z
char* szModelo - Modelo de impressora selecionado
retorno: conforme lista abaixo.
Descrição da interface: Esta função permite que o fabricante crie uma interface para leitura do código de barras. A interface deve seguir as recomendações abaixo, com o objetivo de padronizar o visual e o funcionamento do aplicativo.
A janela principal, exibida imediatamente após a chamada desta função pelo eECFc, deve ser a seguinte:
O botão Iniciar Leitura quando acionado começa o processo de leitura, que se encerra apenas quando todo o código é lido, ou quando o botão Cancelar Leitura for acionado. Quando a leitura for concluída com sucesso os arquivos binário e texto do Ato/COTEPE nº 17/04 deverão ser salvos automaticamente com os nomes gerados pela DLL seguindo os padrões definidos por este ato. Ao Termino de uma leitura o botão iniciar leitura deve ficar acionado permitindo o inicio da leitura de outro BITMAP.
O botão Cancelar Leitura inicialmente deve ficar desabilitado, não permitindo clique. Este botão será ativado apenas quando o botão Iniciar Leitura for acionado, e deve ser novamente desativado quando a leitura for concluída, ou quando ele próprio for acionado.
O botão Configurar Scanner, quando acionado, deve exibir a tela de Configuração de Scanner, como na figura abaixo.
O botão Sair encerra a execução da leitura do código de barras e fecha a janela de leitura.
A janela Status da Leitura, ao centro, deve exibir as mensagens auxiliando a leitura do scanner.
Lista de Retornos das Funções da DLL
0 - Retorno Ok
1 - Erro na abertura da porta serial
2 - Erro de timeout na comunicação serial
3 - Erro comando não executado
4 - Erro modelo desconhecido
5 - Erro na abertura do arquivo
6 - Erro arquivo inválido
7 - Função não implementada
8 - Função não disponível neste modelo
6 - NOME E LOCAL DE GRAVAÇÃO DOS ARQUIVOS
GERADOS
Devem ser gerados única e exclusivamente os arquivos especificados nos itens 5.1.1 a 5.1.7 deste ato, conforme o comando executado, que devem ser gravados somente no local estabelecido.
Os arquivos temporários utilizados durante os processos de geração deverão ser gravados na pasta "Arquivos de Trabalho" existente no diretório do respectivo fabricante do ECF.
7 - ASSINATURA DIGITAL DO ARQUIVO GERADO
Os arquivos binários gerados conforme disposto nos itens 5.1.1 e 5.1.3.1 e os arquivos texto gerados conforme disposto nos itens 5.1.2, 5.1.3.2, 5.1.4 e 5.1.5, devem ser assinados digitalmente inserindo ao final do arquivo uma linha com o registro tipo EAD abaixo especificado:
REGISTRO TIPO EAD - ASSINATURA DIGITAL
Nº | Denominação do Campo | Conteúdo | Tamanho | Posição | Formato | |
01 | Tipo do registro | "EAD" | 03 | 01 | 03 | X |
02 | Assinatura Digital | Assinatura do Hash | 256 | 04 | 259 | X |
Observações: Campo 02: A assinatura digital deve ser gerada mediante os seguintes procedimentos:
7.1 - aplicar a função unidirecional MD5 uma única vez em todo o arquivo, com exceção do registro EAD. O resultado será um código de 128 bits, ou 16 caracteres ASCII, correspondendo a um número hexadecimal de 32 dígitos. Deverá ser utilizado nos cálculos o número hexadecimal, considerando-o como um único bloco;
7.2 - criar uma chave privada de 1024 bits, equivalente a um número hexadecimal de 256 dígitos, de conhecimento exclusivo do fabricante do ECF;
7.3 - criptografar o código hexadecimal gerado conforme disposto no item 7.1, utilizando a chave a que se refere o item 7.2, pelo algoritmo RSA de chave pública;
7.4 - como resultado do procedimento descrito no item 7.3 será obtido um número hexadecimal com até 256 dígitos que deverá ser informado no campo 02 do Registro tipo EAD.