Você está na página 1de 90

Biblioteca para CLIPPER

1 - Biblioteca CL_ECF.LIB ..........................4


1.1 - UTILIZANDO AS BIBLIOTECAS ......................................... 4 1.2 - CDIGOS DE RETORNO ............................................... 4 1.3 OBSERVAES GERAIS ............................................... 5
1.3.1 - Fluxograma da operao ................................................. 5 1.3.2 - Observao geral sobre valores numricos ............................... 5

2 - Programao de dados ...........................6


2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 ACERTANDO A DATA E A HORA ......................................... 6 CARGA DA TABELA DE ALQUOTAS (PARA ECF VERSO 2.04)................... 7 CARGA DA TABELA DE ALQUOTAS (PARA ECF VERSO 3.0X) ................... 9 CABEALHO DO ESTABELECIMENTO (PARA ECF VERSO 2.04).................. 11 CABEALHO DO ESTABELECIMENTO (PARA ECF VERSO 3.0X) .................. 12 CODIFICAO DO GRANDE TOTAL ...................................... 13 TAMANHO DO CDIGO DE PRODUTO ...................................... 14 PROGRAMAO DOS COMPROVANTES NO FISCAIS (SOMENTE VERSO 3.0X) .......... 15 PROGRAMAO DAS FORMAS DE PAGAMENTO (SOMENTE VERSO 3.0X) .............. 17

3 - Transao de venda e cupons no fiscais .......18


3.1 - IMPRESSO DO CABEALHO ........................................... 18 3.2 - INICIALIZA CUPOM NO FISCAL ....................................... 19 3.3 - INICIALIZA CUPOM VINCULADO (PARA ECF VERSO 3.0X) ................... 20 3.4 - VENDA DE PRODUTO COM DADOS FORMATADOS ............................... 21 3.5 - VENDA FORMATADA COM TRS DGITOS (SOMENTE VERSO 3.0X) ................ 23 3.6 - VENDA DESCRITIVA COM 60 CARACTERES................................. 26 3.7 - VENDA DESCRITIVA COM 78 CARACTERES................................. 27 3.8 - CANCELA/DESCONTO DE ITEM ......................................... 28 3.9 - CANCELAMENTO DE ITEM ............................................ 29 3.10 - CANCELAMENTO DE ITEM ESPECFICO................................... 30 3.11 - PAGAMENTO VISTA OU CANCELA (PARA ECF VERSO 2.04)................. 31 3.12 - PAGAMENTO PRAZO OU CANCELA (PARA ECF VERSO 2.04)................. 33 3.13 - PAGAMENTO COM FORMAS PROGRAMADAS (PARA ECF VERSO 3.0X).............. 34 3.14 - TRANSFERNCIA DE VALOR (PARA ECF VERSO 3.0X)...................... 36 3.15 - SUBTOTAL ..................................................... 37 3.16 - ACRSCIMO/DESCONTO NO SUBTOTAL ................................... 38 3.17 - PREENCHIMENTO DE CHEQUE (ECF DUAS ESTAES) ........................ 40 3.18 3.19 3.20 3.21
Outras funes (ImpCheque e Imprecheq): ....................................... 40 - IMPRIME LINHA NO CUPOM .......................................... 43 - CANCELA TRANSAO .............................................. 44 - FINALIZANDO UM CUPOM ........................................... 45 - FINALIZANDO UM CUPOM COM ATIVAO DE VNCULO (ECFS VERSO 3.0X)........ 46

4 - Relatrios ....................................47
4.1 - LEITURA "X" ................................................... 47 4.2 - LEITURA "X" GERENCIAL (PARA ECF VERSO 3.0X)....................... 48 4.3 - REDUO "Z" ................................................... 49

Verso do manual: AC 06/00

4.4 4.5 4.6 4.7 4.8

REDUO "Z" GERENCIAL (PARA ECF VERSO 3.0X)....................... 50 LEITURA "X" SERIAL ............................................. 51 LEITURA DA MEMRIA FISCAL (COMANDO 1) .............................. 54 LEITURA DA MEMRIA FISCAL ( COMANDO 2 ) ............................ 57 LEITURA DE DISPONIBILIDADE DA MEMRIA FISCAL ......................... 60

5 - Auxiliares ....................................61
5.1 - CANCELANDO UM CUPOM J FINALIZADO .................................. 61 5.2 - LINE FEED (AVANANDO LINHAS) ..................................... 61 5.3 - ABERTURA DA GAVETA .............................................. 61 5.4 - STATUS DA IMPRESSORA ............................................ 62 5.5 - STATUS DO CUPOM ................................................ 64 5.6 - STATUS DAS ALQUOTAS (PARA ECF VERSO 3.0X) ........................ 66 5.7 - STATUS DOS PAGAMENTOS (PARA ECF VERSO 3.0X) ....................... 68 5.8 - STATUS DOS COMPROVANTES NO FISCAIS ( ECF VERSO 3.0X) ............... 70 5.9 - STATUS DO USURIO ( PARA ECF VERSO 3.0X ) ......................... 73 5.10 - STATUS DO EQUIPAMENTO ( PARA ECF VERSO 3.0X )..................... 76 5.11 - STATUS DO COMPROVANTES VINCULADOS ( PARA ECF VERSO 3.0X ) ........... 77 5.12 - STATUS DO TROCO ( PARA ECF VERSO 3.0X ) ......................... 79 5.13 - IMPRIME LINHA DE AUTENTICAO .................................... 80

Anexo A - Cdigos de retorno ......................81


1 - Nmero de parmetros errado (-100D) ....................................... 2 - Tipo de parmetro errado (-101D) .......................................... 3 - Falha ao abrir o device driver (-1D) ...................................... 4 - Comando OK (00D - 00H) .................................................... 5 - Erro de checksum (01D - 01H) .............................................. 6 - Timeout RX (02D - 02H) .................................................... 7 - Memria insuficiente (03D - 03H) .......................................... 8 - Timeout TX (04D - 04H) .................................................... 9 - Erro de overrun (10D - 0AH) ............................................... 10 - Erro de paridade (11D - 0BH) ............................................. 11 - Erro de overrun e paridade (12D - 0CH) ................................... 12 - Erro de framing (13D - 0DH) .............................................. 13 - Erro de sobreposio e formato (14D - 0EH) ............................... 14 - Erro de paridade e sobreposio (15D - 0FH) .............................. 15 - Erro mltiplo de comunicao (16D - 10H) ................................. 16 - Erro de cadastro dos bancos (20D - 14H) .................................. 17 - Banco no cadastrado (21D - 15H) ......................................... 18 - Moeda no cadastrada (22D - 16H) ......................................... 19 - Extenso excedido (23D - 17H) ............................................. 20 - Erro de memria (30D - 1EH) .............................................. 21 - Erro de arquivo (31D - 1FH) .............................................. 22 - Em venda (65D - 41H) ..................................................... 23 - Limite de cabealho alcanado (66D - 42H) ............................... 24 - Cabealho impresso (68D - 44H) ........................................... 25 - No comeou venda (69D - 45H) ............................................ 26 - Valor invlido (70D - 46H) ............................................... 27 - Valor a menor (73D - 49H) ................................................ 28 - Valor a maior (74D - 4AH) ................................................ 29 - Limite de Redues Z atingido (78D - 4EH) ................................ 30 - Erro de checksum (79D - 4FH) ............................................. 31 - Palavra reservada (80D - 50H) ............................................ 32 - Papel prximo do fim (81D - 51H) ......................................... 33 - Data no localizada (82D - 52H) .......................................... 34 - Erro de memria fiscal (84D - 54H) ....................................... 35 - Perda da RAM (85D - 55H) ................................................. 36 - No houve pagamento (86D - 56H) .......................................... 37 - Cupom j totalizado (87D - 57H) .......................................... 38 - No pode cancelar venda (88D - 58H) ...................................... 39 - Comando no completo (89D - 59H) ......................................... 81 81 81 81 82 82 82 82 82 82 82 82 82 82 82 82 83 83 83 83 83 83 83 83 83 83 83 83 84 84 84 84 84 84 84 84 84 84 84

Verso do manual: AC 06/00

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98

Cupom aberto (90D - 5AH) ................................................. No h cupom a cancelar (91D - 5BH) ...................................... Tabela de taxa no inicializada (92D - 5CH) .............................. Seleo de taxa invlida (94D - 5EH) ..................................... Cancelamento invlido (95D - 5FH) ........................................ Nada a retificar (96D - 60H) ............................................. Reduo no localizada (97D - 61H) ....................................... Cabealho no carregado (98D - 62H) ...................................... Impressora em interveno tcnica (99D - 63H) ............................ Impressora em perodo de venda (100D - 64H) .............................. Somente com interveno tcnica (101D - 65H) ............................. Desconto invlido (102D - 66H) ........................................... Limite de linhas alcanado (103D - 67H) .................................. Somente aps o total (104D - 68H) ........................................ Dados invlidos (105D - 69H) ............................................. Taxa no disponvel (106D - 6AH) ......................................... Comando inexistente (107D - 6BF) ......................................... No houve o fechamento do dia (108D - 6CH) ............................... Erro irrecupervel (109D - 6DH) .......................................... Alterao invlida (110D - 6EH) .......................................... Data j alterada (111D - 6FH) ............................................ Alquota no carregada (112D - 70H) ...................................... Fechamento dirio no realizado (113D - 71H) ............................. Abertura do dia invlida (114D - 72H) .................................... Fechamento j realizado (115D - 73H) ..................................... Ajuste somente de +/- 1 hora (116D - 74H) ................................ Acrscimo invlido (117D - 75H) .......................................... Pagamento incompleto (118D - 76H) ........................................ Cheque no posicionado (119D - 77H) ...................................... Seqncia de cheque incorreta (120D - 78H) ............................... Erro de gravao na MEF (121D - 79H) ..................................... Comando fora de seqncia (126D - 7EH) ................................... Autenticao sem papel (127D - 7FH) ...................................... Queda de energia (132D - 84H) ............................................ Data invlida (133D - 85H) ............................................... Item fora da faixa (134D - 86H) .......................................... Item no vendido (135D - 87H) ............................................ Parmetro errado (136D - 88H) ............................................ Limite de valor ultrapassado (137D - 89H) ................................ Relgio Fora de Operao (138D - 8AH) .................................... Pagamento no definido (139D - 8BH) ...................................... Limite de autenticao excedido (140D - 8CH) ............................. Comando de venda invlido (141D - 8DH) ................................... Posio j programada (142D - 8EH) ....................................... Posio inexistente (143D - 8FH) ......................................... Cupom vinculado pendente (144D - 90H) .................................... Excesso de cupons vinculados (145D - 91H) ................................ No h cupom vinculado pendente(146D - 92H) .............................. Mudana de horrio j solicitada (147D - 93H) ............................ Cristal do relgio no oscila (148D - 94H) ............................... Pagamentos no inicializados (149D - 95H) ................................ Inscrio Estadual invlida (150D - 96H) ................................. Extenso excedido (151D - 97H) ............................................ Cupom est com valor zerado (152D - 98H) ................................. Codificao j programada (153D - 99H) ................................... No h vinculados a cupom (154D - 9AH) ................................... Reduo no permitida (155D - 9BH) ....................................... Caracter repetido na codificao (156D - 9CH) ............................ Caracter proibido na codificao (157D - 9DH) ............................

85 85 85 85 85 85 85 85 85 85 85 85 86 86 86 86 86 86 86 86 86 86 86 86 86 87 87 87 87 87 87 87 87 87 87 87 87 88 88 88 88 88 88 88 88 88 88 88 89 89 89 89 89 89 89 89 90 90 90

Verso do manual: AC 06/00

1 - Biblioteca CL_ECF.LIB
A biblioteca CL_ECF.LIB rene as funes para aplicaes em linguagem CLIPPER que implementam os comandos descritos no manual de programao da impressora. No enatanto, ela sozinha no basta, como veremos a seguir. Existem duas outras bibliotecas que devem ser linkadas junto com a CL_ECF, totalizando trs bibliotecas.

1.1 - Utilizando as bibliotecas


Para que seu aplicativo em Clipper possa comunicar-se com a impressora fiscal SCHALTER, voc precisa utilizar as bibliotecas CLIB, CL_ECF, C_ECF_L (preferencialmente nesta ordem). Veja a seguir o exemplo de link utilizando o "RTLINK": rtlink fi <NomePrograma> li CLIB, CL_ECF, C_ECF_PL Se o seu aplicativo usa apenas os 640 Kb de memria convencional, ou seja, se ele roda em modo real, voc deve utilizar as seguintes bibliotecas: CLIB.LIB, CL_ECF.LIB, C_ECF_L.LIB Se o seu aplicativo usa memria extendida, ou seja, se ele roda em modo protegido, ento voc deve utilizar as seguintes bibliotecas: CLIB.LIB, CL_ECF.LIB, C_ECF_PL.LIB Se voc estiver usando o EXOSPACE, no esquea de linkar junto a biblioteca EXOSPACE.LIB. Se o linker no estiver incluindo ela automaticamente, voc ter que faz-lo manualmente. Apenas inclua a biblioteca EXOSPACE.LIB aps a ltima biblioteca do exemplo acima, conforme mostrado abaixo: rtlink fi <NomePrograma> li CLIB, CL_ECF, C_ECF_PL, EXOSPACE.LIB

IMPORTANTE: A ordem de linkedio das bibliotecas no deve ser alterada. Siga a mesma ordem mostrada nos exemplos acima, para evitar erros de linkedio.
Outra observao: se voc for usurio de Clipper 5.3, ou posterior, temos bibliotecas diferentes para este caso. Estas bibliotecas seriam: CL_503, C_ECF_PL, CLIB503.

1.2 - Cdigos de retorno


A impressora sempre retorna um valor inteiro que corresponde ao RETORNO DE ERRO da operao realizada. Para o perfeito funcionamento desta biblioteca de funes foram definidos alguns novos cdigos de retorno, cdigo (-100D) e o cdigo (-101D). Os cdigos de erro encontram-se em um anexo, ao final deste mesmo documento.

Verso do manual: AC 06/00

1.3 Observaes gerais


1.3.1 - Fluxograma da operao
Veja abaixo um pequeno fluxograma de como funciona o uso das bibliotecas SCHALTER. Observe que as bibliotecas necessitam que o driver ECF.SYS (no caso de modo real) ou o ECF_P.SYS (no caso de modo protegido) estejam instalados e residentes na memria do micro.

Seu aplicativo

Funo da biblioteca

Biblioteca (rotinas internas)

Driver ECF.SYS ou ECF_P.SYS

Porta serial COM1 ou COM2

Impressora fiscal
Para instalar o driver na memria do micro, a seguinte linha precisa ser adicionada ao CONFIG.SYS do computador (supondo que o driver ECF.SYS esteja na raiz do driver C) : DEVICE=ECF.SYS /C:1 /V:9600 /P:p Se voc for utilizar a porta serial COM2 a linha fica assim: DEVICE=ECF.SYS /C:2 /V:9600 /P:p

Aps a colocao desta linha, o micro deve ser reinicializado para a efetiva carga do driver na memria.
1.3.2 - Observao geral sobre valores numricos
Nas funes em CLIPPER existem parmetros com valores que possuem dois dgitos decimais. O valor deve ser fornecido com alinhamento direita, sem ser colocado o ponto ou vrgula decimal. Por exemplo, o valor "3,45" deve ser expresso como "345", e "12.00" como "1200".

Verso do manual: AC 06/00

2 - Programao de dados
2.1 - Acertando a data e a hora
Funo: AcertaData (dia, ms, ano, hora, min, seg) Parmetro: Recebe como parmetros os valores inteiros correspondentes ao dia, ms, ano, hora, minuto e segundo.

Exemplo:
Static Function _AcertaData() local cmd, Janela, cor, Data, Hora, Minuto, Segundo, ret, dia, mes, ano cor janela Data Hora Minuto Segundo @ 9, @ 10, @ 10, @ 10, @ 10, read 33 33 39 42 45 := := := := := := setcolor( cJanela ) FazBox( 7, 27, 13, 62, "Acerta Data e Hora", cJanela, 3, cTitulo ) date() val( substr( time(), 1, 2 ) ) val( substr( time(), 4, 2 ) ) val( substr( time(), 7, 2 ) ) "Data:" get Data pict "@K" "Hora: " + time() Hora pict "99" Minuto pict "99" Segundo pict "99"

say say get get get

if( lastkey() != K_ESC ) Data Dia Mes Ano := := := := dtoc( Data ) val( substr( Data, 1, 2 ) ) val( substr( Data, 4, 2 ) ) val( substr( Data, 7, 2 ) )

@ 12, 33 say "Aguarde..." ret := AcertaData( Dia, Mes, Ano, Hora, Minuto, Segundo ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

Verso do manual: AC 06/00

2.2 - Carga da tabela de alquotas (para ECF verso 2.04)

Funo: CargaTbAlq(Taxa, Alquota) Parmetros: # Taxa Valor numrico de 0 a 9 que identifica a posio do cadastro da taxa. # Alquota String com o valor da alquota. Para a formao deste parmetro lembre-se de que no pode ser utilizado vrgulas ou pontos. Por exemplo, para cadastrar uma alquota de 3.30%, o parmetro Alquota deve valer 330.

Exemplo:
Static Function _ProgramandoAliquotas( New ) local Janela, cor, Taxa, aliq, ret, n, i, j, tipo_TAX local Aliquota1, Aliquota2, Aliquota3, Aliquota4, Aliquota5, Aliquota6 local Aliquota, Aliquota10, Aliquota7, Aliquota8, Aliquota9 local TipoAliq0, TipoAliq1, TipoAliq2, TipoAliq3, TipoAliq4, TipoAliq5 local TipoAliq6, TipoAliq7,TipoAliq8,TipoAliq9 cor := setcolor( cJanela ) janela := FazBox( 6, 30, 25, 71, "Tabela de Taxas", cJanela, 3, cTitulo ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 07, 07, 08, 08, 09, 09, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 say say say say say say say say say say say say say say say say say say say say "Taxa 0 -> "Aliquota: "Taxa 1 -> "Aliquota: "Taxa 2 -> "Aliquota: "Taxa 3 -> "Aliquota: "Taxa 4 -> "Aliquota: "Taxa 5 -> "Aliquota: "Taxa 6 -> "Aliquota: "Taxa 7 -> "Aliquota: "Taxa 8 -> "Aliquota: "Taxa 9 -> "Aliquota: TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get TIPO: " get " get TipoAliq0 Aliquota0 pict "@K " get TipoAliq1 Aliquota1 pict "@K " get TipoAliq2 Aliquota2 pict "@K " get TipoAliq3 Aliquota3 pict "@K " get TipoAliq4 Aliquota4 pict "@K " get TipoAliq5 Aliquota5 pict "@K " get TipoAliq6 Aliquota6 pict "@K " get TipoAliq7 Aliquota7 pict "@K " get TipoAliq8 Aliquota8 pict "@K " get TipoAliq9 Aliquota9 pict "@K

99.99" 99.99" 99.99" 99.99" 99.99" 99.99" 99.99" 99.99" 99.99" 99.99"

read if( lastkey() != K_ESC ) if( C_Conf( 7, 10, "Programar Impressora?", "SN" ) == "S" ) @ 23, 43 say "Aguarde..." for taxa=0 to 15 n := FCOUNT() PRIVATE nome[n], tipo[n], tamanho[n], decimais[n] AFIELDS( nome, tipo, tamanho, decimais ) j = (2*(taxa)) + 18

Verso do manual: AC 06/00

i = j + 1 tipo_TAX := FIELDGET(j) Aliquota := FIELDGET(i) if( Aliquota <> 0 ) ret := CargaTbAlq( taxa, str(Aliquota*100,4) ) endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) if( New == 0 ) use endif R_TELA( janela ) setcolor( cor ) return endif endif next endif endif if( New == 0 ) use endif R_TELA( janela ) setcolor( cor ) return NIL

Verso do manual: AC 06/00

2.3 - Carga da tabela de alquotas (para ECF verso 3.0x)


Funo: CrgAlqEx(Posicao, Tipo, Alquota) Parmetros: # Posicao String com duas posies contendo a posio a ser cadastrada a alquota e o seu tipo na tabela de programao. Assume valores de "00" at "15". # Tipo String com uma posio, correspondente ao tipo de imposto incidir. Assume "S" para ISSQN ou "T" para ICMS. # Alquota String com no mximo quatro posies, contendo o valor da alquota. Lembre-se de que para a formao deste parmetro no podem ser usadas vrgulas ou pontos. Por exemplo, para cadastrar uma alquota de 3,30%, o parmetro Alquota deve valer 330.

Exemplo:
Static Function _ProgramandoTaxas( ) local Janela, cor, Taxa, aliq, ret, n, i, j, tipo_TAX local Aliquota1, Aliquota2, Aliquota3, Aliquota4, Aliquota5, Aliquota6 local Aliquota7, Aliquota8, Aliquota9 local Aliquota, Aliquota10, Aliquot11, Aliquota12, Aliquota13, Aliquota14, Aliquota15 local TipoAliq0, TipoAliq1, TipoAliq2, TipoAliq3, TipoAliq4, TipoAliq5 local TipoAliq6, TipoAliq7,TipoAliq8,TipoAliq9 local TipoAliq10, TipoAliq11, TipoAliq12, TipoAliq13, TipoAliq14, TipoAliq15 cor := setcolor( cJanela ) janela := FazBox( 6, 30, 25, 71, "Tabela de Taxas", cJanela, 3, cTitulo ) @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 07, 07, 08, 08, 09, 09, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 54 32 say say say say say say say say say say say say say say say say say say say say say say say say say say say "Taxa 0 -> TIPO: " get TipoAliq0 valid TipoAliq0=="S".or.TipoAliq0=="T" "Aliquota: " get Aliquota0 pict "@K 99.99" "Taxa 1 -> TIPO: " get TipoAliq1 valid TipoAliq1=="S".or.TipoAliq1=="T" "Aliquota: " get Aliquota1 pict "@K 99.99" "Taxa 2 -> TIPO: " get TipoAliq2 valid TipoAliq2=="S".or.TipoAliq2=="T" "Aliquota: " get Aliquota2 pict "@K 99.99" "Taxa 3 -> TIPO: " get TipoAliq3 valid TipoAliq3=="S".or.TipoAliq3=="T" "Aliquota: " get Aliquota3 pict "@K 99.99" "Taxa 4 -> TIPO: " get TipoAliq4 valid TipoAliq4=="S".or.TipoAliq4=="T" "Aliquota: " get Aliquota4 pict "@K 99.99" "Taxa 5 -> TIPO: " get TipoAliq5 valid TipoAliq5=="S".or.TipoAliq5=="T" "Aliquota: " get Aliquota5 pict "@K 99.99" "Taxa 6 -> TIPO: " get TipoAliq6 valid TipoAliq6=="S".or.TipoAliq6=="T" "Aliquota: " get Aliquota6 pict "@K 99.99" "Taxa 7 -> TIPO: " get TipoAliq7 valid TipoAliq7=="S".or.TipoAliq7=="T" "Aliquota: " get Aliquota7 pict "@K 99.99" "Taxa 8 -> TIPO: " get TipoAliq8 valid TipoAliq8=="S".or.TipoAliq8=="T" "Aliquota: " get Aliquota8 pict "@K 99.99" "Taxa 9 -> TIPO: " get TipoAliq9 valid TipoAliq9=="S".or.TipoAliq9=="T" "Aliquota: " get Aliquota9 pict "@K 99.99" "Taxa 10 -> TIPO: " get TipoAliq10 valid TipoAliq10=="S".or.TipoAliq10=="T" "Aliquota: " get Aliquota10 pict "@K 99.99" "Taxa 11 -> TIPO: " get TipoAliq11 valid TipoAliq11=="S".or.TipoAliq11=="T" "Aliquota: " get Aliquota11 pict "@K 99.99" "Taxa 12 -> TIPO: " get TipoAliq12 valid TipoAliq12=="S".or.TipoAliq12=="T" "Aliquota: " get Aliquota12 pict "@K 99.99" "Taxa 13 -> TIPO: " get TipoAliq13 valid TipoAliq13=="S".or.TipoAliq13=="T"

10

Verso do manual: AC 06/00

@ 20, @ 21, @ 21, @ 22, @ 22, read

54 32 54 32 54

say say say say say

"Aliquota: " get Aliquota13 pict "@K 99.99" "Taxa 14 -> TIPO: " get TipoAliq14 valid TipoAliq14=="S".or.TipoAliq14=="T" "Aliquota: " get Aliquota14 pict "@K 99.99" "Taxa 15 -> TIPO: " get TipoAliq15 valid TipoAliq15=="S".or.TipoAliq15=="T" "Aliquota: " get Aliquota15 pict "@K 99.99"

if( lastkey() != K_ESC ) @ 23, 43 say "Aguarde..." for taxa=0 to 15 n := FCOUNT() PRIVATE nome[n], tipo[n], tamanho[n], decimais[n] AFIELDS( nome, tipo, tamanho, decimais ) j = (2*(taxa)) + 18 i = j + 1 tipo_TAX := FIELDGET(j) Aliquota := FIELDGET(i)

// Usando banco de dados DBF // Usando banco de dados DBF

if( Aliquota <> 0 ) if( tipo_TAX == 'S' ) ret := CrgAlqEx( (str((taxa),2)), 'S', str(Aliquota*100,4)) else ret := CrgAlqEx( (str((taxa),2)), 'T', str(Aliquota*100,4)) endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif endif next endif endif return NIL

11

Verso do manual: AC 06/00

2.4 - Cabealho do estabelecimento (para ECF verso 2.04)


Funo: CabLoja ( L1, L2, L3, Lj, Eq, CGC, IE )

Parmetros: # L1 String com at 48 caracteres correspondente a linha 1 do cabealho; # L2 String com at 48 caracteres correspondente a linha 2 do cabealho; # L3 String com at 48 caracteres correspondente a linha 3 do cabealho; # Lj Valor numrico na faixa de 0 a 9999, que indica o nmero do estabelecimento ou do estabelecimento usurio; # Eq Valor numrico na faixa de 0 a 9999, que indica o nmero do equipamento; # CGC String de dezoito caracteres com o CGC do emitente; # IE String de quinze caracteres com a inscrio estadual do emitente.

Observao: Quando o modelo da impressora for de 40 colunas, os parmetros "L1", "L2" e "L3" devem ser formados pelos primeiros 40 caracteres, sendo pois os 8 caracteres restantes desconsiderados.

Exemplo:
Static Function _AcertaCabecalho( New ) local cmd, Janela, cor, Cabec1, Cabec2, Cabec3, NroLoja, NroEquip, CGC, IE, ret local newmodel cor := setcolor( cJanela ) janela := FazBox( 8, 14, 20, 77, "Cabealho da Loja", cJanela, 3, cTitulo ) Cabec1 := Cabec2 := Cabec3 := space( 48 ) NroEquip := NroLoja := 0 CGC := space( 18 ) IE := space( 15 ) @ 10, @ 11, @ 12, @ 13, @ 14, @ 15, @ 16, read 16 16 16 16 16 16 16 say say say say say say say "Cabealho: " " " " " "Nro Loja: " "Nro Equip: " "CGC: " "Inscr.Est.:" get get get get get get get Cabec1 Cabec2 Cabec3 NroLoja pict "9999" NroEquip pict "9999" CGC IE

if( lastkey() != K_ESC ) @ 18, 16 say "Aguarde..." ret := CabLoja( LinhaCab_1,LinhaCab_2,LinhaCab_3, Loja_num, Equip_num, ad_CGC, Cad_IE ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif

12

Verso do manual: AC 06/00

2.5 - Cabealho do estabelecimento (para ECF verso 3.0x)


Funo: CabLoja300 ( L1, L2, L3, Lj, Eq, CGC, IE, IM ) Parmetros: # L1 String com at 48 caracteres correspondente a linha 1 do cabealho; # L2 String com at 48 caracteres correspondente a linha 2 do cabealho; # L3 String com at 48 caracteres correspondente a linha 3 do cabealho; # Lj Valor numrico na faixa de 0 a 9999, que indica o nmero do estabelecimento ou do estabelecimento usurio; # Eq Valor numrico na faixa de 0 a 9999, que indica o nmero do equipamento; # CGC String de dezoito caracteres com o CGC do emitente; # IE String de quinze caracteres com a inscrio estadual do emitente. # IM String de quinze caracteres com a inscrio municipal do emitente. Observao: Quando o modelo da impressora for de 40 colunas (como o caso da verso 3.0x das impressora fiscais SCHALTER), os parmetros "L1", "L2" e "L3" devem ser formados pelos primeiros 40 caracteres, sendo pois os 8 caracteres restantes desconsiderados.

Exemplo:
Static Function _AcertaCabecalho( New ) local cmd, Janela, cor, Cabec1, Cabec2, Cabec3, NroLoja, NroEquip, CGC, IE, ret, IM local newmodel cor := setcolor( cJanela ) janela := FazBox( 8, 14, 20, 77, "Cabealho da Loja", cJanela, 3, cTitulo ) Cabec1 := Cabec2 := Cabec3 := space( 48 ) NroEquip := NroLoja := 0 CGC := space( 18 ) IE := space( 15 ) IM := space( 15 ) @ 10, @ 11, @ 12, @ 13, @ 14, @ 15, @ 16, @ 17, read 16 16 16 16 16 16 16 16 say say say say say say say say "Cabealho: " " " " " "Nro Loja: " "Nro Equip: " "CGC: " "Inscr.Est.:" "Inscr.Mun.:" get get get get get get get get Cabec1 Cabec2 Cabec3 NroLoja pict "9999" NroEquip pict "9999" CGC IE IM

ret := CabLoja30( LinhaCab_1,LinhaCab_2,LinhaCab_3, Loja_num, Equip_num, Cad_CGC, Cad_IE, Cad_IM ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif

13

Verso do manual: AC 06/00

2.6 - Codificao do Grande Total


Funo: CargaCript(Codific) Parmetro: # Codific String de 10 caracteres com a codificao do GT.

Exemplo:
Static Function _CargaCripto( New ) local cod, Janela, cor, ret cor := setcolor( cJanela ) janela := FazBox( 10, 33, 15, 63, "Codificao do GT", cJanela, 3, cTitulo ) cod := space( 10 ) cod := CodCripto @ 12, 37 say "Cdigo:" get read cod

if( C_Conf( 7, 10, "Programar impressora?", "SN" ) == "S" ) @ 14, 37 say "Aguarde..." ret := CargaCript( CodCripto ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

Observao sobre as ECFs verso 3.0x


Da verso 3.01 em diante, somente so permitidas codificaes que utilizem as letras contidas na palavra "SCHALTERIF". Voc pode embaralhar as letras conforme desejar, mas no pode repetir letras nem usar outras que no sejam estas. Alm disso, as verses 3.01 em diante permitem apenas uma programao de codificao de GT por usurio, no momento da carga do cabealho do mesmo. Se nada for dito em contrrio, a impressora ir assumir automaticamente a codificao de fbrica.

14

Verso do manual: AC 06/00

2.7 - Tamanho do cdigo de produto


Funo: PrgCod ( TAM )

Parmetros: # TAM Caracter com o tamanho do cdigo do produto em uma transao de venda.

Observaes: Este comando somente aceito atravs de interveno tcnica. Este comando no funciona nos modelos de impressora SPrint e TPrint nas verses 2.04 ou anteriores. A programao do cdigo do produto somente possvel nas impressoras modelo DPrint 2.04 e DPrint 3.0x, bem como em todas as impressoras fiscais verses 3.01 e posteriores.

Exemplo:
Static Function _ProgramandoTamanhoCodigo( local cod, Janela, cor, ret )

cor := setcolor( cJanela ) janela := FazBox( 13, 36, 19, 66, "Codigo de item", cJanela, 3, cTitulo ) cod := 13 @ 15, 40 say "Tamanho do Codigo:" get read if( lastkey() != K_ESC ) @ 17, 40 say "Aguarde..." ret := PrgCod( cod ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL cod pict "@K 99"

15

Verso do manual: AC 06/00

2.8 - Programao dos comprovantes no fiscais (somente verso 3.0x)

Funo: CrgOperNF ( POSTAB, TITULO, DESC, ACRES, CANC, PAG, VINCULADO, VINCULO )

Parmetros: # POSTAB String com duas posies informando a posio da descrio que se deseja utilizar na tabela das formas de pagamento. Assume valores de "00" at "19". # TITULO String com at 20 caracteres contendo a descrio que aparecer no respectivo campo do comprovante no fiscal em questo. # DESC String com um caracter. Assume o valor "S" para que o comprovante que est sendo programado aceite descontos em itens ou no subtotal. Assume o valor "N" para que o comprovante no aceite nenhum tipo de desconto. # ACRES String com um caracter. Assume o valor "S" para que o comprovante que est sendo programado aceite acrscimos em itens ou no subtotal. Assume o valor "N" para que o comprovante no aceite nenhum tipo de acrscimo. # CANC String com um caracter. Assume o valor "S" para que o comprovante que est sendo programado aceite cancelamentos de itens. Assume o valor "N" para que o comprovante no aceite nenhum tipo de cancelamento. # PAG String com um caracter. Assume o valor "S" para que o comprovante que est sendo programado obrigue a realizao do pagamento. Assume o valor "N" para que o comprovante permita ser fechado sem a realizao do pagamento. # VINCULADO String com um caracter. Assume o valor "S" para informar que o comprovante que est sendo programado vinculado. Assume o valor "N" para informar que o comprovante em questo no vinculado. # VINCULO String com dois caracteres. Contm a posio na tabela de comprovantes no fiscais do vnculo que se pretende utilizar, caso o comprovante seja vinculado.

Observao: Este comando aceito sem a necessidade de interveno tcnica na primeira vez que for realizado. No entanto, a sobreposio de um comprovante j programado somente possvel mediante interveno tcnica. Quando um comprovante no fiscal programado como sendo "Vinculado", as outras caractersticas dele, como permisso de acrscimos, descontos, cancelamentos e obrigatoriedade de pagamento so ignoradas pela impressora. Caso o comprovante no fiscal no seja vinculado, o parmetro "Vinculo" no ser utilizado pela impressora.

16

Verso do manual: AC 06/00

Exemplo:
Static Function _DocNF () local cmd, Janela, cor, POSICAO, TITULO, DESCONTO, ACRESCIMO, CANCELA local PAGAMENTO, VINCULADO, vinculo, ret cor := setcolor( cJanela ) JANELA := FazBox( 10, 30, 20, 75, "Documento nao fiscal", cJanela, 3, cTitulo ) POSICAO := space(2) TITULO := space(20) POSICAO := "00" DESCONTO := "S" ACRESCIMO := "S" CANCELA := "S" PAGAMENTO := "S" VINCULADO := "S" VINCULO := "00" @ 11, 33 say "Titulo do documento:" get TITULO read if( lastkey() != K_ESC ) _SimNao( 12, 59, DESCONTO ) @ 12, 33 say "Permite desconto? _SimNao( 12, 59, DESCONTO ) read pict "@K"

(S/N):" get DESCONTO

pict "@K !" valid;

_SimNao( 13, 59, ACRESCIMO ) @ 13, 33 say "Permite acrescimo? (S/N):" get ACRESCIMO _SimNao( 13, 59, ACRESCIMO ) read _SimNao( 14, 59, CANCELA ) @ 14, 33 say "Permite cancela? _SimNao( 14, 59, CANCELA ) read

pict "@K !" valid;

(S/N):" get CANCELA

pict "@K !" valid ;

_SimNao( 15, 59, PAGAMENTO ) @ 15, 33 say "Permite pagamento? (S/N):" get PAGAMENTO _SimNao( 15, 59, PAGAMENTO ) read _SimNao( 16, 59, VINCULADO ) @ 16, 33 say "Documento vinculado(S/N):" get VINCULADO _SimNao( 16, 59, VINCULADO ) read @ 17, 33 say "POSICAO DE CADASTRO read if( Vinculado == "S" ) @ 18, 33 say "FORMA DO PAGAMETO read endif ret := VINCULO ) :" get POSICAO

pict "@K !" valid ;

pict "@K !" valid;

pict "@K"

:" get VINCULO

pict "@K"

CrgOperNF( POSICAO, TITULO, DESCONTO, ACRESCIMO, CANCELA, PAGAMENTO, VINCULADO,

if (( ret != 0 ) .and. ( lastkey() != K_ESC )) MensagemErro( "Retorno Impressora", ret ) endif return NIL

17

Verso do manual: AC 06/00

2.9 - Programao das formas de pagamento (somente verso 3.0x)


Funo: CrgFormPg ( POSICAO, DESCRICAO ) Parmetros: # POSICAO String com duas posies contendo a posio da tabela na qual pretende-se programar uma forma de pagamento. Assume valores de "00" at "19". # DESCRICAO String com at no mximo 20 posies contendo a descrio da forma de pagamento que se deseja programar. Exemplos de descries so: "dinheiro", "cheque", "ticket refeicao", "cartao credito VISA", etc.

Observao: Este comando aceito sem a necessidade de interveno tcnica na primeira vez que for realizado. No entanto, a sobreposio de um comprovante j programado somente possvel mediante interveno tcnica.

Exemplo:
Static Function _FormasDePagamento () local cmd, Janela, cor, POSICAO, TITULO, DESCONTO, ACRESCIMO, CANCELA local PAGAMENTO, VINCULADO, ret cor := setcolor( cJanela ) JANELA := FazBox( 10, 30, 15, 75, "Formas de pagamento", cJanela, 3, cTitulo ) POSICAO := space(2) TITULO := space(20) POSICAO := "00" @ 11, 33 say "Titulo do pagamento:" get TITULO read pict "@K"

if( lastkey() != K_ESC ) @ 12, 33 say "Posio na tabela :" get POSICAO read @ 13, 33 say "Aguarde..." ret := CrgFormPg( POSICAO, TITULO ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

pict "@K 99"

18

Verso do manual: AC 06/00

3 - Transao de venda e cupons no fiscais

3.1 - Impresso do cabealho


Funo: ImpCab( Tipo ) Parmetro: # Tipo Este parmetro um inteiro, decimal, que informa o formato desejado de impresso do cabealho. Colocando-se este parmetro, que um nmero, no formato binrio, vemos o significado de cada um dos 8 bits. (Observe que o bit mais da direita o bit 0) BIT 0 - Coloca uma linha em branco aps a linha do CGC. Caso a impressora seja a verso 3.01 ou posterior, este bit ativa a impresso da linha da Inscrio Municipal aps a linha do CGC no cabealho. BIT 1 - Coloca uma linha antes da mensagem "CUPOM FISCAL". BIT 2 - Coloca uma linha em branco aps a mensagem "CUPOM FISCAL". BIT 3 Este bit utilizado somente na verso 3.01 da impressora fiscal. Ativa a impresso de uma linha em branco aps as duas linhas fixas de ndice, linhas estas ativadas pelo BIT 5. BIT 4 - Bloqueia a impresso do cabealho quando: Pouco papel, reduo no realizada ou fechamento j realizado. BIT 5 - Libera a impresso de duas linhas livres de descrio aps a mensagem cupom fiscal, linhas utilizadas para informar o formato da impresso dos itens da transao de venda. Caso a impressora seja a verso 3.01 ou posterior, estas linhas livres de descrio no so mais permitidas. Nesta verso, este bit somente define se estas linhas fixas sero ou no impressas. No entanto, a filosofia no muda: as linhas so usadas para informar o formato da impresso dos itens da transao de venda. BIT 6 - Omite a impresso das trs linhas de endereo do cabealho. BIT 7 - Omite a impresso das primeira linha tracejada do cabealho.

Exemplo:
Por exemplo, vamos supor que desejamos ativar somente as caractersticas acionadas pelos bits 1, 4 e 7. Neste caso, o parmetro Tipo deve valer 146, em decimal. Quando colocamos o nmero 146 (que est em decimal) para binrio, logo percebemos quais caractersticas ele ativa. Observe: 146d = 10010010b Observe que os bits que esto setados so, justamente, os bits 7 (o bit mais da esquerda), o bit 4 e o bit 1.

19

Verso do manual: AC 06/00

3.2 - Inicializa cupom no fiscal


Funo: InCupNFisc ( Tipo )

Parmetro: # Tipo Valor numrico que determina o tipo de cupom no fiscal. Use sempre o valor 1 (um). Lembrando que, antes deste comando, necessrio a impresso do cabealho.

Exemplo:
Static Function _ExemploGenerico() local Janela, cor, Descri1, ret local Operador, LinhaCom1, aux, x cor := setcolor( cJanela ) janela := FazBox( 13, 30, 17, 50, "Exemplo genrico", cJanela, 3, cTitulo ) Descri1 := space( 30 ) ret := 0 aux := 0 Operador := "OPERADOR" LinhaCom1 := space ( 48 ) LinhaCom1 := "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" if( lastkey() != K_ESC ) @ 15, 33 say "Aguarde..." ret := ImpCab ( ) if ( ret != 0 .and. ret != 68 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif ret := InCupNFisc( 1 ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif Descri1 := "OPERADOR" ret := FimTrans( Descri1 ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif return NIL

20

Verso do manual: AC 06/00

3.3 - Inicializa cupom vinculado (para ECF verso 3.0x)


Funo: InCupVinc ( Ordem, Posicao, Valor ) Parmetros: # Ordem String de seis (6) caracteres contendo o contador de ordem de operao do cupom fiscal ou do comprovante no fiscal ao qual deve ser vinculado. # Posicao String de dois (2) caracteres contendo a posio que este tipo de cupom (que vinculado) ocupa na tabela de comprovantes no fiscais. # Valor String de at pagamento vinculada. Observao: Observe que, para que um comprovante no fiscal seja utilizado como um cupom vinculado, ele deve ter sido previamente programado, possuindo ativada a caracterstica "Vinculado". Quando esta caracterstica est ativada, a impressora ignora as outras caractersticas do cupom no fiscal, como permisso de acrscimos, descontos, cancelamentos e obrigatoriedade de pagamento. Veja maiores detalhes na programao dos comprovantes no fiscais.

nove

(9)

caracteres

correspondente

ao

valor

da

forma

de

21

Verso do manual: AC 06/00

3.4 - Venda de produto com dados formatados


Funo: Vnd_Item(Codigo, Descricao, QInteira, QFracionada, Valor, Taxa)

Parmetros: # Codigo String com at 13 caracteres com o cdigo do item da venda; # Descricao String com at 62 caracteres correspondentes descrio do item; # QInteira String com at 3 caracteres com a parte inteira da quantidade do item da venda; # QFracionada String com at 3 caracteres com a parte fracionada da quantidade do item da venda; # Valor String com at 9 caracteres correspondentes ao valor unitrio do item; # Taxa Corresponde a um valor numrico com a posio da alquota na tabela programada. As posies abaixo servem para as verses 2.04 ou anteriores: 0 - 9 = T0 a T9 10 = Sangria (no fiscal) 11 = Entrada de numerrio (no fiscal) 12 = Substituio tributria 13 = isento 14 = No incidente 15 = Servios 16 = Recebimentos diversos (no fiscais) Para a verso 3.0x servem as posies de alquotas abaixo: 0 - 15 = T0 a T15 (programveis, de ICMS ou de servio) 16 = Substituio tributria 17 = Isento 18 = No incidente

Observaes: Este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". Tambm este comando no ser aceito se for enviado um valor invlido no parmetro "Taxa". Observe o fato de no utilizar alquotas no fiscais em cupons fiscais ou vice-versa. Caso isto ocorrer, a impressora ir gerar um erro. Outro detalhe importante: obrigatrio o envio completo dos caracteres numricos da parte inteira e fracionada para a aceitao do comando. O parmetro "Codigo" at pode ter um tamanho menor do que 13 bytes. No entanto, a modificao dele somente possvel via interveno tcnica. possvel a verificao do tamanho programado na "Leitura X" ou "Reduo Z". Este comando no pode ser utilizado nas impressoras modelo SPrint verso 2.04. Este comando somente pode ser usado nas impressoras SPrint 3.0x e DPrint (todas).

22

Verso do manual: AC 06/00

Exemplo:
Static Function FVendaD( opc1 ) local Janela, cor, Descri1, Descri2, descr, Montante, Taxa, ret, tipo, first local Quant1, Quant2, Unid, cab, codigo cor := setcolor( cJanela ) janela := FazBox( 10, 20, 18, 77, "Venda de Item", cJanela, 3, cTitulo ) Descri1 := space( 22 ) Descri2 := space( 40 ) descr := space( 100 ) Montante := Taxa := tipo := ret := 0 codigo := space( 13 ) Quant1 := Quant2 := space( 3 ) cab := 48 @ 11, @ 12, @ 12, @ 13, @ 14, @ 15, @ 16, read 23 23 40 23 23 23 23 say say say say say say say "Codigo: "Quantidade : "." "Descrio 1: "Descrio 2: "Montante : "Taxa : " get codigo " get Quant1 get Quant2 " get Descri1 " get Descri2 " get Montante pict "@K 9999999.99" " get Taxa pict "@K 99"

if( lastkey() != K_ESC ) descr := Descri1 + Descri2 @ 17, 23 say "Aguarde..." if ( ret == 0 .or. ret == 68 ) ret := Vnd_Item( codigo, descr, Quant1, Quant2, Str( Montante * 100, 9), Taxa ) endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

23

Verso do manual: AC 06/00

3.5 - Venda formatada com trs dgitos (somente verso 3.0x)


Funo: VndItem3(Codigo, Descricao, Quantidade, Valor, Taxa, Unidade, Digito)

Parmetros: # Codigo String com at 13 caracteres com o cdigo do item da venda; # Descricao String com at 62 caracteres correspondentes descrio do item; # Quantidade String com exatamente 7 caracteres contendo a quantidade vendida neste item. Este parmetro tem formao bastante rgida e deve, necessariamente, ter a seguinte formao: <parte inteira> + <,> + <parte fracionria> Se a parte inteira tiver, por exemplo, 3 caracteres, a parte fracionria dever ter, certamente, 3 caracteres. Se, por exemplo, a parte inteira tiver 5 caracteres, a parte fracionria dever ter, portanto, 1 caracter. Veja os seguintes exemplos prticos: - Quantidade := "001,000" - Quantidade := "00100,0" - Quantidade := "03,3400" - Quantidade := "31,0405" Observe que a posio da vrgula varivel, mas o tamanho total do parmetro (incluindo a vrgula) SEMPRE 7 caracteres. Observe tambm que obrigatrio o preenchimento com zeros esquerda. # Valor String com at 9 caracteres correspondentes ao valor unitrio do item; # Taxa Corresponde a um valor numrico com a posio da alquota na programada. Para a verso 3.01 servem as posies de alquotas (idntico a 3.00): 0 - 15 = T0 a T15 16 = Substituio tributria 17 = Isento 18 = No incidente # Unidade String com 2 caracteres que informa impressora a unidade que ser utilizada na venda do item. Exemplos de unidade seriam "Kg", "Lt", "P", etc. # Digito String com 1 caracter, precisamente, que indica se a impressora dever utilizar duas ou trs casas decimais no preo unitrio do item. Se este parmetro valer "3", a impressora ir assumir trs casas decimais. Caso este parmetro valha "2" ou qualquer outro valor (exceto "3"), a impressora ir utilizar somente duas casas decimais para o valor do item. Observaes:

tabela abaixo

24

Verso do manual: AC 06/00

Este comando interessa somente aos clientes que trabalham com trs casas decimais no preo unitrio do item. Caso isto no seja necessrio, a funo Vnd_Item (explicada no item 3.4 deste manual), pode ser utilizada na verso 3.01 da impressora fiscal, sem problema algum. Outro detalhe, que fica claro no exemplo que segue, mas vale a pena mencionar: se for dito que o preo unitrio tem 3 casas decimais, evidente que a impressora ir assumir os trs ltimos caracteres do parmetro "Valor" como sendo os centavos. Por exemplo, se o parmetro Valor valer "1234", a impressora ir assumir o valor do item como sendo R$1,234 Da mesma forma, valem as observaes j conhecidas: este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". Tambm este comando no ser aceito se for enviado um valor invlido no parmetro "Taxa". Observe o fato de no utilizar alquotas no fiscais em cupons fiscais ou vice-versa. Caso isto ocorrer, a impressora ir gerar um erro. Outro detalhe importante: obrigatrio o envio completo dos caracteres numricos da parte inteira e fracionada para a aceitao do comando. O parmetro "Codigo" at pode ter um tamanho menor do que 13 bytes. No entanto, a modificao dele somente possvel via interveno tcnica. possvel a verificao do tamanho programado na "Leitura X" ou "Reduo Z".

Exemplo:
Static Function FVendaD( opc1 ) local Janela, cor, Descri1, Descri2, descr, Montante, Taxa, ret, tipo, first local Quant1, Quant2, Unid, cab, codigo, Unidade, Digitos local I_accept, quantidade cor := setcolor( cJanela ) janela := FazBox( 10, 20, 21, 77, "Venda de Item", cJanela, 3, cTitulo ) Descri1 := space( 22 ) Descri2 := space( 40 ) descr := space( 100 ) tipo := 0 ret := 0 codigo := space( 13 ) Quant1 := space( 3 ) Quant2 := space( 3 ) quantidade := space ( 7 ) Unidade := space( 2 ) Digitos := space( 1 ) cab := 48 I_accept := "N" codigo := "00000000-00" Quant1 := "001" Quant2 := "000" quantidade := "001,000" Descri1 := " Testando a descricao" Descri2 := "geral de produto" Montante := montantepreferido Taxa := segurataxatable Unidade := "Kg" Digitos := "2" @ 11, 23 say "Numero de casas decimais: " get Digitos valid Digitos=="2".or.Digitos=="3" read @ 12, 23 say " Codigo: " get codigo if (Digitos == "3") @ 13, 23 say "Quantidade :" get quantidade else @ 13, 23 say "Quantidade : " get Quant1 @ 13, 40 say "." get Quant2

25

Verso do manual: AC 06/00

endif @ 14, 23 say "Unidade : " get Unidade @ 15, 23 say "Descriao 1: " get Descri1 @ 16, 23 say "Descriao 2: " get Descri2 if (Digitos == "3") @ 17, 23 say "Montante : " get Montante read else @ 17, 23 say "Montante : " get Montante read endif montantepreferido := Montante if( lastkey() == K_ESC ) R_TELA( janela ) setcolor( cor ) return endif @ 18, 23 say "Taxa read segurataxatable := Taxa if( lastkey() != K_ESC ) descr := Descri1+Descri2 @ 20, 23 say "Aguarde... ret := ImpCab ( cab ) "

pict "@K 999999.999"

pict "@K 9999999.99"

: " get Taxa pict "@K 99"

if ( ret != 68 .and. ret != 0 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return else if (Digitos == "3") ret := VndItem3( codigo, descr, quantidade, Str( Montante * 1000, 9), Taxa, Unidade, Digitos ) else ret := Vnd_Item( codigo, descr, Quant1, Quant2, Str( Montante * 100, 9), Taxa ) endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif endif endif return NIL

26

Verso do manual: AC 06/00

3.6 - Venda descritiva com 60 caracteres


Funo: VendaItem ( Descr, Valor, Taxa )

Parmetros: # Descr String de at 60 caracteres com a descrio do item; # Valor String com at 9 caracteres correspondentes ao valor do item; # Taxa Corresponde a um valor numrico com a posio da alquota programada: 0 - 9 = T0 a T9 10 = Sangria (no fiscal) 11 = Entrada de numerrio (no fiscal) 12 = Substituio tributria 13 = isento 14 = No incidente 15 = Servios 16 = Recebimentos diversos (no fiscais)

na

tabela

Observaes: Este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". Da mesma forma, este comando no ser aceito se for enviado no Parmetro "Taxa", valores acima de 17d. Os valores 10 e 11 para o parmetro "Taxa" somente sero aceitos em cupom no fiscal. Este comando no serve para cupons fiscais nas impressoras (todas as verses) nem para cupons fiscais nas verses 3.0x. modelo Dprint

Nas impressoras fiscais verses 3.0x, esta funo utilizada somente dentro de cupons no fiscais no vinculados, com a diferena de que, no lugar do parmetro Taxa, mandamos o nmero do comprovante no fiscal ao qual desejamos totalizar a transao. Por exemplo, se programamos um cupom no fiscal no vinculado chamado "Recebimento" na posio 03, usaremos a venda descritiva da seguinte forma:

retorno := ecfVendaItem ("Descricao generica", "1233", 03)

No exemplo acima, R$12,33

estamos

supondo

que

valor

do

registro

foi

de

27

Verso do manual: AC 06/00

3.7 - Venda descritiva com 78 caracteres


Funo: VendItem78 ( Descr, Valor, Taxa )

Parmetros: # Descr String de at 78 caracteres com a descrio do item; # Valor String com at 9 caracteres correspondentes ao valor do item; # Taxa Corresponde a um valor numrico com a posio da alquota programada: 0 - 9 = T0 a T9 10 = Sangria (no fiscal) 11 = Entrada de numerrio (no fiscal) 12 = Substituio tributria 13 = isento 14 = No incidente 15 = Servios 16 = Recebimentos diversos (no fiscais)

na

tabela

Observaes: Este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". Tambm este comando no ser aceito se for enviado um valor invlido no parmetro "Taxa". Observe o fato de no utilizar alquotas no fiscais em cupons fiscais ou vice-versa. Caso isto ocorrer, a impressora ir gerar um erro. Este comando no pode ser utilizado nas impressoras modelo SPrint verso 3.00 e DPrint. Este comando somente pode ser usado nas impressoras SPrint 2.04 e TPrint. Nas impressoras fiscais verses 3.0x, esta funo utilizada somente dentro de cupons no fiscais no vinculados, com a diferena de que, no lugar do parmetro Taxa, mandamos o nmero do comprovante no fiscal ao qual desejamos totalizar a transao. Por exemplo, se programamos um cupom no fiscal no vinculado chamado "Recebimento" na posio 03, usaremos a venda descritiva da seguinte forma:

retorno := ecfVendItem78 ("Descricao generica", "1233", 03)

No exemplo acima, R$12,33

estamos

supondo

que

valor

do

registro

foi

de

28

Verso do manual: AC 06/00

3.8 - Cancela/Desconto de item


Funo: DescItem ( Tipo, Descr, Valor )

Parmetros: # Tipo 0 = desconto; 1 = cancela desconto dado anteriormente; # Descr String com at 60 caracteres com a descrio do item. # Valor String com at 9 caracteres com o valor do item. Observaes: Para o cancelamento de desconto, o valor do parmetro "Valor" desconsiderado. Na verso 3.0x das impressoras fiscais, um desconto de item no pode ter descrio. Assim, o parmetro "Descr" desconsiderado nestas verses.

Exemplo:
Static Function FCancItem () local cmd, Janela, cor, descr, Descri1, Descri2, Montante, Cancela, Retifica cor := JANELA := Cancela Retifica Descri1 Montante setcolor( cJanela ) FazBox( 11, 30, 20, 75, "Estorno/Desconto de Item", cJanela, 3, cTitulo ) := "C" := "N" := Descri2 := space( 30 ) := Taxa := Item := 0

if( Retifica == "N") tipo := 0 else tipo := 1 endif ret := DescItem( tipo, descr, Str( Montante * 100, 9) )

if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif

return NIL

29

Verso do manual: AC 06/00

3.9 - Cancelamento de item


Funo: CancItem ( Descr ) Parmetros: # Descr String de at 60 caracteres com a descrio do item. Observaes: Esta funo est desabilitada na verso 3.0x das impressoras fiscais, por razes de legislao.

Exemplo:
Static Function FCancItem () local cmd, Janela, cor, descr, Descri1, Descri2, Montante, Cancela, Retifica local Ultimo, Taxa, tipo, ret, Item cor := JANELA := Ultimo Cancela Retifica Descri1 Montante setcolor( cJanela ) FazBox( 11, 30, 20, 75, "Estorno/Desconto de Item", cJanela, 3, cTitulo ) := "S" := "C" := "N" := Descri2 := space( 30 ) := Taxa := Item := 0

if( lastkey() != K_ESC ) @ 19, 33 say "Aguarde..." descr := Descri1 + Descri2 if( Ultimo == "N") ret := CancIDef( Str( Item, 4 ), Descri1 ) else if (Cancela=="D") ret := DescItem( tipo, descr, Str( Montante * 100, 9) ) else ret := CancItem( descr ) endif endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

30

Verso do manual: AC 06/00

3.10 - Cancelamento de item especfico


Funo: CancIDef ( Item, Descr )

Parmetros: # Item String de 4 caracteres com o nmero do item a ser cancelado. # Descr String de 30 caracteres com a descrio do item.

Observaes: Esta funo pode ser utilizada no ECF verso 3.0x, com um detalhe: a descrio ignorada pela impressora. O motivo disto esta baseado na legislao, que proibiu o uso de descries livres no cancelamento de itens. A impressora no ir gerar erro caso seja enviada uma descrio, mas simplesmente no ir imprimi-la.

Exemplo:
Static Function CancelandoItem () local cmd, Janela, cor, descr, Descri1, Descri2, Montante, Cancela, Retifica local Ultimo, Taxa, tipo, ret, Item cor := JANELA := Ultimo Cancela Retifica Descri1 Montante setcolor( cJanela ) FazBox( 11, 30, 20, 75, "Estorno/Desconto de Item", cJanela, 3, cTitulo ) := "S" := "C" := "N" := Descri2 := space( 30 ) := Taxa := Item := 0

if( lastkey() != K_ESC ) @ 19, 33 say "Aguarde..." descr := Descri1 + Descri2 if( Ultimo == "N") ret := CancIDef( Str( Item, 4 ), Descri1 ) else if (Cancela=="D") ret := DescItem( tipo, descr, Str( Montante * 100, 9) ) else ret := CancItem( descr ) endif endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

31

Verso do manual: AC 06/00

3.11 - Pagamento vista ou cancela (para ECF verso 2.04)


Funo: PagCancPag ( Tipo, Descr, Valor, Mens, Linhas )

Parmetros: # Tipo 0 = pagamento vista; 1 = cancela pagamento a vista; # Descr String com at 10 caracteres com a descrio do tipo de pagamento ( vista, dinheiro ou cheque); # Valor String com at 10 caracteres correspondentes ao valor do pagamento. # Mens 0 = imprime a mensagem "A VISTA"; 1 = omite a mensagem "A VISTA"; # Linhas Corresponde a um byte numrico com a informao de quantas linhas complementares de descrio pode ter a forma de pagamento. Os valores possveis para este parmetro so 0, 1, 2 e 3. Se for enviado um valor acima de 3, a impressora assumir 3 linhas. Estas linhas complementares so impressas utilizando a funo ImpLinha.

Observaes: Este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". O mesmo acontecer se for enviado um valor invlido no parmetro "Taxa". Quando se cancela um pagamento, o parmetro "Valor" desconsiderado.

Exemplo:
Static Function Pagando () local Janela, cor, acres, tipo, Montante, Retifica, ret, Valor, mens Local vRet := {} local Data local bnc, fav, loc, esp, dat local forma Retifica := "N" Montante := acres := 0 Desc_pag := space ( 11 ) Valor := space( 10 ) mens := 0 Lmens := 0 forma := space ( 2 ) forma := "00" if( lastkey() != K_ESC ) Valor := substr( VRet[ 6 ], 9, 2 ) +; substr( VRet[ 6 ], 12, 3 ) +; substr( VRet[ 6 ], 16, 3 ) +; substr( VRet[ 6 ], 20, 2 )

32

Verso do manual: AC 06/00

Desc_pag := "Dinheiro" Montante := val( Valor ) / 100 endif if ( tipo == 0 ) @ 20, 41 say " Montante: read endif if( lastkey() != K_ESC ) @ 21, 41 say " Aguarde..." Data := date() Data := dtoc( Data ) dat := substr( Data, 1, 2 ) +; substr( Data, 4, 2 ) +; substr( Data, 7, 2 ) if( Retifica == "S") if(pmodeles == "E") ret := Pagamnt( tipo, Str( Montante * 100, 10 ), mens, Lmens, Forma ) else ret := PagCancPag( tipo, Desc_pag, Str( Montante * 100, 10 ), mens, Lmens ) endif endif if ( ret != 0 ) MensagemErro( "Retorno da impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif return NIL

" get Montante

pict "@K 99999999.99"

33

Verso do manual: AC 06/00

3.12 - Pagamento prazo ou cancela (para ECF verso 2.04)


Funo: PrzCancPrz ( Tipo, Descr, Valor, Mens, LMens ) Parmetros: # Tipo 0 = pagamento prazo; 1 = cancela pagamento prazo; # Descr String com at 10 caracteres com a descrio do tipo de pagamento prazo. # Valor String com at 10 caracteres correspondentes ao valor do pagamento dado. # Mens 0 = imprime a mensagem "A PRAZO"; 1 = omite a mensagem "A PRAZO"; # LMens Corresponde a um byte numrico com a informao de quantas linhas complementares de descrio pode ter a forma de pagamento. Os valores possveis para este parmetro so 0, 1, 2 e 3. Se for enviado um valor acima de 3, a impressora assumir 3 linhas. Estas linhas complementares so impressas utilizando a funo ImpLinha.

Observaes: Este comando no ser aceito se for enviado um valor negativo ou igual a zero no parmetro "Valor". O mesmo acontecer se for enviado um valor invlido no parmetro "Taxa". Quando se cancela um pagamento, o parmetro "Valor" desconsiderado.

Exemplo: Como possvel observar, os pagamentos vista e prazo so bastante semelhantes. Na verdade, a nica diferena entre eles referente ao valor dado em pagamento. No pagamento vista, a impressora aceita um valor maior do que o total da venda (fornecendo TROCO neste caso). No pagamento prazo, o valor dado em pagamento deve ser exatamente igual ao valor total da venda, nem mais nem menos. Do ponto de vista dos totalizadores internos da impressora, no h diferena alguma entre as duas modalidades de pagamento.

34

Verso do manual: AC 06/00

3.13 - Pagamento com formas programadas (para ECF verso 3.0x)


Funo: Pagamnt ( Tipo, Valor, Mens, Lmens, Forma ) Parmetros: # Tipo 0 = pagamento; 1 = cancela pagamento; # Valor String com at 10 caracteres correspondentes ao valor do pagamento dado. # Mens 0 = imprime a mensagem "A VISTA"; 1 = omite a mensagem "A VISTA";

(esta caracterstica est obsoleta)

# LMens Corresponde a um byte numrico com a informao de quantas linhas complementares de descrio pode ter a forma de pagamento. Os valores possveis para este parmetro so 0, 1 e 2. # Forma String com dois caracteres contendo a posio na tabela da descrio que desejamos utilizar no pagamento. Observaes: Esta funo somente vlida nas verses 3.00 do ECF. Para utilizar esta funo, necessrio antes realizar a programao das formas de pagamento que se deseja utilizar. A impressora aceita a programao de at 20 diferentes formas de pagamento, cada uma tendo sua descrio e seu acumulador particular. Caso seja enviado uma requisio de pagamento utilizando uma forma no programada, a impressora ir retornar um erro. Para realizar vendas, obrigatrio ter, no mnimo, uma forma de pagamento cadastrada.

Exemplo:
Static Function Pagando () local Janela, cor, acres, tipo, Montante, Retifica, ret, Valor, mens Local vRet := {} local Data local bnc, fav, loc, esp, dat local forma Retifica := "N" Montante := acres := 0 Desc_pag := space ( 11 ) Valor := space( 10 ) mens := 0 Lmens := 0 forma := space ( 2 ) forma := "00" if( lastkey() != K_ESC ) Valor := substr( VRet[ 6 ], 9, 2 ) +; substr( VRet[ 6 ], 12, 3 ) +; substr( VRet[ 6 ], 16, 3 ) +;

35

Verso do manual: AC 06/00

substr( VRet[ 6 ], 20, Desc_pag := "Dinheiro"

2 )

Montante := val( Valor ) / 100 endif if ( tipo == 0 ) @ 20, 41 say " Montante: read endif if( lastkey() != K_ESC ) @ 21, 41 say " Aguarde..." Data := date() Data := dtoc( Data ) dat := substr( Data, 1, 2 ) +; substr( Data, 4, 2 ) +; substr( Data, 7, 2 ) if( Retifica == "S") if(pmodeles == "E") ret := Pagamnt( tipo, Str( Montante * 100, 10 ), mens, Lmens, Forma ) else ret := PagCancPag( tipo, Desc_pag, Str( Montante * 100, 10 ), mens, Lmens ) endif endif if ( ret != 0 ) MensagemErro( "Retorno da impressora", ret ) R_TELA( janela ) setcolor( cor ) return endif return NIL

" get Montante

pict "@K 99999999.99"

36

Verso do manual: AC 06/00

3.14 - Transferncia de valor (para ECF verso 3.0x)


Funo: Transfer( pagOut, pagIn, Valor ) Parmetros: # pagOut String com dois caracteres. Informa a posio da forma de pagamento de onde sair o valor a ser transferido. # pagIn String com dois caracteres. Informa a posio da forma de pagamento na qual entrar o valor que foi transferido. # Valor Este parmetro informa o valor a ser transferido. Lembre-se de enviar o valor como string (de no mximo 10 caracteres) e sem ponto nem vrgula.

Observaes: Esta funo somente vlida nas verses 3.00 do ECF. Para utilizar esta funo, necessrio antes realizar a programao das formas de pagamento que se deseja utilizar. Isto significa que ambas as formas de pagamento (a de retirada e a de depsito) devem ser vlidas.

Exemplo:
Static Function _pgTransf() local cmd, Janela, cor local pagOut, pagIn, Valor, ret cor := setcolor( cJanela ) JANELA := FazBox( 10, 25, 17, 72, "Transferencia de Valor", cJanela, 3, cTitulo ) pagOut := space(2) pagIn := space(2) pagValor := 0 pagOut := "00" pagIn := "01" @ 12, 28 say "Pagamento de RETIRADA:" get pagOut pict "@K" @ 13, 28 say "Pagamento de DEPOSITO:" get pagIn pict "@K" @ 14, 28 say " Valor do movimento:" get pagValor pict "@K 9999999.99" read if( lastkey() != K_ESC ) @ 16, 28 say "Aguarde..." ret := Transfer( pagOut, pagIn, str(pagValor*100,10) ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif if (txrxview == ATIVO) MostraFiles( ret ) endif endif R_TELA( janela ) setcolor( cor ) return NIL

37

Verso do manual: AC 06/00

3.15 - Subtotal
Funo: SubTotal ( )

Observao: Esta funo deve ser enviada para a impressora imediatamente antes de ser realizada uma alterao no subtotal (desconto ou acrscimo). No uma funo utilizada para totalizar o cupom. A totalizao feita automaticamente no momento do pagamento. Esta funo pode ser usada tanto na verso 2.04 quanto nas verses 3.0x.

Exemplo:
Static Function FunctionSubtotal() local Janela, cor, ret cor := setcolor( cJanela ) janela := FazBox( 12, 30, 14, 75, "Aviso", cJanela, 3, cTitulo ) @ 13, 33 say "Aguarde..." ret := SubTotal() if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif R_TELA( janela ) setcolor( cor ) return NIL

38

Verso do manual: AC 06/00

3.16 - Acrscimo/Desconto no subtotal


Funo: CADSubTot ( Acres, Tipo, Descr, Valor ) Parmetros: # Acres 0 = desconto no subtotal; 1 = acrscimo no subtotal; # Tipo 0 = pronto para desconto ou acrscimo; 1 = cancela acrscimo ou desconto; # Descr String com at 22 caracteres com a descrio; # Valor String com at 9 caracteres correspondentes a quantia a ser descontada ou acrescida ao subtotal. Observaes: Esta funo pode ser utilizada tanto na verso 2.04 quanto na verso 3.00. No entanto, alguns detalhes devem ser mencionados. Primeiramente, em ambas as verses, a impressora no aceita acrscimos e descontos maiores ou iguais a 100%. Isto significa que se, por exemplo, foi feita uma venda cujo total de R$10,00, a impressora aceitar um acrscimo no subtotal de, no mximo, R$9,99. Outra observao, vlido apenas para a verso 3.00: neste verso a impressora no permite o cancelamento de uma alterao de subtotal. Assim, o parmetro "Tipo" na verso 3.00 vale sempre 0. Caso seja enviado "1" neste parmetro, a impressora ir gerar um erro. Na verso 3.00, a impressora obriga o pagamento logo aps ter sido feita a alterao no subtotal, ou seja, ela mesmo totaliza e aguarda o pagamento.

Exemplo:
Static Function FAcresSubt () local Janela, cor, acres, tipo, Descri1, Montante, Retifica, ret

cor := setcolor( cJanela ) janela := FazBox( 13, 30, 18, 75, "Acrescimo no SubTotal ou Cancela", cJanela, 3, cTitulo ) Retifica := "N" Descri1 := space( 22 ) Montante := 0 acres := 1 _SimNao( 14, 59, Retifica ) @ 14, 33 say "Cancela Acrescimo? (S/N):" get Retifica Retifica ) read ret := 0 if( lastkey() != K_ESC ) @ 15, 33 say "Descricao: read " get Descri1

pict "@K !" valid _SimNao( 11, 59,

@ 16, 33 say "Montante: " get Montante read if ( lastkey() != K_ESC )

pict "@K 9999999.99"

39

Verso do manual: AC 06/00

if( Retifica == "S") tipo := 1 @ 17, 33 say "Aguarde..." ret := CADSubTot( acres, tipo, Descri1, Str( Montante * 100, 9 ) ) else tipo := 0 if ( lastkey() != K_ESC ) ret := CADSubTot( acres, tipo, Descri1, Str( Montante * 100, 9 ) ) @ 17, 33 say "Aguarde..." endif endif endif if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL

40

Verso do manual: AC 06/00

3.17 - Preenchimento de cheque (ECF duas estaes)


Funo: LinCheque ( LF, Linha ) Parmetros: # LF Nmero de linhas a serem avanadas antes da impresso; # Linha String de at 80 caracteres com a linha a ser impressa.

Observaes: Esta funo utilizada somente na TPrint, onde o preechimento de cheques feito por um mecanismo IM70. Um cheque, observado no sentido horizontal, tem cerca de 80 colunas por 20 linhas.

Outras funes (ImpCheque e Imprecheq):


Existem outras duas funes mais cmodas que podem ser utilizadas para a impresso de cheques. Estas funes devem ser utilizadas respeitando-se a verso da respectiva impressora fiscal duas estaes:

DPrint 2.04 e TPrint em geral ImpCheque( bnc, valor, fav, loc, dat, esp)

DPrint 3.0x Imprecheq( bnc, valor, fav, loc, dat, esp)

Onde: Bnc - string de trs posies contendo o nmero do banco; Valor - string de 10 posies contendo o valor numrico do cheque, sem pontos nem vrgula. Fav - string com 60 caracteres contendo o favorecido (nominal) do cheque; Loc - string com at 20 caracteres contendo a cidade do cheque; Dat - string com exatamenteo 8 caracteres contendo a data do cheque; Esp - string com at 15 caracteres contendo a informao de campo especial.

Exemplo prtico: Neste exemplo, observe o uso da funo de status do cupom para capturar tanto o valor total quanto a data da impressora, informaes estas que sero usadas para o preenchimento do cheque. Observe ainda o uso das funes para a impresso do endosso. Static Function _Cheque ()

41

Verso do manual: AC 06/00

local Local local local local

Janela, cor, acres, tipo, Montante, Retifica, ret, Valor, mens vRet := {} Data bnc, fav, loc, esp, dat LF1, Endosso1, LF2, Endosso2 Retifica := "N" Montante := acres := 0 Valor := space( 10 ) mens := 0 Lmens := 0 bnc := space( 3 ) bnc := "001" fav := space( 60 ) fav := 'SCHALTER ELETRONICA LTDA' loc := space( 20 ) loc := 'PORTO ALEGRE esp := space( 15 ) esp := '(051) 346 37 99' cor := setcolor( cJanela )

'

if (Mod == 'E') janela := FazBox( 10, 05, 22, 75, "Pagamento em Cheque", cJanela, 3, cTitulo ) LF1 := 12 Endosso1 := space( 60 ) Endosso1 := 'LINHA 1 DO ENDOSSO DO CHEQUE ' LF2 := 1 Endosso2 := space( 60 ) Endosso2 := 'LINHA 2 DO ENDOSSO DO CHEQUE ' else janela := FazBox( 10, 05, 18, 75, "Pagamento em Cheque", cJanela, 3, cTitulo ) endif ret := 0 if( lastkey() != K_ESC ) VRet := StatusCup() if ( VRet[ 1 ] != 0 ) MensagemErro( "Retorno Impressora", if( lastkey() == K_ESC ) R_TELA( janela ) setcolor( cor ) return endif else Valor := substr( VRet[ 6 ], 9, substr( VRet[ 6 ], 12, substr( VRet[ 6 ], 16, substr( VRet[ 6 ], 20, Montante := val( Valor ) / 100 endif Set century on Data := date()

ret )

2 3 3 2

) +; ) +; ) +; )

42

Verso do manual: AC 06/00

Data := dtoc( Data ) dat := substr( Data, 1, 2 ) +; substr( Data, 4, 2 ) +; substr( Data, 7, 4 ) Set century off @ @ @ @ @ @ 11, 06 say " Montante: " get Montante pict "@K 99999999.99" 12, 06 say " Banco: " get bnc 13, 06 say " Favorecido: " get fav 14, 06 say " Localidade: " get loc 15, 06 say " Campo Especial: " get esp 16, 06 say " Data: " get dat if (Mod == 'E') @ 17, 06 say " LF1: " get LF1 pict "@K99" @ 18, 06 say " End1:" get Endosso1 @ 19, 06 say " LF2: " get LF2 pict "@K99" @ 20, 06 say " End2:" get Endosso2 endif read if (Mod == 'E') ret := Imprecheq( bnc, str( Montante * 100, 10), fav, loc, dat, esp ) @ 21, 06 say " Aguarde imprimindo o endosso ... ret := LinCheque( LF1, Endosso1 ) if ( ret == 0 ) ret := LinCheque( LF2, Endosso2 ) endif else ret := ImpCheque( bnc, str( Montante * 100, 10), fav, loc, dat, esp ) endif "

43

Verso do manual: AC 06/00

3.18 - Imprime linha no cupom


Funo: ImpLinha ( Linha ) Parmetros: # Linha String com at 48 caracteres com a mensagem a ser impressa. Observaes: Caso o mecanismo da impressora seja de 40 colunas (como o caso das impressoras verses 3.0x), o parmetro "Linha" deve trazer a informao apenas nos 40 primeiros bytes, considerando os 8 restantes como reserva. Esta a funo utilizada para imprimir linhas comerciais (aquelas entre o pagamento e o fim de transao), bem como para imprimir as duas linhas de layout (aquelas que se imprime logo aps o cabealho para informar o que significa cada dado na venda dos itens).

44

Verso do manual: AC 06/00

3.19 - Cancela transao


Funo: CancVenda ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, nmero do terminal etc). Observaes: Esta funo utilizada para abortar uma venda no transcorrer do cupom. Esta funo somente tem o poder de cancelar a venda antes da mesma ser finalizada. Com o cancelamento da venda, todas as operaes realizadas so canceladas e os totalizadores dirios permanecem inalterados.

Exemplo:
Static Function FCancelandoVenda () local Janela, cor, ret, oper, Descri1 cor := setcolor( cJanela ) janela := FazBox( 16, 30, 19, 75, "Aviso", cJanela, 3, cTitulo ) Descri1 := space( 10 ) Descri1 := "OPERADOR" @ 17, 33 say "Operador: read if( lastkey() == K_ESC ) R_TELA( janela ) setcolor( cor ) return endif @ 18, 33 say "Aguarde..." ret := CancVenda( Descri1 ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) else ret := LineFeed( 1, 10 ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL " get Descri1 pict "@K"

45

Verso do manual: AC 06/00

3.20 - Finalizando um cupom


Funo:
FimTrans ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc). Exemplo:
Static Function FFimVenda ( pr1, pr2 ) local Janela, cor, ret, Descri1, LinhaCom local n, i LinhaCom := space ( 48 ) cor janela Descri1 := setcolor( cJanela ) := FazBox( 17, 30, 20, 75, "Aviso", cJanela, 3, cTitulo ) := space( 10 )

if ( pr1 == 1 ) Descri1 := "OPERADOR" @ 18, 33 say "Operador: read endif @ 19, 33 say "Aguarde...Finalizando" ret := FimTrans( Descri1 ) if ( ret != 0 .and. ret != 69 ) MensagemErro( "Retorno Impressora", ret ) else ret := AbreGaveta() if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif ret := LineFeed( 1, 10 ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif return NIL " get Descri1 pict "@K"

46

Verso do manual: AC 06/00

3.21 - Finalizando um cupom com ativao de vnculo (ECFs verso 3.0x)


Funo:
FimTVinc ( OperTerm, VincVias ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (por exemplo: registro do operador, nmero do terminal, etc.). # VincVias String com exatamente 2 caracteres contendo a quantidade de cupons que desejamos vincular ao cupom que est sendo finalizado. No caso de estar sendo finalizado um cupom no fiscal vinculado, este parmetro informa a quantidade de vias que desejamos emitir deste cupom.

Exemplo:
Static Function FFimVenda ( pr1, pr2 ) local Janela, cor, ret, Descri1, LinhaCom local n, i, qvincula LinhaCom := space ( 48 ) qvincula := space ( 2 ) cor janela Descri1 := setcolor( cJanela ) := FazBox( 17, 30, 21, 75, "Aviso", cJanela, 3, cTitulo ) := space( 10 )

if ( pr1 == 1 ) Descri1 := "OPERADOR" qvincula := "00" @ 18, 33 say "Operador: " get Descri1 pict "@K" @ 19, 33 say "Vinculados/Vias: " get qvincula pict "@K 99" read endif if( lastkey() == K_ESC ) R_TELA( janela ) setcolor( cor ) return endif ret := FimTVinc( Descri1, qvincula ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) R_TELA( janela ) setcolor( cor ) return else @ 20, 33 say "Aguarde... Finalizando" endif

47

Verso do manual: AC 06/00

4 - Relatrios
4.1 - Leitura "X"
Funo: LeituraX ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc).

Exemplo:
Static Function _LeituraX(opc2) local Terminal, Janela, cor, ret cor := setcolor( cJanela ) janela := FazBox( 9, 20, 14, 55, "Imprime Relatorio X", cJanela, 3, cTitulo ) Terminal := space( 8 ) Terminal := "OPERADOR" @ 11, 24 say "Operador:" get Terminal pict "XXXXXXXX" read ret := LeituraX( Terminal ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif return NIL

48

Verso do manual: AC 06/00

4.2 - Leitura "X" gerencial (para ECF verso 3.0x)


Funo: LeitXGer ( OperTerm )

Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc). Observaes: A leitura X gerencial imprime os mesmos dados que a leitura X convencional. A diferena est no fato de que a leitura X gerencial no fecha o cupom (imprimindo o rodap), permitindo que o usurio inclua informaes adicionais, caracterizando um relatrio prprio de cunho gerencial. Para a impresso desta parte adicional, o usurio tem 10 minutos somente. Depois de expirado este tempo mximo, a impressora automaticamente fecha o relatrio, imprimindo o rodap. O usurio pode ainda fechar o relatrio antes do tempo, enviando um fim de transao.

Exemplo:
Static Function _LeitXGer(opc2) local Terminal, Janela, cor, ret, Vezes, Repet cor := setcolor( cJanela ) janela := FazBox( 13, 20, 18, 55, "Imprime Relato X Gerencial", cJanela, 3, cTitulo ) Terminal := space( 8 ) Terminal := "OPERADOR" @ 15, 24 say "Operador:" get Terminal pict "XXXXXXXX" read if( lastkey() != K_ESC ) @ 17, 24 say "Aguarde..." ret := LeitXGer( Terminal ) if ( ret != 0 ) MensagemErro( "Retorno Impressora", ret ) endif endif R_TELA( janela ) setcolor( cor ) return NIL

49

Verso do manual: AC 06/00

4.3 - Reduo "Z"


Funo: ReducaoZ ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc). Observaes: O nico cuidado com esta funo diz respeito ao fato de que ela faz o fechamento do dia corrente, ficando impossibilitada a venda aps a utilizao desta funo. A impressora no faz o fechamento do dia automaticamente, ficando ao encargo do aplicativo a realizao do fechamento do dia. Embora isto torne as operaes mais flexveis, por outro lado aumenta a responsabilidade do aplicativo que trabalha com a impressora fiscal. Neste sentido, sugere-se sempre rotinas de proteo que impeam que um usurio mais desatento realize o fechamento do dia de forma indevida.

50

Verso do manual: AC 06/00

4.4 - Reduo "Z" gerencial (para ECF verso 3.0x)


Funo: ReducZGer ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc). Observaes: A reduo Z gerencial imprime os mesmos dados que a reduo Z convencional. A diferena est no fato de que a reduo Z gerencial no fecha o cupom (imprimindo o rodap), permitindo que o usurio inclua informaes adicionais, caracterizando um relatrio prprio de cunho gerencial. Para a impresso desta parte adicional, o usurio tem 10 minutos somente. Depois de expirado este tempo mximo, a impressora automaticamente fecha o relatrio, imprimindo o rodap. O usurio pode ainda fechar o relatrio antes do tempo, enviando um fim de transao.

51

Verso do manual: AC 06/00

4.5 - Leitura "X" serial


Funo: VRet := LeitXSer ( ) Parmetros: No possui Retorno: A funo LeitXSer() retorna um vetor com as seguintes caractersticas. # Vret[1] Retorno da funo (cdigo de retorno). Quando o valor de Vret[1] for diferente de 0 (cdigo de retorno = Comando OK) desconsiderar os valores dos demais vetores. # Vret[2] Nmero da prxima reduo (String de 4 bytes). # Vret[3] Data da abertura, corresponde a data em que foi realizada a primeira venda, caso ainda no tenha ocorrido nenhuma venda esta data corresponde a data atual, no seguinte formato "DD/MM/AA" (String de 8 caracteres). # Vret[4] Contador de reincio. Nmero de intervenes tcnicas realizadas na impressora (String de 4 caracteres). # Vret[5] Nmero do primeiro documento fiscal emitido aps o ltimo fechamento (String de 6 caracteres). # Vret[6] Nmero do ltimo documento fiscal emitido (String de 6 caracteres). # Vret[7] Contador de documentos fiscais cancelados (String de 6 caracteres). # Vret[8] Totalizador contendo a soma de todos os valores pertencentes a itens classificao fiscais, que foram cancelados no dia (String de 21 caracteres).

de

# Vret[9] Totalizador contendo a soma de todos os descontos do dia, realizados em itens fiscais (String de 21 caracteres). # Vret[10] Totalizador contendo a soma de todos os acrscimos do dia, em itens fiscais (String de 21 caracteres). # Vret[11] Totalizador dirio contendo toda a venda realizada no dia, em itens de classificao fiscal, exceto os cancelamentos e descontos (String de 21 caracteres). # Vret[12] Totalizador dirio contendo a soma de itens de situao classificada como "Substituio tributaria" (String de 18 caracteres).

tributria

52

Verso do manual: AC 06/00

# Vret[13] Totalizador dirio contendo a soma de itens classificada como "Isento" (String de 18 caracteres).

de

situao

tributria

# Vret[14] Totalizador dirio contendo a soma de itens de classificada como "No incidente" (String de 18 caracteres).

situao

tributria

Os trs vetores descritos a seguir sero repetido dez vezes, uma para cada taxa de alquota programada, da taxa 00 a taxa 09 consecutivamente. # Vret[15] (Vret[18], Vret[21], Vret[24], Vret[27], Vret[30], Vret[33], Vret[36], Vret[39], Vret[42]) Alquota efetiva programada. No seguinte formato 99,99 % (String de 5 caracteres). # Vret[16] (Vret[19], Vret[22], Vret[25], Vret[28], Vret[31], Vret[34], Vret[37], Vret[40], Vret[43]) Totalizador contendo a soma de itens de situao tributria classificada nesta alquota efetiva (String de 18 caracteres). # Vret[17] (Vret[20], Vret[23], Vret[26], Vret[29], Vret[32], Vret[35], Vret[38], Vret[41], Vret[44]) Montante do correspondente imposto debitado nesta classificao (String de 18 caracteres).

# Vret[45] Nmero do primeiro (String de 6 caracteres).

documento

no

fiscal

emitido

aps

ltimo

fechamento

# Vret[46] Nmero do ltimo documento no fiscal emitido (String de 6 caracteres). # Vret[47] Contador de documentos no fiscais cancelados (String de 6 caracteres). # Vret[48] Totalizador dirio contendo (String de 18 caracteres).

soma

de

itens

classificada

como

"Sangria"

# Vret[49] Totalizador dirio contendo a soma de itens classificada como "Entrada de numerrio" (String de 18 caracteres). # Vret[50] Totalizador dirio contendo (String de 18 caracteres).

soma

de

itens

classificada

como

"Servio"

# Vret[51] Totalizador dirio contendo a soma de itens classificada como "Recebimento" (String de 18 caracteres). # Vret[52] Totalizador contendo a soma de todos os valores pertencentes a itens classificao no fiscal, que foram cancelados no dia (String de 18 caracteres).

de

# Vret[53] Totalizador contendo a soma de todos os descontos do dia, realizados em itens no fiscais (String de 18 caracteres).

53

Verso do manual: AC 06/00

# Vret[54] Totalizador contendo a soma de todos os acrscimos do dia, realizados em itens no fiscais (String de 18 caracteres). # Vret[55] Total de tempo emitindo cupom no dia, no formato HHH:MM:SS (String caracteres).

de

# Vret[56] Total em que a impressora se encontra ligada no dia, no formato HHH:MM:SS (String de 9 caracteres).

Observaes: Na descrio deste comando "Item fiscal" so todos os itens incidentes de "ICMS" ou que possuem a seguinte situao tributria "Substituio tributria", "Iseno" ou "No incidente". E tambm, quando nos referimos a "Item no fiscal", estamos nos referindo a todos os itens no incidentes de "ICMS", Ex.: "Recebimentos de prestao", "Sangria", "Entrada de numerrio" etc. Na descrio deste comando a referncia "dia" corresponde ao dia em que foi realizado a abertura sem ter realizado o fechamento ou seja no dia em que ocorreu a emisso de um cupom de venda sem ainda ter ocorrido a reduo Z, caso no tenha ocorrido abertura a referncia "dia" corresponde ao dia atual. Outro detalhe ilustrativo: os parmetros de retorno que possuem valores em moeda corrente possuem pontos e virgula. A esquerda do valor preenchida com zeros. Ex.:0000000009.470,30. Esta funo pode ser utilizada tanto na verso 2.04 quanto na verso 3.0x. No entanto, ela mais apropriada para a verso 2.04, j que ela, por exemplo, no cobre toda a extenso de alquotas programadas na verso 3.0x.

54

Verso do manual: AC 06/00

4.6 - Leitura da memria fiscal (comando 1)


Funo: Vret = LeitMFisc ( vTot, vUsu, vRed, Tipo, Di, Df, Ri, Rf) Parmetros: # vTot Vetor onde vTot[4] retorna o total do GT no perodo selecionado pelos Parmetros da data ou reduo. # vUsu Vetor dos usurios onde cada posio do vetor retorna as seguintes informaes. 18 caracteres com o CGC; 15 caracteres com a Inscrio estadual; 08 caracteres com a data inicial; 05 caracteres com a hora inicial; 08 caracteres com a data final; 05 caracteres com a hora final. O nmero de posies necessrias definido pelo nmero de usurios cadastrados no perodo selecionado, podendo chegar no mximo a 20 usurios. # vRed Este Parmetro o vetor de redues, onde cada posio retorna as informaes de uma reduo selecionada, cada posio possui as seguintes informaes. 04 caracteres com o nmero da reduo; 04 caracteres com o valor do contador de reincio na poca da reduo; 08 caracteres com a data em que foi realizado a reduo; 05 caracteres com a hora da realizao da reduo; 20 caracteres com o valor acumulado no GT no dia da reduo. O nmero de posies necessrias definido pelo nmero de redues realizadas no perodo selecionado. # Tipo Determina o tipo de leitura que se deseja realizar, entre datas ou entre redues. Alm disto, define se o resultado da operao de leitura ser impresso, ou se ser enviado ao terminal como resposta ao comando. Neste ltimo caso, os dados sero retornados aplicao atravs dos vetores dos Parmetros de entrada da funo. 1 2 3 4 # Di Se o Parmetro "Tipo" for 1 ou 3. Este Parmetro uma string que corresponde data inicial do perodo. Deve ser fornecido no formato ddmmaa; # Df Se o Parmetro "Tipo" for 1 ou 3. Este Parmetro uma string que corresponde data final do perodo. Deve ser fornecido no formato ddmmaa; # Ri Se o Parmetro "Tipo" for 2 ou 4. Este parmetro o valor que corresponde reduo inicial, devendo estar na faixa de 0 9999; # Rf Se o Parmetro "Tipo" for 2 ou 4. Este parmetro o valor que corresponde reduo final, devendo estar na faixa de 0 9999. = = = = leitura leitura leitura leitura por perodo entre datas ser impressa; entre redues ser impressa; por perodo entre datas ser retornada atravs dos vetores; entre redues ser retornada atravs dos vetores;

55

Verso do manual: AC 06/00

Observaes: Se no parmetro "Tipo" for selecionado perodo entre datas, os valores dos parmetros "Ri" e "Rf" so ignorados. Se no parmetro "Tipo" for selecionado perodo entre redues, os parmetros "Di" e "Df" so ignorados. No entanto, todos os parmetro de chamada da funo devem ser passados independente de serem considerados ou no. Para aplicaes que utilizem a biblioteca e o driver em modo protegido, devese realizar a leitura da memria fiscal em blocos, sendo que cada bloco deve ser selecionado em no mximo 100 redues.

Exemplo:
O exemplo a seguir utiliza o comando "Leitura de Disponibilidade da Memria Fiscal" para definir o nmero de vetores para os dados dos usurios e das redues. Aps a leitura da memria fiscal os dados so colocados em um arquivo.

Local vRet:= {}, vUsu:= {}, vRed:= {}, vTot:= {}, i, vRetF:= {} local DtIni, DtFim, Tipo, Red_i, ReD_f, Drive, Arquivo DtIni Tipo Red_i Arquivo Drive := := := := := DtFim := ctod ( "" ) 1 Res_f := 0 space(11) "C"

aadd( vRet, 0 ) @ 13,24 say "Tipo: " Tipo < 5 .and. Tipo > 0 @ 14,24 say "Data Inicial: " Tipo == 1 .or. Tipo == 3 @ 15,24 say "Data Final: " Tipo == 1 .or. Tipo == 3 @ 16,24 say "Reduo Inicial:" when Tipo == 2 .or. Tipo == 4 @ 17,24 say "Reduo Final: " when Tipo == 2 .or. Tipo == 4 @ 18,24 say "Arquivo: " XXXXXXXXXXX" when Tipo > 2

get Tipo pict "@K 9" valid; get DtIni pict "@K" when; get DtFim pict "@K" when;

get Red_i pict "@K 9999"; get Red_f pict "@K 9999" get Arquivo pict "@K;

if( lastkey() != K_ESC ) DtIni := dtoc( DtIni ) DtFim := dtoc( DtFim ) DtIni := substr(DtIni,1,2) + substr(DtIni,4,2) + substr(DtIni,7,2) DtFim := substr( DtFim,1,2) + substr(DtFim,4,2) + substr( DtFim, 7, 2 ) @ 19,24 say aadd( vRet, aadd( vRet, aadd( vRet, ret := "Aguarde..." 0 ) 0 ) 0 )

LeitDispMF( VRet, tipo, DtIni, DtFim, Red_i, Red_f )

if( vRet[ 1 ] == 0 ) vRet[ 2 ] = if( vRet[ 2 ] == 0, 1, vRet[ 2 ] ) vRet[ 3 ] = if( vRet[ 3 ] == 0, 1, vRet[ 3 ] ) for i = 1 to vRet[ 2 ] aadd( vUsu, space( 59 ) ) next for i = 1 to vRet[ 3 ] aadd( vRed, space( 41 ) ) next

56

Verso do manual: AC 06/00

aadd( aadd( aadd( aadd(

vCab, vCab, vCab, vCab,

0 ) 0 ) 0 ) space( 20 ) )

LeitMFisc( vCab, vUsu, vRed, tipo, DtIni, DtFim, Red_i, Red_f ) if( Tipo == 3 .or. Tipo == 4 ) Arquivo := alltrim( Arquivo ) set printer to ( Arquivo ) set device to printer for i = 1 to len( vUsu ) @ prow()+1,1 say substr(vUsu[i], substr( vUsu[ i substr( vUsu[ i substr( vUsu[ i substr( vUsu[ i substr( vUsu[ i next for i = 1 to len( vRed ) @ prow() + 1, 1 say substr( substr( substr( substr( substr( next

1,18)+; ], 19, 15 ], 34, 8 ], 42, 5 ], 47, 8 ], 55, 5

) ) ) ) )

+ + + +

" " " "

" " " "

+; +; +; +;

vRed[ vRed[ vRed[ vRed[ vRed[

i i i i i

], ], ], ], ],

1, 5, 9, 17, 22,

4 4 8 5 20

)+" ) + ) + ) + )

"+; " " +; " " +; " " +;

@ prow() + 1, 1 say substr( vCab[ 4 ], set device to screen set printer to endif endif endif

1, 20 )

57

Verso do manual: AC 06/00

4.7 - Leitura da memria fiscal ( comando 2 )


Funo: Vret = LeitMemFisc( Arq, Tipo, Di, Df, Ri, Rf) Parmetros: # Arq Este parmetro contm o driver, o nome e a extenso do arquivo para retorno via comunicao serial ( Ex.: a:relat.txt ). # Tipo Determina o tipo de leitura que se deseja realizar, entre datas ou entre redues. Alm disto, define se o resultado da operao de leitura ser impresso, ou se ser enviado ao terminal como resposta ao comando. Neste ltimo caso, os dados sero retornados aplicao e armazenados no arquivo definido pelo parmetro "Arq". 1 = leitura por perodo entre datas ser impressa; 2 = leitura entre redues ser impressa; 3 = leitura por perodo entre datas ser retornada em "Arq"; 4 = leitura entre redues ser retornada em "Arq". # Di Se o parmetro "Tipo" for 1 ou 3. Este parmetro uma string que corresponde data inicial do perodo. Deve ser fornecido no formato ddmmaa; # Df Se o parmetro "Tipo" for 1 ou 3. Este parmetro uma string que corresponde data final do perodo. Deve ser fornecido no formato ddmmaa; # Ri Se o Parmetro "Tipo" for 2 ou 4. Este parmetro o valor que corresponde reduo inicial, devendo estar na faixa de 0 a 9999; # Rf Se o Parmetro "Tipo" for 2 ou 4. Este parmetro o valor que corresponde reduo final, devendo estar na faixa de 0 a 9999.

Observaes: Este comando difere do comando anterior, de leitura da memria fiscal, para as opes de leitura via comunicao serial. Neste comando os dados so armazenados em um arquivo seguindo um formato de armazenamento j definido pela funo. Se no Parmetro "Tipo" for selecionado perodo entre datas, os valores dos Parmetros "Ri" e "Rf" so ignorados. Se no Parmetro "Tipo" for selecionado perodo entre redues, os Parmetros "Di" e "Df" so ignorados. Todos os Parmetro de chamada da funo devem ser passados independente de serem considerados ou no. Para aplicaes que so executadas no modo protegido, quando utilizar a leitura da memria fiscal via comunicao serial, deve realizar a leitura da memria em blocos, cada bloco deve ser selecionado no mximo 100 redues, evitando assim problemas com violao de acesso na memria devido ao tamanho dos buffers internos.

Retorno:
Aps a chamada da funo de leitura da memria fiscal retornada, alm do arquivo com os dados da memria, quando "Tipo" 3 ou 4, retornado um vetor com a seguintes caracterstica: # Vret[1] Cdigo de retorno da funo;

58

Verso do manual: AC 06/00

Exemplo:
local DtIni, DtFim, Tipo, Red_i, Res_f, Drive, Arquivo local vRet := {} DtIni Tipo Red_i Arquivo Drive := := := := := DtFim := ctod( "" ) 1 Res_f := 0 space( 11 ) "A"

aadd( vRet, 0 ) @ 13,24 say "Tipo: " Tipo < 5 .and. Tipo > 0 @ 14,24 say "Data Inicial: " Tipo == 1 .or. Tipo == 3 @ 15,24 say "Data Final: " Tipo == 1 .or. Tipo == 3 @ 16,24 say "Reduo Inicial:" when Tipo == 2 .or. Tipo == 4 @ 17,24 say "Reduo Final: " when Tipo == 2 .or. Tipo == 4 @ 18,24 say "Arquivo: " XXXXXXXXXXX" when Tipo > 2 read get Tipo pict "@K 9" valid; get DtIni pict "@K" when; get DtFim pict "@K" when;

get Red_i pict "@K 9999"; get Res_f pict "@K 9999" get Arquivo pict "@K;

if( lastkey() != K_ESC ) DtIni := dtoc( DtIni ) DtFim := dtoc( DtFim ) DtIni := substr(DtIni,1,2) + substr(DtIni,4,2) +; substr(DtIni,7,2) DtFim := substr( DtFim,1,2) + substr(DtFim,4,2) +; substr( DtFim, 7, 2 ) @ 19,24 say "Aguarde..." vRet:= LeitMemFisc ( Arquivo, Tipo, DtIni, DtFim, ; Red_i, Res_f ) if ( vRet[ 1 ] != 0 ) @ 19,24 say "Erro..." inkey( 0 ) else @ 19,24 say "Ok..." inkey( 0 ) endif endif

59

Verso do manual: AC 06/00

Exemplo de retorno: ------------------------------------------------------------------------Relatrio da Leitura da Memria Fiscal Relao dos Proprietrios Anteriores CGC IE Data e Hora Incio Data e Hora Trmino 47.396.635/0002-02 11020170011 13/03/96 17:03 25/03/96 12:13 47.396.635/0002-02 11020170011 26/03/96 12:13 Relao das Redues Reduo 0001 0002 0003 0004 0005 Reincio 0001 0001 0001 0001 0001 Data 13/03/96 14/03/96 15/03/96 16/03/96 18/03/96 Hora 21:04 21:15 21:05 20:59 21:12 Total 0000000000001.348,20 00000000000000935,50 0000000000001.105,00 0000000000001.740,10 0000000000001.351,30

Total do Perodo = 0000000000006.480,10 -------------------------------------------------------------------------

60

Verso do manual: AC 06/00

4.8 - Leitura de disponibilidade da memria fiscal


Funo: Ret := LeitDispMF ( VRet, Tipo, data_inc, data_fim, red_inc, red_fim) Parmetros: # VRet Vetor que retorna os dados: VRet[1] - Retorno do cdigo da funo; VRet[2] - Nmero de usurios cadastrados no perodo; VRet[3] - Nmero de redues realizadas no perodo. # Tipo Determina o tipo de pesquisa que se deseja realizar, entre datas ou entre redues. 3 = Pesquisa por perodo entre datas; 4 = Pesquisa entre redues. # data_inc Utilizado se o Parmetro "Tipo" for 3. String que corresponde data inicial do perodo. Deve ser fornecido no formato ddmmaa; # data_fin Utilizado se o Parmetro "Tipo" for 3. String que corresponde data final do perodo. Deve ser fornecido no formato ddmmaa; # red_inc Utilizado se o Parmetro "Tipo" for inicial, devendo estar na faixa de 0 9999;

4.

Valor

que

corresponde

reduo

# red_fim Utilizado se o Parmetro "Tipo" for 4. Valor que corresponde reduo final, devendo estar na faixa de 0 9999.

Observaes: Se no parmetro "Tipo" for selecionado perodo Parmetros "red_inc" e "red_fim" so ignorados. selecionado perodo entre redues, os parmetros ignorados. Todos os parmetro de chamada da funo devem serem considerados ou no. entre datas, os valores dos Se no parmetro "Tipo" for "data_inc" e "data_fim" so ser passados independente de

61

Verso do manual: AC 06/00

5 - Auxiliares
5.1 - Cancelando um cupom j finalizado
Funo: CancDoc ( OperTerm ) Parmetros: # OperTerm String com no mximo 8 caracteres para a descrio de algum dado informativo (ex. registro do operador, Nmero do terminal etc).

5.2 - Line Feed (avanando linhas)


Funo: LineFeed ( Est, Lin )

Parmetros: # Est Valor que determina o tipo da estao. Assume sempre o valor 1. # Lin Nmero de linhas a serem avanadas.

5.3 - Abertura da gaveta


Funo: AbreGaveta( ) Observaes: Esta funo, que no possui parmetros, apenas gera um pulso no conector da gaveta, visando a abertura da mesma. A impressora no vincula a abertura da gaveta a nenhuma condio, podendo ocorrer a qualquer momento. Detalhes de segurana devem ser supridos pelo aplicativo que utiliza a impressora fiscal.

62

Verso do manual: AC 06/00

5.4 - Status da impressora


Funo: VRet = StatusImp() Parmetros: Nenhum. Retorno: A funo StatusImp() retorna um vetor com as seguintes caractersticas. # Vret[1] Retorno da funo. Quando o dado de retorno VRet[ 1 ] for algum valor diferente de zero os demais dados de retorno, o restante dos vetores devem ser ignorados. # Vret[2] Nmero de usurios. # VRet[ 3 ] Valor do estado interno da impressora: 0 = livre; 65 = em venda; 90 = cupom aberto (s o cabealho impresso); 99 = em interveno tcnica; 100 = em perodo de venda; 113 = espera de fechamento; 115 = fechamento do dia j realizado; 122 = relatrio; 123 = em pagamento; 124 = em linha comercial; # VRet[ 4 ] Uma das descries acima. # VRet[ 5 .t. # VRet[ 6 .t. # VRet[ 7 .t. # VRet[ 8 .t. ] ou ] ou ] ou ] ou

.f. - sensor de pouco papel. .f. - sensor de autenticao. .f. - sensor da gaveta. .f. - sensor de documento( estao de cheques ).

Exemplo:
Static Function _StatusDaImpressora() local Ret, Janela, cor cor := setcolor( cJanela ) janela := FazBox( 10, 20, 19, 71, "Status da Impressora", cJanela, 3, cTitulo )

@ 14, 23 say "Aguarde..." do while( lastkey() != K_ESC ) Ret := StatusImp()

63

Verso do manual: AC 06/00

if ( Ret[ 1 ] != 0 ) MensagemErro( "Retorno Impressora", Ret[ 1 ] ) else @ 11, 23 say "Total de Usuarios: " ?? Ret[ 2 ] @ 12, 23 say "Estado Interno: " ?? Ret[ 3 ] @ 13, 23 say "Estado Interno: " ?? Ret[ 4 ] @ 14, 23 say "Sensor de Pouco Papel: " ?? Ret[ 5 ] @ 15, 23 say "Sensor de Autenticaao: " ?? Ret[ 6 ] @ 16, 23 say "Sensor da Gaveta: " ?? Ret[ 7 ] @ 17, 23 say "Sensor de Documento: " ?? Ret[ 8 ] endif inkey( 1 ) enddo return NIL

64

Verso do manual: AC 06/00

5.5 - Status do cupom


Funo: VRet := StatusCup( )

Parmetros: Nenhum. Retorno: A funo StatusCup( ) retorna um vetor com as seguintes caractersticas: # Vret[1] Retorno da funo. # VRet[ 2 ] O Nmero do ECF. # VRet[ 3 ] O tipo do documento: 0 = no fiscal 1 = fiscal 2 = fora de cupom # VRet[ 4 ] O Nmero do cupom. # VRet[ 5 ] String contendo a data no formato # VRet[ 6 ] String de at 22 bytes contendo o # VRet[ 7 ] String de at 22 bytes contendo o # VRet[ 8 ] String de 6 caracteres com a hora

dd/mm/aa. valor do subtotal. valor do grande total (GT). atual, no seguinte formato HHMMAA.

Observaes: O valor do subtotal e do grande total so retornados sem o ponto decimal, assumindo-se que os 2 dgitos mais direita compem a parte fracionria. Quando o dado de retorno VRet[1] retornar algum valor diferente de zero os demais dados de retorno, o restante dos vetores, devem ser ignorados, uma vez que a informao que eles contero ser descartvel.

Exemplo:
Static Function _StatusCup() local VRet, Janela, cor cor := setcolor( cJanela ) janela := FazBox( 11, 20, 20, 71, "Status do Cupom", cJanela, 3, cTitulo ) @ 15, 23 say "Aguarde..." do while( lastkey() != K_ESC ) VRet := StatusCup() if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else

65

Verso do manual: AC 06/00

@ 13, 23 say "Nmero do ECF: " ?? VRet[ 2 ] @ 14, 23 say "Tipo Documento: " ?? VRet[ 3 ] @ 15, 23 say "Nmero do Cupom: " ?? VRet[ 4 ] @ 16, 23 say "Data: " ?? VRet[ 5 ] @ 17, 23 say "Sub Total: " ?? VRet[ 6 ] @ 18, 23 say "Grande Total: " ?? VRet[ 7 ] @ 19, 23 say "Hora Atual " ?? (substr( VRet[ 8 ], 1, 2) + ':'; +substr( VRet[ 8 ], 3, 2) + ':'; +substr( VRet[ 8 ], 5, 2) ) endif inkey( 1 ) enddo return NIL

66

Verso do manual: AC 06/00

5.6 - Status das alquotas (para ECF verso 3.0x)


Funo: StatusAl(numaliq) Parmetro: # numaliq String com 2 caracteres contendo o nmero da alquota sobre a qual desejamos obter o status. Assume valores de "00" at "15". Retorno: A funo StatusAl retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha. # VRet[ 2 ] Retorna o tipo de alquota. Neste campo retorna a string "S" caso a alquota seja de ISSQN, ou a string "T", caso a alquota seja de ICMS. # VRet[ 3 ] Neste parmetro volta o valor da alquota, no formato "nn,nn". Observe que o valor j vem com vrgula. # VRet[ 4 ] Neste campo retorna o valor o total j vendido nesta alquota. # VRet[ 5 ] Neste campo retorna o valor da tributao, relativa ao total j vendido nesta alquota em especfico.

Exemplo:
Static Function _StAL() local VRet, Janela, cor local IndAliq, numaliq cor := setcolor( cJanela ) janela := FazBox( 14, 20, 19, 71, "Status de uma Aliquota", cJanela, 3, cTitulo ) IndAliq := space( 2 ) IndAliq := "00" numaliq := 0 @ 16, 23 say "Indice da Aliquota: " get IndAliq pict "@K 99" read numaliq := val(Indaliq) if (numaliq > 20) MensagemErro("Entrada de dados incorreta", 400) else @ 18, 23 say "Aguarde..." do while ( lastkey() != K_ESC )

67

Verso do manual: AC 06/00

VRet := StatusAl(numaliq) if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else if ( VRet[2] == "S" ) @ 16, 23 say " @ 16, 23 say "ISSQN : " ?? VRet[ 3 ] endif if ( VRet[2] == "T" ) @ 16, 23 say " @ 16, 23 say "ICMS : " ?? VRet[ 3 ] endif @ 17, 23 ?? VRet[ @ 18, 23 ?? VRet[ endif inkey(1) enddo endif return NIL say " Total parcial : " 4 ] say "Imposto incidente : " 5 ]

"

"

68

Verso do manual: AC 06/00

5.7 - Status dos pagamentos (para ECF verso 3.0x)


Funo: StatusPg(numpag)

Parmetro: # numpag String com 2 caracteres contendo a posio que a forma de pagamento ocupa na tabela programada de formas de pagamento. Assume valores de "00" at "15". Retorno: A funo StatusPg retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha. # VRet[ 2 ] Retorna uma string de uma posio que indica se esta forma de pagamento est ativa ou no. Caso a forma de pagamento esteja ativa, este campo conter "S". Caso esteja inativa, conter "N". # VRet[ 3 ] Retorna uma string de uma posio que indica se esta forma de pagamento tem algum vnculo ou no. Caso a forma de pagamento possua algum vnculo, este campo conter "S". Caso esteja inativa, conter "N". # VRet[ 4 ] Retorna uma string que contm a descrio da forma de pagamento em questo. Exemplos de descries seriam "dinheiro", "cheque", "cartao credito", etc. # VRet[ 5 ] A string retornada utilizando-se esta forma totalizador particular.

neste campo traz o valor de quanto j foi vendido de pagamento. Cada forma de pagamento possui o seu

Exemplo:
Static Function _StPags() local VRet, Janela, cor local IndPaga, numpaga cor := setcolor( cJanela ) janela := FazBox( 12, 20, 17, 71, "Status de um pagamento", cJanela, 3, cTitulo ) IndPaga := space( 2 ) IndPaga := "00" numpaga := 0 @ 14, 23 say "Indice do pagamento: " get IndPaga pict "@K 99" read numpaga := val(IndPaga) do while( lastkey() != K_ESC )

69

Verso do manual: AC 06/00

@ 16, 23 say "Aguarde..." VRet := StatusPg(numpaga) if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ 14, 23 say " " @ 13, 23 say ?? VRet[ 2 ] @ 14, 23 say ?? VRet[ 3 ] @ 15, 23 say ?? VRet[ 4 @ 16, 23 say ?? VRet[ 5 endif inkey(0) enddo return NIL "Ativado? => " "Tem vinculo? => " "Descricao do pag.: " ] "Total vendido: " ]

70

Verso do manual: AC 06/00

5.8 - Status dos comprovantes no fiscais ( ECF verso 3.0x)


Funo: StatusCnf(numcnf)

Parmetro: # numcnf String com 2 caracteres contendo a posio que o comprovante no fiscal programado ocupa na tabela de comprovantes no fiscais. Assume valores de "00" at "15". Retorno: A funo StatusCnf retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha. # VRet[ 2 ] Retorna uma string de uma posio que indica se este comprovante no fiscal est ativo ou no. Caso este comprovante no fiscal esteja ativo, este campo conter "S". Caso esteja inativo, conter "N". # VRet[ 3 ] Este campo contm o ttulo do comprovante no fiscal. Como ttulo entende-se a descrio do comprovante. # VRet[ 4 ] Este campo contm uma string que indica se o comprovante no fiscal em questo permite descontos nele. Caso este campo contenha "S", o comprovante permite descontos. Caso contenha "N", no permite. # VRet[ 5 ] Este campo contm uma string que indica se o comprovante no fiscal em questo permite acrscimos nele. Caso este campo contenha "S", o comprovante permite acrscimos. Caso contenha "N", no permite. # VRet[ 6 ] Este campo contm uma string que indica se o comprovante no fiscal em questo permite cancelamentos nele. Caso este campo contenha "S", o comprovante permite cancelamentos. Caso contenha "N", no permite. # VRet[ 7 ] Este campo contm uma string que indica se o comprovante no fiscal em questo obriga a existncia de pagamento nele. Caso este campo contenha "S", o comprovante obriga a existncia de pagamento. Caso contenha "N", o pagamento no condio obrigatria para o fechamento do comprovante. # VRet[ 8 ] Este campo contm uma string que indica se o comprovante no fiscal em questo vinculado. Caso este campo contenha "S", o comprovante vinculado. Caso contenha "N", no vinculado. # VRet[ 9 ]

71

Verso do manual: AC 06/00

Caso o comprovante no fiscal em questo seja vinculado, neste campo encontrase a posio do tipo de pagamento ao qual o comprovante vinculado. Por exemplo, se na posio 02 da tabela de pagamentos estiver o pagamento "Cartao Credito VISA", e o comprovante no fiscal em questo for vinculado a este tipo de pagamento, o campo Vret[9] conter a string "02". # VRet[ 10 ] Este campo contm quantos comprovantes no fiscais desta modalidade j foram emitidos no dia corrente de operao do ECF. # VRet[ 11 ] Este campo contm quantos comprovantes no fiscais desta modalidade j foram cancelados no dia corrente de operao do ECF. # VRet[ 12 ] Neste campo retorna uma string que contm o valor correspondente ao total de vendas computadas no comprovante no fiscal em questo. # VRet[ 13 ] Neste campo retorna uma string que contm o valor correspondente ao total de acrscimos computados no comprovante no fiscal em questo. Certamente que se o comprovante no fiscal foi programado para no aceitar acrscimos, no faz sentido a anlise deste totalizador. # VRet[ 14 ] Neste campo retorna uma string que contm o valor correspondente ao total de descontos computados no comprovante no fiscal em questo. Certamente que se o comprovante no fiscal foi programado para no aceitar descontos, no faz sentido a anlise deste totalizador. # VRet[ 15 ] Neste campo retorna uma string que contm o valor correspondente ao total de cancelamentos computados no comprovante no fiscal em questo. Certamente que se o comprovante no fiscal foi programado para no aceitar cancelamentos, no faz sentido a anlise deste totalizador.

Exemplo:
Static Function _StCnfs() local VRet, Janela, cor local IndPaga, numcnf cor := setcolor( cJanela ) janela := FazBox( 12, 20, 20, 71, "Status de compr. nao fiscal", cJanela, 3, cTitulo ) IndPaga := space( 2 ) IndPaga := "00" numcnf := 0 @ 14, 23 say "Indice do comprovante: " get IndPaga pict "@K 99" read numcnf := val(IndPaga) do while( lastkey() != K_ESC ) @ 16, 23 say "Aguarde..." VRet := StatusCnf(numcnf) if ( VRet[1] != 0 )

72

Verso do manual: AC 06/00

MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ @ @ @ @ @ @ @ @ @ @ @ @ endif inkey(0) R_TELA( janela ) setcolor( cor ) enddo return NIL @ 13, 23 say "Ativado? => " 13, 45 say "Titulo? => " 14, 23 say "Descontos? " 14, 45 say "Acrescimos? " 15, 23 say "Cancelamentos? " 15, 45 say "Tem pagamento? " 15, 45 say " vinculado? " 16, 23 say "Qual vinculo? " 16, 45 say "N. de CNFs: " 17, 23 say "Canc.s de CNFs: " 18, 23 say "Venda NF: " 18, 50 say "Acre. NF: " 19, 23 say "Desc. NF: " 19, 50 say "Canc. NF: " ?? VRet[ 2 ] ?? VRet[ 3 ] ?? VRet[ 4 ] ?? VRet[ 5 ] ?? VRet[ 6 ] ?? VRet[ 7 ] ?? VRet[ 8 ] ?? VRet[ 9 ] ?? VRet[ 10 ] ?? VRet[ 11 ] ?? VRet[ 12 ] ?? VRet[ 13 ] ?? VRet[ 14 ] ?? VRet[ 15 ]

73

Verso do manual: AC 06/00

5.9 - Status do usurio ( para ECF verso 3.0x )


Funo: StatusUsr(numuser)

Parmetro: # numuser String com 2 caracteres contendo o nmero do usurio. O primeiro usurio da mquina ter nmero "00", o segundo ter "01" e assim por diante. Assume valores de "00" at "19", pois a impressora permite no mximo 20 programaes de cabealhos. Retorno: A funo StatusUsr retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha. # VRet[ 2 ] Retorna uma string contendo a primeira linha de endereo do cabealho. # VRet[ 3 ] Retorna uma string contendo a segunda linha de endereo do cabealho. # VRet[ 4 ] Retorna uma string contendo a terceira linha de endereo do cabealho. # VRet[ 5 ] Neste campo retorna o nmero da loja. # VRet[ 6 ] Neste campo retorna o nmero do equipamento. # VRet[ 7 ] Neste campo retorna uma string contendo o nmero do CGC do usurio. # VRet[ 8 ] Neste campo retorna uma string contendo o nmero da IE (Inscrio Estadual) do usurio. # VRet[ 9 ] Neste campo retorna uma string que contm o nmero da IM (Inscrio Municipal) do usurio. # VRet[ 10 ] Neste campo retorna uma string que contm a data inicial, a partir da qual o atual usurio comeou a utilizar o ECF. # VRet[ 11 ] Neste campo retorna uma string que contm a hora inicial, a partir da qual o atual usurio comeou a utilizar o ECF. # VRet[ 12 ]

74

Verso do manual: AC 06/00

Neste campo retorna uma string que contm a data final, at a qual o respectivo usurio utilizou o ECF. Se for requisitado o status do usurio atual, a informao de data final no procede. # VRet[ 13 ] Neste campo retorna uma string que contm a hora final, at a qual o respectivo usurio utilizou o ECF. Se for requisitado o status do usurio atual, a informao de hora final no procede. # VRet[ 14 ] Neste campo retorna uma string que traz o contador de reincio do usurio em questo. # VRet[ 15 ] Neste campo retorna o grande total do usurio em questo.

Exemplo:
Static Function _StUsers() local VRet, Janela, cor local NumUser, numusuario cor := setcolor( cJanela ) janela := FazBox( 12, 20, 23, 71, "Status do usu rio", cJanela, 3, cTitulo ) NumUser := space( 2 ) NumUser := "00" numusuario := 0 @ 14, 23 say "Nmero do usu rio: " get NumUser pict "@K 99" read numusuario := val(NumUser) do while( lastkey() != K_ESC ) @ 16, 23 say "Aguarde..." VRet := StatusUsr(numusuario) if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ 13, 23 say " " ?? VRet[ 2 ] @ 14, 23 say " " ?? VRet[ 3 ] @ 15, 23 say " " ?? VRet[ 4 ] @ 16, 23 ?? VRet[ @ 16, 55 ?? VRet[ @ 17, 23 ?? VRet[ @ 17, 55 ?? VRet[ @ 18, 23 ?? VRet[ @ 19, 23 ?? VRet[ @ 20, 55 say "Num. Loja: " 5 ] say "Num. ECF: " 6 ] say "CGC: " 7 ] say "IE: " 8 ] say "IM: " 9 ] say "Data inicial: " 10 ] say "Hora inicial: "

75

Verso do manual: AC 06/00

?? VRet[ @ 21, 23 ?? VRet[ @ 21, 55 ?? VRet[ @ 22, 23 ?? VRet[ @ 22, 40 ?? VRet[ endif inkey(0) enddo return NIL

11 ] say "Data final: " 12 ] say "Hora final: " 13 ] say "Reinicio: " 14 ] say "Total: " 15 ]

76

Verso do manual: AC 06/00

5.10 - Status do equipamento ( para ECF verso 3.0x )


Funo: StatusEcf( ) Parmetro: No possui Retorno: A funo StatusEcf retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha. # Vret[ 2 ] Retorna a marca da impressora. # Vret[ 3 ] Retorna o modelo da impressora. # Vret[ 4 ] Retorna a verso do firmware da impressora. # Vret[ 5 ] Retorna o nmero de srie da impressora.

Exemplo:
Static Function _StEquip() local VRet, Janela, cor cor := setcolor( cJanela ) janela := FazBox( 14, 20, 19, 71, "Informacoes do ECF", cJanela, 3, cTitulo ) @ 18, 23 say "Aguarde..." VRet := StatusEcf() if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ 15, 23 say " Marca: " ?? VRet[ 2 ] @ 16, 23 say " Modelo: " ?? VRet[ 3 ] @ 17, 23 say " Versao do firmware: " ?? VRet[ 4 ] @ 18, 23 say " Numero de serie: " ?? VRet[ 5 ] endif return NIL

77

Verso do manual: AC 06/00

5.11 - Status do comprovantes vinculados ( para ECF verso 3.0x )


Funo: StatusVin(numcnf) Parmetro: # numcnf Este parmetro um inteiro numrico que indica qual a posio da tabela de comprovantes vinculados pendentes que desejamos investigar. Esta tabela de pendncias uma tabela temporria onde a impressora vai armazenando as informaes de cada um dos vnculos pendentes (a emitir). Cada novo vnculo que vai ficando pendente ocupa uma posio desta tabela temporria, que comea na posio 00. Cada pendncia emitida libera a sua respectiva posio na tabela temporria. Retorno: A funo StatusVin retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha e neste campo temos o prprio cdigo do erro. # Vret[ 2 ] Retorna a string "S" caso esta posio esteja contendo uma pendncia ativa ou "N" caso esta posio contenha pendncia j emitida ou ainda no usada. # Vret[ 3 ] Contm uma string de duas posies que traz o tipo de vnculo. Se foi gerado um vnculo a pagamento, esta informao trar a posio do pagamento ao qual houve o vnculo. Se ocorreu um vnculo a cupom, este campo conter a string "99". # Vret[ 4 ] Retorna uma string com o valor da operao efetuada no cupom que ativou o vnculo. # Vret[ 5 ] Retorna uma string com o valor da transao efetuada no cupom que ativou o vnculo. # Vret[ 6 ] Retorna uma string com o Contador de Ordem de Operao (COO) do cupom (fiscal ou no) que ativou o vnculo. # Vret[ 7 ] Retorna uma emitido, libera informao vlida informao vlida

string com a posio do comprovante no fiscal vinculado que, aps uma pendncia. Obviamente que este campo somente trar uma aps a liberao da pendncia. Assim, este campo no traz uma para a emisso do comprovante vinculado.

# Vret[ 8 ] Retorna uma string com o Contador de Ordem de Operao (COO) do comprovante no fiscal que, aps emitido, libera uma pendncia. Igualmente ao vetor anterior, este campo somente trar uma informao vlida aps a liberao da pendncia. Assim, este campo no traz uma informao vlida para a emisso do comprovante vinculado.

78

Verso do manual: AC 06/00

Exemplo:
Static Function _StVincs() local VRet, Janela, cor local IndPaga, numcnf cor := setcolor( cJanela ) janela := FazBox( 12, 18, 22, 76, "Status de comprovante vinculado", cJanela, 3, cTitulo ) IndPaga := space( 2 ) IndPaga := "00" numcnf := 0 @ 14, 21 say "Indice do comprovante: " get IndPaga pict "@K 99" read numcnf := val(IndPaga) if( lastkey() != K_ESC ) @ 16, 21 say "Aguarde... " VRet := StatusVin(numcnf) if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ 16, 21 say " @ 15, 21 say "Pendencia: " ?? VRet[ 2 ] @ 15, 47 say " Tipo do vinculo: " ?? VRet[ 3 ] @ 17, 21 say " Valor da operacao: " ?? VRet[ 4 ] @ 18, 21 say " Valor da transacao: " ?? VRet[ 5 ] @ 19, 21 say " Numero do cupom: " ?? VRet[ 6 ] @ 20, 21 say "Posicao do CNF emitido: " ?? VRet[ 7 ] @ 21, 21 say " Cupom emitido: " ?? VRet[ 8 ] endif inkey(0) R_TELA( janela ) setcolor( cor ) endif if (txrxview == ATIVO) MostraFiles( VRet[1] ) endif R_TELA( janela ) setcolor( cor ) return NIL

"

79

Verso do manual: AC 06/00

5.12 - Status do troco ( para ECF verso 3.0x )


Funo: StatusTrc( ) Parmetro: No possui Retorno: A funo StatusTrc retorna um vetor com as seguintes caractersticas: # Vret[ 1 ] Retorno da funo. Caso neste campo venha o valor zero (0), os demais campos so vlidos, pois o comando foi executado com sucesso. Caso contrrio, ocorreu uma falha e temos, ento, o prprio cdigo do erro neste campo. # Vret[ 2 ] Retorna uma string contendo a descrio do totalizador. No caso, ser "TOTAL DE TROCOS". # Vret[ 3 ] Retorna uma string contendo o montante acumulado de trocos.

Exemplo:
Static Function _StTroco() local VRet, Janela, cor cor := setcolor( cJanela ) janela := FazBox( 17, 20, 22, 71, "Totalizador de Troco", cJanela, 3, cTitulo ) @ 20, 23 say "Aguarde... " VRet := StatusTrc() if ( VRet[1] != 0 ) MensagemErro( "Retorno Impressora", VRet[ 1 ] ) else @ 20, 23 say " " @ 19, 23 say " Descricao : " ?? VRet[ 2 ] @ 20, 23 say " Montante: " ?? VRet[ 3 ] inkey(0) endif if (txrxview == ATIVO) MostraFiles( VRet[1] ) endif R_TELA( janela ) setcolor( cor ) return NIL

80

Verso do manual: AC 06/00

5.13 - Imprime linha de autenticao


Funo: Autenti(Linha) Parmetro: # Linha String com at 48 caracteres com a mensagem de autenticao. Observaes: Quando o modelo da impressora for DPrint o parmetro "Linha" deve ser formado pelos primeiros 40 bytes os 8 bytes restantes devem ser considerados como reservas. Na verso 3.00, a autenticao somente permitida aps efetuado o pagamento e antes do fechamento do cupom fiscal.

SCHALTER Eletrnica Ltda.

Av. Berlim, 514 - So Geraldo CEP 90240-580 Porto Alegre - RS FONE: (051) 3463799 FAX: (051) 3465140 www.schalter.com.br schalter@schalter.com.br

Reviso deste manual: AC 06/00

81

Verso do manual: AC 06/00

Anexo A - Cdigos de retorno


A cada comando transmitido para a impressora fiscal, esta envia um cdigo de retorno para o programa aplicativo. Este cdigo de retorno composto de 1 (um) byte, que assumir o valor zero (byte NULL) em caso de sucesso. Em caso de erro, o valor deste byte de retorno indicar o erro ocorrido. No decorrer deste anexo veremos o valor numrico de cada erro ocorrido. De acordo com o cdigo de retorno, o aplicativo poder tomar certas decises a fim de corrigir a seqncia ou solicitar a correo do erro.

obrigatria a leitura e interpretao do cdigo de retorno A maioria dos cdigos de retorno so provenientes da prpria impressora. No entanto, existem alguns cdigos que so provenientes das bibliotecas ou DLLs utilizadas pelo aplicativo na comunicao com a impressora. Pode ocorrer, ainda, situaes onde um valor lido na porta serial mas, por problemas de comunicao, este valor no confivel. Por exemplo, comum alguns aplicativos lerem, na porta serial, o valor 255. Este erro no consta na tabela, mas geralmente ocorre quando a porta serial do micro est desabilitada ou defeituosa. A seguir descrevemos a origem da gerao do cdigo de retorno.
Cdigo Cdigo Cdigo Cdigo Cdigo Cdigo Cdigo (-100D) ou cdigo(-101D): Biblioteca em CLIPPER. (-01D): Retorno do driver. (00D): Retorno da impressora. (01D) ao cdigo (19D): Retorno do driver. (20D) ao cdigo (23D): Retorno da biblioteca de funes de cheque. (30D) e o cdigo (31D): Retorno da biblioteca em COBOL. (60D) ao cdigo (200D): Retorno da impressora.

Os valores do byte de retorno so indicados sempre, entre parnteses, ao lado da descrio do erro. A letra "D" significa que o nmero est na base decimal. A letra "H" significa que o nmero est na base hexadecimal.

1 - Nmero de parmetros errado (-100D)


Este erro proveniente da biblioteca CL_ECF.LIB, para CLIPPER. Significa que o nmero de parmetros de entrada, passados pela funo, est incorreto.

2 - Tipo de parmetro errado (-101D)


Este erro proveniente da biblioteca CL_ECF.LIB, para CLIPPER. Significa que o tipo de um ou mais parmetros, passados pela funo, esto errados.

3 - Falha ao abrir o device driver (-1D)


No foi possvel abrir o device driver ECF. Provavelmente ECF.SYS no foi localizado nem instalado. Verifique a linha de instalao do driver no CONFIG.SYS de seu micro.

4 - Comando OK (00D - 00H)


Retorno proveniente da impressora, indicando que o comando foi executado com sucesso. Condio normal de funcionamento.

82

Verso do manual: AC 06/00

5 - Erro de checksum (01D - 01H)


Erro proveniente do driver residente na memria. Ocorreu um erro de checksum.

6 - Timeout RX (02D - 02H)


Erro proveniente do driver residente na memria. Dispositivo de recepo no responde. No caso, o dispositivo de recepo o micro, usando o ponto de vista da impressora. Verifique o cabo e se as portas seriais do micro no esto desabilitadas ou com a configurao errada.

7 - Memria insuficiente (03D - 03H)


Memria insuficiente no micro para executar a operao. Este erro tambm proveniente do driver, instalado na memria.

8 - Timeout TX (04D - 04H)


A impressora no responde. Este retorno, proveniente do driver, indica que a impressora est fora de linha, desligada ou desconectada. Verifique o cabo. Verifique se a porta serial que est sendo usada a mesma em que a impressora est conectada.

9 - Erro de overrun (10D - 0AH)


Erro proveniente do driver residente na memria. Erro de sobreposio.

10 - Erro de paridade (11D - 0BH)


Erro proveniente do driver residente na memria. Erro de paridade.

11 - Erro de overrun e paridade (12D - 0CH)


Erro de sobreposio e paridade.

12 - Erro de framing (13D - 0DH)


Erro de formato.

13 - Erro de sobreposio e formato (14D - 0EH)


Erro de sobreposio e formato.

14 - Erro de paridade e sobreposio (15D - 0FH)


Erro de paridade e sobreposio

15 - Erro mltiplo de comunicao (16D - 10H)


Erro de sobreposio, paridade e formato. Em todos estes erros que envolvem problemas com parmetros de comunicao serial, certifique-se de que o micro est configurado corretamente. Se voc estiver no ambiente Windows, especialmente o Windows 95, verifique a configurao das portas seriais no Painel de Controle.

16 - Erro de cadastro dos bancos (20D - 14H)


Erro no arquivo de cadastro de Lay-out dos bancos, possivelmente o arquivo "BANCO" no esta carregado no mesmo diretrio que o aplicativo.

83

Verso do manual: AC 06/00

17 - Banco no cadastrado (21D - 15H)


Banco selecionado no cadastrado. Se o cheque a ser preenchido no est cadastrado, existe a possibilidade de utilizar o banco "999", que contm um Lay-out genrico, com os parmetros mais comuns para todos os bancos cadastrados.

18 - Moeda no cadastrada (22D - 16H)


Erro no arquivo de cadastro da designao da moeda vigente no pas, possivelmente o arquivo "MOEDA" no esta carregado no mesmo diretrio que o aplicativo.

19 - Extenso excedido (23D - 17H)


O valor por extenso excedeu as posies das duas linhas do cheque.

20 - Erro de memria (30D - 1EH)


Memria insuficiente no terminal para executar a operao de leitura da memria fiscal pela aplicao em COBOL. Este erro retornado pela biblioteca CBL_ECF.LIB.

21 - Erro de arquivo (31D - 1FH)


Erro no arquivo de leitura da memria fiscal, possivelmente o arquivo "MEFISCAL" no esta carregado no mesmo diretrio que o aplicativo. Este erro retornado pela biblioteca CBL_ECF.LIB.

22 - Em venda (65D - 41H)


Impressora em transao de venda. Este erro ocorreu provavelmente porque algum comando no aceito durante o perodo de transao de venda foi enviado para a impressora.

23 - Limite de cabealho alcanado (66D - 42H)


Nmero mximo da gravao de cabealho alcanado. So permitidas at 20 trocas de cabealho do estabelecimento durante a vida til da impressora fiscal. Na tentativa de programar o 21, este erro ocorre.

24 - Cabealho impresso (68D - 44H)


Este cdigo de retorno ocorre quando for enviado um novo comando de impresso de cabealho, j estando a impressora com um cabealho impresso.

25 - No comeou venda (69D - 45H)


Algum comando de transao de venda foi enviado para a impressora sem que a mesma tenha sido iniciada. Por exemplo, a tentativa de venda de item sem que o cabealho tenha sido impresso gera este erro.

26 - Valor invlido (70D - 46H)


Foi feita a tentativa de vender um item com valor zero.

27 - Valor a menor (73D - 49H)


Valor do total da forma de pagamento a menor do que o total da venda. necessrio o complemento do pagamento.

28 - Valor a maior (74D - 4AH)


Valor da forma de pagamento prazo maior do que o total da venda. Este erro tornou-se obsoleto nas verses 3.00 e 3.01, uma vez que o pagamento prazo no mais existe nestas verses.

84

Verso do manual: AC 06/00

29 - Limite de Redues Z atingido (78D - 4EH)


Alcanada a capacidade mxima de redues permitidas pela impressora. Na verso 3.00, esta capacidade mxima de 2600.

30 - Erro de checksum (79D - 4FH)


Possvel falha de comunicao. Encontrado valor invlido em uma varivel ou erro no clculo do byte de checksum. Este erro pode ocorrer tambm quando for enviado um comando invlido ou incompleto para a impressora. A razo disto que um byte que no o checksum acaba por ocupar o lugar do mesmo, gerando o erro.

31 - Palavra reservada (80D - 50H)


A palavra "TOTAL" no deve ser enviada para a impressora na forma de parmetro de descrio de algum comando. Obs.: permitido quando a palavra "TOTAL" fazer parte de uma outra palavra (Ex. "TOTALEX").

32 - Papel prximo do fim (81D - 51H)


Sensor de pouco papel indicando que a bobina est prxima do fim, no permitindo com isso, a abertura de um novo cupom fiscal. A impressora tambm no vende itens quando a bobina de papel est prxima do final.

33 - Data no localizada (82D - 52H)


Foi requisitada uma leitura da memria fiscal entre datas, mas no existe nenhuma reduo realizada neste perodo.

34 - Erro de memria fiscal (84D - 54H)


Erro no acesso (gravao ou leitura) memria fiscal. Para sair desta situao, necessria a interveno tcnica.

35 - Perda da RAM (85D - 55H)


Erro nas variveis armazenadas na memria dos totalizadores dirios. necessria a interveno tcnica.

36 - No houve pagamento (86D - 56H)


Tentativa de fechamento do cupom sem antes realizar a forma de pagamento. Em um cupom fiscal, a realizao do pagamento considerada etapa obrigatria. Sem ela, o cupom no pode ser finalizado.

37 - Cupom j totalizado (87D - 57H)


Enviado um comando no permitido durante a finalizao do cupom. Por exemplo, aps realizado o pagamento, no permitido mais a venda de itens, ou ainda o cancelamento de um item.

38 - No pode cancelar venda (88D - 58H)


Tentativa de cancelamento de uma transao de venda sem que a mesma tenha sido iniciada.

39 - Comando no completo (89D - 59H)


Enviado um comando faltando algum parmetro. Problemas na comunicao tambm podem gerar este erro.

85

Verso do manual: AC 06/00

40 - Cupom aberto (90D - 5AH)


Este erro ocorre quando feita a tentativa de emisso de algum relatrios (tipo Leitura "X", Reduo "Z", leitura da memria fiscal, etc.) dentro de uma transao de venda.

41 - No h cupom a cancelar (91D - 5BH)


Tentativa de cancelamento do ltimo cupom, sendo que o ltimo documento emitido no um cupom de transao de venda.

42 - Tabela de taxa no inicializada (92D - 5CH)


Tentativa de venda com a tabela de taxas com as posies com valores nulos, no inicializada. Antes de realizar vendas com uma determinada alquota, necessrio program-la.

43 - Seleo de taxa invlida (94D - 5EH)


Produto vendido com ndice da tabela fora da gama disponvel ou ndice da tabela no disponvel para esta operao. Por exemplo, no podem ser utilizadas alquotas no fiscais em cupons fiscais.

44 - Cancelamento invlido (95D - 5FH)


Tentativa de cancelamento de um cupom que contm somente o cabealho. Caso tenha ocorrido somente a impresso do cabealho, o cupom ainda no foi aberto. Esta situao ento abortada no utilizando cancelamento, mas sim finalizao de transao.

45 - Nada a retificar (96D - 60H)


Enviado um comando para cancelamento de um desconto de item inexistente.

46 - Reduo no localizada (97D - 61H)


Este erro ocorre quando feita uma leitura da memria fiscal, selecionando-se um perodo entre redues, mas a impressora no encontrou nenhuma reduo feita neste perodo.

47 - Cabealho no carregado (98D - 62H)


Tentativa de realizao de algum comando que necessita da impresso de cabealho sem que a impressora possua, pelo menos, um cabealho gravado em sua memria.

48 - Impressora em interveno tcnica (99D - 63H)


Tentativa de comando no permitido durante uma interveno tcnica. Por exemplo, a impressora no permite a emisso de cupons fiscais enquanto estiver em interveno tcnica.

49 - Impressora em perodo de venda (100D - 64H)


Tentativa de carga de nova taxa ou alterao do horrio de + ou - uma hora durante o perodo de venda. necessria primeiro a Reduo "Z" para realizar uma destas tarefas.

50 - Somente com interveno tcnica (101D - 65H)


Solicitao de comando que somente permitido com interveno tcnica. Entre estes comandos podemos citar: alterao de alquotas, mudana do tamanho do cdigo de produto e alterao de formas de pagamento.

51 - Desconto invlido (102D - 66H)


Foi feito um desconto sobre um item que j contm um desconto, dado anteriormente. necessrio, primeiro, cancelar o desconto anterior para realizar um novo desconto.

86

Verso do manual: AC 06/00

52 - Limite de linhas alcanado (103D - 67H)


permitida a impresso de, no mximo, 8 linhas comerciais por cupom fiscal.

53 - Somente aps o total (104D - 68H)


Tentativa de impresso de linhas comerciais antes do pagamento ou ainda entre itens de venda.

54 - Dados invlidos (105D - 69H)


No so permitidos valores nulos para o CGC ou a Inscrio estadual. Por valor nulo entende-se preencher estes campos com espaos em branco.

55 - Taxa no disponvel (106D - 6AH)


Tentativa de programao de alquota em uma posio da taxa de alquotas j programada. Este procedimento somente pode ser feito com interveno tcnica. Se a impressora no encontra-se em interveno, somente podem ser programadas as posies em branco, que ainda no possuem alquota programada.

56 - Comando inexistente (107D - 6BF)


Enviado um comando inexistente para a impressora. Este erro ocorre quando a impressora reconhece a seqncia de bytes com possuindo o formato de um comando, mas, no entando, no reconhece o comando como sendo vlido.

57 - No houve o fechamento do dia (108D - 6CH)


Tentativa de programao de um novo cabealho ou alterao do horrio de vero sem ter-se realizada a Reduo "Z" do dia atual.

58 - Erro irrecupervel (109D - 6DH)


Falha na memria fiscal. A impressora necessita reparo tcnico realizado somente pela fbrica.

59 - Alterao invlida (110D - 6EH)


Alterao da data ou hora para um valor invlido.

60 - Data j alterada (111D - 6FH)


Somente permitida a alterao da hora da impressora, em mais ou menos uma hora, uma nica vez por dia.

61 - Alquota no carregada (112D - 70H)


Seleo de uma posio da taxa de alquotas no programada.

62 - Fechamento dirio no realizado (113D - 71H)


Tentativa de impresso de um cupom fiscal sem ter-se realizada a Reduo "Z" de um dia anterior ao atual.

63 - Abertura do dia invlida (114D - 72H)


Tentativa de impresso de um cupom fiscal aps ter-se realizada a Reduo "Z" do dia atual.

64 - Fechamento j realizado (115D - 73H)


Tentativa de realizao de nova Reduo (Reduo "Z") no mesmo dia.

87

Verso do manual: AC 06/00

65 - Ajuste somente de +/- 1 hora (116D - 74H)


Sem interveno tcnica, somente permitida a alterao da hora em mais o menos uma hora, uma vez por dia e aps a Reduo "Z", para a alterao do horrio de vero.

66 - Acrscimo invlido (117D - 75H)


Tentativa de acrscimo de subtotal quando o mesmo j est com acrscimo. necessrio primeiro cancelar o acrscimo anterior para realizar um novo acrscimo.

67 - Pagamento incompleto (118D - 76H)


A totalizao da forma de pagamento est menor do que o total da venda em uma tentativa de fechamento do cupom.

68 - Cheque no posicionado (119D - 77H)


Comando de impresso enviado para o mecanismo de cheques sem que o cheque esteja na posio correta ou sem que o mesmo no esteja presente.

69 - Seqncia de cheque incorreta (120D - 78H)


Linhas enviadas para a formao do lay-out do cheque fora da seqncia lgica de funcionamento da impressora.

70 - Erro de gravao na MEF (121D - 79H)


Erro durante gravao na memria fiscal (MEF). Este erro de natureza tcnica e a impressora necessita de interveno.

71 - Comando fora de seqncia (126D - 7EH)


Comando enviado fora da seqncia lgica de funcionamento da impressora. Este erro pode ser gerado se, por exemplo, for feita a tentativa de inicializao de um cupom no fiscal sem ter sido impresso o cabealho.

72 - Autenticao sem papel (127D - 7FH)


Comando de autenticao enviado para impressora sem que o papel esteja posicionado.

73 - Queda de energia (132D - 84H)


Este cdigo de retorno enviado pela impressora, via serial, toda vez que ela for desligada. Desta forma, a impressora consegue comunicar ao aplicativo do micro que est sendo desligada.

74 - Data invlida (133D - 85H)


Tentativa de programao de uma data anterior a data da ltima reduo realizada.

75 - Item fora da faixa (134D - 86H)


Tentativa de cancelamento de um item de venda fora da faixa possvel. Por exemplo, em um cupom que foram vendidos 10 itens, este erro ir ocorrer se for tentado cancelar o item 11.

76 - Item no vendido (135D - 87H)


Tentativa de cancelamento de um item de venda ainda no vendido.

88

Verso do manual: AC 06/00

77 - Parmetro errado (136D - 88H)


Envio de dados de venda de produto com algum parmetro errado. Este erro tipicamente ocorre na venda formatada de itens, nos parmetros quantidade inteira e quantidade fracionada. Estes parmetros sempre devem ser enviados com o preenchimento dos trs caracteres. Por exemplo, se a quantidade inteira valer 2, o parmetro "quantidade inteira" deve valer "002". A ausncia dos zeros esquerda gera este erro. Devem ser usados zeros, e no espaos.

78 - Limite de valor ultrapassado (137D - 89H)


O resultado da multiplicao da quantidade do item pelo seu valor ultrapassou nove casas decimais.

79 - Relgio Fora de Operao (138D - 8AH)


A impressora ir gerar este erro quando o relgio interno da mesma no estiver funcionando. Este erro implica em problemas tcnicos que exigem interveno.

80 - Pagamento no definido (139D - 8BH)


Foi feita a tentativa de utilizar uma forma de pagamento que no est programada na impressora. Antes de utilizar uma forma de pagamento, necessrio program-lo. A impressora no permite vendas se nenhuma das formas de pagamento estiver programada.

81 - Limite de autenticao excedido (140D - 8CH)


So permitidas, no mximo, 5 (cinco) autenticaes em seqncia. Ao ser feita a tentativa de impresso da sexta autenticao, este erro ser gerado.

82 - Comando de venda invlido (141D - 8DH)


Este erro ocorre quando for utilizada a venda formatada de itens dentro de um cupom no fiscal. Da mesma forma, este erro gerado caso seja utilizada a venda de item no formatada dentro de um cupom fiscal.

83 - Posio j programada (142D - 8EH)


Este erro gerado quando for feita a tentativa de se programar algo em uma posio j programada. Isto vale para a tabela de alquotas, de pagamentos e de comprovantes no fiscais.

84 - Posio inexistente (143D - 8FH)


Sempre que for feita a tentativa de programar ou utilizar uma posio inexistente, nas tabelas de programao, este erro ser gerado. Isto vale tanto para as tabelas de alquotas quanto para os pagamentos ou comprovantes no fiscais.

85 - Cupom vinculado pendente (144D - 90H)


Este erro ser retornado avisando que existe um cupom vinculado pendente.

86 - Excesso de cupons vinculados (145D - 91H)


A impressora tolera deixar, no mximo, 30 cupons vinculados pendentes. Quando este limite atingido, a gerao de uma pendncia de um novo cupom vinculado gera este erro.

87 - No h cupom vinculado pendente(146D - 92H)


Quando h a tentativa de emisso de um cupom vinculado, e no existe nenhum pendente, este erro ocorre. Para que um cupom vinculado fique pendente, necessrio ter sido realizado um pagamento ao qual exista um comprovante no fiscal vinculado.

89

Verso do manual: AC 06/00

88 - Mudana de horrio j solicitada (147D - 93H)


Caso o horrio da impressora j tenha sido mudado para o horrio de vero, a tentativa de mudana para o horrio de vero novamente ir gerar este erro. Este erro tambm ir ocorrer se o usurio tentar tirar a impressora do horrio de vero, sendo que esta no encontra-se em horrio de vero. Para saber se a impressora est em horrio de vero, observe o campo onde aparece impresso o horrio, no cabealho. Se existir a letra "v" impressa ao lado do horrio, significa que a impressora encontra-se em horrio de vero.

89 - Cristal do relgio no oscila (148D - 94H)


O cristal, responsvel pelo funcionamento do relgio da impressora, no est oscilando. necessrio interveno tcnica.

90 - Pagamentos no inicializados (149D - 95H)


Este erro acontece quando feita a tentativa de realizao de uma venda sem ter nenhuma forma de pagamento programada na impressora. Antes de realizar vendas, tanto em cupons fiscais quanto em no fiscais, necessrio programar pelo menos uma forma de pagamento na impressora.

91 Inscrio Estadual invlida (150D - 96H)


Este erro ocorre caso seja enviado um valor invlido de Inscrio Estadual. Entende-se por valor invlido uma string com espaos em branco, por exemplo.

92 Extenso excedido (151D - 97H)


Na impressora de duas estaes, onde possvel imprimir cheques, este erro ocorre quando o extenso, gerado automaticamente pela impressora a partir do valor numrico do cheque, exceder o espao til de impresso das duas linahs do cheque.

93 Cupom est com valor zerado (152D - 98H)


Este erro ocorre quando o aplicativo tenta realizar um pagamento em um cupom que est com valor zerado. Um exemplo tpico vender um item, cancelar este item e logo aps realizar o pagamento. A tentativa de realizao deste pagamento gera o erro.

94 - Codificao j programada (153D - 99H)


A impressora fiscal permite apenas uma codificao de GT por usurio. A tentativa de alterar a codificao, sem alterar o usurio, gera este erro. Observe que nem mesmo com interveno tcnica a impressora permite esta alterao de codificao do GT.

95 - No h vinculados a cupom (154D - 9AH)


Na finalizao de transao, se o aplicativo tentar ativar uma vinculao ao cupom, a impressora ir gerar este erro caso no exista nenhum comprovante no fiscal programado que seja vinculado a cupom. Deve existir pelo menos um comprovante programado que seja vinculado a cupom para que este erro no ocorra.

90

Verso do manual: AC 06/00

96 - Reduo no permitida (155D - 9BH)


Este erro ocorre quando o aplicativo tentar emitir uma Reduo Z com data anterior ltima Reduo Z emitida. Este erro pode ser causado por uma falha de hardware, mais exatamente no relgio interno da impressora.

97 - Caracter repetido na codificao (156D - 9CH)


A codificao do GT deve ser tal que no haja repetio de caracteres, ou seja, a relao entre os caracteres da codificao e os nmeros de 0 a 9 deve ser um para um. A repetio de um ou mais caracteres na programao da codificao do GT gera este erro

98 - Caracter proibido na codificao (157D - 9DH)


A codificao do GT pode ser alterada apenas embaralhando-se os caracteres da codificao original de fbrica. Novos caracteres que no sejam os existentes na codificao original no podem ser usados. A tentativa de programar uma codificao do GT com caracteres diferentes dos originais causa este erro.