1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. A impressora não está ligando. O que devo fazer? .................................................. 3 A impressão está fraca. O que devo fazer?.............................................................. 3 A impressora não imprime os dados recebidos. O que devo fazer? ......................... 3 A impressora está imprimindo caracteres estranhos. O que devo fazer? ................. 3 Como testar o sensor de documento/autenticação? ................................................. 4 Como saber a Data e Hora corrente da Impressora? ............................................... 4 O que é Modo Menu?............................................................................................... 4 Quais as opções apresentadas no Modo Menu?...................................................... 5 Como navegar nas opções do Modo Menu? ............................................................ 5 O que fazer se for selecionada uma opção não desejada no Modo Menu?.............. 5 Como solicitar Leituras Fiscais pela impressora? ..................................................... 5 Como alterar a largura da bobina? ........................................................................... 6 Como alterar o espaçamento entre linhas? .............................................................. 6 Como ativar ou desativar o Clichê pré-impresso? .................................................... 6 Como modificar o alinhamento? ............................................................................... 6 Como alterar a Velocidade de Comunicação?.......................................................... 7 Como alterar o protocolo de comunicação? ............................................................. 7 Como ativar ou desativar o modo Ack/Nack? ........................................................... 7 Como alterar a paridade? ......................................................................................... 7 Como alterar o número de bits? ............................................................................... 8 O que é o auto-teste?............................................................................................... 8 Qual a configuração padrão do ECF? ...................................................................... 8 Quais as características do Modo Intervenção Fiscal? ............................................. 9 Quais as características do Modo Treinamento?...................................................... 9 Quais as características do Modo Normal? ............................................................ 10 O que devo fazer quando a Memória Fiscal se esgotar?........................................ 11 Quantos estabelecimentos são possíveis gravar na Memória Fiscal? .................... 11 O que é Leitura X? ................................................................................................. 11 O que é Redução Z? .............................................................................................. 11 Quais são as informações impressas na Leitura X e na Redução Z? ..................... 12 O que é Leitura da Memória Fiscal?....................................................................... 14 O que é Relatório Gerencial? ................................................................................. 15 Como emitir um Relatório Gerencial?..................................................................... 15 O que é Mensagem Publicitária? ........................................................................... 15 Como posso cancelar um Cupom Fiscal que está em andamento (aberto)? .......... 15 Como posso cancelar o Cupom Fiscal anterior? .................................................... 16 O que é Comprovante Não Fiscal? ........................................................................ 16 O que é Comprovante Não Fiscal Vinculado? ........................................................ 16 O que é Comprovante Não Fiscal Não Vinculado? ................................................ 17 Como emitir um Comprovante Não Fiscal Vinculado?............................................ 17 Como utilizar a impressão de Linha Não Fiscal? .................................................... 17 Como emitir um Comprovante Não Fiscal Não Vinculado? .................................... 18 O que é Situação Tributária?.................................................................................. 18 O que significa Totalizar um Cupom Fiscal? .......................................................... 19 O que é Modalidade de Pagamento? ..................................................................... 19 Como informar a Modalidade de Pagamento? ....................................................... 19 Quais são as ferramentas de desenvolvimento para ambiente DOS? .................... 19 Quem deve utilizar o device driver DRVECF.SYS? ................................................ 20 Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 1 / 46 49. Como instalar o device driver DRVECF.SYS? ....................................................... 20 50. Que cuidados que devo tomar quanto à comunicação serial usando o DRVECF.SYS? ................................................................................................................ 20 51. Como enviar os comandos usando o device driver DRVECF.SYS? ....................... 20 52. Como tratar o retorno dos comandos usando o device driver DRVECF.SYS? ....... 21 53. Quais são as ferramentas de desenvolvimento para ambiente Windows? ............. 22 54. Quem deve usar a DLL ECF32M? ......................................................................... 22 55. Como instalar a DLL ECF32M?.............................................................................. 22 56. Quais as informações que eu posso configurar no arquivo CIF.INI da DLL ECF32M? 22 57. Quais os cuidados que devo tomar quanto à comunicação serial usando DLL ECF32M? ........................................................................................................................ 23 58. Como tratar o retorno das Funções usando a DLL ECF32M? ................................ 23 59. Como usar a Função EsperaResposta()? .............................................................. 24 60. Como usar a Função AbreCupomFiscal()? ............................................................ 24 61. Como usar a Função VendaItem()? ....................................................................... 25 62. Como usar a Função TotalizarCupom()?................................................................ 28 63. Como usar a Função Pagamento()? ...................................................................... 29 64. Como usar a Função PagamentoComTexto()? ...................................................... 30 65. Como usar a Função Troco()? ............................................................................... 31 66. Como usar a Função FechaCupomFiscal()? .......................................................... 32 67. Como usar a Função AbreCupomNaoVinculado()? ................................................ 33 68. Como usar a Função OperRegNaoVinculado()? .................................................... 34 69. Como usar a Função EncerraCupomNãoFiscal()? ................................................. 35 70. Como usar a Função LeituraX()? ........................................................................... 36 71. Como usar a Função ReducaoZ()? ........................................................................ 37 72. Como usar a Função ImprimeValidacao()? ............................................................ 38 73. Como usar a Função ImprimeCheque()? ............................................................... 39 74. Como verificar o estado de pagamento de um Cupom Fiscal em aberto? .............. 41 75. Como utilizar programação direta em impressoras fiscais? .................................... 43 76. Contador de Ordem de Operações (COO) X Contador de Cupons Fiscais (CCF).. 44 77. Como eu posso testar a Impressora Fiscal? .......................................................... 46 Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 2 / 46 1. A impressora não está ligando. O que devo fazer? Primeiro certifique-se que a tomada elétrica está funcionando corretamente. A seguir, verifique se o cabo de alimentação está conectado adequadamente ou se não está rompido. Retire o cabo de força da tomada elétrica e aguarde alguns instantes (em torno de um minuto). Conecte novamente o cabo de força na tomada elétrica e ligue a impressora. Caso a máquina não funcione é preciso entrar em contato com uma Assistência Técnica especializada. Informe-se nesse site qual a Assistência Técnica mais próxima de seu estabelecimento. OBS: A impressora possui um recurso destinado a proteger sua fonte de alimentação contra sobretensão. Se ocorrer sobretensão, a impressora interrompe a impressão e todos os led's do painel ficam apagados. Quando isto ocorrer, desligar a impressora e mantê-la desligada por aproximadamente 1 minuto. Ligar a impressora novamente; se a falha persistir contatar a Assistência Técnica. 2. A impressão está fraca. O que devo fazer? Verifique se a fita entintada da impressora está gasta, se estiver, você deverá trocá-la. Para saber com mais detalhes como trocar a Fita, consulte o Manual do Usuário. Caso a Fita não esteja no fim de uso, a impressora pode estar com problemas. Neste caso é aconselhável que a Impressora seja encaminhada a uma Assistência Técnica Autorizada, pois posteriormente a Máquina poderá interromper o funcionamento durante uma operação. 3. A impressora não imprime os dados recebidos. O que devo fazer? Primeiro tente executar auto-teste da impressora. Caso haja algum problema neste teste, é aconselhável que a Impressora seja encaminhada a uma Assistência Técnica Autorizada. Se o auto-teste está sendo executado satisfatoriamente, − O cabo de comunicação serial deve ser padrão RS232. − Verifique se o cabo de comunicação está bem conectado à porta serial correta. − Certifique-se que a porta serial utilizada está especificada corretamente nas configurações do seu aplicativo. − Verifique se o software aplicativo é compatível com o seu modelo de impressora. − Verifique se há algum problema na instalação do driver ou DLL em uso no seu aplicativo (consulte essa FAQ para obter maiores informações sobre os drivers e DLLs disponíveis). − Verifique se os parâmetros de comunicação (velocidade, paridade, protocolo, ...) gravados em sua impressora estão coerentes com o configurado no seu micro. 4. A impressora está imprimindo caracteres estranhos. O que devo fazer? Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 3 / 46 Se a impressora está imprimindo o sinal de interrogação (?) no meio do texto, e não está no Modo Treinamento, o sistema está enviando códigos de controle que não são interpretados pela impressora. Verificar o software utilizado, pois ele pode não ser compatível com a impressora. Se durante o uso do aplicativo for impresso caracteres estranhos, verifique se o protocolo de comunicação definido na impressora está coerente com o protocolo de comunicação que o software aplicativo está usando. O protocolo padrão de fábrica na impressora, driver e DLL é o STX/ETX. 5. Como testar o sensor de documento/autenticação? A impressora permite testar o sensor de documento/autenticação. A impressora detecta se existe ou não documento para ser autenticado através de um sensor óptico reflexivo infra-vermelho. Este sensor verifica a existência de um documento através da reflexão da luz no papel utilizado. Se o papel for de cor escura e fosca o sensor não atuará. Recomenda-se, portanto, a utilização de papéis de cores claras e superfícies lisas. Para realizar o teste, execute o auto-teste e logo após a impressão da mensagem abaixo, posicione um documento na posição de autenticação: Insira DOCUMENTO p/ teste do SENSOR DE DOCUMENTO. Em seguida será impresso a seguinte mensagem no documento: ******** SENSOR de DOCUMENTO -->> OK ******** Se nenhum documento for posicionado ou se o sensor estiver com defeito, a mensagem abaixo será impressa: SENSOR de DOCUMENTO-->> NÃO TESTADO 6. Como saber a Data e Hora corrente da Impressora? O relógio interno controla Data e Hora, as quais são impressas no início e no fim de todos os documentos emitidos pelo ECF. Sua programação é acessível apenas através de intervenção fiscal, exceto quanto ao ajuste diário e ao horário de verão. A presença de uma bateria garante o seu funcionamento mesmo na falta de energia elétrica. 7. O que é Modo Menu? O Modo Menu permite configurar vários parâmetros para o funcionamento da impressora como por exemplo: − Emitir leituras fiscais como Leitura X e Leitura da Memória Fiscal. − Configurar parâmetros de comunicação. − Ajustar o alinhamento da impressão. − Executar o auto teste. Para entrar no Modo Menu: Ao ligar a impressora, mantenha a tecla LINE FEED pressionada até ser impressa a palavra “AGUARDE”. Logo após, o menu de opções será impresso. Para sair do modo Menu ative a opção SAÍDA no menu principal ou se preferir desligue a impressora. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 4 / 46 8. Quais as opções apresentadas no Modo Menu? As configurações que estão gravadas serão impressas em itálico. As opções serão apresentadas da seguinte maneira: MENU: 1 - Leitura X 2 - Leitura da Memória Fiscal 3 - Leitura da Memória Fiscal Resumida 4 - Configuração 5 – Auto teste 6 - SAÍDA [1] [2] [3] [4] [5] [6] 9. Como navegar nas opções do Modo Menu? Depois do menu impresso, mova a cabeça de impressão para a opção desejada com um toque rápido na tecla LINE FEED. Quando a cabeça de impressão estiver apontando para a opção desejada dê dois toques rápidos na tecla LINE FEED (como o duplo-click do mouse) para selecioná-la. Para confirmar a seleção, a impressora imprimirá logo abaixo do item selecionado um sublinhado formado por vários caracteres “X”. 10. O que fazer se for selecionada uma opção não desejada no Modo Menu? Caso uma opção não desejada for selecionada é preciso voltar ao menu principal e reiniciar a operação, ou se preferir desligue a impressora e repita a operação. 11. Como solicitar Leituras Fiscais pela impressora? Entre em modo menu, você encontrará três opções de leituras: − Leitura X − Leitura MF(memória fiscal) − Leitura MF resumida Em seguida escolha a opção desejada. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 5 / 46 12. Como alterar a largura da bobina? Pode-se configurar a impressora para usar bobina de 76mm ou 89mm. Para a utilização da bobina de 76mm é necessário a utilização de um adaptador opcional. Este adaptador pode ser adquirido junto ao revendedor autorizado Diebold. Para mudar a largura da bobina, entre em modo menu e selecione os seguintes itens: − Configuração − Bobina Em seguida selecione a opção desejada. 13. Como alterar o espaçamento entre linhas? Há possibilidade de configurar o espaçamento entre linhas como 1/6 polegadas ou 1/8 polegadas. Para mudar o espaçamento entre linhas, entre em modo menu e selecione os seguintes itens: − Configuração − Espaçamento de linha Em seguida selecione a opção desejada. 14. Como ativar ou desativar o Clichê pré-impresso? Clichê são os dados impressos em cada início de operação. Ao configurar o clichê como pré-impresso, há um melhor aproveitamento da bobina de papel (a economia de papel gira em torno de 30%). Nesse modo, em todo final de operação a impressora já imprime o clichê automaticamente, antes mesmo de iniciar uma nova operação. Para ativar esta função entre em modo menu e selecione os seguintes itens: − Configuração − Clichê Em seguida habilite-o ou desabite-o. 15. Como modificar o alinhamento? Este recurso é útil quando verifica-se que o alinhamento vertical não está satisfatório. Esta opção imprime seis posições possíveis de alinhamento, devendo o usuário selecionar a que se apresenta com menor número de colunas. Para fazer a seleção entre em modo menu, selecionando os seguintes itens: − Configuração − Alinhamento Em seguida escolha a opção desejada. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 6 / 46 16. Como alterar a Velocidade de Comunicação? Há possibilidade de configurar a velocidade de comunicação em 1200, 2400, 4800 e 9600 bps. A velocidade padrão de fábrica é 9600 bps. Para mudar a velocidade da impressora, entre em modo menu e selecione os seguintes itens: − Configuração − Comunicação − Velocidade Em seguida defina a velocidade desejada. 17. Como alterar o protocolo de comunicação? Há possibilidade de configurar o protocolo de comunicação como ETX, ETX/BCC, STX/ETX, STX/ETX/BCC. O protocolo de comunicação padrão de fábrica é STX/ETX. Para mudar o protocolo de comunicação, entre em modo menu e selecione os seguintes itens: − Configuração − Comunicação − Protocolo Em seguida selecione a opção desejada. 18. Como ativar ou desativar o modo Ack/Nack? A opção padrão de fábrica é o Modo Ack/Nack estar desativado. Lembre-se que se o Modo Ack/Nack estiver ativado, irá trabalhar em conjunto com o protocolo de comunicação habilitado. Para ativar ou desativar o modo Ack/Nack, entre em modo menu e selecione os seguintes itens. − Configuração − Comunicação − Modo Ack/Nack Em seguida selecione a opção desejada. 19. Como alterar a paridade? Há a possibilidade de configurar a comunicação como paridade par ou sem paridade. A opção padrão de fábrica é sem paridade. Para alterar a paridade entre em modo menu e selecione os seguintes itens: − Configuração − Comunicação − Paridade Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 7 / 46 Em seguida ative ou desative-a. 20. Como alterar o número de bits? Há a possibilidade de configurar a comunicação para 8 ou 7 bits. A opção padrão de fábrica é 8 bits e 1 stop bits. Para alterar o número de bits entre em modo menu e selecione os seguintes itens: − Configuração − Comunicação − Num de bits Em seguida selecione a opção desejada. 21. O que é o auto-teste? O auto teste imprime informações para análise do estado geral da impressora. O usuário pode conferir se a impressora está funcionando corretamente fazendo uma breve análise nos gráficos e palavras impressas. A impressora imprime o auto teste repetidamente. Entre a impressão de um teste e outro, há um intervalo de aproximadamente 5 segundos. Para interromper o teste, pressionar a tecla LINE FEED ou desligar a impressora. Sempre que a tampa frontal da impressora for aberta enquanto ela estiver imprimindo, a impressão será interrompida. Se o papel acabar durante a impressão do auto teste, a cabeça impressora continuará movimentando-se, porém sem imprimir. O número de linhas impressas é gravado na memória da impressora somente a cada 100 linhas impressas, ou seja, se a impressora for desligada antes de imprimir 100 linhas, a contagem anterior é mantida. Além de verificar possíveis erros, o usuário pode também tomar conhecimento dos seguintes parâmetros: − Versão da EPROM − Número de série do ECF − Data e Hora atual − Interface de Comunicação − Protocolo − Baud rate (Velocidade) − Bits de dados − Paridade − Modo Ack/Nack − Desconto ISS (habilitado ou desabilitado) − Estado da bobina (com papel, sem papel ou com pouco papel) 22. Qual a configuração padrão do ECF? Ao executar o auto teste deverá ser impresso a seguinte configuração: Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 8 / 46 23. Quais as características do Modo Intervenção Fiscal? Somente empresas ou técnicos possuidores de Atestado de Capacitação Técnica tem acesso a este modo. O Modo Intervenção Fiscal é usado para fins de manutenção, reparos ou para programação de parâmetros. A Leitura X deve ser emitida, se possível, antes e depois de qualquer Intervenção Fiscal realizada no equipamento. A programação inicial do clichê e da alíquota fiscal pode ser realizada sem a necessidade de Intervenção Fiscal. Porém, qualquer alteração posterior necessitará entrar neste Modo. No modo de Intervenção Fiscal pode-se realizar as seguintes operações: − Programar o relógio − Programar dados cadastrais ( CGC, IE) − Programação Arredondamento − Recompor o Totalizador Geral e os dados da Memória Fiscal − Programação Símbolo de Autenticação − Programar o número de série da impressora − Programar a tabela de alíquotas fiscais − Programar os dados do estabelecimento ( clichê ) 24. Quais as características do Modo Treinamento? Na Impressora Fiscal IF100 o Modo Treinamento é caracterizado por não haver nenhum CNPJ e IE cadastrados na Memória Fiscal, ou seja, estes dois campos estão cadastrados como saíram da fábrica (iguais a zero). Neste modo a Impressora Fiscal emite cupons SEM VALOR FISCAL e realiza funções como se estivesse no Modo Normal seguindo com as características abaixo: − O caractere “?” é impresso no lugar de todos os espaços em branco. − Não é impresso o logotipo fiscal estilizado BR. − Não é impresso o símbolo de acumulação do GT (Totalizador Geral). − Em todos os cupons é impressa a mensagem: “MODO TREINAMENTO”. − No início, fim e a cada dez linhas dos cupons é impressa a mensagem: “NÃO SUJEITA AO ICMS”. − Permite realizar várias reduções Z no mesmo dia. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 9 / 46 Consulte a legislação da sua região para saber como e em quais situações o Modo Treinamento é permitido. Geralmente, é utilizado para treinamento dos funcionários (longe do ponto de venda) e para auxiliar nas fases de desenvolvimento e testes de aplicativos que se comunicam com a Impressora Fiscal. 25. Quais as características do Modo Normal? Este é o modo normal de operação da impressora para a emissão de cupons fiscais e não sujeitos ao ICMS. Para entrar neste modo é necessário que haja pelo menos os dados de um estabelecimento gravado na Memória Fiscal. É possível realizar as seguintes operações neste estado: − Abertura de Cupom Fiscal − Venda de item − Cancelamento de item − Totalização do Cupom de Venda − Pagamento do Cupom de Venda − Encerramento de Cupom de Venda − Cancelamento de Cupom de Venda − Leitura X − Redução Z − Leitura da Memória Fiscal por intervalo de datas − Leitura da Memória Fiscal por intervalo de reduções − Abertura comprovante vinculado e não vinculado − Encerramento de Cupom Não Fiscal − Operação em Totalizador Não Sujeita ao ICMS − Abertura de Gaveta − Programação de legenda dos Totalizadores Não Sujeitas ao ICMS − Programação do Horário de Verão − Programação do Ajuste de Hora Diário − Programação da legenda adicional − Impressão dos Totalizadores Não Sujeitas ao ICMS − Transmissão de Status − Transmissão de Data / Hora − Transmissão da Tabela de Alíquotas − Transmissão dos Totalizadores Fiscais e Contadores − Transmissão dos Parâmetros do ECF − Transmissão do ID − Impressão em Documento para Autenticação (Validação) Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 10 / 46 26. O que devo fazer quando a Memória Fiscal se esgotar? Como cada redução é registrada na Memória Fiscal, e esta não pode ser apagada ou alterada, há um limite para o número de reduções possíveis. A versão FCP-500 permite até 2010 reduções, ou seja, pode operar por aproximadamente 07 anos, antes que se esgote a capacidade da Memória Fiscal. Após este limite, a Memória dever ser substituída por outra. Na Leitura X e na Redução Z é impresso o número de reduções disponíveis. Em caso de esgotamento da capacidade, o ECF ***MEMÓRIA FISCAL ESGOTADA***. Em caso de falha ou desconexão da Memória Fiscal, a impressora entrará em estado de erro, sendo bloqueará qualquer nova tentativa de venda e ainda será impressa a mensagem: impressa a mensagem: ***MEMÓRIA FISCAL COM PROBLEMA*** 27. Quantos estabelecimentos são possíveis gravar na Memória Fiscal? O equipamento permite a inclusão de até 12 estabelecimentos, para o caso de transferência de posse da impressora ou alteração cadastral. Neste caso é encerrado um período, sendo efetuado a totalização das vendas brutas registradas pelo usuário anterior, para efeito de Leitura da Memória Fiscal. Se chegar ao limite o número de estabelecimentos gravados, e for necessário um novo cadastro, o usuário deverá encaminhar a impressora a uma Assistência Técnica. 28. O que é Leitura X? A Leitura X é um documento fiscal que mostra os valores acumulados nos contadores e totalizadores fiscais. Deve ser emitida nas seguintes situações: − − Antes da primeira venda do dia. Em casos de Intervenção Técnica, sempre que possível, deve-se emitir a Leitura X antes e depois da intervenção para preenchimento do Atestado de Intervenção. Para garantir a continuidade da fita-detalhe observe as seguintes situações: − − Deve-se emitir a Leitura X no início e no fim de todas as bobinas de papel. Caso haja necessidade de rasgar/cortar a fita detalhe, se possível, deve-se emitir a Leitura X antes e depois do corte. A função principal desse documento é dar uma ”fotografia” do movimento diário da impressora no momento em que o mesmo foi emitido. Comando para emitir a Leitura X: Ferramenta Comando/Função DLL ECF32M LeituraX() Device Driver DRVECF.SYS $15 29. O que é Redução Z? Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 11 / 46 Redução Z é um documento fiscal que deve ser impresso obrigatoriamente no final do dia. Ao ser emitido envia para a Memória Fiscal as seguintes informações: − Data e a Hora da Redução Z. − Contador de Reduções incrementado em uma unidade. − Valor da Venda Bruta Diária. Após a emissão da Redução Z são zerados todos os totalizadores parciais e a Impressora Fiscal não permite iniciar novas vendas até que seja alterada a data de seu relógio interno, ou seja, até 00:00hs do dia seguinte. Os dados impressos são os mesmos da Leitura X. Para viabilizar o funcionamento de Lojas 24 horas, a legislação atual permite que o estabelecimento emita a Redução Z até o prazo limite das 02:00hs do dia seguinte ao do movimento fiscal. Após este prazo a Impressora Fiscal exige a emissão da Redução Z e será impressa a mensagem: “*** REDUÇÃO Z PENDENTE ***”. Comando para emitir a Redução Z: Ferramenta Comando/Função DLL ECF32M ReducaoZ() Device Driver DRVECF.SYS $16 30. Quais são as informações impressas na Leitura X e na Redução Z? As principais informações que são impressas na Leitura X e na Redução Z estão listadas abaixo: COO Contador de Ordem de Operação. Contador irreversível e crescente com capacidade de 6 dígitos, incrementado de uma unidade ao ser emitido qualquer documento pelo ECF. É impresso em todos os cupons. REFERENTE A DATA Informação impressa somente na Redução Z. Indica a Data do Movimento Fiscal que está sendo encerrado. CONT REDUCOES Contador de Reduções Z. Número de reduções armazenadas na EPROM incluindo as de proprietários anteriores. Contador irreversível e crescente com capacidade de 4 dígitos, incrementado de uma unidade a cada operação de Redução Z. CONT LEITURA X Contador de Leitura X. Contador de Leituras X emitidas no dia. CONT REINICIO OP Contador de Reinício de Operação. Contador irreversível e crescente com capacidade de 4 dígitos, incrementado de uma unidade em cada entrada no Modo Normal, em função de uma Intervenção Técnica. CONT CUP. CANC.: Contador de Cupons Cancelados. Contador irreversível e crescente com capacidade de 4 dígitos, incrementado de uma unidade a cada operação de Cancelamento de Cupons. CONT CF Inicial: Conteúdo do Contador de Ordem de Operação (COO) da primeira operação do dia. CONT CF Final: Conteúdo do Contador de Ordem de Operação (COO) da última operação realizada até o momento. TOT GERAL: Total Geral acumulado na Memória Fiscal. Expressa a somatória das Vendas Brutas gravadas na Memória Fiscal mais o Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 12 / 46 valor acumulado no totalizador de Venda Bruta Diária, para o mesmo número de Cadastro Nacional de Pessoa Jurídica (CNPJ), Inscrição Estadual (IE) ou Inscrição Municipal (IM). VENDA BRUTA DIA: Valor Total de Venda Bruta Diária. É a somatória de todos os itens registrados a partir da última Redução Z, ou seja, Venda Líquida Diária mais os valores de cancelamentos e descontos. TOT CANCELAMENTO: Valor Total de Operações de Cancelamento de ICMS. TOT CANCto ISS: Valor Total de Operações de Cancelamento de ISSQN. TOT DESCONTO Valor Total de Operações de Desconto em ICMS. TOT DESCONTO ISS: Valor Total de Operações de Desconto em ISS. VENDA LIQ. ISS: Valor da Venda que efetivamente entrou no caixa acumulada em ISS. VENDA LIQ. DIA: Valor da Venda que efetivamente entrou no caixa acumulada em ICMS. É a somatória dos itens que foram efetivamente vendidos no dia, deduzido dos valores de cancelamento e descontos. TOT ACRESCIMO: Valor Total de Acréscimo em ICMS. TOT ACRESC ISS: Valor Total de Acréscimo em ISS. SUBSTITUICAO: Valores acumulados das vendas com faixa tributária Substituição Tributária (F). INSENCAO: Valores acumulados das vendas com faixa tributária Isento (I). N-TRIBUTADO: Valores acumulados das vendas com faixa tributária Não Incidência (N). TOTALIZADOR PARCIAL ISSQN: Parte do relatório onde são impressas as Legendas, Alíquotas e Valores acumulados nos Totalizadores de ISS cadastrados no ECF. Totalizadores reversíveis com capacidade de acumulação de 15 dígitos, destinados a acumulação de valores líquidos referentes às operações de serviços sujeitas ao ISS. MONTANTE IMPOSTO: Soma de todos os valores acumulados em ISSQN. TOTALIZADORES PARCIAIS: Parte do relatório onde são impressas as Legendas, Alíquotas e Valores acumulados nos Totalizadores de ICMS cadastrados no ECF. Totalizadores reversíveis com capacidade de acumulação de 15 dígitos, destinados a acumulação de valores líquidos referentes às operações de serviços sujeitas ao ICMS. MONTANTE IMPOSTO: Soma de todos os valores acumulados em ICMS. REGISTRADORES não FISCAIS Parte do relatório onde são impressas as Legendas, Alíquotas e Valores acumulados nos Registradores Não Fiscais (Modalidades de Pagamento e Comprovantes Não Fiscais Não Vinculados). Não contém informações de interesse Fiscal e podem ser cadastradas pelo operador . Ex.: Formas de Pagamento, Comprovante de Transferência Eletrônica de Fundos Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 13 / 46 (TEF), Comprovante de Pagamento para Retirada de Pacote. Contador Geral de CNF: Contador de Comprovantes Não Fiscais emitidos. Modalidades Recebidas: Valores acumulados nos registradores não fiscais (00 a 15). Os valores são separados por cada uma das Modalidades de Pagamento cadastradas. Exemplo: cheque, cartão, dinheiro. TOTAL Soma de todos os valores acumulados nas Modalidades de Pagamento. Comprovante Não FiscaL NÃO Vinculado: Valores acumulados nos registradores não fiscais (16 a 31). Por exemplo: Sangria, Reforço de Caixa, etc. TOT ACRESCIMO CNFNV: Valor Total de Acréscimo em Cupom Não Fiscal Não Vinculado. TOT DESCONTO CNFNV: Valor Total de Desconto em Cupom Não Fiscal Não Vinculado. TOT CANto CNFNV: Valor Total de Cancelamento em Cupom Não Fiscal Não Vinculado. CONT CANCto CNFNV: Contador de Cancelamento em Cupom Não Fiscal Não Vinculado. Comprovante Não Fiscal Vinculado: Informações sobre os Comprovantes Não Fiscais Vinculados. CONT CNFV Contador de Comprovantes Não Fiscais Vinculados emitidos. CONT CANCto CNFV Contador de Comprovantes Não Fiscais Vinculados Cancelados. TEMPO OPER. DIA: Tempo em que a Impressora Fiscal ficou ligada no dia. TEMPO OPER. CUP: É o tempo em que a impressora ficou imprimindo cupons fiscais no dia. RED. DISPONIVEIS: Número de Reduções disponíveis na Memória Fiscal. VERSAO FISCAL: Versão do firmware (Eprom) da Impressora Fiscal. 31. O que é Leitura da Memória Fiscal? A Leitura da Memória Fiscal é um documento fiscal que deve ser emitida ao final de cada período de apuração. Pode ser usada nas seguintes situações: − Auditoria Fiscal. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 14 / 46 − Verificação de Data e Hora da última Intervenção Técnica. − Quando possível deve ser emitida antes e após uma Intervenção Técnica. A Leitura da Memória Fiscal pode ser emitida por redução ou data. Comandos para emitir a Leitura da Memória Fiscal: Ferramenta DLL ECF32M Comando/Função LeMemFiscalData() LeMemFiscalReducao() Device Driver DRVECF.SYS $17 $18 32. O que é Relatório Gerencial? O Relatório Gerencial é um estado do Módulo Fiscal onde conseguimos montar um relatório com informações genéricas (administrativas do estabelecimento comercial). Ao entrar nesse modo, a aplicação tem o prazo limite de 10 minutos para finalizar o relatório. Passado esse tempo a impressora aceitará somente o comando para encerrar Cupom Não Fiscal. O Módulo Fiscal imprimirá a cada 10 linhas impressas “OPERACAO NÃO FISCAL” (em modo expandido). Um exemplo de Relatório Gerencial seria um relatório para mostrar a estatística de venda por Operador de Caixa. 33. Como emitir um Relatório Gerencial? Para entrar no Modo Relatório Gerencial, é necessário executar uma Leitura X e passar com parâmetro a indicação de Relatório Gerencial (consulte essa FAQ sobre a Leitura X). Se a opção de Relatório Gerencial estiver habilitada, o ECF entrará automaticamente em Modo Relatório Gerencial após a emissão da Leitura X. Estando em Modo Relatório Gerencial, será aceito o comando para imprimir Linha Não Fiscal tantas vezes forem necessárias para montar o relatório. A impressão é livre (exceto a palavra “TOTAL”) e limitada a 10 minutos. Lembre-se que para sair do Modo Relatório Gerencial, é necessário usar o comando para encerrar Cupom Não Fiscal. 34. O que é Mensagem Publicitária? Mensagem Publicitária é o nome dado às últimas linhas do Cupom Fiscal, onde o aplicativo pode enviar um texto qualquer, por exemplo um texto promocional da loja. É possível imprimir no máximo 8 linhas. Este texto pode ser enviado no comando para Fechar Cupom Fiscal (consultar esta FAQ para obter maiores informação sobre este comando). 35. Como posso cancelar um Cupom Fiscal que está em andamento (aberto)? Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 15 / 46 Há a possibilidade de cancelarmos um Cupom Fiscal em andamento. Este comando irá cancelar automaticamente o Cupom Fiscal que estiver aberto e pode ser enviado a qualquer momento. Comando para Cancelar Cupom Fiscal: Ferramenta Comando/Função DLL ECF32M CancelaCupomFiscal() Device Driver DRVECF.SYS $14 36. Como posso cancelar o Cupom Fiscal anterior? Por exigência da legislação atual, este comando só será executado com sucesso se a operação anterior tiver sido um Cupom Fiscal. Explicando melhor, para cancelar o Cupom Fiscal anterior, é necessário que o Contador de Ordem de Operação (COO) ainda não tenha sido incrementado. O Contador de Ordem de Operação (COO) é incrementado com o início de qualquer operação. Exemplos de operações que incrementam o COO: − Leitura X − Comprovante Não Fiscal Vinculado − Comprovante Não Fiscal Não Vinculado − Cupom Fiscal Comando para Cancelar Cupom Fiscal anterior: Ferramenta Comando/Função DLL ECF32M CancelaCupomFiscal() Device Driver DRVECF.SYS $14 37. O que é Comprovante Não Fiscal? Comprovantes Não Fiscais são operações que incrementam o Contador de Ordem de Operação (COO) e não incidem Tributação. Atualmente, existem dois tipos de Comprovante Não Fiscal: − Vinculado − Não Vinculado 38. O que é Comprovante Não Fiscal Vinculado? Os Comprovantes Não Fiscais Vinculados são usados para emitir informações adicionais após a emissão de um Cupom Fiscal e relacionadas ao mesmo. A legislação atual exige um tempo limite de 2 minutos para finalização do Comprovante Não Fiscal Vinculado. Após esse tempo, o ECF trava e exige o comando para finalizar o comprovante. Ao montar o texto do comprovante não é permitido imprimir a palavra “TOTAL”. Exemplo: − Comprovante de uma Transação Eletrônica de Fundos (TEF). Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 16 / 46 39. O que é Comprovante Não Fiscal Não Vinculado? O Comprovante Não Fiscal Não Vinculado é usado para registrar movimentação de valor no caixa que não incida tributação. Todos os tipos de Comprovantes Não Fiscais Não Vinculados devem estar cadastrados no ECF. Os Registradores Não Fiscais 16 a 31 são usados para essa finalidade. Ao se cadastrar um tipo de Comprovante Não Fiscal Não Vinculado não é possível determinar a natureza da operação (débito ou crédito), todos os tipos cadastrados irão trabalhar como crédito. Exemplos: − Sangria − Reforço de Caixa − Vale Funcionário 40. Como emitir um Comprovante Não Fiscal Vinculado? Para emitir um Comprovante Não Fiscal Vinculado, é necessário que a operação anterior tenha sido um Cupom Fiscal. Procedimento básico para emissão de um Comprovante Não Fiscal Vinculado: Descrição Ferramenta Comando/Função Abrir o Comprovante Não Fiscal Vinculado DLL ECF32M AbreCupomVinculado() DRVECF.SYS $20 Imprimir Linha Não Fiscal (quantas vezes forem DLL ECF32M ImprimeLinhaNaoFiscal() necessárias) DRVECF.SYS $26 Encerrar o Comprovante Não Fiscal Vinculado DLL ECF32M EncerraCupomNaoFiscal() DRVECF.SYS $21 41. Como utilizar a impressão de Linha Não Fiscal? A impressão de Linha Não Fiscal poderá ser utilizada em Comprovantes Não Fiscais Vinculados ou Relatórios Gerenciais. Para agilizar a impressão de um texto não fiscal, foi implementado nas versões de firmware FCP-500 e FCP-501, o envio de linha com até 999 caracteres normais. Exemplo 1: “$26S0981234567890123456789012345678901234567890123456781234567890123456789012345678901234567890123 45678" + chr(10) + chr(13) Exemplo 2: "S050 TECNOLOGIA DE BANCO " + chr(10) + chr(13) ) Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 17 / 46 Descrição Ferramenta Imprimir Linha Não Fiscal, quantas vezes forem DLL ECF32M necessárias DRVECF.SYS Comando/Função ImprimeLinhaNaoFiscal() $26 Imprimir Linha Não Fiscal, somente para versões DLL ECF32M ImprimeLinhaNaoFiscalTexto() FCP-500 ou FCP-501 $26Snnn DRVECF.SYS 42. Como emitir um Comprovante Não Fiscal Não Vinculado? Para emitir um Comprovante Não Fiscal Não Vinculado, veja uma sequência básica de comandos: Descrição Ferramenta Comando/Função Abrir o Comprovante Não Fiscal Não Vinculado DLL ECF32M AbreCupomNaoVinculado() DRVECF.SYS $22 Informar o registrador não fiscal e o valor DLL ECF32M relacionado à operação. DRVECF.SYS Comando OPCIONAL. Usado para informar a DLL ECF32M OperRegNaoVinculado() $23 Pagamento() / PagamentoComTexto() Modalidade de Pagamento. DRVECF.SYS $07 Encerrar o Comprovante Não Fiscal Não Vinculado. DLL ECF32M EncerraCupomNaoFiscal() DRVECF.SYS $21 43. O que é Situação Tributária? Situação Tributária é o código que identifica a tributação na qual se enquadra o item vendido. A Situação Tributária deve pertencer a uma das classificações programadas na Impressora Fiscal. O primeiro caractere da Situação Tributária deve ser um dos abaixos: − T : Tributação ICMS − S : Tributação ISS − I : Isento de Tributação − F : Substituição Tributária − N : Não Tributável No caso do item estar enquadrado em Tributação por ICMS ou ISS, é necessário que a alíquota (taxa percentual) correspondente esteja cadastrada no ECF. Cada alíquota cadastrada no ECF possui um código de identificação. Por exemplo: T01, T02, S04. Todas as alíquotas cadastradas na Impressora Fiscal devem estar associadas ao ICMS (T) ou ao ISS (S). É possível cadastrar no máximo 15 alíquotas distintas. Lembre-se que a primeira alíquota (00) sempre irá pertencer ao ISS (S) e as demais poderão ser classificadas como ICMS (T) ou ISS (S). A inclusão de uma NOVA alíquota pode ser feita após uma Redução Z e antes da primeira venda do dia. As Situações Tributárias de Isenção (I), Substituição (F) e Não Tributável (N) estarão sempre cadastradas na Impressora Fiscal. Nos comandos fiscais onde é necessário informar a Situação Tributária, devem ser indicadas respectivamente como: I00, F00 e N00. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 18 / 46 44. O que significa Totalizar um Cupom Fiscal? A operação de Totalizar Cupom Fiscal sinaliza para a Impressora Fiscal que terminou de registrar todos os itens e que não haverá cancelamento de item no Cupom Fiscal atual, e o aplicativo está pronto para enviar as Modalidades de Pagamento. A sequência de comandos para finalizar o Cupom Fiscal é: − − Totalizar o Cupom Fiscal Informar as Modalidades de Pagamento (lembre-se que podem ser informadas mais de uma Modalidade de Pagamento em um mesmo Cupom Fiscal ou Não Fiscal). − Finalizar o Cupom Fiscal. 45. O que é Modalidade de Pagamento? As Modalidades de Pagamento são as formas com as quais o consumidor pode efetuar o pagamento do Cupom Fiscal ou Não Fiscal. São conhecidas também por “finalizadoras”. Exemplos: − Dinheiro − Cheque − TEF Toda Modalidade de Pagamento deve estar cadastrada em um Registrador Não Fiscal. Os Registradores Não Fiscais de 00 a 15 são usados para cadastrar as Modalidades de Pagamento. A inclusão de uma NOVA Modalidade de Pagamento pode ser feita após uma Redução Z e antes da primeira venda do dia. 46. Como informar a Modalidade de Pagamento? Conforme a ferramenta de desenvolvimento, utilize um dos comandos abaixo: Ferramenta Comando/Função DLL ECF32M Pagamento() / PagamentoComTexto() Device Driver DRVECF.SYS $07 47. Quais são as ferramentas de desenvolvimento para ambiente DOS? A DIEBOLD oferece o device driver DRVECF.SYS para aplicações que trabalham sob o Sistema Operacional DOS. É uma interface de comunicação que trabalha com todos os modelos de impressoras fiscais da MECAF. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 19 / 46 48. Quem deve utilizar o device driver DRVECF.SYS? Devem usar o device driver DRVECF.SYS todas as aplicações que suportam o Sistema Operacional DOS. É uma interface de comunicação que trabalha com todos os modelos de impressoras fiscais da MECAF. 49. Como instalar o device driver DRVECF.SYS? O device driver DRVECF.SYS deve ser instalado da seguinte forma: − 1. Copie o arquivo DRVECF.SYS para o diretório raíz de sua unidade (Exemplo: “C:\”). − 2. Insira a seguinte linha no arquivo CONFIG.SYS: DEVICEHIGH = C:\DRVECF.SYS /1 OBS: − O parâmetro /1 indica que o ECF está instalado na COM1. Caso se deseje instalar na COM2, o parâmetro será "/2"; para COM3 o parâmetro − No exemplo, a unidade em questão é “C:”, faça a alteração caso sua a unidade seja diferente. 50. Que cuidados que devo tomar quanto à comunicação serial usando o DRVECF.SYS? O seu aplicativo deve estar atento quanto ao uso da porta serial: − Para estabelecer comunicação com a Impressora Fiscal (interface serial), o primeiro comando que o seu aplicativo deve enviar é o de abertura do arquivo . Se a abertura do arquivo não for executada com sucesso, a comunicação serial não estará estabelecida. Este arquivo deve ser aberto somente uma única vez enquanto o seu aplicativo estiver em execução. − Para encerrar a comunicação com a Impressora Fiscal (interface serial), o último comando que o seu aplicativo deve enviar é o de fechamento do arquivo “DRVCIF@C”. Se o fechamento do arquivo não for executado com sucesso, a comunicação serial por outros aplicativos poderá apresentar falhas. Este arquivo deve ser fechado somente ao finalizar a execução do seu aplicativo. − − Informe a porta serial corretamente no arquivo de configuração de sistema “config.sys”. O device driver DRVECF.SYS necessita que o IRQ e o ENDEREÇO da porta serial esteja configurado da seguinte forma: COM1 (IRQ: 4 ENDEREÇO: 03F8) e COM2 (IRQ:3 ENDEREÇO: 02F8). Para saber essas informações, consulte o SETUP do micro ou as Configurações das Portas Seriais no Painel de Controle do Windows. − Certifique-se que não há qualquer outro dispositivo ou driver instalado na porta serial onde está instalada a Impressora Fiscal. 51. Como enviar os comandos usando o device driver DRVECF.SYS? Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 20 / 46 Quando o seu aplicativo desejar enviar um comando ao ECF, deve escrevê-lo no arquivo “DRVCIF@C”. Ao escrever um comando no device driver, a aplicação deverá fazê-lo sem inserir o protocolo de comunicação (STX/ETX). Assim que o comando de escrita no arquivo retornar sucesso, é necessário obter o retorno do ECF lendo o conteúdo do mesmo arquivo. Utilize uma função, conforme a linguagem empregada, para realizar a escrita do comando. Exemplo (em linguagem Clipper): Comando = Chr(27) + "$15" Retorno = FWRITE( HANDLE ,@Comando ,LEN( Comando ) ) 52. Como tratar o retorno dos comandos usando o device driver DRVECF.SYS? Quando o seu aplicativo desejar tratar um retorno do ECF, deve ler o conteúdo do arquivo “DRVCIF@C”. Ao tratar o conteúdo do arquivo do device driver, a aplicação deverá fazê-lo sem requisitar o protocolo de comunicação (STX/ETX). Utilize uma função, conforme a linguagem empregada, para realizar a leitura da mensagem de retorno. O conteúdo do arquivo conterá a mensagem de retorno do ECF. Esta mensagem seguirá um padrão pré-estabelecido: <tipo><nseq><código de retorno><mensagem> <tipo> <nseq> É um único caractere ASCII que indica: − + = comando executado com sucesso. − - = comando não executado ou executado com erro. − S = comando do tipo STATUS. São 4 caracteres numéricos ASCII, no formato NNNN (`0' =< N <= `9'), formando um contador incrementado de uma unidade a cada comando recebido e executado com sucesso. Observe que esse contador não é incrementado em um comando de status. <cód> São 2 caracteres numéricos ASCII no formato NN (`0' =< N <= `9') indicando o código de retorno do comando executado com sucesso (exceto em comandos de transmissão de parâmetros) ou do erro ocorrido (no caso de comando não executado ou executado com erro). <mensagem> Texto padrão ASCII de tamanho variável contendo a resposta relativa ao comando enviado. Além dos códigos e mensagens de retorno do ECF, o device driver também pode gerar códigos de retorno em determinadas situações, observe a tabela abaixo: (consulte o Manual de Programação para obter maiores detalhes) Código de Retorno Mensagem de Retorno -96 Tampa aberta. A Tampa Frontal do ECF está aberta. -97 Sem mensagem em andamento. Não há resposta pendente. -98 Overflow. Erro na comunicação serial. -99 Timeout Não há resposta do ECF. OBS: O seu aplicativo deve fazer um tratamento especial quando receber o código de retorno “-97”. Este retorno ocorre quando é feita uma leitura no arquivo sem que um comando tenha sido enviado. Caso o comando tenha sido enviado, significa que ainda não houve resposta do ECF; neste caso a aplicação deverá realizar um processo em “loop” de leitura até que o device driver lhe forneça uma resposta diferente. Examine o exemplo em CLIPPER que pode ser obtido nesse site. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 21 / 46 Exemplo (em linguagem Clipper): Buffer = SPACE( 300 ) Retorno = FREAD( HANDLE ,@Buffer ,300 ) 53. Quais são as ferramentas de desenvolvimento para ambiente Windows? A DIEBOLD oferece a DLL ECF32M.DLL para aplicações que trabalham sob o Sistema Operacional Windows 32 bits. É uma interface de comunicação que trabalha com todos os modelos de impressoras fiscais da MECAF. 54. Quem deve usar a DLL ECF32M? Devem usar a DLL ECF32M todas as aplicações que usam linguagem 32 bits e suportam os Sistemas Operacionais Windows 95/98/NT/2000. 55. Como instalar a DLL ECF32M? A DLL ECF32M deve ser instalada preferencialmente na pasta de sistema do Windows: − Para as Versões 95, 98 e Me: SYSTEM − Para as Versões NT Workstation e 2000 Professional: SYSTEM32 Essa DLL utiliza um arquivo de configuração denominado CIF.INI, que deve ser instalado na seguinte pasta: − Para Versões 95, 98 e Me: WINDOWS − Para Versões NT Workstation e 2000 Professional: WINNT 56. Quais as informações que eu posso configurar no arquivo CIF.INI da DLL ECF32M? O arquivo de configuração CIF.INI é um arquivo texto no padrão de inicialização do Windows contendo a sessão [PORT]. Os parâmetros possíveis estão relacionados abaixo: [PORT] Nome da seção. Parâmetro que determina a porta serial que será utilizada, onde <n> é o número da porta selecionada: COM=<n> − 1 – COM1 − 2 – COM2 − 3 – COM3 − 4 – COM4. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 22 / 46 Parâmetro que determina a geração do arquivo de LOG, onde <x> é o nível de depuração. As informações presentes no arquivo de LOG serão geradas conforme o nível de depuração determinado. Níveis de Depuração: DEPURA=<x> − 0: O arquivo de Log não será gerado. − 1: O arquivo de Log será gerado no nível básico. − 2: O arquivo de Log será gerado no nível médio. − 3: O arquivo de Log será gerado no nível avançado. OBS: Saiba mais sobre o arquivo de Log lendo a Especificação de Uso da DLL ECF32M. Exemplo: Se a impressora estiver conectada à porta COM1 e sem gravação do arquivo de Log, o arquivo de configuração CIF.INI terá o seguinte conteúdo: [PORT] COM=1 DEPURA=0 ATENÇÃO! Ao editar o arquivo CIF.INI não coloque espaços entre o parâmetro e o sinal de igual, e entre o sinal de igual e o valor do parâmetro; isto provocará um erro durante a leitura do parâmetro em questão. 57. Quais os cuidados que devo tomar quanto à comunicação serial usando DLL ECF32M? O seu aplicativo deve estar atento quanto ao uso da porta serial: − Para estabelecer comunicação com a Impressora Fiscal (interface serial), a primeira Função que o seu aplicativo deve enviar é a OpenCIF(). Se esta Função não for executada com sucesso, a comunicação serial não estará estabelecida. Esta Função deve ser enviada somente uma única vez enquanto o seu aplicativo estiver em execução. − Para encerrar a comunicação com a Impressora Fiscal (interface serial), a última Função que o seu aplicativo deve enviar é a CloseCif().Se esta Função não for executada com sucesso, a comunicação serial não estará encerrada. Esta Função deve ser enviada somente uma única vez ao finalizar a execução do seu aplicativo. − Informe a porta serial corretamente no arquivo de configuração CIF.INI (leia mais sobre este arquivo nesta FAQ) − Certifique-se que não há qualquer outro dispositivo ou driver instalado na porta serial onde está instalada a Impressora Fiscal. − Certifique-se que não há conflitos a serem solucionados na porta serial onde está instalada a Impressora Fiscal. 58. Como tratar o retorno das Funções usando a DLL ECF32M? Todas as Funções chamadas retornam um Status, indicando se o comando foi enviado à Impressora Fiscal com Sucesso ou não. Consulte a tabela completa de retorno de Função na Especificação de Uso da DLL ECF32M. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 23 / 46 O retorno da Função será CIF_OK (igual a 0) sempre que o comando for recebido com êxito pelo ECF, significando que o mesmo reconheceu o comando, porém não significa que o executou com Sucesso. Após a chamada a de uma determinada Função que retornou CIF_OK, é necessário que o aplicativo use Função ObtemRetorno(). O objetivo desta Função é obter a resposta do ECF e verificar se o comando foi executado corretamente, ou o motivo pelo qual não foi possível realizar a operação. 59. Como usar a Função EsperaResposta()? O retorno da Função EsperaResposta() tem uma característica diferente das demais funções: − No caso do comando ter sido executado com sucesso, esta Função retorna uma constante maior ou igual a CIF_OK (Retorno >= 0). − No caso do comando ter sido executado com erro ou não ter sido executado, esta Função retorna uma − Para saber os códigos de retorno da Função EsperaResposta(), consulte a tabela completa de retorno do ECF − Uma outra utilidade desta Função, é receber as informações solicitadas ao ECF através de alguma Função. No constante com valor negativo. na Especificação de Uso da DLL ECF32M. caso do comando anterior ter sido alguma solicitação de parâmetros do ECF, como por exemplo a Função TransTotCont(), as informações solicitadas poderão ser lidas através do buffer passado como parâmetro na Função EsperaResposta (). 60. Como usar a Função AbreCupomFiscal()? Descrição: Abre um Cupom Fiscal de venda. Para abrir um Cupom Fiscal lembre-se que é necessário que o ECF não esteja em alguma operação fiscal ou não fiscal em andamento. Sintaxe C: int FAR PASCAL AbreCupomFiscal(void); Sintaxe VB: Declare Function AbreCupomFiscal Lib "ECF32M.DLL" () As Long Parâmetros: Nenhum. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 24 / 46 Exemplo: typedef int (FAR PASCAL *ABRECUPOM) (void); int ret; ABRECUPOM pAbreCupomFiscal; pAbreCupomFiscal = (ABRECUPOM) GetProcAddress(h, "AbreCupomFiscal”); ret = pAbreCupomFiscal ( ); 61. Como usar a Função VendaItem()? Função: VendaItem() Descrição: Realiza a operação de venda de mercadoria. Sintaxe C: int FAR PASCAL VendaItem(char fmt,char *qtd,char *punit,char *trib,char tdesc,char *valor,char *unid,char *cod,char ex,char *descr,char * legop); Sintaxe VB: Declare Function VendaItem Lib "ECF32M.DLL" (ByVal fmt As Byte,ByVal qtd As String,ByVal punit As String,ByVal trib As String,ByVal tdesc As Byte,ByVal valor As String,ByVal unid As String,ByVal cod As String,ByVal ex As Byte,ByVal descr As String,ByVal legop As String) As Long Parâmetros: fmt: Formato de impressão de linha. − ‘-‘ (2Dh) Impressão em uma linha. − ‘Z’ (5Ah) Impressão de linha normal.(*) − ‘A’ (41h) Impressão em uma linha e valor do item com duas casas decimais. (*) − ‘B’ (42h) Impressão em uma linha e valor do item com três casas decimais. (*) − ‘C’ (43h) Impressão em duas linhas e valor do item com duas casas decimais. (*) − ‘D’ (44h) Impressão em duas linhas e valor do item com três casas decimais. (*) − ‘E’ (45h) Impressão em uma linha, valor do item com duas casas decimais e quantidade com quatro dígitos na parte inteira do valor. (*) − ‘F’ (46h) Impressão em uma linha, valor do item com três casas decimais e quantidade com quatro dígitos na parte inteira do valor. (*) ‘G’ (47h) Impressão em duas linhas, valor do item com duas casas decimais e quantidade com quatro dígitos na parte inteira do valor. (*) − ‘H’ (48h) Impressão em duas linhas, valor do item com três casas decimais e quantidade com quatro dígitos na parte inteira do valor. (*) Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 25 / 46 (*) – Parâmetros disponíveis a partir da versão 2.1 desta DLL, e versão FCP-500 do firmware da impressora fiscal. qtd: Quantidade, composto de 6 bytes no formato “nnnnnn”, sendo 3 para parte inteira e 3 para parte decimal – (6n). punit: Preço unitário, composto de 11 bytes no formato nn..nn, sendo 9 para a parte inteira e 2 para a parte decimal – (11n). trib: Situação tributária, composto de 3 bytes obedecendo a seguinte codificação: − “Tnn”: Tributado (nn = “00”,”01” ,...“15” ,corresponde à faixa de alíquota) − “F00”: Substituição Tributária − “I00”: Isenção − “N00”: Não Incidência tdesc: Tipo do desconto a ser enviado no próximo campo, no seguinte formato: tdesc = '&' (26h) ou ‘1’ (31h) - o tipo de desconto no próximo campo é por valor. tdesc = '%' (25h) ou ‘0’ (30h) - o tipo de desconto no próximo campo é por porcentagem. Valor: Valor do desconto do item, composto de 15 caracteres no formato nn..nn se for por valor (13 para parte inteira e 2 para a parte decimal) ou no formato nnnn se for porcentagem (2 para aparte inteira e 2 para a parte decimal) - (15/4n). unid: Descrição da unidade da mercadoria (pc, kg, mt e etc), composto de 2 caracteres no formato ss (2s). cod: Código da mercadoria composto de 13 caracteres no formato ss....ss. – (13s) ex: Tamanho da descrição. − ‘0’ (30h) = campo descrição com 20 caracteres alfanuméricos. − ‘1’ (31h) = campo descrição com 38 caracteres alfanuméricos. − ‘2’ (32h) = campo descrição com 38 * 2 caracteres alfanuméricos. − ‘3’ (33h) = campo descrição com 38 * 3 caracteres alfanuméricos. ‘4’ (34h) = campo descrição com 38 * 4 caracteres alfanuméricos. − ‘5’ (35h) = campo descrição com 38 * 5 caracteres alfanuméricos. Caso ex seja nulo, o campo “descr” assumirá o valor default, ou seja, descrição com 20 caracteres alfanuméricos. descr: Descrição da mercadoria; este campo é composto nn caracteres no formato ss...ss, dependendo do campo anterior. – (<conforme campo ex>s) legop: Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 26 / 46 Legenda opcional, impressa somente em caso de desconto válido, composto de 14 caracteres no formato ss...ss. (14s). Caso o parâmetro seja uma string nula (legop = Null), será impressa a legenda default, ou seja, “DESCONTO”. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *VENDA) ( char, char *, char *, char *, char, char *, char *, char *, char, char *, char * ); char BufDesc[21]; char BufQtd[7]; char BufPunit[12]; char BufTrib[5]; char BufValor[16]; char BufUnid[3]; char BufCod[14]; char desc; VENDA pVenda; pVenda = (VENDA) GetProcAddress(h, "VendaItem") ; desc = '%'; strcpy (BufQtd,"001000"); strcpy (BufPunit,"00000001000"); strcpy (BufTrib,"I00"); strcpy (BufValor,"0000"); strcp(BufUnid,"pc"); strcpy(BufCod,"0000000000001"); strcpy(BufDesc,"abcdefghijklmnopqrst"); pVenda(0,BufQtd,BufPunit,BufTrib,desc,BufValor ,BufUnid,BufCod,0,BufDesc,”” ); Observações: − Nos campos numéricos, os dígitos não significativos deverão ser preenchidos com zero ('0'). Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 27 / 46 − Caso o parâmetro “fmt” possua o valor 0 (Null), a impressão da descrição do produto será feita em uma linha − Caso o parâmetro “tdesc” possua o valor 0 (Null), a operação de desconto será realizada com um valor em normal. Este valor mantém a compatibilidade com as versões anteriores da dll. porcentagem. Este valor mantém a compatibilidade com as versões anteriores da dll. − Totalizador de situação tributária 'T00' é específico para realizar operações sujeitas ao ISS (Imposto Sobre Serviços). − Para venda de item sem desconto, especifique o tipo de desconto (valor ou porcentagem) e preencha o campo valor com zeros, respeitando o número de caracteres para cada tipo. − Esta Função poderá ser utilizada com um dos nomes apresentados acima, VendaItem ou Venda_Item; esta alteração foi introduzida na versão 1.4 desta dll. 62. Como usar a Função TotalizarCupom()? Descrição: Realiza a totalização do cupom sem parâmetro de desconto/acréscimo. A FunçãoTotalizarCupom() pode ser executada em seguida para se realizar uma operação de desconto/acréscimo no subtotal. É possível totalizar o cupom diretamente pela Função TotalizarCupom(), que contém os parâmetros de desconto/acréscimo. Sintaxe C: int FAR PASCAL TotalizarCupomParcial( void ); Sintaxe VB: Declare Function TotalizarCupomParcial Lib "ECF32M.DLL" () As Long Parâmetros: nenhum Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *TOTCUPPARC) (void); int ret; TOTCUPPARC pTotalizaCupomParcial; pTotalizarCupomParcial = (TOTCUPPARC) GetProcAddress(h, "TotalizarCupomParcial”); ret = pTotalizaCupomParcial ( ); Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 28 / 46 63. Como usar a Função Pagamento()? Função: Pagamento() Descrição: Este comando pode ser enviado quantas vezes forem necessárias para finalizar o pagamento (valor a pagar igual a zero). Deve ser informada uma única forma de pagamento por comando. Realiza o pagamento do cupom de venda, imprimindo a(s) forma(s) de pagamento no seguinte formato: PAGO EM: <legenda programável> = nnnnnnnnnnnnn,nn Sintaxe C: int FAR PASCAL Pagamento(char reg*,char *vpgto,char troco); Sintaxe VB: Declare Function Pagamento Lib “ECF32M.DLL” (ByVal reg As String,ByVal vpgto As String,ByVal troco As Byte) As Long Parâmetros: reg: Identificação do registrador não fiscal (forma de pagamento). (2n(“00” <= nn <= “15”)) vpgto: Valor do pagamento, programado no campo anterior, composto de 15 caracteres no formato nn..nn (15n). troco: Indica quando for troco, se o mesmo será subtraído do registrador especificado ou não. − troco = ‘0’ (30h) – O troco não será subtraído do registrador especificado; − troco = ‘1’ (31h) – O troco será subtraído do registrador especificado; Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL PGTO) (char, char *,char); char BufValor[16];int ret;PGTO pPagamento; pPagamento = (PGTO) GetProcAddress(h, “Pagamento”) ; strcpy (BufValor,”000000000012300”); ret = pPagamento (“02”,BufValor,’0’); Observações: − Nos campos numéricos, os dígitos não significativos deverão ser preenchidos com − Este comando só poderá ser utilizado após a totalização do cupom, através da Função TotalizarCupom(). Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 29 / 46 − Caso o parâmetro “troco” possua o valor 0 (Null), o valor do troco será subtraído. 64. Como usar a Função PagamentoComTexto()? Função: PagamentoComTexto() Descrição: Realiza o pagamento do cupom de venda, permitindo a impressão de inserção de linhas de comentário. A forma de pagamento será impressa no seguinte formato: PAGO EM: <legenda programável> = nnnnnnnnnnnnn,nn Sintaxe C: int FAR PASCAL PagamentoComTexto(char *reg,char *vpgto,char parm,char *comentario); Sintaxe VB: Declare Function PagamentoComTexto Lib “ECF32M.DLL” (ByVal reg As String,ByVal vpgto As String,ByVal parm As Byte,ByVal comentario As String) As Long Parâmetros: reg: Identificação do registrador não fiscal (forma de pagamento). (2n(“00” <= nn <= “15”)) Vpgto: Valor do pagamento, programado no campo anterior, composto de 15 caracteres no formato nn..nn (15n). parm: Indica quantas linhas de comentário serão enviadas: − parm = ‘2’ (32h) – será enviada uma linha de comentário; − parm = ‘1’ (34h) – serão enviadas duas linhas de comentário.: Linha de comentário opcional, composta de 40/80caracteres alfanuméricos, respeitando o que foi determinado através do parâmetro anterior. (40/80s) Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT Exemplo: typedef int (FAR PASCAL PGTOTEXTO) (char *, char *, char , Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 30 / 46 char * ); char BufValor[16]; int ret; PGTOTEXTO pPagamentoComTexto; pPagamentoComTexto = (PGTOTEXTO) GetProcAddress(h, “PagamentoComTexto”) ; strcpy(BufValor,”000000000012300”); ret = pPagamentoComTexto(“02”,BufValor,’2’ ,”Dolares”); Observações: − Nos campos numéricos, os dígitos não significativos deverão ser preenchidos com zero (‘0’). − Este comando só poderá ser utilizado após a totalização do cupom, através da Função TotalizarCupom(). − Função disponível a partir da versão 2.1 desta DLL, e versão FCP-500 do firmware da impressora fiscal. 65. Como usar a Função Troco()? Função: Troco() Descrição: Realiza a operação de troco relativa a operação de pagamento do cupom. Sintaxe C: int FAR PASCAL Troco ( char * reg ); Sintaxe VB: Declare Function Troco Lib “ECF32M.DLL” (ByVal reg As String) As Long PARÂMETROS: reg: Identificação do registrador não fiscal (forma de pagamento). (2n(“00” <= nn <= “15”)) Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL TROCO) (char *); int ret; TROCO pTroco; pTroco = (TROCO) GetProcAddress(h ,“Troco”) ; ret = pPagamentoComTexto (“02”); Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 31 / 46 Observações: − Este comando só poderá ser utilizado após o pagamento do cupom, através da Função Pagamento, ou PagamentoComTexto(). − Função disponível a partir da versão 2.1 desta DLL, e versão FCP-500 do firmware da impressora fiscal. 66. Como usar a Função FechaCupomFiscal()? Descrição: Realiza o fechamento do Cupom Fiscal após a sua Totalização e o Pagamento. Sintaxe C: int FAR PASCAL FechaCupomFiscal(char *tam_msg,char *msg); Sintaxe VB: Declare Function FechaCupomFiscal Lib "ECF32M.DLL" (ByVal tam_msg As String,ByVal msg As String) As Long Parâmetros: tam_msg: Identificador de campo de tamanho da mensagem, composto de quatro caracteres no formato snnn, obedecendo a seguinte condição: − s = 'S' (53h) - indica que o próximo campo é o tamanho da mensagem. − nnn - tamanho da mensagem a ser enviada. Msg: Mensagem promocional de tamanho definido pelo campo anterior, no formato ss..ss (tamanho=nnn). Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *FECHACUPOM) (char*, char *); int ret; FECHACUPOM pFechaCupomFiscal; pFechaCupomFiscal = (FECHACUPOM) GetProcAddress(h, "FechaCupomFiscal"); ret = pFechaCupomFiscal ("S000",””); // sem mensagem promocional ou ret = pFechaCupomFiscal ("S010",”123456789\x0a”); // com mensagem promocional Observações: Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 32 / 46 Caso o campo “tam_msg” possua o valor “S000”, nenhuma mensagem será enviada e o parâmetro “msg” deverá possuir uma string nula. Exemplo: “ESTAMOS AQUI PARA SERVIR VOCE” “ APROVEITE O SUPER VAREJAO ” “ TODA QUARTA-FEIRA ATE 12:00 H ” “ VOLTE SEMPRE ” 67. Como usar a Função AbreCupomNaoVinculado()? Descrição: Abre um Cupom Não Fiscal Não Vinculado. Neste cupom é possível realizar operações não fiscais em registradores através da Função OperRegNaoVinculado(). Este cupom habilita a emissão do comprovante não fiscal VINCULADO, imediatamente após o fechamento deste. Sintaxe C: int FAR PASCAL AbreCupomNaoVinculado (void); Sintaxe VB: Declare Function AbreCupomNaoVincuado Lib "ECF32M.DLL" ( ) As Long Parâmetros: Nenhum. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *ABRECUPNV) (void); int ret; ABRECUPNV pAbreCupomNaoVinculado; pAbreCupomVinculado = (ABRECUPNV) GetProcAddress(h, "AbreCupomNaoVinculado"); ret = pAbreCupomNaoVinculado ( ); Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 33 / 46 68. Como usar a Função OperRegNaoVinculado()? Descrição: Esta Função é usada para registrar valor em um Comprovante Não Fiscal Não Vinculado, use a Função Realiza a operação nos registradores não vinculados. É permitido realizar o pagamento da operação através da Função Pagamento() ou PagamentoComTexto(), que caracteriza a finalização da operação nos registradores não fiscais, ficando permitido somente o fechamento do comprovante não fiscal não vinculado. Sintaxe C: int FAR PASCAL OperRegNaoVinculado (char *reg,char *valor,char oper,char toper,char *valorop,char *legop); Sintaxe VB: Declare Function OperRegNaoVinculado Lib "ECF32M.DLL" (ByVal reg As String,ByVal valor As String,ByVal oper As Byte,ByVal toper As Byte,ByVal valorop As String,Byval legop As String) As Long Parâmetros: reg: Identificação do registrador não fiscal, composto de 2 caracteres no formato nn {2n( '16' =< nn <= '31' )}. valor: Valor referente à operação, composto de 15 caracteres no formato nn...nn.{15n}. oper: Indica se o próximo campo é operação de desconto ou acréscimo, composto de 1 caracter, obedecendo a seguinte condição: − •oper = '@' (40h) - Indica que o próximo campo se refere a acréscimo. − •oper = ‘Z’ (5Ah) – Indica que o próximo campo se refere a desconto. toper: Tipo do desconto/acréscimo a ser enviado no próximo campo, no seguinte formato: − •toper = '&' (26h) ou ‘1’ (31h) - o tipo de desconto/acréscimo no próximo campo é por valor. −−− •toper = "%' (25h) ou ‘0’ (30h) - o tipo de desconto/acréscimo no próximo campo é por porcentagem. valorop: Valor do desconto/acréscimo, composto de 15 caracteres no formato nn...nn se for por valor ( 13 para a parte inteira e 2 para a parte decimal ) ou no formato nnnn se for por porcentagem (2 para a parte inteira e 2 para a parte decimal).(15/4n) legop: Legenda opcional, impressa somente em caso de desconto/acréscimo válido, composto de 14 caracteres no formato ss...ss. (14n). Caso o parâmetro seja uma string nula (legop = Null), será impressa a legenda default, ou seja, “DESCONTO” ou “ACRÉSCIMO”. Retorno: CIF_OK Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 34 / 46 CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUCAO Exemplo: typedef int (FAR PASCAL *OPTOT) (char *, char *, char, char , char *, char *); int ret; char op,toper,reg[3],valor[16],valorop[16]; OPTOT pOpRegNaoVinculado; pOpRegNaoVinculado = (OPTOT) GetProcAddress(h, "OperRegNaoVinculado"); strcpy (reg,"16"); op = ‘@’ ; toper = ‘%‘; strcpy (valor,"000000000100000"); strcpy (valorop,"1000"); ret = pOpRegNaoVinculado ( reg,valor,op,toper,valorop,””); Observações: − Nos campos numéricos, os dígitos não significativos deverão ser preenchidos com zero ('0'). − Caso o parâmetro “oper” possua o valor 0 (Null), o próximo campo será interpretado − como desconto. Este valor mantém a compatibilidade com as versões anteriores da dll. 69. Como usar a Função EncerraCupomNãoFiscal()? Função: EncerraCupomNaoFiscal Descrição: Encerra os seguintes cupons de operações não fiscais: − Leitura X com Relatório Gerencial; − Cupom Não Fiscal Vinculado e − Cupom Não Fiscal Não Vinculado. Sintaxe C: int FAR PASCAL EncerraCupomNaoFiscal (void); Sintaxe VB: Declare Function EncerraCupomNaoFiscal Lib "ECF32M.DLL" ( ) As Long Parâmetros: Nenhum. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 35 / 46 Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *ENCCUPOM) (void); int ret; ENCCUPOM pEncerraCupom; pEncerraCupom = (ENCCUPOM) GetProcAddress(h, "EncerraCupomNaoFiscal"); ret = pEncerraCupom (); 70. Como usar a Função LeituraX()? Função: LeituraX() Descrição Esta Função emite a Leitura X e aceita o parâmetro para entrar no Modo Relatório Gerencial. Se esta opção estiver habilitada, o ECF entrará automaticamente em Modo Relatório Gerencial após a emissão da Leitura X. Para obter maiores informações, leia sobre Relatório Gerencial. Lembre-se que o Modo Relatório Gerencial é encerrado através da DLL ECF32M pela Função EncerrraCupomNaoFiscal( ). Sintaxe C: int FAR PASCAL LeituraX(char RelGer); Sintaxe VB: DeclareFunctionLeituraXLib"ECF32M.DLL"(ByVal RelGer As Byte) As Long Parâmetros: RelGer: Indica se o cupom de Leitura X conterá ou não o Relatório Gerencial. − RelGer = '0' (30h) - Não haverá Relatório Gerencial após a Leitura X; − RelGer = '1’ (31h) - Relatório Gerencial habilitado após a emissão da Leitura X. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 36 / 46 CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *LEITURAX)( void ); char RelGer; int ret; LEITURAX pLeituraX; RelGer=‘1’; pLeituraX = (LEITURAX) GetProcAddress(h, "LeituraX") ;ret = pLeituraX (RelGer); Observações: − Caso o parâmetro “RelGer” possua o valor 0 (Null), não haverá relatório gerencial. − Este valor mantém a compatibilidade com as versões anteriores da dll. 71. Como usar a Função ReducaoZ()? Função: ReduçãoZ() Descrição: Realiza o fechamento do dia e gera um registro na Memória Fiscal. Caso a opção de Relatório Gerencial estiver habilitada, o ECF entrará automaticamente em modo não fiscal após a emissão do cupom de Redução Z. Neste caso, a impressão é livre e limitada a 10 minutos. Este cupom deverá ser encerrado pela função EncerrraCupomNaoFiscal(). Sintaxe C: int FAR PASCAL ReducaoZ( char RelGer ); Sintaxe VB: Declare Function ReducaoZ Lib "ECF32M.DLL" ( ByVal RelGer As Byte ) As Long Parâmetros: RelGer: Indica se o cupom de Redução Z conterá ou não o Relatório Gerencial. − RelGer = '0' (30h) - Não haverá Relatório Gerencial após a Redução Z; − RelGer = '1’ (31h) - Relatório Gerencial habilitado após a emissão da Redução Z. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 37 / 46 Exemplo: typedef int (FAR PASCAL *REDUCAOZ) (void); char RelGer; int ret; REDUCAOZ pReducaoZ; RelGer=‘1’; pReducaoZ = (REDUCAOZ) GetProcAddress(h, "ReducaoZ") ; ret = pReducaoZ (RelGer); Observações: Caso o parâmetro “RelGer” possua o valor 0 (Null), não haverá relatório gerencial. Este valor mantém a compatibilidade com as versões anteriores da dll. 72. Como usar a Função ImprimeValidacao()? Função: ImprimeValidacao() Descrição: É usado para realizar uma autenticação em qualquer documento. A autenticação é aceita após informar a forma de pagamento e antes de encerrar o Cupom Fiscal. Imprime uma linha de validação, sendo a segunda linha opcional. Este comando só será habilitado caso um valor tenha sido previamente registrado. Pode-se repetir até quatro autenticações para um mesmo valor, com os campos de comentário da primeira e segunda de forma livre. Sintaxe C: int FAR PASCAL ImprimeValidacao ( char *Leg ,char *LinhaOp); Sintaxe VB: Declare Function ImprimeValidacao Lib "ECF32M.DLL" (ByVal Leg As String,ByVal LinhaOp As String) As Long Parâmetros: Leg: Campo de comentário da 1a linha de autenticação (5s). LinhaOp: Segunda linha de comentário (40/48s).Caso o parâmetro seja uma string nula (LinhaOp = Null), não será impressa a segunda linha opcional. Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 38 / 46 CIF_EMEXECUCAO Exemplo: typedef int (FAR PASCAL *IMPRESSAO) (void); int ret;IMPRESSAO pImprimeValidacao; pImprimeValidacao = (IMPRESSAO) GetProcAddress(h, "ImprimeValidacao"); ret = pImprimeValidacao (“PAGO ”,”2a linha de autenticacao livre ” ); 73. Como usar a Função ImprimeCheque()? Função: ImprimeCheque() Descrição: Imprime o cheque de acordo com o parâmetro valor. Os campos do extenso do valor do cheque e o extenso do mês serão preenchidos cada linha será impressa imediatamente “após” o avanço do papel, programado através do parâmetro lx, onde: − avanço = avanço x 1/160 polegadas O primeiro avanço é calculado a partir do topo da área útil de impressão do cheque. As dimensões máximas estão especificadas no Apêndice. Nota: − − É permitido o cancelamento da impressão de cheque, porém o mesmo deve estar posicionado para impressão. Caso o nome da moeda corrente não tenha sido programada pela Função ProgMoeda(), Prog_Moeda() ou ProgramaMoeda() , se assumirá a string default “REAL” e “REAIS”. Sintaxe C: int FAR PASCAL ImprimeCheque(char l1 ,char c1,char l2 ,char c2,char l3 ,char c3,char l4 ,char l5,char c5,char l6,char l7,char c8,char *Valor,char *Favorecido,char *Local,char SetAno,char *Data,char *Com1,char *Com2); Sintaxe VB: Declare Function ImprimeCheque Lib “ECF32M”.DLL” (ByVal l1 As Byte ,ByVal c1 As Byte,ByVal l2 As Byte ,ByVal c2 As Byte,ByVal l3 As Byte ,ByVal c3 As Byte,ByVal l4 As Byte ,ByVal l5 As Byte,ByVal c5 As Byte,ByVal l6 As Byte,ByVal l7 As Byte,ByVal c8 As Byte,ByVal *Valor As String,ByVal *Favorecido As String,ByVal *Local As String,ByVal SetAno As Byte,ByVal *Data As String,ByVal *Com1 As String,ByVal *Com2 As String Parâmetros: lx: Programação de avanço de linha a ser executada antes da impressão do parâmetro enviado; cx: Coluna de início de impressão do parâmetro a ser impresso; lx e cx representam os seguintes campos: − l1 c1 - linha e coluna do valor do cheque Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 39 / 46 − l2 c2 - linha e coluna da 1a linha do extenso do valor do cheque; − l3 c3 - linha e coluna da 2a linha do extenso do valor do cheque; − l4 - linha do favorecido; − l5 c5 - linha e coluna do campo da localização e data; − l6 - linha da 1a linha de comentário; − l7 - linha da 2a linha de comentário; − c8 - coluna do campo do ano; Valor: Valor do cheque a ser impresso, sendo 12 para a parte inteira e 2 decimais (14n). Favorecido: Linha do campo do favorecido (80s). Local: Localização (cidade) (20s). SetAno: Parâmetro de impressão do ano (1s): − set = ‘0’ (30h) - o ano será impresso com apenas o último dígito (‘8’); − set = ‘1’ (31h) - o ano será impresso com dois dígitos (‘98’); − set = ‘2’ (32h) - o ano será impresso com quatro dígitos (‘1998’); Data: Data atual (2d2m2a). Com1: Primeira linha de comentário (80s). Com2: Segunda linha de comentário (80s). Retorno: CIF_OK CIF_ERR_SERIAL CIF_TIMEOUT CIF_EMEXECUÇÃO Exemplo: typedef int (FAR PASCAL *IMPCHEQUE) ( unsigned char, char* ); int ret; Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 40 / 46 char linha[41]; IMPCHEQUE pImprimeCheque; pImprimeCheque=(IMPCHEQUE)GetProcAddress(h,"ImprimeCheque"); ret=pImprimeCheque( 0x28,0x3d, // l1 e c1 valor do cheque 0x34,0x0a, // l2 e c2 1a linha extenso 0x30,0x06, // l3 e c3 2a linha extenso 0x30, // l0x30,0x22, // l5 e c5 localizacao e data 0x10, // l6 1a linha comentario 0x10, // l7 2a linhacomentario 0x4c, //c8campodoano "01004501501290", //Valor(14dig) "favorecido1234567890123456789012345678901234567890123456789012345678901234567fim", "SAOPAULO", '2', "110100", "comentario1234567890123456789012345678901234567890123456789012345678901234567fim", "comentario1234567890123456789012345678901234567890123456789012345678901234567fim" ); 74. Como verificar o estado de pagamento de um Cupom Fiscal em aberto? seguir: Para solicitar à Impressora um estado de um pagamento de um cupom fiscal aberto, utilizamos os comandos a Utilizando a ECF32M.DLL: “97”: Para executar o comando via DLL ECF32M.DLL da Diebold, você deve utilizar a função EcfPar() com o parâmetro EcfPar( "97" ) Função EsperaResposta(): Após o envio de qualquer função, use a função EsperaResposta(). Essa função obtém a resposta (código de retorno e mensagem) de um comando enviado ao ECF. Para isso, é necessário passar como parâmetro um buffer de recepção dessa resposta. Verifique se o buffer enviado como parâmetro possui espaço reservado em memória suficiente para receber a resposta do ECF. Veja que o tamanho deste buffer varia conforme o tamanho da resposta a ser obtida do ECF. Em leituras seriais como ECFPar() um espaço reservado de 500 bytes é necessário para receber esse tipo de resposta do ECF. Pode-se reservar um tamanho fixo padrão de 2000 bytes, que é uma área de memória suficiente para receber qualquer resposta do ECF. Exemplo em Delphi da função EsperaResposta(): function FuncaoParaEsperarReposta():Integer; Var charBuffer: array [0..2000] of Char; begin retorno := EsperaResposta(charBuffer); end; Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 41 / 46 Para comando direto (sem utilizar driver ou DLL): Para enviar o comando através de programação direta: <STX> <ESC> "$34M97” <ETX> Para tratar a resposta através de programação direta: <STX> <ESC> "+NNNNRRRRRRRRRRRRRCC-" <ETX> onde: + = Indicador de sucesso do envio e leitura do comando, em caso de retorno do caracter “+” então o comando foi executado com sucesso e no caso de retornar o caracter “-“ significa que o ocorreu um erro no processo. NNNN= indica o número seqüencial de comandos executados na impressora (4 dígitos) RRRRRRRRRRRRR = valor inteiro do pagamento (13 dígitos) CC = valor decimal do pagamento, os centavos no caso (2 dígitos) - = indicador de crédito ou débito, se “-“ então o cupom ainda não foi completamente quitado, se “+” então deve ser efetuada a operação de troco. Driver DRVECF.SYS: Para enviar o comando através do driver DRVECF.SYS: 1. Abrir o arquivo do driver: HANDLE = FOPEN( "DRVCIF@C" ,FO_READWRITE ) 2. Escrever no arquivo do driver o comando a ser executado no ECF: Comando = Chr(27) + "$34M97" Retorno = FWRITE( HANDLE ,@Comando ,LEN( Comando ) ) 3. Ler o retorno da execução do comando no arquivo do driver: Buffer = SPACE( 2000 ) Retorno = FREAD( HANDLE ,@Buffer ,2000 ) Para tratar a resposta através do driver DRVECF.SYS, interprete o conteúdo da variável Buffer: "+NNNNRRRRRRRRRRRRRCC-" onde: + = Indicador de sucesso do envio e leitura do comando, em caso de retorno do caracter “+” então o comando foi executado com sucesso e no caso de retornar o caracter “-“ significa que o ocorreu um erro no processo. NNNN= indica o número seqüencial de comandos executados na impressora (4 dígitos) RRRRRRRRRRRRR = valor inteiro do pagamento (13 dígitos) CC = valor decimal do pagamento, os centavos no caso (2 dígitos) - = indicador de crédito ou débito, se “-“ então o cupom ainda não foi completamente quitado, se “+” então deve ser efetuada a operação de troco. 4. Fechar o arquivo do driver ao finalizar o aplicativo: FCLOSE(HANDLE) Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 42 / 46 Exemplo da resposta: "+9999000000000123450-", onde "0000000001234” é o valor Inteiro, “50” são os centavos e “-“ quer dizer que esse é o débito do cupom, ou seja, é o valor que falta ser pago, se esse indicador de crédito fosse ”+” estaria sinalizando que o valor informado seria o troco do cupom aberto. Nesse exemplo o valor do débito é de R$ 1234,50. 75. Como utilizar programação direta em impressoras fiscais? Programação Direta usando o protocolo STX/ETX Para acessar a porta serial diretamente, consulte o Manual de Programação da Impressora Fiscal para saber os comandos. Em nosso site, a seção Perguntas e Respostas (entre através da seção Download ou Suporte Técnico) tem muita coisa sobre a formatação dos comandos. Dicas: 1) Sempre observe a configuração da comunicação serial do ECF, geralmente está configurado assim: Protocolo: STX/ETX Velocidade: 9600 bps Paridade: Nenhuma (Sem) Bits de Parada: 1 Bits de Dados: 8 ACK/NACK: Desabilitado BCC: Desabilitado 2) Para implementar o protocolo STX/ETX: ** Enviando o comando: observe que o primeiro caracter obrigatoriamente deve ser o <STX> - chr(02) - e o último caracter deve ser o <ETX> - chr(03). O ECF só analisa o comando após receber o caracter <ETX>. ** Recebendo a resposta: observe que obrigatoriamente o primeiro caracter a ser tratado pelo seu aplicativo deve ser o <STX> - chr(02) - e o último deve ser o <ETX> - chr(03). Seu aplicativo deve analisar a resposta, somente depois de receber o <ETX>. 3) Para enviar um comando: <STX>+<ESC>+"$" + comando + <ETX> ** Leitura X: <STX> <ESC> "$150" <ETX> ** Leitura X: chr(02) + chr(27) + "$150" + chr(03) 4) Para receber a resposta: <STX> + sinal + sequencial + cod.erro + mensagem + <ETX> Onde: * sinal: pode ser "+" (Sucesso), "-" (Erro) ou "S" (Status) * sequencial: 4 números sequencias para comandos tratados pelo ECF * cod.erro: 2 números que indicam o código da resposta -> "00" = Sucesso ; >00 = Erro * mensagem: mensagem resumida indicando o erro (ou Sucesso). Em comandos de leituras seriais, a resposta virá nesse campo. Exemplos: Sucesso: <STX> "+023400Sucesso" <ETX> Erro: <STX> "-023410Erro qualquer" <ETX> 5) Lembre-se: Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 43 / 46 <STX> = Chr(02) <ETX> = Chr(03) <ESC> = Chr(27) Exemplos mais comuns: Leitura X Sem Relatório Gerencial: <STX>ESC$150<ETX> Abrir cupom fiscal: <STX>ESC$10<ETX> Venda de item: <STX>ESC$11G000044800000000109T01%0000un2008800000273BATATA78901234567890<ETX> Totalizar Cupom: <STX>ESC$060000<ETX> Pagamento: <STX>ESC$0701000000000000100<ETX> Fechar Cupom Fiscal: <STX>ESC$08000<ETX> Cancelar Cupom Fiscal Anterior: <STX>ESC$07<ETX> Abrir Cupom Não Fiscal Vinculado: <STX>ESC$20<ETX> Impressão de Linhas não Fiscais: <STX>ESC$2601234567890123456789012345678901234567890<ETX> Encerrar Comprovante Não Fiscal: <STX>ESC$21<ETX> Emitir leitura X com relatório gerencial: <STX>ESC$151<ETX> Enviar o comando de linhas não fiscais para montar Rel Ger: <STX>ESC$26112345678901234567890<ETX> Fechar Rel Ger: <STX>ESC$21<ETX> 76. Contador de Ordem de Operações (COO) X Contador de Cupons Fiscais (CCF) 1. Para obter a QUANTIDADE de cupons ficais emitidos no dia até determinado momento: Veja na Leitura X: CONT CF INICIAL: Contador de cupons fiscais inicial do dia CONT CF FINAL: Contador de cupons fiscais final do dia Observe que, somente a abertura de Cupom Fiscal altera os contadores acima. A quantidade de cupons ficais emitidos até um determinado momento durante o dia é a subtração do CONT CF FINAL do CONT CF INICIAL somado de 1: QTDE DE CUPONS FISCAIS EMITIDOS ATÉ O MOMENTO = (CONT CF FINAL - CONT CF INICIAL) +1 Exemplo: CONT CF INICIAL CONT CF FINAL 0000005 0000007 Quantidade de Cupons Fiscais emitidos até o momento: (7 - 5) + 1 = 3 Na Redução Z e em leituras seriais os contadores de cupons fiscais irão se manter inalterados: Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 44 / 46 CONT CF INICIAL CONT CF FINAL 0000005 0000007 Em todas as Leitura X e em leituras seriais antes do primeiro Cupom Fiscal do dia, os contadores de cupons fiscais irão se manter inalterados: CONT CF INICIAL CONT CF FINAL 0000005 0000007 Após o primeiro cupom fiscal do dia, os contadores de cupons ficais ficarão igualados: Antes do primeiro cupom fiscal do dia: CONT CF INICIAL CONT CF FINAL 0000005 = 000008 0000007 + 1 = 000008 Após o primeiro cupom fiscal do dia: CONT CF INICIAL CONT CF FINAL 0000008 0000008 Pela regra para obter a quantidade de cupons ficais emitidos durante o dia até o momento teremos: (CONT CF FINAL - CONT CF INICIAL) +1 (000008 - 000008) + 1 = 1 Veja que é exatamente a quantidade de cupons que foram emitidos até o momento, ou seja, um único Cupom Fiscal. Para obter o CONT CF FINAL e CONT CF INICIAL através dos comandos da impressora, use: <ESC> + "$" + "34M82" Resposta: "+" + "nnnn" + "111111" + "222222" "+" : indica sucesso na leitura dos parâmetros "nnnn" : indica o número sequencial de comandos executados na impressora "111111": indica o CONT CF FINAL com 6 dígitos "222222": indica o CONT CF FINAL com 6 dígitos Para saber o NÚMERO do Cupom Fiscal Inicial e Final: Veja a Leitura X: COO = Contador de Ordem de Operações atual. Este contador é incrementado em todas as operações em que é impresso o clichê do cliente (razão social), como por exemplo: Redução Z Leitura X Abertura de Cupom fiscal Abertura de Cupom não fiscal vinculado ou não vinculado Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 45 / 46 Cancelamento de cupom não fiscal não vinculado Para saber o número do Cupom Fiscal Inicial e Final do dia, é necessário que o aplicativo obtenha o COO da Impressora Fiscal em determinados momentos: Após abrir o primeiro Cupom Fiscal do dia Após abrir o último Cupom Fiscal do dia Para obter o COO através dos comandos da impressora use: <ESC> + "$" + "34M41" Resposta: "+" + "nnnn" + "111111" "+" : indica sucesso na leitura dos parâmetros "nnnn" : indica o número sequencial de comandos executados na impressora "111111": indica o COO atual. 77. Como eu posso testar a Impressora Fiscal? Recomendamos que use um utilitário disponível em nosso site chamado <MecafECF.exe> para fazer alguns testes. Instruções: Para fazer download acesse: • <www.diebold.com.br> • Seção Download • Escolha "Impressora Fiscal IF113I" • Escolha MecafECF.EXE • Este utilitário não necessita de qualquer Driver ou DLL para se comunicar com o ECF; • Deve ser usado em uma janela Prompt do DOS; • A porta de comunicação defualt é a COM1; • Para mudar a porta de comunicação para COM2, digite: MecafEcf P=2 <ENTER> • Ligue o ECF, e conecte o cabo de comunicação padrão RS232. • Para testar a transmissão de comandos para o ECF, solicite a emissão de uma Leitura X através do menu "Operações Fiscais" • Se a Leitura X não foi impressa, o sinal de transmissão está com problema; • Se a Leitura X foi impressa, o sinal de transmissão está Ok; • Para testar a recepção de respostas do ECF, use a última opção do Menu: "Diagnóstico do ECF" • Se ocorrer o erro de Timeout, significa que pode haver algum problema no sinal de recepção da resposta do ECF. Se a tela de diagnóstico de ECF, foi montada sem qualquer erro, o sinal de recepção está Ok; • Havendo algum problema, verifique o cabo de comunicação, a saída serial do micro, a saída serial do ECF; Verifique na tela de diagnóstico, se há algum erro com o ECF. Caso ocorra Timeout, o ECF está incomunicável. Diebold – Impressoras Impressoras Fiscais - Perguntas e Respostas mais Freqüentes Rev. 1.04 Página: 46 / 46