Preciso aposentar minha FX1050 e passar usar minha HP1102W, até fiz alguns testes com o DOS2USB, mas pesquisando baixei o Harbour3.2 e andei vendo algumas opções para gerar meu relatório inicial usando PrintFileRAW, não tive êxito, o relatório aparece com Status de imprimindo na HP Laser mas nada de imprimir.
Estou usando em modo console, e comentei algumas linhas para poder ir testando com as dicas que tenho pesquisando no Fórum.
Olhei na pasta Contrib\HbWin\Tests, mas ainda estou perdida nos exemplos.
Código: Selecionar todos
CLEAR
Set Century On // ano com 4 digitos
Set Date Brit // data no formato dd/mm/yyyy
mdata = CToD( ' / / ' )
DO WHILE .T.
@ 10, 10 SAY 'INFORME DATA DO MOVIMENTO'
@ 10, 36 GET mdata PICTURE '@D'
READ
IF mdata = CToD( ' / / ' )
@ 20, 1 SAY 'DATA EM BRANCO'
WAIT ', ENTER'
LOOP
ENDIF
EXIT
ENDDO
SELECT 0
USE CLIENTES
INDEX ON nome TO Temp1
SELECT 0
USE MOVIM
INDEX ON Conta + Dtos( Data ) TO Temp2
SELECT 0
USE HISTOR INDEX IHISTOR
SET PRINTER TO TESTE.TXT
SET DEVICE TO PRINT
@ 0, 0 SAY Chr( 27 ) + Chr( 15 )
mlinha = 66
mfolha = 1
mtotcre = 0.00
mtotdeb = 0.00
mtotvap = 0.00
mtotvales = 0.00
mtotodeb = 0.00
mtotrest = 0.00
mtotven = 0.00
SELECT clientes
GOTO TOP
DO WHILE .NOT. Eof() // clientes em ordem alfabética
SELECT movim
SET SOFTSEEK ON // pra encontrar data igual ou acima (apesar que parece usar data única)
SEEK clientes->Conta + Dtos( mData )
SET SOFTSEEK OFF
DO WHILE movim->Conta == clientes->Conta .AND. .NOT. Eof() // movimentos referentes ao cliente
// IF movim->Dat_Lanc < mData // Pra que isto, se o SEEK já pulou datas menores?
// SKIP
// LOOP
// ENDIF
IF movim->Dat_Lanc > mdata
EXIT
ENDIF
IF mlinha > 58
DO CCCABP20 WITH mfolha, mdata, mlinha
ENDIF
@ mlinha, 4 SAY clientes->Conta
@ mlinha, 10 SAY clientes->Nome
@ mlinha, 44 SAY clientes->Tipo
SELECT histor
SEEK movim->CT
IF Eof()
@ mlinha, 66 SAY '*******'
ELSE
@ mlinha, 66 SAY histor->Historico
ENDIF
SELECT movim
@ mlinha, 78 SAY movim->Doc
IF movim->CT < 10
mtotdeb += movim->Valor
DO CASE
CASE movim->CT = 01 ; mtotvap += movim->Valor
CASE movim->CT = 02 ; mtotvales += movim->Valor
CASE movim->CT = 06 ; mtotrest += movim->Valor
OTHERWISE ; mtotodeb += movim->Valor
ENDCASE
@ mlinha, 94 SAY movim->Valor PICTURE '9,999,999,999.99'
ELSE
mtotcre += movim->Valor
@ mlinha, 111 SAY movim->Valor PICTURE '9,999,999,999.99'
ENDIF
mlinha += 1
SKIP
ENDDO
SELECT clientes // retorna pra clientes, que é com o que este do while externo trabalha
SKIP
ENDDO
IF mlinha > 55
DO CCCABP20 WITH mfolha, mdata, mlinha
ENDIF
mlinha += 1
@ mlinha, 10 SAY 'TOTAL DE VENDAS A PRAZO = >'
@ mlinha, 94 SAY mtotvap PICTURE '9,999,999,999.99'
mlinha += 1
@ mlinha, 10 SAY 'TOTAL DE VALES ....... = >'
@ mlinha, 94 SAY mtotvales PICTURE '9,999,999,999.99'
mlinha += 1
@ mlinha, 10 SAY 'TOTAL DE RESTAURANTE = >'
@ mlinha, 94 SAY mtotrest PICTURE '9,999,999,999.99'
mlinha += 1
@ mlinha, 10 SAY 'TOTAL DE OUTROS DEBITOS = >'
@ mlinha, 94 SAY mtotodeb PICTURE '9,999,999,999.99'
mlinha += 1
@ mlinha, 35 SAY 'T O T A L = >'
@ mlinha, 94 SAY mtotdeb PICTURE '9,999,999,999.99'
@ mlinha, 111 SAY mtotcre PICTURE '9,999,999,999.99'
@ pRow() + 1, 0 SAY Chr( 27 ) + Chr( 15 )
* EJECT
@ 0, 0 SAY Chr( 27 ) + '@'
SET DEVICE TO SCREEN
* SET PRINTER TO
* CLOSE ALL
fErase( "temp1.ntx" )
fErase( "temp2.ntx" )
* CLEAR
* RETURN
FUNC IMPRESSORA
LOCAL aPrn := PRINTERPORTTONAME( "PDF", .T. ) // usa a impressora PDF criator para imprimir via PDF ( Uso impressora PDF para teste )
IF EMPTY( PRINTERPORTTONAME( "PDF", .T. ) )
aPrn := GETDEFAULTPRINTER() // caso a PDFCREATOR não exista ele vai pegar a impressora padrão
ENDIF
cFILE := ("teste.txt") // Aqui achei sem sentido informar o arquivo já que a impressora não aceita imprimir modo "RAW" - Creio que o correção então seria imprimir mlinha
cPrinter := GETDEFAULTPRINTER()
FUNC Imprime( cFILE,cPrinter )
local cTexto, nLinhas, nA, mlinha
local oPrinter := win32prn():New(cPrinter)
oPrinter:Landscape := .F.
oPrinter:FormType := 9
oprinter:SetPrintQuality(-1)
oPrinter:Copies := 1
oPrinter:SetFont("Courier New",11,{3,-50})
oPrinter:Bold(0)
oPrinter:newline()
oPrinter:SetFont("Courier New",11,{3,-50})
oPrinter:TextOut(mlinha)
oPrinter:Bold(0)
if (oPrinter:MaxRow() - 2) <= oPrinter:Prow()
oPrinter:NewPage() // nova pagina
FOR TT=1 TO aTamlog
oPrinter:newline()
NEXT
endif
RETURN NIL
