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.
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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".
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.
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
É 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
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 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
@ 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
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
* @ 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.)
*
Alberto Dias
Atual.: Harbour 3.2.0 dev (r1703241902) + Gtwvg E Hmg IDE 3.5
Máquina Notebook - DELL ( INTEL CORE i5 ) 8 GB
Sistema - Windows 10 64 Bits
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 ?
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.
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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 !!!
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...
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. ))
[]'s
Maligno
--- Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
--- Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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.