Página 1 de 2

FX-880 x LX 300+ II

Enviado: 19 Set 2007 21:34
por alberto_dias
Prezados Colegas,
Novamente estou precisando da colaboracao do grupo, estou com o seguinte problema...
Configurei uma nota fiscal para um cliente em uma fx-880, beleza,
Sistema em Xharbour + Gtwvw + Bcc, a pagina esta em 1/8, o cliente tirava uma, duas, treis, quatro, cinco .... e assim por diante e tudo certo, tudo impresso na posicao correta, Maravilha.
"Por pouco Tempo"
Ai , o cliente entao resolveu e comprou uma LX 300 + II.
O que acontece........durante a impressao da nota fiscal na lx300 + II,
da primeira linha impressa ate a ultima ela avanca um pouquinho, uns milimetros, acontece que estes milimetros vao aumentando ( Impressionante pois as impressoras sao do mesmo fabricante ), conforme o cliente tira mais notas, ja na 3 ou 4 nota a impressao ja fica fora de posicao correta, fazendo o cliente perder a nota.
Sera que alguem ja passou por isso, o que devo fazer ?
Preciso de um auxilio, o cliente nao quer imprimir uma nota, retirar e voltar a folha novamente, e como sempre 'acha' que eh o Sistema e que esta errado.
:-o

Enviado: 19 Set 2007 22:02
por Maligno
Detalhe importante e absolutamente irrefutável. Nem mesmo o fabricante pode contrariar. Uma vez configurada a entrelinha para 1/8", a impressora não pode sair disso. Um exemplo: se você imprimir 8.000 linhas nesse espaço de entrelinhas e medir a distância da primeira pra última, você deverá ter 1000", ou 2540cm. Isso é ponto pacífico.

Se isso não ocorrer, de duas uma: ou a nota fiscal tem defeito (pouco provável), ou a impressora tem defeito (mais provável) ou de fabricação ou de projeto.

Meu conselho: converse com o vendedor e peça uma reposição temporário, pra ver se uma outra impressora apresenta esse mesmo comportamento. Se quiser tirar a dúvida quanto à NF (acho que nem precisa), meça umas 10 ou 20 e veja se as distâncias se mantém.

Enviado: 19 Set 2007 23:58
por sygecom
Post sua funçao para impressão !!!

Enviado: 20 Set 2007 02:20
por Maligno
Se ele manda imprimir 1/8" e a impressora pula milímetros a cada NF (mínimo de umas 60 linhas), acho absolutamente impossível que ele, sem querer, tenha inserido algum código de micro-salto no meio do código.

Enviado: 20 Set 2007 12:53
por gvc
Eu já tive problemas com formulário errado.
3 NF por "página" e quando vai imprimir a 4 NF, tem diferença de posicionamento.
Tive que colocar micro-avanço para acertar isso.

Para testar:
- Coloque formulário continuo na primeira impressora;
- Imprima o comando de impressão em 1/8".
- Imprima uma boa quantidade de linhas, algo entre 100 e 300.
- Repita o mesmo para a segunda impressora.
- Compare as impressões.

* É possível que sua impressora nova não esteja "entendendo" que é para imprimir em 1/8".

Enviado: 20 Set 2007 14:05
por marcos.gurupi
Caro colega, o q pode acontecer tb eh q a epron da impressora estah configurada com um papel diferente da NF q provavelmente eh a Carta isso acontece na maioria das vezes pelo menos aconteceu comigo varias vezes, entaum tive q configurar a impressora com o mesmo papel q a nf foi feita.

Marcos Roberto

Enviado: 20 Set 2007 16:58
por Maligno
Mas ele disse que a impressora faz a NF avançar apenas alguns poucos milimetros após o término da impressão. Se é assim, não pode ser papel.

Enviado: 20 Set 2007 17:06
por sygecom
É mais facil o Alberto postar como ele esta usando e qual classe esta usando para imprimir, quem sabe o cara esta com uma HBPRINTER da MINIGUI e esta tomando um laço, a mesma não funciona certinho em qualquer impressora !!!....Alberto cade vc......da as cara hombre, o povo tah só no disse que me disse !!! hehehehe

Enviado: 23 Set 2007 17:19
por alberto_dias
Amigos,
Agradeco antecipadamente, esta preciosa colaboracao,
abaixo estou postando o codigo, por favor se for possivel entender,
verifiquem se estou fazendo alguma coisa errada.
Mas apenas para recordar:
Na impressora fx-880 esta perfeito beleza
Na impressora lx-300 + II avanca alguns milimetros
Como foi mensionado aqui eu ja mudei nas configura-
coes da impressora no windows o formato do papel,
ele eh "quase" do tamanho do formato A4, 'quase' tem uma
pequena diferenca de tamanho
abaixo segue o codigo.
obs. para entender o codigo abaixo:
Sinnacd -> simples nacional sim ou nao
LCOM -> liga o comprimido
LDCO -> desliga o comprimido
LNEG -> liga o negritado
LDEG -> desliga o negritado
REDALID -> reducao da alicota
despro[x] -> descricao do produto
poricm[x] -> porcentagem do icms
Se esqueci, algum desculpe,
A nota fiscal eh dupla , venda de mercadoria e Servivos,
====================================
*
* ----------------------------------------- IMPRESSORA MATRICIAL
* Fun‡Æo para imprimir a Nota Fiscal Fatura
* Quantidade de itens por Nota Fiscal = 27 27 (qtdinfd) PRODUTOS 10 CPI
* Quantidade de itens por Nota Fiscal = 5 05 (qtdserd) SERVICOS 10 CPI
* -----------------------------------------
FUNCTION Impnotfat(ps)
LOCAL bolven[9],bolvlr[9],txtser,totnotser:=0,totissser:=0,existe:="N"
LOCAL codprov1, codprov2, codprov3, codprov4, codprov5
LOCAL desprov1, desprov2, desprov3, desprov4, desprov5
LOCAL desserv1:=SPACE(60), desserv2:=SPACE(60), desserv3:=SPACE(60)
LOCAL desserv4:=SPACE(60), desserv5:=SPACE(60)
LOCAL vlrtotv1, vlrtotv2, vlrtotv3, vlrtotv4, vlrtotv5
LOCAL vlruniv1, vlruniv2, vlruniv3, vlruniv4, vlruniv5
LOCAL qtdprov1, qtdprov2, qtdprov3, qtdprov4, qtdprov5
LOCAL porissv1, porissv2, porissv3, porissv4, porissv5
LOCAL linadi1:=SPACE(70), linadi2:=SPACE(70)
LOCAL servico:=0, teldignot, contaser:=0, contagem:=0, gravar:=0
LOCAL vlrtmp:=0, reduz:=0, codproc

Local totprodev:=0

FOR z=1 TO 9
bolven[z]=CTOD("")
bolvlr[z]=0
NEXT z

// Capturando aqui os dados dos Servicos

FOR i = 1 TO 99 // qtdinfd para capturar a quantidade ser servicos

IF EMPTY(despro)
EXIT
ENDIF

SELECT pro
SET ORDER TO 1
SEEK LEFT(codpro,6)
achei = .F.

IF PRO->tippro = "S"
existe = "S"
servico = servico + 1

IF servico = 1
codprov1 = codpro
desprov1 = despro
vlrtotv1 = vlruni * qtdpro
vlruniv1 = vlruni
qtdprov1 = qtdpro
porissv1 = PRO->poriss
contaser = contaser + 1
ENDIF

IF servico = 2
codprov2 = codpro
desprov2 = despro
vlrtotv2 = vlruni[i] * qtdpro[i]
vlruniv2 = vlruni[i]
qtdprov2 = qtdpro[i]
porissv2 = PRO->poriss
contaser = contaser + 1
ENDIF

IF servico = 3
codprov3 = codpro[i]
desprov3 = despro[i]
vlrtotv3 = vlruni[i] * qtdpro[i]
vlruniv3 = vlruni[i]
qtdprov3 = qtdpro[i]
porissv3 = PRO->poriss
contaser = contaser + 1
ENDIF

IF servico = 4
codprov4 = codpro[i]
desprov4 = despro[i]
vlrtotv4 = vlruni[i] * qtdpro[i]
vlruniv4 = vlruni[i]
qtdprov4 = qtdpro[i]
porissv4 = PRO->poriss
contaser = contaser + 1
ENDIF

IF servico = 5
codprov5 = codpro[i]
desprov5 = despro[i]
vlrtotv5 = vlruni[i] * qtdpro[i]
vlruniv5 = vlruni[i]
qtdprov5 = qtdpro[i]
porissv5 = PRO->poriss
contaser = contaser + 1
ENDIF

ENDIF

NEXT i

IF existe = "S" // SE EXISTIR SERVICOS CHAMA A TELA PRINCIPAL PARA COMPLETAR ALGUMA INFORMACAO.

SAVE SCREEN TO teldignot

CLEAR GETS
Boxsom(09,03,22,78,"U",somenu,"SE")
@ 07,03 SAY "ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄ¿"
@ 08,03 SAY "³C¢digo ³Servi‡o ³ Dados Adicionais ³ Valor ³ ISS ³"
@ 09,03 SAY "ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄ´"
@ 10,03 SAY "³ ³ ³ ³ ³ ³"
@ 11,03 SAY "³ ³ ³ ³ ³ ³"
@ 12,03 SAY "³ ³ ³ ³ ³ ³"
@ 13,03 SAY "³ ³ ³ ³ ³ ³"
@ 14,03 SAY "³ ³ ³ ³ ³ ³"
@ 15,03 SAY "³ ³ ³ ³ ³ ³"
@ 16,03 SAY "³ ³ ³ ³ ³ ³"
@ 17,03 SAY "ÃÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄ´"
@ 18,03 SAY "³ ³ TOTAL ..: ³"
@ 19,03 SAY "³ ³ ³"
@ 20,03 SAY "³ ³ ISS ....: ³"
@ 21,03 SAY "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"

DO WHILE existe = "S"

SETCOLOR(cordig)

IF !EMPTY(codprov1)
@ 10,04 SAY TRANS(codprov1,"@R 99.9999")
@ 10,12 SAY SUBSTR(desprov1,1,23)
@ 10,37 GET desserv1 PICT "@!S23"
@ 10,62 SAY vlrtotv1 PICT "999999.99"
@ 10,73 GET porissv1 PICT "99.99"
ENDIF

IF !EMPTY(codprov2)
@ 11,04 SAY TRANS(codprov2,"@R 99.9999")
@ 11,12 SAY SUBSTR(desprov2,1,23)
@ 11,37 GET desserv2 PICT "@!S23"
@ 11,62 SAY vlrtotv2 PICT "999999.99"
@ 11,73 GET porissv2 PICT "99.99"
ENDIF

IF !EMPTY(codprov3)
@ 12,04 SAY TRANS(codprov3,"@R 99.9999")
@ 12,12 SAY SUBSTR(desprov3,1,23)
@ 12,37 GET desserv3 PICT "@!S23"
@ 12,62 SAY vlrtotv3 PICT "999999.99"
@ 12,73 GET porissv3 PICT "99.99"
ENDIF

IF !EMPTY(codprov4)
@ 13,04 SAY TRANS(codprov4,"@R 99.9999")
@ 13,12 SAY SUBSTR(desprov4,1,23)
@ 13,37 GET desserv4 PICT "@!S23"
@ 13,62 SAY vlrtotv4 PICT "999999.99"
@ 13,73 GET porissv4 PICT "99.99"
ENDIF

IF !EMPTY(codprov5)
@ 14,04 SAY TRANS(codprov5, "@R 99.9999")
@ 14,12 SAY SUBSTR(desprov5,1,23)
@ 14,37 GET desserv5 PICT "@!S23"
@ 14,62 SAY vlrtotv5 PICT "999999.99"
@ 14,73 GET porissv5 PICT "99.99"
ENDIF

READ

IF !EMPTY(codprov1) .AND. vlrtotv1 > 0
totnotser = totnotser + vlrtotv1
IF porissv1 > 0
totissser = totissser + ( ( vlrtotv1 * porissv1 ) / 100 )
ENDIF
ENDIF

IF !EMPTY(codprov2) .AND. vlrtotv2 > 0
totnotser = totnotser + vlrtotv2
IF porissv2 > 0
totissser = totissser + ( ( vlrtotv2 * porissv2 ) / 100 )
ENDIF
ENDIF

IF !EMPTY(codprov3) .AND. vlrtotv3 > 0
totnotser = totnotser + vlrtotv3
IF porissv3 > 0
totissser = totissser + ( ( vlrtotv3 * porissv3 ) / 100 )
ENDIF
ENDIF

IF !EMPTY(codprov4) .AND. vlrtotv4 > 0
totnotser = totnotser + vlrtotv4
IF porissv4 > 0
totissser = totissser + ( ( vlrtotv4 * porissv4 ) / 100 )
ENDIF
ENDIF

IF !EMPTY(codprov5) .AND. vlrtotv5 > 0
totnotser = totnotser + vlrtotv5
IF porissv5 > 0
totissser = totissser + ( ( vlrtotv5 * porissv5 ) / 100 )
ENDIF
ENDIF

@ 18,62 SAY TRANS(totnotser,"@E 9,999,999.99")
@ 20,62 SAY TRANS(totissser,"@E 9,999,999.99")

* @ 18,04 GET linadi1 PICT "@!S50" COLOR corpes
@ 18,04 GET linadi2 PICT "@!S50" COLOR corpes

READ

IF !Boxmen("CONFIRMA OS DADOS ADICIONAIS ACIMA ?","S") // Pergunta
totnotser := 0 // Zera os dados
totissser := 0
LOOP
ENDIF

RESTORE SCREEN FROM teldignot

EXIT

ENDDO

ENDIF

IF !Opcimpfol(4)
RESTORE SCREEN FROM telant
RETURN(.T.)
ENDIF

numnotd = numinid
txtser = SPACE(40)

SET DEVICE TO PRINTER

IF FILE("NOTA9999.TXT")
set printer to lixo.prn
ELSE
IF !Verestimp()
SET DEVICE TO SCREEN
RETURN(.T.)
ENDIF
ENDIF

SETPRC(0,0)
* PROW(),PCOL() SAY CHR(27)+CHR(64) && Reseta a Impressora
@ PROW(),PCOL() SAY CHR(27)+CHR(48) && Liga salto de linha em 1/8"
* @PROW(),PCOL() SAY CHR(27)+CHR(50) && Liga salto de linha em 1/6"
* @ PROW(),PCOL() SAY CHR(27)+CHR(107)+CHR(0) && Caracter Romano
* @ PROW(),PCOL() SAY CHR(27)+CHR(80) && 10 Cpi
* @ PROW(),PCOL() SAY CHR(27)+CHR(67)+CHR(90) && 90 linhas - DESABILITADO NAO FUNCIONOU
@ PROW(),00 SAY LDCO+LNEG
@ PROW(),72 SAY STRZERO(numnotd,6,0)
@ PROW()+1,50 SAY "X"+LDNE+LCOM
@ PROW()+4,45 SAY " "
@ PROW()+1,00 SAY natoped
@ PROW(),43 SAY codoped
IF flgics
@ PROW(),39 SAY " "
ENDIF
@ PROW()+3,00 SAY LDCO+LNEG+nomclid
IF tipclid = "F"
SELECT cli
SEEK codclid
endcobd = ALLTRIM(endcli)+"-"+ALLTRIM(baicli)+"-"+ALLTRIM(cidcli)+"-"+estado+"-"+ALLTRIM(numcep)
@ PROW(),48 SAY numcic PICT "@R 999.999.999-99"
IF estado # "SP"
Calicmipi("SP",estado)
FOR i=1 TO qtdinfd
IF EMPTY(despro[i]) ; LOOP ; ENDIF
poricm[i] = taxicmp
NEXT i
ENDIF
SELECT cli
ELSE
SELECT clj
SEEK codclid
IF EMPTY(endcob)
endcobd = ALLTRIM(endcli)+"-"+ALLTRIM(baicli)+"-"+ALLTRIM(cidcli)+"-"+estado+"-"+ALLTRIM(numcep)
ELSE
endcobd = ALLTRIM(endcob)+"-"+ALLTRIM(baicob)+"-"+ALLTRIM(cidcob)+"-"+estcob+"-"+ALLTRIM(cepcob)
ENDIF
@ PROW(),48 SAY numcgc PICT "@R 99.999.999/9999-99"
IF estado # "SP"
Calicmipi("SP",estado)
FOR i=1 TO qtdinfd
IF EMPTY(despro[i]) ; LOOP ; ENDIF
poricm[i] = taxicmp
NEXT i
ENDIF
SELECT clj
ENDIF
numteld = numtel

@ PROW(),68 SAY datemid

@ PROW()+2,00 SAY endcli
@ PROW(),38 SAY LEFT(baicli,17)
@ PROW(),57 SAY numcep PICT "@R 99999-999"
@ PROW(),68 SAY datsaid

@ PROW()+2,00 SAY cidcli
@ PROW(),23 SAY LDNE+LCOM+LEFT(numteld,24)+LDCO+LNEG
@ PROW(),45 SAY estado

IF tipclid = "J"
IF VAL(CLJ->numins) = 0
IF CLJ->tipcon = "G"
@ PROW(),48 SAY ""
ELSE
@ PROW(),48 SAY "ISENTO"
ENDIF
ELSE
@ PROW(),48 SAY CLJ->numins PICT "@R 999.999.XXX.XXX-XX"
ENDIF
ENDIF

IF tipclid = "F"
@ PROW(),48 SAY ALLTRIM(CLI->num_rg)
ENDIF

STORE 0 TO subtotd,totipid,toticmd,vlrbasc,vlrbicc,basicmd,basserd,totissd
basicsd = IF(!icsdig,0,basicsd)
qtdcla = 1

IF contaser > 0 // SOMANDO AQUI OS NUMEROS DE SERVICOS
contagem = qtdinfd + contaser // DAR CERTO A IMPRESSAO DAS NOTAS
ELSE
contagem = qtdinfd
ENDIF

FOR i = 1 TO contagem // qtdinfd

IF EMPTY(despro[i])
EXIT
ENDIF
IF qtdpro[i] = 0
LOOP
ENDIF

SELECT pro
SET ORDER TO 1
SEEK LEFT(codpro[i],6)

sittrid = sittri
Abrarq("str")
SELECT str
SET ORDER TO 1
SEEK sittrid
redalid = IF(STR->redali=0,1,((100 - STR->redali) / 100))
CLOSE str

SELECT pro

achei = .F.
FOR c=1 TO qtdinfd
IF clafis = codcla[c]
achei = .T.
EXIT
ENDIF
NEXT c
IF !achei
codcla[qtdcla] = clafis
qtdcla = qtdcla + 1
ENDIF

// 06/04/2007 - Material de Retorno "Testes de Produtos"

IF tippro = "T"
// 22/05/2007 - Para somar os produtos de testes de produtos.
Totprodev = Totprodev + vlrtot[i]
LOOP
ENDIF

IF tippro = "S"
basserd = basserd + vlrtot[i]
totissd = totissd + ROUND((vlrtot[i] * poriss / 100),2)
ELSE

subtotd = subtotd + vlrtot[i]

IF pordesd = 0

vlrtmp = vlrtot[i] * redalid
basicmd = basicmd + vlrtmp
toticmd = toticmd + (vlrtmp * poricm[i] / 100)

* basicmd = basicmd + IF(poricm[i]=0,0,vlrtot[i])
* toticmd = toticmd + (vlrtot[i] * poricm[i] / 100 * redalid)

ELSE

reduz = ( vlrtot[i] * pordesd / 100 )

vlrtmp = ( vlrtot[i] - reduz ) * redalid

* vlrtmp = vlrtot[i] - (vlrtot[i] * pordesd / 100 * redalid )
* basicmd = basicmd + IF(poricm[i]=0,0,vlrtmp)

basicmd = basicmd + vlrtmp
toticmd = toticmd + (vlrtmp * poricm[i] / 100)

ENDIF

totipid = totipid + ROUND((vlrtot[i] * poripi[i] / 100),2)

IF porics[i] > 0
IF poripi[i] = 0
vlrbasc = ROUND((vlrtot[i] + vlrtot[i] * porics[i] / 100),2)
ELSE
vlrbasc = ROUND((vlrtot[i] + (vlrtot[i] * poripi[i] / 100)) * (1 + porics[i] / 100),2)
ENDIF
vlrbicc = vlrbicc + vlrtot[i] + ROUND((vlrtot[i] * poripi[i] / 100),2)
basicsd = IF(!icsdig,basicsd + vlrbasc,basicsd)
ENDIF
ENDIF

vlrtmp := 0
reduz := 0

NEXT i
vlrprod = subtotd - vlrdesd
IF !icsdig
basicsd = IF(flgics,basicsd,0)
toticsd = ROUND(IF(flgics,(basicsd * taxicmp / 100) - (vlrbicc * taxicmp / 100),0),2)
ENDIF

toticmd = toticmd + ( ROUND(((vlrfred + vlrsegd + vlroded) * taxicmp / 100),2) )
basicmd = basicmd + vlrfred + vlrsegd + vlroded + totipid
* vlrnotd = vlrprod + toticsd + vlrfred + vlrsegd + vlroded + totipid + basserd
vlrnotd = vlrprod + toticsd + vlrfred + vlrsegd + vlroded + totipid // + basserd

// Alberto Dias - 26/11/2006

SELECT cre
SET ORDER TO 1
SEEK STR(codlojd,2,0)+codpedd+tipclid
qtdparc = STRZERO(IF(qtdpar=0,1,qtdpar),2,0)
a=1
DO WHILE CRE->codloj = codlojd .AND. CRE->codped = codpedd .AND. CRE->tipcli = tipclid
bolven[a] = CRE->datven
bolvlr[a] = CRE->vlrpar
SKIP
a++
ENDDO

@ PROW()+1,00 SAY " "+LDNE+LCOM
@ PROW()+3,00 SAY " "

IF !EMPTY(bolvlr[1])
* @ PROW(),00 SAY STRZERO(numnotd,6,0)+"-01/"+qtdparc
* @ PROW(),16 SAY TRANS(bolvlr[1],"@E 999,999.99")
* @ PROW(),31 SAY DTOC(bolven[1])
@ PROW(),19 SAY TRANS(bolvlr[1],"@E 9,999,999.99")
@ PROW(),41 SAY DTOC(bolven[1])
* @ PROW(),15 SAY TRANS(bolvlr[1],"@E 9,999,999.99")

ENDIF
IF !EMPTY(bolvlr[2])
* @ PROW(),45 SAY STRZERO(numnotd,6,0)+"-02/"+qtdparc
* @ PROW(),62 SAY TRANS(bolvlr[2],"@E 99,999.99")
* @ PROW(),76 SAY DTOC(bolven[2])

@ PROW(),62 SAY TRANS(bolvlr[2],"@E 9,999,999.99")
@ PROW(),82 SAY DTOC(bolven[2])
* @ PROW(),73 SAY TRANS(bolvlr[2],"@E 9,999,999.99")

ENDIF
IF !EMPTY(bolvlr[3])
* @ PROW(),90 SAY STRZERO(numnotd,6,0)+"-03/"+qtdparc
* @ PROW(),107 SAY TRANS(bolvlr[3],"@E 99,999.99")
* @ PROW(),121 SAY DTOC(bolven[3])

@ PROW(),107 SAY TRANS(bolvlr[3],"@E 9,999,999.99")
@ PROW(),124 SAY DTOC(bolven[3])
* @ PROW(),118 SAY TRANS(bolvlr[3],"@E 9,999,999.99")

ENDIF

@ PROW()+1,00 SAY " "

IF !EMPTY(bolvlr[4])
* @ PROW(),00 SAY STRZERO(numnotd,6,0)+"-04"

@ PROW(),19 SAY TRANS(bolvlr[4],"@E 9,999,999.99")
@ PROW(),41 SAY DTOC(bolven[4])
* @ PROW(),28 SAY TRANS(bolvlr[4],"@E 9,999,999.99")


ENDIF

IF !EMPTY(bolvlr[5])
* @ PROW(),45 SAY STRZERO(numnotd,6,0)+"-05"
* @ PROW(),62 SAY TRANS(bolvlr[5],"@E 99,999.99")
* @ PROW(),76 SAY DTOC(bolven[5])

@ PROW(),62 SAY TRANS(bolvlr[5],"@E 9,999,999.99")
@ PROW(),82 SAY DTOC(bolven[5])
* @ PROW(),73 SAY TRANS(bolvlr[5],"@E 9,999,999.99")

ENDIF
IF !EMPTY(bolvlr[6])
* @ PROW(),90 SAY STRZERO(numnotd,6,0)+"-06"
* @ PROW(),106 SAY TRANS(bolvlr[6],"@E 999,999.99")
* @ PROW(),121 SAY DTOC(bolven[6])
@ PROW(),107 SAY TRANS(bolvlr[6],"@E 9,999,999.99")
@ PROW(),124 SAY DTOC(bolven[6])
* @ PROW(),118 SAY TRANS(bolvlr[6],"@E 9,999,999.99")

ENDIF

* @ PROW()+3,00 SAY LDNE+LCOM+endcobd
* Extreal(vlrnotd,130)
* @ PROW()+2,00 SAY LEFT(extlin1,115)

@ PROW()+3,00 SAY " "

* IF contaser > 0 // SOMANDO AQUI OS NUMEROS DE SERVICOS
* qtdinfd = qtdinfd + contaser // DAR CERTO A IMPRESSAO DAS NOTAS
* ENDIF

FOR i = 1 TO contagem // qtdinfd
IF EMPTY(despro[i])
EXIT
ENDIF
IF qtdpro[i] = 0
LOOP
ENDIF

SELECT pro
SET ORDER TO 1
SEEK LEFT(codpro[i],6)
IF tippro = "S"
txtser = despro[i]
ELSE

codproc = IF(EMPTY(codbar),TRANS(codpro[i],"@R 99.9999")+SPACE(1),LEFT(codbar,8))

@ PROW()+1,00 SAY codproc+" "+despro[i]

* @ PROW()+1,00 SAY TRANS(codpro[i],"@R 99.9999")+" "+despro[i]
* @ PROW(),71 SAY sittri
* @ PROW(),75 SAY clafis

@ PROW(),71 SAY clafis
@ PROW(),75 SAY sittri

@ PROW(),79 SAY unipro
@ PROW(),83 SAY qtdpro[i] PICT "9999"
@ PROW(),98 SAY vlruni[i] PICT "@E 999,999.99"
@ PROW(),116 SAY vlrtot[i] PICT "@E 9,999,999.99"
IF simnacd ="N"
@ PROW(),133 SAY poricm[i] PICT "99"
ENDIF
* IF poripi[i] = 0
* @ PROW(),123 SAY " ---"
* @ PROW(),133 SAY "--"
* ELSE
* vlripic = vlrtot[i] * poripi[i] / 100
* @ PROW(),123 SAY vlripic PICT "@E 9,999.99"
* @ PROW(),133 SAY poripi[i] PICT "99"
* ENDIF

ENDIF
NEXT i

IF vlrdesd > 0
@ PROW()+1,55 SAY " *** DESCONTO DE "+STR(pordesd,5,2)+" % ---> "
@ PROW(),107 SAY vlrdesd PICT "@E 999,999.99"
i = i + 1
ENDIF

IF i < contagem // qtdinfd
FOR c=i TO contagem // qtdinfd
@ PROW()+1,00 SAY " "
NEXT c
ENDIF

@ PROW()+1,02 SAY obsnf1d
@ PROW()+1,02 SAY obsnf2d

IF existe = "S" .AND. totnotser > 0

@ PROW()+3,02 SAY " "

IF !EMPTY(codprov1)
@ PROW()+1,00 SAY TRANS(codprov1,"@R 99.9999")
@ PROW(),10 SAY ALLTRIM(desprov1)+" "+ALLTRIM(desserv1)
@ PROW(),83 SAY TRANS(qtdprov1,"@R 999")
@ PROW(),98 SAY vlruniv1 PICT "@E 999,999.99"
@ PROW(),119 SAY vlrtotv1 PICT "@E 999,999.99"
IF simnacd = "N"
@ PROW(),130 SAY porissv1 PICT "99.99"
ENDIF
ELSE
@ PROW()+1,00 SAY " "
ENDIF

IF !EMPTY(codprov2)
@ PROW()+1,00 SAY TRANS(codprov2,"@R 99.9999")
@ PROW(),10 SAY ALLTRIM(desprov2)+" "+ALLTRIM(desserv2)
@ PROW(),83 SAY TRANS(qtdprov2,"@R 999")
@ PROW(),98 SAY vlruniv2 PICT "@E 999,999.99"
@ PROW(),119 SAY vlrtotv2 PICT "@E 999,999.99"
IF simnacd = "N"
@ PROW(),130 SAY porissv2 PICT "99.99"
ENDIF
ELSE
@ PROW()+1,00 SAY " "
ENDIF

IF !EMPTY(codprov3)
@ PROW()+1,00 SAY TRANS(codprov3,"@R 99.9999")
@ PROW(),10 SAY ALLTRIM(desprov3)+" "+ALLTRIM(desserv3)
@ PROW(),83 SAY TRANS(qtdprov3,"@R 999")
@ PROW(),98 SAY vlruniv3 PICT "@E 999,999.99"
@ PROW(),119 SAY vlrtotv3 PICT "@E 999,999.99"
IF simnacd = "N"
@ PROW(),130 SAY porissv3 PICT "99.99"
ENDIF
ELSE
@ PROW()+1,00 SAY " "
ENDIF
IF !EMPTY(codprov4)
@ PROW()+1,00 SAY TRANS(codprov4,"@R 99.9999")
@ PROW(),10 SAY ALLTRIM(desprov4)+" "+ALLTRIM(desserv4)
@ PROW(),83 SAY TRANS(qtdprov4,"@R 999")
@ PROW(),98 SAY vlruniv4 PICT "@E 999,999.99"
@ PROW(),119 SAY vlrtotv4 PICT "@E 999,999.99"
IF simnacd = "N"
@ PROW(),130 SAY porissv4 PICT "99.99"
ENDIF
ELSE
@ PROW()+1,00 SAY " "
ENDIF

IF !EMPTY(codprov5)
@ PROW()+1,00 SAY TRANS(codprov5,"@R 99.9999")
@ PROW(),10 SAY ALLTRIM(desprov5)+" "+ALLTRIM(desserv5)
@ PROW(),83 SAY TRANS(qtdprov5,"@R 999")
@ PROW(),98 SAY vlruniv5 PICT "@E 999,999.99"
@ PROW(),119 SAY vlrtotv5 PICT "@E 999,999.99"
IF simnacd = "N"
@ PROW(),130 SAY porissv5 PICT "99.99"
ENDIF
ELSE
@ PROW()+1,00 SAY " "
ENDIF

@ PROW()+1,00 SAY linadi2+LDCO+LNEG
@ PROW()+2,00 SAY " "
IF simnacd = "S"
totissser = 0
ENDIF
@ PROW(),08 SAY totnotser PICT "@E 9,999,999.99"
@ PROW(),28 SAY totissser PICT "@E 9,999,999.99"
@ PROW(),47 SAY totnotser PICT "@E 9,999,999.99"
ELSE
@ PROW()+11,00 SAY " "+LDCO+LNEG
ENDIF
IF simnacd = "S"
basicmd = 0
toticmd = 0
ENDIF
@ PROW()+03,01 SAY basicmd PICT "@E 9,999,999.99"
@ PROW(),17 SAY toticmd PICT "@E 999,999.99"
@ PROW(),33 SAY basicsd PICT "@E 999,999.99"
@ PROW(),49 SAY toticsd PICT "@E 999,999.99"
@ PROW(),65 SAY vlrprod PICT "@E 9,999,999.99"

@ PROW()+2,02 SAY vlrfred PICT "@E 999,999.99"
@ PROW(),17 SAY vlrsegd PICT "@E 999,999.99"
@ PROW(),33 SAY vlroded PICT "@E 999,999.99"
@ PROW(),49 SAY totipid PICT "@E 999,999.99"

// EXISTE SERVICOS NA NOTA FISCAL

IF existe = "S" .AND. totnotser > 0
vlrnotd = vlrnotd + totnotser
@ PROW(),65 SAY vlrnotd PICT "@E 9,999,999.99"
ELSE
IF vlrnotd = 0
@ PROW(),65 SAY Totprodev PICT "@E 9,999,999.99"
ELSE
@ PROW(),65 SAY vlrnotd PICT "@E 9,999,999.99"
ENDIF
ENDIF

@ PROW()+1,00 SAY " "+LDNE

IF codtrad > 0 .OR. !EMPTY(nomtrad) // PARA IMPRIMIR DIGITACAO DO OPERADOR
@ PROW()+2,00 SAY nomtrad
@ PROW(),46 SAY codfred
@ PROW(),49 SAY plaveid PICT "@R XXX-9999"
@ PROW(),62 SAY LCOM+cgccpfd+LDCO

@ PROW()+2,00 SAY endtrad
@ PROW(),39 SAY cidtrad
@ PROW(),59 SAY esttrad
@ PROW(),62 SAY LCOM+insestd+LDCO
ELSE
@ PROW()+2,46 SAY codfred
@ PROW()+2,00 SAY " "
ENDIF

@ PROW()+2,01 SAY txtqtdd
@ PROW(),10 SAY txtespd
@ PROW(),21 SAY txtmard
@ PROW(),34 SAY txtnumd
@ PROW(),59 SAY pesbrud PICT "@E 999,999.99"
@ PROW(),69 SAY pesliqd PICT "@E 999,999.99"

SELECT cre
SET ORDER TO 1
SEEK STR(codlojd,2,0)+codpedd+tipclid
qtdparc = STRZERO(IF(qtdpar=0,1,qtdpar),2,0)
a=1
DO WHILE CRE->codloj = codlojd .AND. CRE->codped = codpedd .AND. CRE->tipcli = tipclid
bolven[a] = CRE->datven
bolvlr[a] = CRE->vlrpar
SKIP
a++
ENDDO

@ PROW()+1,00 SAY LCOM // +CON->descon+LDCO

IF tipclid = "J"
SELECT clj
IF !EMPTY(CLJ->endent)
@ PROW()+3,00 SAY "LOCAL DE ENTREGA"
@ PROW()+1,00 SAY ALLTRIM(CLJ->endent)
@ PROW()+1,00 SAY ALLTRIM(CLJ->COMENT)+" "+ALLTRIM(CLJ->baient)
@ PROW()+1,00 SAY ALLTRIM(CLJ->cident)+" "+CLJ->ESTENT+" "+CLJ->cepent
ELSE
@ PROW()+3,20 SAY " "
@ PROW(),33 SAY " "
@ PROW()+3,00 SAY " "
ENDIF
ELSE
@ PROW()+3,20 SAY " "
@ PROW(),33 SAY " "
@ PROW()+3,00 SAY " "
ENDIF

* IF bolvlr[2] > 0
* @ PROW(),19 SAY bolvlr[2] PICT "@E 999,999.99"
* @ PROW(),33 SAY bolven[2]
* ELSE
* @ PROW()+1,00 SAY " "
* ENDIF
* IF bolvlr[3] > 0
* @ PROW()+1,19 SAY bolvlr[3] PICT "@E 999,999.99"
* @ PROW(),33 SAY bolven[3]
* ELSE
* @ PROW()+1,00 SAY " "
* ENDIF
* @ PROW()+1,00 SAY LCOM+LEFT(nomvend,20)+LDCO
* IF bolvlr[4] > 0
* @ PROW(),19 SAY bolvlr[4] PICT "@E 999,999.99"
* @ PROW(),33 SAY bolven[4]
* ENDIF
* Abrarq("cla")
* @ PROW()+2,02 SAY " "
* FOR c=1 TO 4
* IF EMPTY(codcla[c])
* @ PROW()+1,05 SAY " "
* ELSE
* SELECT cla
* SEEK codcla[c]
* @ PROW()+1,05 SAY clafis+"-"+codcla
* ENDIF
* NEXT c
* CLOSE cla
@ PROW()+4,00 SAY LDCO+LNEG+" "
@ PROW()+6,65 SAY STRZERO(numnotd,6,0)+LDNE
@ PROW()+6,00 SAY " "

@ PROW(),PCOL() SAY CHR(27)+CHR(50) && Liga salto de linha em 1/6"
* EJECT

SELECT nff
APPEND BLANK
IF Bloreg()
Gravarmem()
REPLACE sitnot WITH "E",vlricm WITH toticmd,vlrics WITH toticsd,vlripi WITH totipid
REPLACE usudca WITH date(), usunca WITH nanom
IF !EMPTY(bolvlr[1])
REPLACE vlrfa1 WITH bolvlr[1]
REPLACE venfa1 WITH bolven[1]
ENDIF
IF !EMPTY(bolvlr[2])
REPLACE vlrfa2 WITH bolvlr[2]
REPLACE venfa2 WITH bolven[2]
ENDIF
IF !EMPTY(bolvlr[3])
REPLACE vlrfa3 WITH bolvlr[3]
REPLACE venfa3 WITH bolven[3]
ENDIF
COMMIT
UNLOCK
ENDIF
SELECT inf
FOR g = 1 TO contagem // qtdinfd
IF EMPTY(codpro[g])
EXIT
ENDIF
IF qtdpro[g] = 0
LOOP
ENDIF

APPEND BLANK
IF Bloreg()
REPLACE numnot WITH numnotd,codpro WITH codpro[g]
REPLACE qtdpro WITH qtdpro[g],vlruni WITH vlruni[g]
REPLACE despro WITH despro[g]

SELECT pro
SET ORDER TO 1
SEEK LEFT(codpro[g],6)
IF FOUND()
IF tippro = "S"
SELECT inf

REPLACE clafis WITH PRO->clafis
REPLACE sittri WITH PRO->sittri
REPLACE unipro WITH PRO->unipro
REPLACE taxicm WITH PRO->taxicm
REPLACE taxipi WITH PRO->taxipi
gravar = gravar + 1
IF gravar = 1
REPLACE desser WITH desserv1
REPLACE poriss WITH porissv1
ENDIF
IF gravar = 2
REPLACE desser WITH desserv2
REPLACE poriss WITH porissv2
ENDIF
IF gravar = 3
REPLACE desser WITH desserv3
REPLACE poriss WITH porissv3
ENDIF
IF gravar = 4
REPLACE desser WITH desserv4
REPLACE poriss WITH porissv4
ENDIF
IF gravar = 5
REPLACE desser WITH desserv5
REPLACE poriss WITH porissv5
ENDIF

ENDIF
ENDIF

SELECT inf
COMMIT
UNLOCK
ENDIF
NEXT g
IF ps=1
SELECT pve
ELSE
SELECT lsv
ENDIF
IF Bloreg()
REPLACE numdoc WITH "NF "+STRZERO(numnotd,6,0)
COMMIT
UNLOCK
ENDIF
COMMIT

SET PRINTER TO
SET DEVICE TO SCREEN
RESTORE SCREEN FROM telant
SET CURSOR ON

RETURN(.T.)
*

Enviado: 23 Set 2007 18:17
por sygecom
Tche, olhando por cima, não vi nd de errado ai no seu post, agora me diz uma coisa essa LX-300+ II é USB certo ?
Como vc esta conseguindo imprimir usando o SET DEVICE TO PRINTER ?
Esta usando alguma LIB GRAFICA ou esta usando CONSOLE ?

Enviado: 23 Set 2007 19:21
por Maligno
Na impressora fx-880 esta perfeito beleza
Na impressora lx-300 + II avanca alguns milimetros
Nem vai encontrar nada de errado, pois se numa impressora funciona e na outra não, é óbvio que a diferença está na impressora e não no código. Ainda se fosse uma diferença grande, vá lá. Mas o Eolo comenta que a diferença é de poucos milímetros numa página inteira.
Seria interessante testar uma outra LX300 do mesmo modêlo, pra tirar a dúvida se é um defeito de fabricação ou de projeto.

Enviado: 23 Set 2007 19:37
por sygecom
Falando-se em informática tudo pode acontecer, já vi de tudo !!! ex: tem a classe da Minigui a HBPRINTER que em uma impressora sai de um jeito e em outra sai de outro jeito....coisa muito louca !!!

Enviado: 23 Set 2007 20:39
por Eolo
...Mas o Eolo comenta que a diferença...

Po, nem falei nada ainda!... Não fui eu, é que o Alberto Dias é muito parecido comigo... eh eh eh

Mas vou dar uma palpitada: se vc usa microespacejamento no corpo da nota e, no salto da nota1 pra nota2, pula "n" linhas ao invés de EJECTar, vc pode estar fazendo a impressora se perder. Dê o EJECT entre uma nota e outra, aí o papel vai pular para o mesmo lugar em todas as notas.

Aliás, essa "posição inicial" é ajustável (com microespacejamentos via teclado), pra mais ou pra menos. De repente, nessa LX300, especificamente, a posição está errada...

Enviado: 23 Set 2007 20:43
por Maligno
Po, nem falei nada ainda!... Não fui eu, é que o Alberto Dias é muito parecido comigo... eh eh eh
Avatar deveria ser algo registrado e instransferível, como carteira de identidade. :)))

Enviado: 24 Set 2007 10:29
por marcos.gurupi
Ainda insisto na diferenca entre o formulario continuo q vc estah usando e o tipo de papel q estah configurado na memoria da impressora, a minha insistencia eh pq tb passei pelo mesmo problema soh foi resolvido depois q configurei a epron da lx-300+, agora c vc fizer essa configuracao e n resolver ai vc pode condenar a impressora.

Marcos Roberto