Code: Select all
#Define PAD_LEFT 0
#Define PAD_RIGHT 1
#Define PAD_CENTER 2
STATIC FUNCTION IMPRIMIR_CAIXA( DbPedidos, DbPedAnual, cDataInicial, ;
cDataFinal, aGet, DeOndeParte )
LOCAL cAlias, oImagem, gcFile
LOCAL ResColuna, ResLinha
LOCAL oPrn, oFont, oFontLogo, oFontDivi, oFontList, ;
oFontCurs, oPen1, oPen2, oPen3, oFontSubl
LOCAL nLinha, nColuna // Linha e coluna da Descicao
LOCAL nDinheiro, nCheque, nChequePre, nTickets, nCartaoCred,;
nCartaoDebi, nContraVale, nPagina, nTotalGeral, xDataLista
MEMVAR XCAIXAINI, XCAIXAFIN, XOPERAINI, XOPERAFIN
PUBLIC XNOMEEMP, XCIDDIR
XDATALISTA := ALLTRIM(XCIDDIR)+ ", " + ;
LTRIM( STR( DAY( DATE() ) ) ) + ;
" de " + ;
OemToAnsi(CMONTH( DATE() )) + ;
" de " + ;
STR( YEAR( DATE() ) ) + ;
"."
// VariAveis Para Achar os Valores Que o Cliente Pagou
nDinheiro := 0.00
nCheque := 0.00
nChequePre := 0.00
nTickets := 0.00
nCartaoCred := 0.00
nCartaoDebi := 0.00
nContraVale := 0.00
nTotalGeral := 0.00
//oImagem:Progress( .f. )
//-> Logo do Relatorio
//LFN2SFN( gcFile := "SEMFOTO.JPG" )
//oImagem:LoadBMP( gcFile )
cAlias := ALIAS() // DbPedidos
//-> Mostra o Relatorio... Preview do Fluxo do Caixa
PRINT oPrn NAME "Fluxo do Caixa Discriminado" PREVIEW MODAL
IF EMPTY( oPrn:hDC )
RETURN NIL // Printer was not installed or ready
ENDIF
DEFINE FONT oFont NAME "Courier New" SIZE 0, -8 OF oPrn
DEFINE FONT oFontDivi NAME "Courier New" SIZE 0, -12 BOLD OF oPrn
DEFINE FONT oFontCurs NAME "Courier New" SIZE 0, -14 BOLD OF oPrn
DEFINE FONT oFontSubl NAME "Courier New" SIZE 0, -16 BOLD UnderLine OF oPrn
//-> Problemas com o Windows XP - Formato da FONTE Nao Reconhecido
IF IsWinNT() .OR. IsWin2000() // Para Windows XP/NT e 2000 / 2003
DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -16 BOLD OF oPrn
DEFINE FONT oFontList NAME "Courier New" SIZE 0, -20 BOLD OF oPrn
ELSE //-> 95/98/ME
DEFINE FONT oFontLogo NAME "Courier New" SIZE 0, -20 BOLD OF oPrn
DEFINE FONT oFontList NAME "Courier New" SIZE 0, -22 BOLD OF oPrn
ENDIF
//-> Caneta do Preview
DEFINE PEN oPen1 WIDTH 4 COLOR CLR_BROWN OF oPrn
DEFINE PEN oPen2 WIDTH 2 COLOR CLR_BROWN OF oPrn
DEFINE PEN oPen3 WIDTH 5 COLOR CLR_BLACK OF oPrn
oPrn:SetPage(9) //-> A4 //9
oPrn:SetPortrait() //-> Vertical(Retrato)
//oPrn:SetLandscape() //-> Horizontal
//- Como Imprimir em Centimetros sem errar e em qualquer Impressora
ResLinha := oPrn:nVertRes() / 40
ResLinha := oPrn:nLogPixely() / 2.54
ResColuna := oPrn:nLogPixelx() / 2.54
nPagina := 1
PAGE
//oPrn:SayImage( 0, 0, oImagem )
//oPrn:SayBitmap( 0, 0, "c:\fwh\bitmaps\fivewin.bmp" )
nLinha := 0.50
nColuna := 10.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 1.00
//-> Data de Hoje
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 10.00
//-> Cabe‡alho
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ;
CLR_BLACK,, PAD_CENTER )
nColuna := 17.50
//-> Pagina
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;
CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 10.00
IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) + ;
" - " + ;
"Caixa Final..: " + STR( XCAIXAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) + ;
" - " + ;
"Operador Final..: " + ( XOPERAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ENDIF
nLinha += 0.50
nColuna := 1.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30 //-> Pula a Linha
//-> Cabecalho
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "CàDIGO PROD " + SPACE(12) + ;
"DESCRIۂO " + SPACE(10) + ;
"VL. UNITµRIO " + SPACE(08) + ;
"QTDE VENDIDA " + SPACE(10) + ;
"TOTAL ÖTEM " ), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30 //-> Pula a Linha
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
//-> Vou imprimir os produtos
WHILE ( .NOT. EOF() )
SYSREFRESH()
IF EOF()
EXIT
ENDIF
IF nLinha >= 27 // Nova Pagina = 54 Linhas
ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile
PAGE // Nova Pagina - Abro uma nova pagina
nPagina := nPagina + 1
nLinha := 0.50
nColuna := 10.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 1.00
//-> Data de Hoje
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 10.00
//-> Cabecalho
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ;
CLR_BLACK,, PAD_CENTER )
nColuna := 17.50
//-> Pagina
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;
CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 10.00
IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) + ;
" - " + ;
"Caixa Final..: " + STR( XCAIXAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) + ;
" - " + ;
"Operador Final..: " + ( XOPERAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ENDIF
nLinha += 0.50
nColuna := 1.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30 //-> Pula a Linha
//-> Cabecalho
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "CàDIGO PROD " + SPACE(12) + ;
"DESCRIۂO " + SPACE(11) + ;
"VL. UNITµRIO " + SPACE(08) + ;
"QTDE VENDIDA " + SPACE(10) + ;
"TOTAL ÖTEM " ), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30 //-> Pula a Linha
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
nColuna := 1.00
//-> Codigo do Produto
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
( cAlias )->CODIGO, oFont,, CLR_BLACK,, PAD_LEFT )
nColuna := 3.50
//-> Nome do Produto
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
SUBSTR(( cAlias )->DESCRICAO,1,30), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 9.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
TRANSF((( cAlias )->VLUNITARIO), "@E 999,999,999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 12.50
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
TRANSF((( cAlias )->QTD_VENDEU), "999999999999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 15.50
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
TRANSF((( cAlias )->TOTITEM), "@E 999,999,999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 1.00
nLinha += 0.30 //-> Pula a Linha
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nDinheiro := nDinheiro + ( cAlias )->DINHEIRO - ;
( cAlias )->TROCOCLIEN
nCheque := nCheque + ( cAlias )->CHEQUE
nChequePre := nChequePre + ( cAlias )->CHEQUEPRE
nTickets := nTickets + ( cAlias )->TICKETS
nCartaoCred := nCartaoCred + ( cAlias )->CARTAOCRED
nCartaoDebi := nCartaoDebi + ( cAlias )->CARTAODEBI
nContraVale := nContraVale + ( cAlias )->CONTRAVALE
nTotalGeral := nTotalGeral + ( cAlias )->TOTPEDIDO
/*
VENDAPRAZO
CREDCARD
*/
SKIP // Proximo Produto
nLinha += 0.50 //-> Pula a Linha Para o Proximo Produto
ENDDO
IF nLinha >= 27 // Nova Pagina = 54 Linhas
ENDPAGE // Fecho a Pagina Anterior, Para Nao Quebrar o Metafile
PAGE // Nova Pagina - Abro uma nova pagina
nPagina := nPagina + 1
nLinha := 0.50
nColuna := 10.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
XNOMEEMP, oFontDivi,, CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 1.00
//-> Data de Hoje
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Data: " + DTOC( DATE() ) ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 10.00
//-> Cabecalho
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"FLUXO DO CAIXA DISCRIMINADO ", oFontDivi,, ;
CLR_BLACK,, PAD_CENTER )
nColuna := 17.50
//-> Pagina
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "P gina: " + STRZERO( nPagina ) ), oFont,, ;
CLR_BLACK,, PAD_CENTER )
nLinha += 0.50
nColuna := 10.00
IF XCAIXAINI > 0 .AND. XCAIXAFIN > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Caixa Inicial: " + STR( XCAIXAINI ) + ;
" - " + ;
"Caixa Final..: " + STR( XCAIXAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ELSEIF VAL(XOPERAINI) > 0 .AND. VAL(XOPERAFIN) > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
OemToAnsi( "Operador Inicial: " + ( XOPERAINI ) + ;
" - " + ;
"Operador Final..: " + ( XOPERAFIN ) ), ;
oFont,, CLR_BLACK,, PAD_CENTER )
ENDIF
nLinha += 0.50
nColuna := 1.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.30 //-> Pula a Linha
ENDIF
nColuna := 1.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"TOTAL GERAL: ", oFontDivi,, ;
CLR_BLACK,, PAD_LEFT )
nColuna := 14.00
//-> Total Geral
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
TRANSF( nTotalGeral, "@E 999,999,999,999.99" ), oFontDivi,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.50
nColuna := 1.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
REPLICATE("-",110), oFont,, CLR_BLACK,, PAD_LEFT )
nLinha += 0.50
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"RESUMO GERAL: ", oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.50
nColuna := 1.00
IF nDinheiro > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM DINHEIRO..: " + ;
TRANSF( nDinheiro, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nCheque > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM CHEQUE....: " + ;
TRANSF( nCheque, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nChequePre > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM CHEQUE PRE: " + ;
TRANSF( nChequePre, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nTickets > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM TICKETS...: " + ;
TRANSF( nTickets, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nCartaoCred > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM C. CREDITO: " + ;
TRANSF( nCartaoCred, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nCartaoDebi > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM C. DEBITO.: " + ;
TRANSF( nCartaoDebi, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
IF nContraVale > 0
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"EM C. VALE...: " + ;
TRANSF( nContraVale, "@E 999,999.99" ), oFont,, ;
CLR_BLACK,, PAD_LEFT )
nLinha += 0.30
ENDIF
nLinha += 0.50
nColuna := 14.00
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"" + XDATALISTA, ;
oFont,, CLR_BLACK,, PAD_CENTER )
nLinha ++
oPrn:Say( nLinha * ResLinha, nColuna * ResColuna, ;
"________________________________"+ ;
"__________", ;
oFont,, CLR_BLACK,, PAD_CENTER )
nLinha += 0.30
ENDPAGE
ENDPRINT
oFont:End()
oFontLogo:End()
oFontDivi:End()
oFontList:End()
oFontCurs:End()
oFontSubl:End()
oPen1:End()
oPen2:End()
oPen3:End()
RETURN NIL