Problema con salto de pagina al imprimir Factura

279 views
Skip to first unread message

Mario Escudero

unread,
Sep 2, 2014, 8:52:28 PM9/2/14
to publice...@googlegroups.com
Buenas noches:
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.
He probado con EJECT pero me sale error ("la impresora no está lista...")
Mil gracias de antemano
Saludos
*******************************************************

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
*

Arnaldo Toledano

unread,
Sep 2, 2014, 9:07:48 PM9/2/14
to publice...@googlegroups.com, arnaldo....@gmail.com
Que impresora es ????


Arnaldo Toledano
--
Arnaldo Toledano Tesys Informática Córdoba Argentina

Víctor Hugo Espínola Domínguez

unread,
Sep 2, 2014, 9:13:54 PM9/2/14
to publice...@googlegroups.com
Hola Mario

La mitad de A4 es casi 36 líneas NO 33

>@0,1 say chr(27)+chr(67)+chr(33)

@0,1 say chr(27)+chr(67)+chr(36)

o

@0,1 say chr(27)+chr(67)+chr(0)+chr(6)    && Long. pág. en pulgadas

Al final de la factura para lograr el salto de página:

@32,0 say chr(12)

Saludos,
Víctor.
Lambaré - Paraguay.
P.D.: Es importante que sepas exactamente la longitud de la página en pulgadas.

Mario Escudero

unread,
Sep 2, 2014, 9:17:55 PM9/2/14
to publice...@googlegroups.com
Epson LX300


----
Mario Escudero
Mov 995-817087  Rpm *854388

Mario Escudero

unread,
Sep 2, 2014, 10:05:49 PM9/2/14
to publice...@googlegroups.com
Hola Victor Hugo:
2 cositas:
En la linea @0,1 say chr(27)+chr(67)+chr(0)+chr(6)    && Long. pág. en pulgadas
la longitud en pulgadas tiene que ser un numero entero o puede ser, pro ejemplo, 5.5, 6.7, etc?
Lo otro es:
En qué línea de mi rutina exactamente pongo @32,0 say chr(12)  ?
Gracias nuevamente



----
Mario Escudero
Mov 995-817087  Rpm *854388


Mario Escudero

unread,
Sep 2, 2014, 10:08:58 PM9/2/14
to publice...@googlegroups.com
Victor:
Si la hoja A4 tiene una longitud de 11,693", qué valor pongo en la línea @0,1 say chr(27)+chr(67)+chr(0)+chr(6)    && Long. pág. en pulgadas ?
Gracias


----
Mario Escudero
Mov 995-817087  Rpm *854388


El 2 de septiembre de 2014, 20:13, Víctor Hugo Espínola Domínguez<vich...@gmail.com> escribió:

Mario Escudero

unread,
Sep 2, 2014, 10:19:16 PM9/2/14
to publice...@googlegroups.com
Otra consulta:
La línea @32,0 say chr(12) la pongo al final.
Esto quiere decir despues de la linea 31?
Qué pasa si la línea 31 es la última fila que soporta el papel?
Gracias



----
Mario Escudero
Mov 995-817087  Rpm *854388


El 2 de septiembre de 2014, 20:13, Víctor Hugo Espínola Domínguez<vich...@gmail.com> escribió:

Víctor Hugo Espínola Domínguez

unread,
Sep 2, 2014, 10:27:54 PM9/2/14
to publice...@googlegroups.com
Hola Mario

Los parámetros para definir la longitud de la página, ya sea pulgadas, centímetros o líneas deben ser números enteros. Para facilitar la impresión en formularios continuos lo que se estila es exigir a la imprenta que las páginas sean en pulgadas exactas, generalmente son múltiplos de 6 pulgadas.

El salto de página lo debes poner después de la siguiente instrucción:

@31,79 Say trans(xvvta,"999,999.99") + SPACE(8) + trans(xigv,"999,999.99") + SPACE(9) + ;
trans(ventas.monto,"999,999.99")
@32,0 say chr(12)

Saludos,
Víctor.
Lambaré - Paraguay.


Mario Escudero

unread,
Sep 2, 2014, 10:31:04 PM9/2/14
to publice...@googlegroups.com
Gracias Victor Hugo
Te pasaste!
Un abrazo


----
Mario Escudero
Mov 995-817087  Rpm *854388


Víctor Hugo Espínola Domínguez

unread,
Sep 2, 2014, 10:37:26 PM9/2/14
to publice...@googlegroups.com
Hola Mario

>Si la hoja A4 tiene una longitud de 11,693", qué valor pongo en la línea @0,1 say chr(27)+chr(67)+chr(0)+chr(6)    && Long. pág. en >pulgadas ?

Ese es el valor más aproximado a la mitad de A4, tiene un error de 3,8mm.

Saludos,
Víctor.
Lambaré - Paraguay.

Víctor Hugo Espínola Domínguez

unread,
Sep 2, 2014, 10:41:02 PM9/2/14
to publice...@googlegroups.com
Hola Mario

Para asegurar puedes usar 31 en lugar de 32.

Saludos,
Víctor.
Lambaré - Paraguay.

Mario Escudero

unread,
Sep 2, 2014, 10:43:27 PM9/2/14
to publice...@googlegroups.com
Gracias !!!!!


----
Mario Escudero
Mov 995-817087  Rpm *854388


Mario Escudero

unread,
Sep 3, 2014, 8:40:44 AM9/3/14
to publice...@googlegroups.com

Perfecto
Entonces creo que como política de seguridad usaré siempre el chr(12) a continuación de la última fila.
Estoy en lo correcto?
Gracias

Mario Escudero
995-817087  Rpm *854388
www.cheff2000.com

Enviado desde mi móvil

Víctor Hugo Espínola Domínguez

unread,
Sep 3, 2014, 9:31:01 AM9/3/14
to publice...@googlegroups.com
Hola Mario

chr(12) es el carácter de control que expulsa (form feed) la hoja de manera que el cabezal de impresión se ubique en la primera línea de la siguiente.

El avance de página depende de la configuración de la longitud de página, es decir que si la página no es exactamente de 6 pulgadas entonces habrá un pequeño desajuste, 3.8mm. Para solucionar esto debes recurrir a la IST (interface silla teclado), cada vez que arranque una hoja debe realimentar el formulario mediante el teclado de la impresora. Con esto se asegura que cada factura se inicie en la primera línea física de la hoja.

Saludos,
Víctor.
Lambaré - Paraguay.
P.D.: Dile a tu cliente que le exija al confeccionador del formulario continuo que haga la hoja con una longitud exacta en pulgadas.
 
Saludos,
Víctor.
Lambaré - Paraguay.

Arnaldo Toledano

unread,
Sep 3, 2014, 9:59:50 AM9/3/14
to publice...@googlegroups.com, arnaldo....@gmail.com
Es correcto.
La LX-300 tiene un Switch para setear el SALTO de hoja cuando tenes papel continuo.
SI esta en ON, no te hace falta el Chr(12)

Arnaldo Toledano

Luis la Romana

unread,
Sep 3, 2014, 10:45:11 AM9/3/14
to publice...@googlegroups.com
Lo normal es que hagas un Formulario en Windows _Impresores _ Propiedades del servidor de impresión, allí adicionas un formato con las medidas exactas y le pones un nombre descriptivo, luego vas a Preferencias del impresor y dejas por defecto ese formulario (tamaño de papel)

Jorge Montúfar

unread,
Sep 3, 2014, 11:36:48 AM9/3/14
to publicesvfoxpro
Eso es Luis La Romana, por lo regular o yo por lo menos siempre hago lo que dices, considero que este tema se trato antes, pero igual se aprende algo siempre.

Saludos Cordiales.

Mario Escudero

unread,
Sep 3, 2014, 12:47:48 PM9/3/14
to publice...@googlegroups.com

Gracias a todos nuevamente
Saludos

Mario Escudero
995-817087  Rpm *854388
www.cheff2000.com

Enviado desde mi móvil

Reply all
Reply to author
Forward
0 new messages