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
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.