Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Imprimindo Cheque em Lx-300
Message
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Other
Title:
Imprimindo Cheque em Lx-300
Environment versions
Visual FoxPro:
VFP 7
OS:
Windows XP
Network:
Windows 2000 Server
Database:
MS SQL Server
Miscellaneous
Thread ID:
01090141
Message ID:
01090141
Views:
60
Boa tarde pessoal,
Estou com a seguinte duvida quanto a uma mascacara na impressao de cheques.
Para a impressao de cheque eu faço da seguinte forma.
Uma impressora Lx-300 e com cheques em formulario continuo.
O sistema é de terceiros. Onde complica fazer algumas alteraçoes, mais quanto a relatorios fica bem mais simples.
Como é que eu faço.
tenho um prg chamado extenso.prg
onde nele esta escrito o seguinte codigo para fazer o valor ser escrito por extenso.
*------------------------------------------------------------------------- 
* Função : Retorna um valor por exnteso 
* Parâmetros : Número 
* Retorna : Caracter 
* Notas : Nenhuma 
*------------------------------------------------------------------------- 
procedure Extenso
Parameters nVal 


** c = contador 
** x = algarismo corrente 
** p = proximo algarismo 
** t = posicao do algarismo (dezena,centena,milhar) 
** y = variavel p/ buscar descricao do algarismo 
** z = macro que cria "y" 
** d = descricao do algarismo 
** k = variavel p/ controlar o primeiro caso de "l" 
** l = ligador (e) 
** f = verificacao da dezena, centena, milhar, ... 
** u = verificacao da posicao da palavra "cem e" 
** m = moeda 
    N="n000" 
    n000="" 
    n001="Um " 
    n002="Dois " 
    n003="Tres " 
    n004="Quatro " 
    n005="Cinco " 
    n006="Seis " 
    n007="Sete " 
    n008="Oito " 
    n009="Nove " 
    n010="Dez " 
    n011="Onze " 
    n012="Doze " 
    n013="Treze " 
    n014="Quatorze " 
    n015="Quinze " 
    n016="Dezesseis " 
    n017="Dezessete " 
    n018="Dezoito " 
    n019="Dezenove " 
    n020="Vinte " 
    n030="Trinta " 
    n040="Quarenta " 
    n050="Cinquenta " 
    n060="Sessenta " 
    n070="Setenta " 
    n080="Oitenta " 
    n090="Noventa " 
    n100="Cem " 
    n200="Duzentos " 
    n300="Trezentos " 
    n400="Quatrocentos " 
    n500="Quinhentos " 
    n600="Seiscentos " 
    n700="Setecentos " 
    n800="Oitocentos " 
    n900="Novecentos " 
    xvalor=Str(nVal,12,2) 
    Store "0" To v0,c0 
    v1=Subs(xvalor,1,1) 
    v2=Subs(xvalor,2,1) 
    v3=Subs(xvalor,3,1) 
    v4=Subs(xvalor,4,1) 
    v5=Subs(xvalor,5,1) 
    v6=Subs(xvalor,6,1) 
    v7=Subs(xvalor,7,1) 
    v8=Subs(xvalor,8,1) 
    v9=Subs(xvalor,9,1) 
    c1=Subs(xvalor,11,1) 
    c2=Subs(xvalor,12,1) 
    f1=Val(v1+v2+v3) 
    f2=Val(v4+v5+v6) 
    f3=Val(v7+v8+v9) 
    f4=Val(c1+c2) 
    Store "" To m1,m2,m4,m5,m7,m8,m9 
    m3=Iif(f1>=1,Iif(f1>1,"Milhoes ","Milhao "),"") 
    m6=Iif(f2=0,"","Mil ") 
    exten1="" 
    Store 0 To c,T,k 
    Do While c<9 
        c=c+1 
        x="v"+Str(c,1) 
        p=Iif(c<9,"v"+Str(c+1,1),"v0") 
        k=k+Val(&x) 
        T=Iif(T=3,1,T+1) 
        &x=Iif(&x=" ","0",&x) 
        Y=Iif(T=2 .And. &x="1","n0"+&x+&p,Stuff(N,T+1,1,&x)) 
        c=Iif(T=2 .And. &x="1",c+1,c) 
        T=Iif(T=2 .And. &x="1",T+1,T) 
        p=Iif(c<9,"v"+Str(c+1,1),"v0") 
        d=Iif(Val(&x)#0,&Y,"") 
        l=Iif(Val(&p)#0 .And. k#0,"e ","") 
        m="m"+Str(c,1) 
        exten1=exten1+d+&m+l 
        u=At("Cem e",exten1) 
        exten1=Iif(u#0,Subs(exten1,1,u)+"ento"+Subs(exten1,u+3,Len(exten1)),exten1) 
    Enddo 
    o1=Iif(nVal>=1,Iif(nVal>1,Iif(f2+f3#0,"Reais ","de Reais "),"Real " ),"") 
    exten1=Iif(exten1=" ","",Iif(f4=0,exten1+o1,exten1+o1+"e ")) 
    exten1=Iif(exten1="e ","",exten1) 
    y1="n00"+c2 
    y2="n0"+c1+"0" 
    y3="n0"+c1+c2 
    exten2=Iif(f4<10,&y1,Iif(f4<20,&y3,Iif(c2="0",&y2,&y2+"e "+&y1))) 
    exten2=Iif(f4=0,"",Iif(f4=1,exten2+"Centavo",exten2+"Centavos")) 
    Exten=exten1+exten2 
      
	
    Return Exten
No Report eu faço o seguinte...

PRIVATE extenso, qtdcaracter, linha1, linha2

extenso = "dois milhões, quatrocentos e trinta e sete reais e cinquenta e quatro centavos"
qtdcaracter = LEN(ALLTRIM(extenso)) && Guarda a quantidade total de caracteres
linha1 = SUBSTR(extenso, 1, 50) && Guarda caracteres da var extenso do primeiro caracter até o 50º
linha2 = SUBSTR(extenso, 50, qtdcaracter) && Guarda o restante do extenso

Ficando a impressao assim...
2437,50
dois milhões, quatrocentos e trinta e sete reais e cinquenta e quatro centavos

Sendo que eu gostaria de colocar uma mascara antes e depois do valor numerico e do valor por extenso.
Ficando da seguinte forma.
##2437,50##
dois milhões, quatrocentos e trinta e sete reais e cinquenta e quatro centavos *********

Espero que seja possivel da forma que iniciei. Conto com a ajuda de todos vocÊs.
K.Santos
Reply
Map
View

Click here to load this message in the networking platform