|
En algunas ocasiones se necesita imprimir una factura, pero no se tiene ni idea del tamaño que tendrá el informe, por lo que hacerlo con el Diseñador de Informes no resulta tan práctico que se diga.
Con este inconveniente me dediqué a investigar como se podía imprimir en unas impresoras EPSON TMU, en el manual adjunto venían algunas indicaciones de como hacerlo, pero en Basic.
Logré traducirlo e investigando en otros foros y similares logré hacer que todo se imprimiera a como Dios manda.
Al salir Windows XP, el cual maneja la administración de impresión de una manera diferente a la que estabamos acostumbrados con Windows 98 o anteriores, tuve un gran problema, el código ya no me funcionaba, así que decidí seguir investigando hasta que logré hacer un código que imprimiese indistintamente en Windows XP y 98 (o anteriores) sin problemas.
Ya entrando en materia, realicé los siguientes pasos
- Cree un formulario, al cual le agregué un procedimiento llamado IncializaImpresora tal como se muestra acontinuación:
- Luego escribí el siguiente código
 Inicializa Formulario
- Este procedimiento lo mando a llamar desde el evento init del formulario principal (de estar en presencia de un conjunto formulario)
- En el Evento Clic del botón imprimir coloqué el siguiente código (está Documentado)
IF
SET("PRINTER") = "OFF" OR SET("DEVICE")#"PRINTER"
WAIT windows "Impresora Fuera de Lugar.... Procediendo a Incializarla" nowait timeout 3
thisform.InicializaImpresora()
WAIT clear
ENDIF
IF
UPPER(left(allt(os(1)),10))="WINDOWS
NT"
*Si es
Windows XP no se hará nada, únicamente si fuese otro Windows
Else

END
@0,0 SAY CHR(27)+"p"+chr(0)+chr(200)+chr(255) &&Abrir
caja. de Dinero
?chr(27)+chr(97)+chr(1) &&Agrandar
el tamaño de la letra
?"No. de Factura"
?chr(27)+chr(97)+chr(0) &&Regrearlo
a su estado natural
**Acá viene el
bloque de impresión de la factura o recibo
?"Impresión de la factura o
recibo"
?chr(27)+"!"+chr(17) &&Otra Forma de Imprimir en Tamaño Grande
?chr(27)+"!"+chr(0)
&&Volver el tamaño de impresión al original
**Acá al final debe
cortar el papel
???CHR(10)
IF
UPPER(left(allt(os(1)),10))<>"WINDOWS
NT"
?
?
?
?chr(27)+chr(64)
?chr(27)+CHR(97)+CHR(100)+CHR(10) &&Avanzar el papel
?CHR(27)+"m" &&Corte Parcialmente
ELSE
*Si no es XP no hace nada
ENDIF
**Siguiente se vuelve
a inicializar la impresora, pero únicamente para Windows 98, en XP ya no es
necesario hacerlo
Y ya con esto, en los puntos de ventas se
está imprimiendo en forma de recibo las facturas y no ha habido ningún
problema.
Cabe aclarar que el decidí hacer un
tutorial y no un video tutorial por lo que acá era más para compartir el código
utilizado.
Adjunto se encuentra el formulario de ejemplo , en el cual indico el código utilizado en la facturación, el
cual se puede probar sin necesidad de abrir una tabla, cursor o cualquier
origen de datos, pero obviamente para ya en la práctica deberán hacer uso de un
origen de datos para mostrar la información
|