Nesta segunda parte do artigo sobre a homologação para o Paf-ECF comentarei um pouco sobre o Menu Fiscal.
Alguns cuidados devem ser tomados quanto ao menu fiscal para não ter problemas em sua homologação, segue abaixo o Item 1 do Requisito VII que regulamenta o menu fiscal.
O PAF-ECF deve, salvo quando da execução de comando de impressão de documento, em todas as suas telas, conter uma caixa de comando ou tecla de função identificada “MENU FISCAL”, sem recursos para restrição de acesso, contendo categorias com as seguintes identificações e funções, exceto se a função não for disponibilizada pelo software básico do ECF, hipótese em que deverá presentar a mensagem “Função não suportada pelo modelo de ECF utilizado”:
Partindo deste trecho da especificação de requisitos já podemos ressaltar alguns pontos importantes:
- Uma tela ou menu denominado “Menu Fiscal” deve estar disponível a todo o momento em qualquer tela do aplicativo e sem restrições de utilização, permitindo-se a não apresentação do mesmo somente em situações de impressão como por exemplo o registro de um cupom fiscal com seus itens, podem ser utilizados atalhos de teclado desde que o atalho esteja descrito na tela de forma visível.
- Todas as opções devem ser disponibilizadas ao usuário, em caso de ECFs mais antigos que não possuam MFD(Memória de Fita Detalhe), as opções referentes a estes menus devem apresentar a mensagem “Função não suportada pelo modelo de ECF utilizado”.
- Funções do menu fiscal para homologações específicas como por exemplo bares, restaurante, transporte de passageiros e postos de gasolina podem ser omitidas para aplicativos que não desempenham tais funções.
O menu fiscal deve conter os seguinte itens:
Comum para todos os aplicativos:
- LX
- LMFC
- LMFS
- Espelho MFD
- Arq. MFD
- Tab. Prod.
- Estoque
- Movimento por ECF
- Meios de Pagto.
- DAV Emitidos
- Identificação do PAF-ECF
- Vendas do Período
- Tab. Índice Técnico Produção
- Parâmetros de Configuração
Postos de combustíveis
- Encerrantes
- Abastecimentos Pendentes
- Manutenção de bomba
Restaurantes
- Transf. Mesas
- Mesas Abertas
Transportadoras
- Cupom de Embarque
- Pedágios
- Manifesto Fiscal de Viagem
- Leitura do Movimento Diário de Cupom de Embarque
- Cupom de Embarque Gratuidade
- Leitura do Movimento Diário de Cupom de Embarque Gratuidade
- Leitura do Movimento Diário
- Identificação de TP para BP ida-e-volta
Específico para o estado de Santa Catarina
- Troco em Cartão
O que devo fazer em cada item do menu fiscal?
Uma observação que importante ressaltar, todos os menus fiscais que imprimem ou buscam informações da impressora fiscal devem emitir uma mensagem de erro caso o ECF não esteja ligado ou o valor atual do GT não esteja em conformidade com o arquivo criptografado.
Abaixo serão mostrados os itens do menu fiscal comuns a todos os aplicativos, para informações de itens específicos consulte sempre o roteiro de homologação e a especificação de requisitos.
LX
Deve-se imprimir um relatório de leitura X.
ACBrECF.LeituraX ACBrECF.PafMF_LX_Impressao
LMFC
Deve-se comandar a Leitura da Memória Fiscal Completa por intervalo de data ou por intervalo de redução Z, está opção deve possuir uma forma do usuário escolher se quer imprimir a leitura da memoria fiscal ou quer gravá-la em arquivo no formato espelho ou conforme estabelecido no ato cotep 17/04.
ACBrECF.PafMF_LMFC_Cotepe1704(DataInicial, DataFinal, CaminhoArquivo) ACBrECF.PafMF_LMFC_Espelho(CRZInicial, CRZFinal, CaminhoArquivo) ACBrECF.PafMF_LMFC_Cotepe1704DataInicial, DataFinal, CaminhoArquivo) ACBrECF.PafMF_LMFC_Espelho(CRZInicial, CRZFinal, CaminhoArquivo) ACBrECF.PafMF_LMFC_Impressao(DataInicial, DataFinal) ACBrECF.PafMF_LMFC_Impressao(CRZInicial, CRZFinal)
LMFS
Deve-se comandar a Leitura da Memória Fiscal Simplificada por intervalo de data ou por intervalo de redução Z, está opção deve possuir uma forma do usuário escolher se quer imprimir a leitura da memoria fiscal ou quer gravá-la em arquivo no formato espelho.
ACBrECF.PafMF_LMFS_Espelho(CRZInicial, CRZFinal, CaminhoArquivo) ACBrECF.PafMF_LMFS_Espelho(CRZInicial, CRZFinal, CaminhoArquivo) ACBrECF.PafMF_LMFS_Impressao(DataInicial, DataFinal) ACBrECF.PafMF_LMFS_Impressao(CRZInicial, CRZFinal)
Espelho MFD
Deve-se comandar a geração do arquivo com o espelho da MFD por intervalo de data ou intervalo de COO, o arquivo de espelho MFD contem toda a movimentação efetuada na impressora da forma como foi impressa.
ACBrECF.PafMF_MFD_Cotepe1704(DataInicial, DataFinal, CaminhoArquivo) ACBrECF.PafMF_MFD_Cotepe1704(COOInicial, COOFinal, CaminhoArquivo)
Arq. MFD
Deve-se comandar a geração do arquivo MFD por intervalo de data ou intervalo de COO conforme o layout definido no ato cotepe 17/04, o arquivo MFD contem toda a movimentação efetuada na impressora no layout estabelecido no ato cotepe.
ACBrECF.PafMF_MFD_Espelho(DataInicial, DataFinal, CaminhoArquivo) ACBrECF.PafMF_MFD_Espelho(COOInicial, COOFinal, CaminhoArquivo)
Tab. Prod.
Deve-se gerar a tabela de produtos seguindo o layout estabelecido no ANEXO V, no caso do aplicativo possuir mais de uma tabela de preços, deve-se gerar um arquivo para cada tabela.
Usuários do ACBr podem utilizar o componente ACBrPAF para gerar o arquivo, segue trecho de código explicando como gerar o arquivo utilizando o componente:
// preencher os dados referentes a empresa usuária ACBrPAF.PAF_P.RegistroP1.RAZAOSOCIAL := //Razao social; ACBrPAF.PAF_P.RegistroP1.UF := //UF; ACBrPAF.PAF_P.RegistroP1.CNPJ := //CNPJ; ACBrPAF.PAF_P.RegistroP1.IE := //Inscrição Estadual; ACBrPAF.PAF_P.RegistroP1.IM := //Inscrição Municipal; // Informar quando houve inclusão ou exclusao aqui (Booleano) ACBrPAF.PAF_P.RegistroP1.InclusaoExclusao := ; // para cada item da tabela de produtos adicionar um novo item ao arquivo with ACBrPAF.PAF_P.RegistroP2.New do begin COD_MERC_SERV := //codigo da mercadoria; DESC_MERC_SERV := //descrição da mercadoria; UN_MED := //unidade de medida; IAT := //(A)rredondamento ou (T)runcamento; IPPT := //produção (P)rópria ou (T)erceiros; ST := //situação tributária (F, I, N, S, T); ALIQ := //alíquota quando for S ou T; VL_UNIT := //Valor unitário da mercadoria conforme tabela de preços; RegistroValido := //indicar se o registro foi alterado ou não no banco de dados end; // Diretorio onde será salvo o arquivo ACBrPAF.Path := Diretorio; // salvar o arquivo em disco, utilizar somente o nome do arquivo ACBrPAF.SaveFileTXT_P(NomeArquivo);
Estoque
Neste menu deve ser gerada a tabela de estoques de produtos, deve existir duas formas de geração, uma para gerar o arquivos com todas as mercadorias cadastradas e outra para a geração do arquivo somente com as mercadorias escolhidas pelo usuário.
O arquivo de estoque é gravado no início do dia na emissão do primeiro documento da impressora fiscal, e deve ser distinto do estoque utilizado pelo aplicativo para vendas, o mais comum é ter uma tabela somente para geração deste arquivo, ao emitir o primeiro documento na impressora fiscal o aplicativo deve gravar um flahs do estoque no momento e guardar para quando solicitada a geração deste arquivo de estoque.
Utilizando o componente ACBrPAF faríamos da seguinte forma:
// dados da empresa usuária do ECF ACBrPAF.PAF_E.RegistroE1.RAZAOSOCIAL := // razão social ACBrPAF.PAF_E.RegistroE1.UF := // uf ACBrPAF.PAF_E.RegistroE1.CNPJ := // cnpj ACBrPAF.PAF_E.RegistroE1.IE := // inscrição estadual ACBrPAF.PAF_E.RegistroE1.IM := // inscrição municipal // dados do ECF conectado ACBrPAF.PAF_E.RegistroE1.NUM_FAB := // numero de fabricação ACBrPAF.PAF_E.RegistroE1.MF_ADICIONAL := // se possui mf adicional ACBrPAF.PAF_E.RegistroE1.TIPO_ECF := 'ECF-IF'; ACBrPAF.PAF_E.RegistroE1.MARCA_ECF := // marca do ECF ACBrPAF.PAF_E.RegistroE1.MODELO_ECF := // modelo do ECF // informações dos registros ACBrPAF.PAF_E.RegistroE1.DT_EST := // data/hora de gravação estoque ACBrPAF.PAF_E.RegistroE1.InclusaoExclusao := // informar se houve inclusão/alteração with ACBrPAF.PAF_E.RegistroE2.New do begin COD_MERC := // codigo da mercadoria DESC_MERC := // descrição da mercadoria UN_MED := // unidade de medida utilizada na venda QTDE_EST := // quantidade em estoque no momento do flash // verificador de alteração no registro RegistroValido := // usar para validar a alteração do registro no BD end; // Diretorio onde será salvo o arquivo ACBrPAF.Path := Diretorio; // salvar o arquivo em disco, utilizar somente o nome do arquivo ACBrPAF.SaveFileTXT_E(NomeArquivo);
Movimento por ECF
Deve ser gerado o arquivo eletrônico referente ao ANEXO VI, contendo toda a movimentação da impressora fiscal para um intervalo de data, deve-se permitir ao usuário escolher para qual o número do ECF ele deseja gerar o arquivo.
Usuários do ACBr poderão utilizar o componente ACBrPAF, não colocarei o trecho de código pois o mesmo é muito grande, peço que abram o aplicativo de demonstração na pasta \exemplos\ACBrPAF e verifiquem no botão “Arquivo R” como gerar o arquivo utilizando o componente.
Meios Pagto.
Deve ser impressor o relatório de meios de pagamento, neste relatório deve constar toda a movimentação financeira feita pelo Paf-ECF separados e agrupados por origem (cupons fiscais, cupons não fiscis, notas fiscais), descrição da forma de pagamento, e data.
Quanto a forma de pagamento for em cartão de crédito deve-se separar o débito do crédito.
Exemplo de como o relatório deve ser impresso:
Período Solicitado: de “d1/mm/aaaa” a “d2/mm/aaaa”
d1/mm/aaaa – Dinheiro – Cupom Fiscal – Valor
d1/mm/aaaa – Dinheiro – Comprovante Não Fiscal – Valor
d1/mm/aaaa – Dinheiro – Nota Fiscal – Valor
d1/mm/aaaa – Cheque – Cupom Fiscal – Valor
d1/mm/aaaa – Cheque – Comprovante Não Fiscal – Valor
d1/mm/aaaa – Cheque – Nota Fiscal – Valor
d1/mm/aaaa – Cartão de Crédito – Cupom Fiscal – Valor
d1/mm/aaaa – Cartão de Crédito – Comprovante Não Fiscal – Valor
d1/mm/aaaa – Cartão de Crédito – Nota Fiscal – Valor
d1/mm/aaaa – Cartão de Débito – Cupom Fiscal – Valor
d1/mm/aaaa – Cartão de Débito – Comprovante Não Fiscal – Valor
d1/mm/aaaa – Cartão de Débito – Nota Fiscal – Valor
d1/mm/aaaa – xxxxxxxxxxxxxxx – Cupom Fiscal – Valor
d1/mm/aaaa – xxxxxxxxxxxxxxx – Comprovante Não Fiscal – Valor
d1/mm/aaaa – xxxxxxxxxxxxxxx – Nota Fiscal – Valor
SOMA DO DIA d1/mm/aaaa = Valor
d2/mm/aaaa – Dinheiro – Cupom Fiscal – Valor
d2/mm/aaaa – Dinheiro – Comprovante Não Fiscal – Valor
d2/mm/aaaa – Dinheiro – Nota Fiscal – Valor
d2/mm/aaaa – Cheque – Cupom Fiscal – Valor
d2/mm/aaaa – Cheque – Comprovante Não Fiscal – Valor
d2/mm/aaaa – Cheque – Nota Fiscal – Valor
d2/mm/aaaa – Cartão de Crédito – Cupom Fiscal – Valor
d2/mm/aaaa – Cartão de Crédito – Comprovante Não Fiscal – Valor
d2/mm/aaaa – Cartão de Crédito – Nota Fiscal – Valor
d2/mm/aaaa – Cartão de Débito – Cupom Fiscal – Valor
d2/mm/aaaa – Cartão de Débito – Comprovante Não Fiscal – Valor
d2/mm/aaaa – Cartão de Débito – Nota Fiscal – Valor
d2/mm/aaaa – Xxxxxxxxxxxxxxx – Cupom Fiscal – Valor
d2/mm/aaaa – Xxxxxxxxxxxxxxx – Comprovante Não Fiscal – Valor
d2/mm/aaaa – Xxxxxxxxxxxxxxx – Nota Fiscal – Valor
SOMA DO DIA d2/mm/aaaa = Valor
TOTAL DO PERÍODO SOLICITADO:
Dinheiro – Valor
Cheque – Valor
Cartão de Crédito – Valor
Cartão de Débito – Valor
Xxxxxxxxxxxxxxxxxx – Valor
SOMA TOTAL – Valor.
Segue exemplo de como utilizar o componente ACBrECF para imprimir o relatório, não é necessário acumular os valores para passar ao relatório, o próprio ACBrECF se encarrega disso ao gerar o relatório.
var FormasPagamento: TACBrECFFormasPagamento; begin FormasPagamento := TACBrECFFormasPagamento.Create; try // loop com os dados begin with FormasPagamento.New do begin Descricao := //Dinheiro, Cheque, Cartão Crédito, Cartão Débito, etc Data := // Data de utilização Total := // Valor da formad de pagamento TipoDoc := // Cupom Fiscal, Compr. Não Fiscal, Nota Fiscal end; end; ACBrECF.PafMF_RelMeiosPagamento( FormasPagamento, 'PERIODO DE 01/01/2000 A 31/12/2000', 0 ); finally FormasPagamento.Free; end; end;
DAV Emitidos
Deve permitir a impressão do relatório de DAV’s emitidos ou a geração do arquivo por período de data, todos os DAV’s emitidos no período escolhido pelo usuário devem ser informados, independente de ter sido emitido o cupom fiscal ou não.
Para imprimir o relatório utilize:
var DAVs: TACBrECFDAVs; Titulo: string; begin DAVs := TACBrECFDAVs.Create; try // adicionar todos os davs emitidos para o período // pode ser um loop em uma tabela ou rotina similar // para cada item da tabela criar um novo dav conforme abaixo with DAVs.New do begin Numero := // Numero do DAV formatado em 13 digitos COO_Dav := // COO do gerencial quando DAV impresso em RG anteriormente COO_Cupom := // COO do cupom quando o cupom fiscal do DAV foi emitido Titulo := // titulo do DAV (Pedido, Orçamento, etc) DtEmissao := // Data de emissão do DAV Valor := // valor total do DAV end; ... // depois de todos os davs terem sido adicionados // emitir o relatório na impressora fiscal ACBrECF.PafMF_RelDAVEmitidos(DAVs, Titulo, IndiceRG); finally DAVs.Free; end; end;
Para gerar o arquivo de DAV’s emitidos utilize:
// preencher os dados referentes a empresa usuária ACBrPAF.PAF_D.RegistroD1.RAZAOSOCIAL := //Razao social; ACBrPAF.PAF_D.RegistroD1.UF := //UF; ACBrPAF.PAF_D.RegistroD1.CNPJ := //CNPJ; ACBrPAF.PAF_D.RegistroD1.IE := //Inscrição Estadual; ACBrPAF.PAF_D.RegistroD1.IM := //Inscrição Municipal; // fazer um loop onde cada DAV da tabela vai ser adicionado with ACBrPAF.PAF_D.RegistroD2.New do begin NUM_FAB := MF_ADICIONAL := TIPO_ECF := MARCA_ECF := MODELO_ECF := COO := NUM_DAV := DT_DAV := TIT_DAV := VLT_DAV := COO_DFV := NUMERO_ECF := NOME_CLIENTE := CPF_CNPJ := RegistroValido := // informar se o DAV foi alterado ou não // adicionar os itens do dav, um para cada item with RegistroD3.New do begin DT_INCLUSAO := NUM_ITEM := COD_ITEM := DESC_ITEM := QTDE_ITEM := UNI_ITEM := VL_UNIT := VL_DESCTO := VL_ACRES := VL_TOTAL := SIT_TRIB := ALIQ := IND_CANC := RegistroValido := //informar se o item foi alterado ou não end; end; // Diretorio onde será salvo o arquivo ACBrPAF.Path := Diretorio; // salvar o arquivo, informar somente o nome do arquivo ACBrPAF.SaveFileTXT_D(NomeArquivo);
Identificação do PAF-ECF
Emitir o relatório de identificação do Paf-ECF, se você utiliza o componente ACBrAAC, basta utilizar o método “ACBrECF.PafMF_RelIdentificacaoPafECF”, caso contrário pode utilizar este mesmo método mas antes é necessário preencher os dados de identificação do Paf-ECF.
Para mais informações de como emitir o relatório, verifique o exemplo de geração em “ACBr\Exemplos\ACBrECF” na aba menu fiscal do aplicativo.
Vendas do Período
Neste menu deve-se emitir dois tipos de arquivo, o arquivo sintegra e o arquivo SPED ambos por período de data e pemitindo gerar de todos os ECFs ou de um ECF específico somente.
Para mais informações de como gerar os arquivos veja os aplicativos de exemplo nas pastas “ACBr\exemplos\ACBrSintegra” e “ACBr\Exemplos\ACBrSPED\Delphi\FCont”.
Tab. Índice Técnico Produção
Deve-se emitir um relatório com a tabela de indíces técnicos de produção, somente aplicativos que trabalham com mercadorias produzidas no estabelecimento ou Kits é que devem emitir esse relatório, nele são informados os itens que compõe um item específico, quando o aplicativo não trabalhar com essa opção deve emitir a seguinte mensagem:
“Este PAF-ECF não executa funções de baixa de estoque com base em índices técnicos de produção, não podendo ser utilizando por estabelecimento que necessitem deste recurso.”
Parâmetros de Configuração
Emitir o relatório de parâmetros de configuração do aplicativo, se você utiliza o componente ACBrAAC, basta utilizar o método “ACBrECF.PafMF_RelParametrosConfiguracao”, caso contrário pode-se utilizar esse método mas antes é necessário preencher os dados de configuração do Paf-ECf
Para mais informações de como emitir o relatório, verifique o exemplo de geração em “ACBr\Exemplos\ACBrECF” na aba menu fiscal do aplicativo.
Vocês tem algum modelo do relatório gerencial Parâmetros de Configuração que foi homologado na ER (Especificação de requisitos) 02.01? Obrigado.
O relatório de parâmetro de configuração agora com a ER 02.01 deve exibir somente o perfil configurado, algo como:
PARAMETROS DE CONFIGURAÇÃO
==========================
Perfil de Requisitos Configurado: X
Onde X seria a letra do perfil homologado, se homologar para todos as UFs, seria interessante ter na sua tabela de UF uma coluna para o perfil e ao imprimir esse relatório ler dela conforme a UF configurada para a empresa usuária.
Observação: O relatório deve estar configurado e nomeado como um relatório gerencial específico, o limite para essa descrição é de 15 caracteres, então você precisaria nomear abreviando, algo como “Param. Config.”, isso deve ser feito para que os contadores desse relatório específico não sejam acumulado no contador geral, mas sim em contador próprio.
Régys, estou com dúvidas sobre os testes 104 e 105.
Ex.: No passo 6a do teste 104, diz: Emita um relatório Gerencial Meios de Pagamento para que a atualização do estoque seja processada conforme…
Devo então, nesta mesma rotina, gerar em um campo específico da tabela da empresa o HASH com os campos (NumFabECF+DatAtualEst+HoraAtualEst)
E em seguida fazer o mesmo, porém para os campos(CodItem+DescrItem+QuantEstoque) para todos os ítens que possuo cadastrados?
Devo toda vez que iniciar um novo dia de movimento na ecf, criar o MD5 dos campos citados acima,e isso uma única vez no dia?
Obrigado.
O teste consiste em simular a abertura do dia para verificar se o arquivo de estoque está sendo corretamente gravado ao imprimir o primeiro documento no dia.
Régys,
Parabens pelo trabalho fantástico e desprendimento em ajudar tanta gente. (Fazer o bem sem olhar a quem).
Nossa aplicação foi desenvolvida em 16 bits e desta forma somos obrigados a utilizar o ACBr MONITOR. A questão é que, até onde pudemos ver na documentação desta versão, muitos comandos simplesmente não existem. No ACBr Monitor não existe por exemplo a opção de fazer LMFC ou LMFS, apenas existe “ECF.LeituraMemoriaFiscal” e tambem “ECF.LeituraMemoriaFiscalSerial”, sendo que nenhuma das duas gera arquivo. Além de outras várias funcionalidades que na versao para ACBr MONITOR (até onde pude ver) não existem, tipo MFD Cotepe1704 ou MFD Espelho, e por aí vai…
A pergunta é: Há alguma maneira de conseguirmos homologar nossa aplicação utilizando apenas as funcionalidades existentes no ACBr MONITOR? Há alguma outra maneira de via Monitor eu acessar os outros comandos que não estão documentados?
Obrigado,
O ACBrMonitor já possui todos os métodos para os menus que geram informações apartir da impressora fiscal, o help está desatualizado mas os métodos podem ser vistos nos fontes do monitor.
Se tiver interesse podemos tentar trabalhar uma consultoria nesse sentido.
VC É O CARA!!!
Quero deixar meus parabéns e dizer a todos que se não fosse esse ‘minerin’ meu PAF não tinho saído do forno a tempo no ano passado. Foi uma SUPER consultoria.
Assinem o ACBr-SAC, vcs não se arrependerão. Super atencioso e prestativo.
Abraço Regys e sucesso!
Flávio( Fortaleza.Ce )
Muito obrigado Flávio, tua opinião conta muito.
Legal demais, estou agora mesmo passando para o pessoal aqui que esta nessa etapa… para ver estamos indo nesse caminho, heheh o correto. Valeu.
Que bom que está lhe ajudando, muito bom.
Qualquer coisa tenho consultoria, basta entrar em contato.
Caramba!! Estava eu dando uma revisada no roteiro de homologação que vamos fazer no mês que vem e tive algumas dúvidas. Fui pra internet e olha o que achei? Exatamente o que estava procurando pra tirar minha dúvida.
Parabéns Regys!!!!
Muito obrigado, fique de olho que outros artigos virão.
como faço para trabalhar com projeto acbr, só que a linguagem que tgrabalho é xharbour
Você deve utilizar os monitores, ACBrMonitor para ECF e ACBrNFeMonitor para NF-e, veja no fórum ACBr como baixar e utilizar, existem exemplos em xharbours se não estou enganado.
Muito bom o post. Que venham mais iniciativas com esta.
Parabéns.
Muito bom o post, essencial pra quem tá desenvolvendo o PAF-ECF pela primeira vez.