funcoes clipper

Upload: francisco-joao-nicolau-junior

Post on 22-Jul-2015

217 views

Category:

Documents


1 download

TRANSCRIPT

Biblioteca para CLIPPER1 - Biblioteca CL_ECF.LIB ..........................41.1 - UTILIZANDO AS BIBLIOTECAS ......................................... 4 1.2 - CDIGOS DE RETORNO ............................................... 4 1.3 OBSERVAES GERAIS ............................................... 51.3.1 - Fluxograma da operao ................................................. 5 1.3.2 - Observao geral sobre valores numricos ............................... 5

2 - Programao de dados ...........................62.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 .......183.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.21Outras 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 ....................................474.1 - LEITURA "X" ................................................... 47 4.2 - LEITURA "X" GERENCIAL (PARA ECF VERSO 3.0X)....................... 48 4.3 - REDUO "Z" ................................................... 49

2

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

3

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

4

Verso do manual: AC 06/00

1 - Biblioteca CL_ECF.LIBA 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 bibliotecasPara 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 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 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 retornoA 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.

5

Verso do manual: AC 06/00

1.3 Observaes gerais1.3.1 - Fluxograma da operaoVeja 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 fiscalPara 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 numricosNas 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".

6

Verso do manual: AC 06/00

2 - Programao de dados2.1 - Acertando a data e a horaFuno: 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

7

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

8

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

9

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 TotalFuno: 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.0xDa 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 produtoFuno: 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 cabealhoFuno: 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 fiscalFuno: 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 formatadosFuno: 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: + + 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 caracteresFuno: 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

o

valor

do

registro

foi

de

27

Verso do manual: AC 06/00

3.7 - Venda descritiva com 78 caracteresFuno: 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

o

valor

do

registro

foi

de

28

Verso do manual: AC 06/00

3.8 - Cancela/Desconto de itemFuno: 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 itemFuno: 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 especficoFuno: 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 - SubtotalFuno: 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 subtotalFuno: 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 cupomFuno: 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 transaoFuno: 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 cupomFuno: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 - Relatrios4.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" serialFuno: 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

o

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

a

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

a

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

9

# 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