Código: Selecionar todos
FUNCS.PRG
*---------------------------------------------------------------------
* PROGRAMA_____: PRT()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*---------------------------------------------------------------------
function prt(pflag)
*---------------------------------------------------------------------
static ST_prtativa:=.f.
local Tvolta := ST_prtativa
local TarqSpool := Set( _SET_PRINTFILE )
if ( Pflag != NIL ) // SE FOR PASSADO UM PARAMETRO
ST_Prtativa := ( Pflag )
set print ( Pflag )
set console (.NOT. Pflag )
set cursor (.NOT. Pflag )
Set(_SET_DEVICE, iif( Pflag, "PRINTER", "SCREEN" ) )
if ( len( TarqSpool ) > 0 )
Set( _SET_PRINTFILE, TarqSpool, .T. )
endif
endif
return ( Tvolta )
************************************************
*---------------------------------------------------------------------
* PROGRAMA_____: EXTENSO()
* FUNۂO_______: RETORNA O EXTENSO DE UM VALOR.
*---------------------------------------------------------------------
function extenso(m_val)
*---------------------------------------------------------------------
local Tstr := strzero( abs( m_val ), 18, 2 )
local Acifra := {{'TRILHAO' , 'TRILHOES'},;
{'BILHAO' , 'BILHOES' },;
{'MILHAO' , 'MILHOES' },;
{'MIL' , 'MIL' },;
{' ' , ' ' },;
{'CENTAVO' , 'CENTAVOS'} }
local Tx // Contador temporario
local Textenso := ' ' // String do valor por extenso
local Tsubs := ' ' // Subgrupo tres em tres casas do str
local Tcentavos := val( substr( Tstr, 17 ) )
if (m_val > 0)
if ( Tcentavos > 0 )
Textenso:=ExtCem( strzero( Tcentavos, 3 ) ) + ;
Acifra[ 6 ] [ iif( Tcentavos = 1, 1, 2 ) ]
endif
if ( int( m_val ) > 0 )
Textenso:= iif(int(m_val) = 1,;
'REAL','REAIS') +;
iif(Tcentavos > 0, ' E ','' ) + Textenso
endif
for Tx := 5 to 1 step -1
if ( val(Tsubs := substr(Tstr,(Tx * 3) -2,3)) > 0 )
Textenso:=ExtCem( Tsubs ) + Acifra[ Tx ] ;
[iif(val(Tsubs)= 1, 1 , 2)] + ' ' + Textenso
endif
next Tx
endif
return( StripDouble( Textenso, ' ' ) )
*------------------------------------------------------------------------*
* CHEQUE PARA: BANCO DO B R A S I L
* PROGRAMA_____: PRINTCHE()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*-----------------------------------------------------------------------------*
function Printche( m_val, m_nom, m_cid, m_ven)
*-----------------------------------------------------------------------------*
local Text := extenso(m_val) + space(2)
local Tpos := rat(" ", substr(Text, 1, 72) )
local Aextenso := { substr( Text, 1, Tpos+1)+ repl("*",90 - Tpos),substr(Text,Tpos+1)+ repl("*",97 - (len(Text) - Tpos ))}
local Tx
PRT( .T. )
setprc( 0, 0 )
devpos( 0, 0 )
?? PRINTER_INIT
if ( m_val = 10000000000 )
devout( chr(15) )
@ 2,107 say m_val picture "@e ******,***,***,***,***.**"
devout( "##" )
else
devout( chr(18) )
@ 2,62 say m_val picture "@e **,***,***,***.**"
devout ( "#"+ chr(15))
endif
@ 5,43 say Aextenso[1]
@ 7,35 say Aextenso[2] + chr(18)
if (m_nom != nil)
@ 9,20 say m_nom
endif
@ 11,45 say substr( m_cid, 1, 11)
@ 11,57 say strzero(day(m_ven),2)+space(4)+ mesext2(m_ven)
@ 11,77 say right(str(year(m_ven),4),2)
DevPos(LINES_PER_PAGE, 0)
setprc(0, 0)
?? PRINTER_END
PRT(.F.)
RETURN(NIL)
*------------------------------------------------------------------------*
* CHEQUE PARA: BANCO DO B R A D E S C O
* PROGRAMA_____: PRINTCHEQUE2()
* FUNۂO_______: PREENCHIMENTO DE CHEQUE.
*-----------------------------------------------------------------------------*
#define LINES_PER_PAGE 24 //CHEQUE
#define PRINTER_INIT chr(27)+"C"+chr(LINES_PER_PAGE)+chr(27)+"0" //CHEQUE
#define PRINTER_END chr(27)+"C"+chr(66)+chr(27)+"2" //CHEQUE
*-----------------------------------------------------------------------------*
function Printcheque2( m_val, m_nom, m_cid, m_ven)
*-----------------------------------------------------------------------------*
local Text := extenso(m_val) + space(2)
local Tpos := rat(" ", substr(Text, 1, 90) )
local Aextenso := { substr( Text, 1, Tpos+1)+ repl("*",100 - Tpos),substr(Text,Tpos+1)+ repl("*",103 - (len(Text) - Tpos ))}
local Tx
PRT( .T. )
setprc( 0, 0 )
devpos( 0, 0 )
?? PRINTER_INIT
if ( m_val = 10000000000 )
devout( chr(15) )
@ 2,91 say m_val picture "@e ******,***,***,***,***.**"
devout( "##" )
else
devout( chr(18) )
@ 2,46 say m_val picture "@e **,***,***,***.**"
devout ( "#"+ chr(15))
endif
@ 5,08 say Aextenso[1]
@ 7,08 say Aextenso[2] + chr(18)
if (m_nom != nil)
@ 9,00 say m_nom
endif
@ 11,29 say substr( m_cid, 1, 11)
@ 11,41 say strzero(day(m_ven),2)+space(4)+ mesext2(m_ven)
@ 11,61 say right(str(year(m_ven),4),2)
DevPos(LINES_PER_PAGE, 0)
setprc(0, 0)
?? PRINTER_END
PRT(.F.)
RETURN(NIL)
NO .PRG PRINCIPAL DO MEU SISTEMA EU COLOQUEI:
SET PROCEDURE TO FUNCS
NO CHEQUE.PRG ONDE TEM A ROTINA DE IMPRIMIR O CHEQUE.
Código: Selecionar todos
function prx0318()
sele 1
use bancaria alias ban shar
set index to ind_ch8, ind_ch7
sele 2
use bxconta alias bai shar
set index to ind_ch9, ind_ch6
private m_doc,m_emi,m_nom,m_obs,m_ven,m_val,m_cid
sele 1
te_cli1=savescreen(06,03,18,74)
centra(02,"®¯ EMISSAO DE CHEQUES ®¯")
m_doc:=0
m_emi:=date()
m_nom:=space(40)
m_obs:=space(40)
m_val:=0
m_ven:=date()
m_cid:=space(10)
m_cid:="FRANCA-SP "
m_tip:=space(1)
while .t.
mens("Tecle <ESC> p/ Sair!")
setcursor(2)
cor(4)
@ 05,03 clear to 18,74
@ 05,03 to 18,74
apaga(5,60,5,68,"n/g","n/g")
@ 05,60 say "Inclusao"
cor(4)
@ 05,59 say "["
@ 05,68 say "]"
sombra(06,05,18,74)
@ 06,10 say "Tipo Banco:"
@ 08,10 say "N. Cheque.:"
@ 08,35 say "Emissao:"
@ 10,10 say "Nominal...:"
@ 12,10 say "Vencimento:"
@ 12,35 say "Valor..:"
@ 14,10 say "Cidade....:"
@ 16,10 say "Observacao:"
@ 06,42 say "[1] BRADESCO / [2] BRASIL"
cor(6)
@ 06,22 get m_tip pict "@!" valid m_tip $ "12"
read
if m_tip == "1"
@ 06,25 say "BRADESCO"
else
@ 06,25 say "BRASIL"
endif
@ 08,22 get m_doc pict "@!"
@ 08,44 get m_emi pict "##/##/####"
@ 10,22 get m_nom pict "@!"
@ 12,22 say m_ven pict "##/##/####"
@ 12,44 say m_val pict "@E 99,999,999.99"
@ 14,22 say m_cid pict "@!"
@ 16,22 say m_obs pict "@!"
read
if lastkey()=27
dbcloseall()
return
endif
if empty(m_doc)
mens("Lancamento Invalido ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
endif
mens("Tecle <ESC> p/ Sair!")
sele 2
set order to 2
seek m_doc
if found()
mens("Cheque ja Compensado ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
else
sele 1
set order to 2
seek m_doc
if found()
mens("Cheque ja Cadastrado ! | <ENTER> Retorna")
tone(900,9)
inkey(0)
loop
endif
endif
sele 1
mens("Tecle <ESC> p/ Sair!")
setcursor(2)
cor(6)
@ 12,22 get m_ven pict "##/##/####" valid(m_ven!=ctod(" / / "))
read
if (m_ven<m_emi)
mens("Data do Vencimento menor que a Data de Emissao!")
tone(900,9)
inkey(0)
mens("Tecle <ESC> p/ Voltar!")
loop
endif
mens("Tecle <ESC> p/ Voltar!")
setcursor(2)
cor(6)
@ 12,44 get m_val pict "@E 99,999,999.99" valid(m_val>0)
read
if lastkey()=27
loop
endif
@ 14,22 get m_cid pict "@!"
@ 16,22 get m_obs pict "@!"
read
if lastkey()=27
loop
endif
mens("Tecle <ENTER> p/ Imprimir!")
inkey(0)
impress()
if m_tip == "1"
printcheque2(m_val,m_nom,m_cid,m_ven)
else
printche(m_val,m_nom,m_cid,m_ven)
endif
confirma("Inclusao","Cheque")
Cresp=space(1)
@ 23,78 get Cresp pict "@!" valid Cresp $ "SN"
read
If Cresp ="S"
mens("Gravando...")
appe blan
repl doc with m_doc
repl emi with m_emi
repl nom with m_nom
repl obs with m_obs
repl ven with m_ven
repl val with m_val
repl cid with m_cid
unloc()
m_doc:=0
m_emi:=date()
m_nom:=space(40)
m_obs:=space(40)
m_val:=0
m_ven:=date()
m_cid:=space(10)
m_cid:="FRANCA-SP "
loop
endif
If Cresp ="N"
unloc()
loop
endif
If LastKey() = 27
mens("Tecle <ESC> p/ Sair!")
loop
endif
enddo
dbcloseall()
lib_var()
RestScreen=(05,06,20,75,tecli1)
return
SE EU COMPILO SEPARADAMENTE O CHEQUE.PRG FUNCIONA, MAS QUANDO EU ACRESCENTO ESTA ROTINA NO SISTEMA, DA ERRO NA HORA DE IMPRIMIR ( NA LINHA ONDE TEM A FUNCAO EXTENSO()