La rutina de abajo la uso para imprimir Facturas.
Como verán primero genero un archivo TXT y luego lo imprimo.
Todo cuadra bien si imprimo facturas sueltas....
Mi problema está cuando imprimo en papel continuo. No sé cómo hacer para que la cabecera de la impresora se coloque exactamente al comienzo de la siguiente factura.
El alto de la pagina de medio A4, o sea, 33 lineas aprox.
xmaq_caja = IIF(oApp.num_caja="1",ALLTRIM(ratios.maq_caja1),IIF(oApp.num_caja="2",ALLTRIM(ratios.maq_caja2),ALLTRIM(ratios.maq_caja3)))
SELECT ventas
SET ORDER TO nummov
SEEK oApp.nummov
IF EOF() && Por si acaso aunque no deberioa suceder xq oApp.nummov viene de formxxx.imprimir pero serviria para descartar errores como que imprima otro doc....
RETURN
ENDIF
IF ventas.facbol = "F" && Factura
* RUTINA PARA IMPRESORA DE SOLO TEXTO
set library to "rawprint5.fll" Additive
*
rutaarchivo = sys(5) + sys(2003) + "\factura.txt"
SET PRINTER TO FILE factura.txt
SET CONSOLE OFF
SET DEVICE TO PRINT
*@0,1 say CHR(27)+CHR(15)
*@0,1 say chr(27)+chr(67)+chr(n) && n = #lineas de la pagina (6 por pulgada)
@0,1 say chr(27)+chr(67)+chr(33)
*@1,53 Say chr(15)+"#Factura.: "+ ventas.numdoc
@7,14 Say CHR(15) + ventas.apeynom
@9,15 Say ALLTRIM(ventas.direccion) + SPACE(1) + ALLTRIM(ventas.distrito)
@9,97 SAY dtoc(ventas.fecha)
@11,15 Say ventas.ruc + SPACE(45)
lin = 14
SELECT detallevta
SEEK oApp.nummov
IF !EOF()
Do While nummov = oApp.nummov AND !Eof()
@lin,7 Say tran(detallevta.cantidad,"9999")+ SPACE(6) + allt(recetas.desc)
@lin,100 say tran(detallevta.punit,"9,999.99")
@lin,117 say tran(detallevta.ptotal,"99,999.99")
lin = lin + 1
SKIP
ENDDO
ENDIF
*xotros = ROUND(ventas.totneto * ventas.otros/100,2)
xotros = 0
xigv = ROUND(ventas.totneto * ventas.igv/100,2)
* Ajuste de Valor Venta para que cuadre la suma (monto = v.vta. + monto igv + monto otros)
xvvta = ventas.subtotal - xotros - xigv
DO pletras WITH ventas.monto
@29,11 say oApp.soldol
@31,79 Say trans(xvvta,"999,999.99") + SPACE(8) + trans(xigv,"999,999.99") + SPACE(9) + ;
trans(ventas.monto,"999,999.99")
*@31,0 say CHR(13)
*@0,0 say "."
SET PRINTER TO NAME &xmaq_caja
SET DEVICE TO SCREEN
SET CONSOLE ON
*** Aqui envio el archivo generado como texto al rawprint
*resp1 = messagebox("Verifique que la impresora este encendida y el papel en posicion. Haga click en ACEPTAR cuando este listo.",1+64,"Impresión de la orden ")
IF !ratios.sel_caja && Pregunta por Impresora
cPrinter = GETPRINTER()
IF !empty(cPrinter)
=RAWPRINT(cPrinter,rutaARCHIVO)
ENDIF
ELSE && Imprime directamente sin preguntar
=RAWPRINT(xmaq_caja,rutaARCHIVO)
ENDIF
SET LIBRARY TO
SET PRINTER TO NAME reportes
ENDIF
*