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