sexta-feira, 2 de dezembro de 2011

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF

Abaixo links para download de algumas versões do roteiro de análise funcional PAF-ECF:

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF 1.3 Aplicável à 1.04

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF 1.4 Aplicável à 1.05

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF 1.5 Aplicável à 1.07

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF 1.6 Aplicável à 1.08

ROTEIRO DE ANÁLISE FUNCIONAL PAF-ECF 1.7 Aplicável à 1.09


ATO COTEPE/ICMS N° 6, DE 14 DE ABRIL DE 2008

Abaixo links para download de algumas versões da especificação de requisito do PAF-ECF:

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.02)

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.05)

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.06)

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.07)

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.08)

ATO COTEPE/ICMS 06.08 (ER-PAF-ECF Versão 01.09)


quarta-feira, 24 de agosto de 2011

Exclusão de dados do Bloco VII do PAF-ECF

Pessoal,

No bloco VII da versão 01.08 do ER-PAF-ECF, vem com uma novidade que é tratar também a exclusão/inclusão de dados no banco de dados. Levando em consideração a lógica que passei no post anterior "Bloco VII do PAF-ECF" (http://guilhermebragaf1.blogspot.com/2011/07/bloco-vii-do-paf-ecf.html), tratar a inclusão é fácil, é só utilizar a mesma lógica para tratar a alteração de dados, no entanto como tratar um registro excluído ?

Utilizei a seguinte lógica:

Criei uma trigger para cada tabela que faz parte dos registros dos arquivos que terão que evidenciar a exclusão de dados. Essa trigger identifica qual o programa que está executando a exclusão. Se a exclusão não for executada pela minha aplicação a trigger irá inclui esse registro, que está sendo excluído, em uma tabela auxiliar, criando assim uma tabela de log só para os registros excluídos da tabela principal. Quando minha aplicação gerar os arquivos eletrônicos, irá ler também essas tabelas auxiliares para identificar os registros que foram excluídos das suas tabelas principais para serem também contemplados no arquivo eletrônico.

Abaixo mostro como fica mais ou menos a trigger utilizando uma aplicação feita em Visual Basic com banco de dados SQL Server:


CREATE TRIGGER NOME_DA_TRIGGER
   ON  NOME_DA_TABELA
   AFTER DELETE
AS
BEGIN
    DECLARE @PROGRAMA VARCHAR(300)

    SELECT @PROGRAMA = PROGRAM_NAME FROM SYS.SYSPROCESSES WHERE SPID = @@SPID

    IF @PROGRAMA <> 'VISUAL BASIC'
    BEGIN    
        -- AQUI SERÁ FEITO A INCLUSÃO DO REGISTRO QUE ESTÁ SENDO EXCLUÍDO NA TABELA AUXILIAR PARA        

        -- QUE SEJA INCLUÍDO COM O CARACTER "?" NA GERAÇÃO DO ARQUIVO ELETRÔNICO
    END
END
GO


terça-feira, 23 de agosto de 2011

Especificação de Requisitos do PAF-ECF versão 01.08

Pessoal,

Listo abaixo os principais pontos da Especificação de Requisitos do PAF-ECF versão 01.08:
  1. Uma pré-venda ou um DAV que ainda não tiver sido impresso o seu cupom fiscal, poderá ser adicionado mais itens (Requisito V, Item 7 / Requisito VI Item 8);
  2. Quando o consumidor desistir de algum item da Pré-venda ou do DAV, não poderá ser excluído. Nesse caso terá que marcar o item como cancelado para quando imprimir o cupom fiscal o mesmo ser impresso e cancelado. No caso de impressão do DAV, imprimir a expressão "cancelado" ao lado da descrição do item (Requisito V, Item 8 / Requisito VI Item 9);
  3. Não será permitido alterar a quantidade de um item já registrado na Pré-venda ou DAV. Nesse caso terá que registrar um novo item (Requisito V, Item 9 / Requisito VI Item 10);
  4. Não é permitido a alteração de DAV impresso (Requisito VI, Item 11);
  5. A função “Estoque” não se aplica ao PAF-ECF para uso por Prestador de Serviço Transporte de Passageiros (Requisito VII, Item 1, Teste 013);
  6. "ESTOQUE", criação de 2 categorias: "ESTOQUE TOTAL", contendo todos os produtos e "ESTOQUE PARCIAL", contendo só os produtos informado pelo usuário. Nesse caso terá que possibilitar ao usuário selecionar, tanto por código quanto por descrição, os produtos que irão contemplar o arquivo eletrônico (Requisito VII, Item 8);
  7. "DAV EMITIDOS", alteração na impressão e no leiaute (Requisito VII, Item 11);
  8. “ENCERRANTES”, alteração no leiaute (Requisito VII, Item 12);
  9. "Parâmetros de Configuração", Impressão em relatório gerencial contendo todas as configurações do PAF-ECF. Exemplo: "Porta Pinpad = 02". Não existe leiaute para essa impressão (Requisito VII, Item 21);

quinta-feira, 21 de julho de 2011

Estorno de Cupom Fiscal Cancelado

Por exigência do fisco, os ECFs (Emissores de cupons fiscais) só permitem o cancelamento do último cupom fiscal, se o cancelamento ocorrer imediatamente após a venda, isto é, sem que seja iniciada a emissão de qualquer outro documento pelo ECF, este poderá ser feito pelo próprio equipamento.

Muitos contribuintes não sabem como proceder quando não conseguem cancelar a venda. Um exemplo que ocorre muito é o estorno de uma venda que foi recebida com cartão, por ela ter um comprovante vinculado ao cupom fiscal o ECF não permite seu cancelamento.

Nesse caso o contribuinte deve emitir uma nota fiscal de entrada, a fim de poder se recuperar do imposto debitado na operação de saída ora cancelada e anexar o cupom fiscal a essa nota fiscal de entrada. Observar as demais disposições estabelecidas para essa emissão.

Essa orientação foi divulgada no site do Estado do Rio de Janeiro (www.receita.rj.gov.br), por intermédio dos esclarecimentos de 25 a 29/9/00, que sua utilização serve para qualquer estado.

quinta-feira, 14 de julho de 2011

Bloco VII do PAF-ECF

Esse bloco serve para que seja identificado na visualização dos arquivos eletrônicos quais os registros que sofreram alterações que não foram feitas pelo PAF-ECF, ou seja, se algum registro for alterado via banco de dados ou por qualquer outro programa que não seja o PAF-ECF é para ser identificado com o caracter "?" conforme o requisito "b".

Abaixo irei mostrar como implementei esse requisito utilizando o ER-PAF-ECF versão 01.07:


quinta-feira, 7 de julho de 2011

Requisito IX do PAF-ECF

Esse requisito tem como objetivo garantir que o PAF-ECF homologado não sofreu alteração, pois se o mesmo sofrer alguma alteração o MD5 que será impresso no cupom fiscal não vai ser mais o mesmo que foi homologado e registrado.
Ao implementar esse requisito cuidado para não utilizarem qualquer gerador de MD5 existente na web. Aconselho a utilizar o FSUM (http://www.slavasoft.com/fsum/) que é o adotado pela Secretaria da Fazenda.
Abaixo mostro na prática como implementar esse requisito. Para isso irei mim basear na especificação de requisitos do PAF-ECF (ER-PAF-ECF) versão 01.07.

 


quarta-feira, 6 de julho de 2011

Exemplo Rede Neural (Inteligência Artificial)

Quando paguei a disciplina de Inteligência Artificial na faculdade, tive que fazer um pequeno projeto para treinar uma rede neural usando o modelo perceptron para reconhecer a assinatura de um usuário a partir de um desenho. Abaixo disponibilizo o código-fonte desse projeto que fiz em visual basic.

terça-feira, 5 de julho de 2011

Alterando resolução do Monitor

Abaixo disponibilizo um projeto que mostra como alterar a resolução do monitor.

Cursores de um Recordset ADO

O que são Cursores?

No ADO, quando nós falamos em cursores, estamos falamos sobre uma linha. 
Quando você executa uma consulta que retorna vários registros, por exemplo SELECT * FROM Tabela, o resultado usa um cursor para navegar nos registros. O cursor pode ser usado no cliente com o argumento AdUseCliente, ou no servidor com o argumento AdUseServer.Os 4 tipos de cursores são: 


AdOpenForwardOnly 
AdOpenStatic 
AdOpenDynamic 
AdOpenKeyset. 

Cursor Local (CursorLocation)
O objeto ADODB.Connection (O objeto ADO usado para as trocas de dados entre a aplicação VB e o MySQL Server) tem uma propriedade chamada CursorLocation que é usada para enviar/receber a posição do cursor que será usado por qualquer objeto RecordSet que acessará seus dados através do objeto Connection. As duas opções possíveis para essa propriedade são AdUseServer (padrão) e AdUseCliente .


sábado, 2 de julho de 2011

Camada de acesso a Banco de Dados - Visual Basic

Visando facilitar o dia-a-dia dos desenvolvedores estou disponibilizando essa camada de acesso a banco de dados Sql Server. 


Todas os métodos retornam um type com as seguintes informações:

Situacao ("0" - OK; "1" - Duplicado; "2" - Inexistente; 9 - "Erro")
Mensagem (Quando situação = "9", retorna a mensagem do erro) 
rsDadosRetorno (Recordset com os dados retornado)
CaminhoDownloadArquivo (Caminho onde o arquivo foi baixado do banco de dados)


Abaixo listo as assinaturas dos métodos que constam nessa camada: