Código: Selecionar todos
// Imprimir Recibo de Pagamento
//----- Definicao de comando SAY para TdosPrn ---------------------------------
//
#xcommand @ <nRow>,<nCol> SAY <cText> ;
OF <oPrinter> ;
=> ;
<oPrinter>:Say(<nRow>, <nCol>, <cText> )
FUNCTION IMPRIME_RECIBO( DbClientes, DbApagarReceb, DbNunNf, XVALOR, XT )
FIELD DEST_NOME
LOCAL oPrn, nTotItens, aux, dc, cData, CCIDA
MEMVAR XNNF
PUBLIC NLINHA, XVAL, XTOTEXT, XNOMEEMP, XFILIAL, XCGCDIR, XTELDIR, ;
XENDDIR, XBAIDIR, XCIDDIR, XCOMP, XDA, XCODVEND
nlinha := 0
nTotItens := 10 // teste -> Tirar
EXTERNAL ISPRINTER
IF .NOT. ISPRINTER()
Checa_Imp() // Checar Se a Impressora Está Ativa..
Return Nil
ENDIF
// Configura‡äes Para a Impressora de Cupons
oPrn:= TDosPrn():New( "RELAT.TXT" ) // para ir para um arquivo .txt (teste)
// nste Comando, Liga a Impressora. NÆo Tirar Nunca
oPrn:StartPage() // da Start(inicializa) na p gina.
oPrn:lZeraBuffer := .T. // Inibe o Pulo da P gina
NLINHA := 0
@ ROWW(),0 SAY CHR(15) OF OPRN
XVAL := XVALOR
XTOTEXT := EXTENSO( XVAL )+SPACE(200)
Select(DbClientes:cAlias)
@ ROWW(),0 SAY "|"+REPL("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(XNOMEEMP,38)+"|" OF OPRN
@ ROWW(),0 SAY "|CNPJ: "+LEFT(xCgcDir,18)+"Tel: "+LEFT(xTelDir,9)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(xEndDir,38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(xBaiDir,38)+SPACE(8)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(xcidDir,38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+REPL("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|R E C I B O D E P A G A M E N T O |" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+REPL("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|Recebemos de Sr(a),"+SPACE(19)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(DEST_NOME,38)+"|" OF OPRN
@ ROWW(),0 SAY "|a Importancia de R$ "+TRANSFORM(XVAL,"@E 999,999.99")+SPACE(8)+"|" OF OPRN
@ ROWW(),0 SAY "|("+LEFT(xtotext,36)+IIF(LEN(ALLTRIM(xtotext))>36," ",")")+"|" OF OPRN
IF LEN(ALLTRIM(XTOTEXT))>36
@ ROWW(),0 SAY "|"+SUBS(XTOTEXT,37,37)+IIF(LEN(ALLTRIM(XTOTEXT))>73," ",")")+"|" OF OPRN
ENDIF
IF LEN(ALLTRIM(XTOTEXT))>73
@ ROWW(),0 SAY "|"+SUBS(XTOTEXT,74,37)+IIF(LEN(ALLTRIM(XTOTEXT))>110," ",")")+"|" OF OPRN
ENDIF
IF LEN(ALLTRIM(XTOTEXT))>110
@ ROWW(),0 SAY "|"+SUBS(XTOTEXT,111,37)+IIF(LEN(ALLTRIM(XTOTEXT))>148," ",")")+"|" OF OPRN
ENDIF
IF LEN(ALLTRIM(XTOTEXT))>148
@ ROWW(),0 SAY "|"+SUBS(XTOTEXT,185,37)+IIF(LEN(ALLTRIM(XTOTEXT))>222," ",")")+"|" OF OPRN
ENDIF
IF XT = 0
@ ROWW(),0 SAY "|Referente ao Pagamento da Parcela do |" OF OPRN
@ ROWW(),0 SAY "|Titulo No "+STRZERO(XNNF,10)+" "+XCOMP+SPACE(15)+"|" OF OPRN
ELSE
@ ROWW(),0 SAY "|Referente ao Pagamento da Parcela de |" OF OPRN
@ ROWW(),0 SAY "|Varios Titulos"+SPACE(24)+"|" OF OPRN
ENDIF
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
AUX := 9*(MONTH(XDA))-8
DC := TRIM(SUBSTR('JANEIRO FEVEREIROMARCO ABRIL MAIO JUNHO JULHO AGOSTO SETEMBRO OUTUBRO NOVEMBRO DEZEMBRO ',AUX,9))
CCIDA := ALLTRIM(XCIDDIR)
CDATA := STRZERO(DAY(XDA),2)+" DE "+ALLTRIM(DC)+" DE "+STRZERO(YEAR(XDA),4)+"."+SPACE(38)
@ ROWW(),0 SAY "|"+LEFT(CCIDA,38)+SPACE(02)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(CDATA,38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+SPACE(38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+REPLICATE("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+LEFT(XNOMEEMP,38)+"|" OF OPRN
@ ROWW(),0 SAY "|"+REPLICATE("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "|Operador do Caixa: "+LEFT(XCODVEND,19)+SPACE(17)+"|" OF OPRN
@ ROWW(),0 SAY "|"+REPLICATE("-",38)+"|" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY "" OF OPRN
@ ROWW(),0 SAY CHR(18) OF OPRN
oPrn:EndPage()
oPrn:End()
//--- imprime no spool do windows, liberando o micro para trabalhar.
ImpSpool( "RELAT.TXT",, .T. )
//--- opcionamente pode-se apagar o arquivo passando .t. no 3o. parametro.
Select(DbApagarReceb:cAlias)
SET ORDER TO 01
RETURN( XVAL )
STATIC FUNCTION ROWW()
PUBLIC NLINHA
RETURN( NLINHA := NLINHA+1 )
STATIC FUNCTION Extenso()
PARAMETER XVLEXT
PUBLIC VV, B1, B2, B3, B4, B5, TB1, TB2, TB3, ;
TCENT, TCRU, SEPC, SEP1, SEP2, SEP3, EXTB1, EXTB2, EXTB3, ;
EXTB4, EXTB5, AA
PUBLIC EXTN, CONT, P, S, T, VEXTBL //, CEN, DEZ1, DEZ, UNI, DEZ1
MEMVAR XVALOR
DECLARE UNI[9], DEZ[9], DEZ1[9], CEN[9]
UNI[1] = "UM"
UNI[2] = "DOIS"
UNI[3] = "TRES"
UNI[4] = "QUATRO"
UNI[5] = "CINCO"
UNI[6] = "SEIS"
UNI[7] = "SETE"
UNI[8] = "OITO"
UNI[9] = "NOVE"
DEZ[1] = "ONZE"
DEZ[2] = "DOZE"
DEZ[3] = "TREZE"
DEZ[4] = "QUATORZE"
DEZ[5] = "QUINZE"
DEZ[6] = "DEZESSEIS"
DEZ[7] = "DEZESSETE"
DEZ[8] = "DEZOITO"
DEZ[9] = "DEZENOVE"
DEZ1[1] = "DEZ"
DEZ1[2] = "VINTE"
DEZ1[3] = "TRINTA"
DEZ1[4] = "QUARENTA"
DEZ1[5] = "CINQUENTA"
DEZ1[6] = "SESSENTA"
DEZ1[7] = "SETENTA"
DEZ1[8] = "OITENTA"
DEZ1[9] = "NOVENTA"
CEN[1] = "CEM"
CEN[2] = "DUZENTOS"
CEN[3] = "TREZENTOS"
CEN[4] = "QUATROCENTOS"
CEN[5] = "QUINHENTOS"
CEN[6] = "SEISCENTOS"
CEN[7] = "SETECENTOS"
CEN[8] = "OITOCENTOS"
CEN[9] = "NOVECENTOS"
XVALOR = XVLEXT
XVALOR = XVALOR*100
VV = STR(XVALOR,14,0)
B1 = VAL(SUBSTR(VV,1,3))
B2 = VAL(SUBSTR(VV,4,3))
B3 = VAL(SUBSTR(VV,7,3))
B4 = VAL(SUBSTR(VV,10,3))
B5 = VAL(SUBSTR(VV,13,2))
TB1 := ""
TB2 := ""
TB3 := ""
TCENT := ""
TCRU := ""
SEPC := ""
SEP1 := ""
SEP2 := ""
SEP3 := ""
EXTB1 := ""
EXTB2 := ""
EXTB3 := ""
EXTB4 := ""
EXTB5 := ""
IF B1 # 0
EXTB1 = BLOCOTRI(B1)
IF B1 = 1
TB1 = " BILHAO"
ENDIF
IF B1 > 1
TB1 = " BILHOES"
ENDIF
IF B2 = 0 .AND. B3 = 0 .AND. B4 = 0
TCRU = " DE REAIS"
ENDIF
ENDIF
IF B2 # 0
EXTB2 = BLOCOTRI(B2)
IF B2 = 1
TB2 = " MILHAO"
ENDIF
IF B2 > 1
TB2 = " MILHOES"
ENDIF
IF B3 = 0 .AND. B4 = 0
TCRU = " DE REAIS"
ENDIF
ENDIF
IF B3 # 0
EXTB3 = BLOCOTRI(B3)
TB3 = " MIL"
IF B4 = 0
TCRU = " REAIS"
ENDIF
ENDIF
IF B4 # 0
EXTB4 = BLOCOTRI(B4)
IF B4 = 1 .AND. B1 = 0 .AND. B2 = 0 .AND. B3 = 0
TCRU = " REAL"
ELSE
TCRU = " REAIS"
ENDIF
ENDIF
**SEP3
IF B1 # 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 # 0
SEP1 = ", "
SEP2 = ", "
SEP3 = " E "
ELSEIF B1 # 0 .AND. B2 # 0 .AND. B3 = 0 .AND. B4 # 0
SEP1 = ", "
SEP2 = ", "
SEP3 = " E "
ELSEIF B1 # 0 .AND. B2 = 0 .AND. B3 # 0 .AND. B4 # 0
SEP1 = ", "
ELSEIF B1 # 0 .AND. B2 = 0 .AND. B3 = 0 .AND. B4 # 0
SEP1 = " E "
ELSEIF B1 # 0 .AND. B2 # 0 .AND. B3 = 0 .AND. B4 = 0
SEP1 = " E "
ELSEIF B1 # 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 = 0
SEP1 = ", "
ENDIF
IF B1 # 0 .AND. B2 = 0 .AND. B3 # 0 .AND. B4 # 0
SEP3 = " E "
ENDIF
IF B1 # 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 = 0 .OR. B1 # 0 .AND. B2 = 0 .AND. B3 # 0 .AND. B4 = 0
SEP2 = " E "
ELSEIF B1 = 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 # 0
SEP2=", "
ELSEIF B1 = 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 = 0
SEP2=" E "
ENDIF
IF B1 = 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 = 0 .OR. B1 = 0 .AND. B2 # 0 .AND. B3 # 0 .AND. B4 # 0 .OR. B1 = 0 .AND. B2 = 0 .AND. B3 # 0 .AND. B4 # 0
AA=0
IF B4 # 0
SEP3 = " E "
ENDIF
ENDIF
IF B5 # 0
IF XVALOR > 99
SEPC = " E "
ENDIF
EXTB5 = BLOCOTRI(B5)
IF B5 = 1
TCENT = " CENTAVO"
ELSE
TCENT = " CENTAVOS"
ENDIF
ENDIF
EXTN = EXTB1 + TB1 + SEP1 + EXTB2 + TB2 + SEP2 + EXTB3 + TB3 + SEP3 + EXTB4 + TCRU + SEPC + EXTB5 + TCENT
IF SUBSTR(EXTN,1,2)="UM"
EXTN = "H" + EXTN
ENDIF
CONT=" "
RETURN(extn)
STATIC FUNCTION BLOCOTRI()
PARAMETER TRIO
PUBLIC EXTN, CONT, P, S, T, VEXTBL, CEN, DEZ_2, DEZ, UNI
IF TRIO > 99
P := VAL(SUBSTR(STR(TRIO,3,0),1,1))
ELSE
P := 0
ENDIF
IF TRIO > 9
S := VAL(SUBSTR(STR(TRIO,3,0),2,1))
ELSE
S := 0
ENDIF
T := VAL(SUBSTR(STR(TRIO,3,0),3,1))
VEXTBL := ""
IF P > 0 .AND. S = 0 .AND. T = 0
VEXTBL := CEN[P]
ELSEIF P > 0 .AND. (S # 0 .OR. T # 0)
IF P = 1
VEXTBL := "CENTO E "
ELSE
VEXTBL := CEN[P] + " E "
ENDIF
IF S # 0
IF T = 0
VEXTBL := VEXTBL + DEZ_2[S]
ELSE
IF S = 1
VEXTBL := VEXTBL + DEZ[T]
ELSE
VEXTBL := VEXTBL + DEZ_2[S] + " E " + UNI[T]
ENDIF
ENDIF
ELSE
VEXTBL := VEXTBL + UNI[T]
ENDIF
ELSEIF P = 0
IF S # 0
IF T = 0
VEXTBL := VEXTBL + DEZ_2[S]
ELSE
IF S = 1
VEXTBL := VEXTBL + DEZ[T]
ELSE
VEXTBL := VEXTBL + DEZ_2[S] + " E " + UNI[T]
ENDIF
ENDIF
ELSE
VEXTBL := VEXTBL + UNI[T]
ENDIF
ENDIF
RETURN(VEXTBL)