Problema con reporte factura en Puerto Usb y cola de impresion

311 views
Skip to first unread message

TurbiSoft

unread,
Apr 12, 2011, 6:13:18 PM4/12/11
to Comunidad de Visual Foxpro en Español
Amigos tengo el siguiente escenario:

Tengo un printer Bixolon USB y otro HP USB, la pc no tiene puerto LPT1

Hago esto:

1- Comparto la impresora Bixolon y la mapeo al puerto LPT1
2- Envio la impresion de la factura tipo DOS a un Archivo de texto
3- Luego Ejecuto: ! Type archivo.txt > lpt1

Hasta aqui todo va bien.

El problema es que imprimo en la bixolon y tambien intenta imprimir a
el Printer HP y se va acumulando una cola de impresion en esta ultima.
El cliente esta algo molesto, porque luego no puede imprimir algunos
reportes a la impresora HP, pues tiene que estar cancelando los
documentos y reinciando la pc para liberar la cola de impresion, etc.

La verdad he puyado de todo y no logro corregir esto.

Alguien que haya tenido este problema que me de alguna sugerencia,
gracias anticipadas.

Luis A. Turbi
Rep. Dom.

Armando Rodríguez

unread,
Apr 2, 2011, 7:24:44 PM4/2/11
to publice...@googlegroups.com
Tuve el mismo problema. Compra un adaptador de USB a Paralelo

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de TurbiSoft
Enviado el: Martes, 12 de Abril de 2011 05:13 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Problema con reporte factura en Puerto Usb y cola de impresion

Intel Man

unread,
Apr 12, 2011, 6:30:28 PM4/12/11
to publice...@googlegroups.com
Hola te seguiero que no uses un "archivo intermedio" para imprimir e imprime defrente a la impresora:

set devi to print
???" "  &&activa el modo de impresion draf o DOS como tu lo llamas.
@1,1 say "prueba"
eject
@1,1 say ""
set devi to screen
set print to

Saludos




> Date: Tue, 12 Apr 2011 15:13:18 -0700
> Subject: [vfp] Problema con reporte factura en Puerto Usb y cola de impresion
> From: vbsco...@gmail.com
> To: publice...@googlegroups.com
Message has been deleted

HernanCano

unread,
Apr 13, 2011, 2:38:32 AM4/13/11
to Comunidad de Visual Foxpro en Español
Lo lamento, Armando e IntelMan.

Considero que ninguna de las dos opciones da respuesta a lo
preguntado.

Alberto: Me queda difícil ayudarte sabiendo que imprimes bien a una de
las dos USB: si ya imprimes a una, ¿qué tipo de mensaje aparece para
que en la otra falle?
Incluso algo que también me frena es que estás usando el comando RUN,
el cual no recomiendo para nada; preferiría que utilizaras un acceso a
un .BAT que ejecute lo que indicas ( Type archivo.txt > lpt1 ) y lo
ejecutaras
por fuera de tu app (a menos que uses ShellExecute o similar).

Como siempre, debes darnos más información sobre tu escenario para
ayudarte más (¿cómo están configuradas las dos impresoras? ¿cómo se
imprime -o intentan hacerlo ellos- a la otra impresora?)

..

TurbiSoft

unread,
Apr 13, 2011, 3:24:11 PM4/13/11
to Comunidad de Visual Foxpro en Español
Saludos a todos, gracias por sus respuestas.

Armando Rodriguez: creo que tengo una Tarjeta PCI adaptador LPT1
vieja por ahi, no esta mal probar con esta.

Intel Man: creo que probare tu sugerencia como primera opcion,
trantando de imprimir directamente a el puerto LPT1, sin utilizar
tantos comandos de seteo a la impresoras.

Hernan Cano: solo quiero direccionar la salida a la impresora Bixolon
de punto de venta, no quiero que afecte a la HP, no se quede en cola
de impresion.

Esta es la rutina que utilizo para imprimir las facturas de ventas:

************************
Procedure imprime_ptoVta
************************
* Author: Luis Alberto Turbi
* Fecha 01-07-2005
* Revision 25-06-2010
*************************
Lparameters cSalida
Local nRegistros As Integer
Store 0 To nRegistros
If Empty(cSalida)
cSalida = "P" && Pantalla
Endif
*!* If Set("PRINTER") = "OFF" Or Set("DEVICE")#"PRINTER"
*!* Wait Windows "Impresora Fuera de Lugar.... Procediendo a
Incializarla" Nowait Timeout 3
*!* =InicializaImpresora()
*!* Wait Clear
*!* Endif
*If cSalida = "P" && Pantalla
Local cArchivo As Character
Store "tmp"+Substr(Sys(2015),3,6)+".txt" To cArchivo
Select mdesfac2
Go Top
* Preparación inicial
Set Printer Off
Set Console Off
Set Alternate To (cArchivo)
Set Alternate On
*Else
* Set Console Off
* Set Device To Printer
* Set Printer On
* Select CONFIG
* Set Printer To lpt1
*Endif
If Upper(Left(Allt(Os(1)),10))="WINDOWS NT" Or Upper(Left(Allt(Os(1)),
10))="WINDOWS 5."
*Si es Windows XP no se hará nada, únicamente si fuese otro Windows
Else
* ???Chr(130)
Endif
*@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
*?Padc("GRUPO ALCA", 40, Space(1)) Font 'Courier',10 Style 'BN'
?Padc(Upper(Alltrim(mdesfac2.EMPRESA)), 40, Space(1)) Font 'Courier',
14 Style 'BU'
?Padc("RNC: "+Upper(Alltrim(mdesfac2.rnc)), 40, Space(1)) Font
'Courier',8
*?Chr(27)+Chr(97)+Chr(0) &&Regrearlo a su estado natural
*???Chr(15) &&CONDEN = 15 ==>CONDENSADO
?Proper(Substr(mdesfac2.direccion,1,40)) Font 'Courier',6
?Padc("Tel.: "+Alltrim(mdesfac2.telefono1)+"
"+Alltrim(mdesfac2.telefono2), 40, Space(1)) Font 'Courier',6
?Iif(mdesfac2.TP_FACTURA="CONT","FACTURA AL CONTADO","FACTURA A
CREDITO")+Space(3)+"FECHA: "+Dtoc(mdesfac2.fecha) Font 'Courier',8
*?Chr(27)+Chr(97)+Chr(1) &&Agrandar el tamaño de la letra
?"CLIENTE: "+Iif(mdesfac2.EXPEDIENTE
="000001",mdesfac2.NOMBRECLI,mdesfac2.NOMBRES) Font 'Courier',6
?Padc("FACTURA NO "+ Padl(Allt(Str(mdesfac2.NO_FACTURA)),6,"0"), 40,
Space(1)) Font 'Courier',8
?Padc("NCF: "+Alltrim(cNCF_FT)+Padl(Alltrim(Str(nNCF_FTS)),8,"0"), 40,
Space(1)) Font 'Courier',8
?Padc(Iif(Substr(Alltrim(cNCF_FT),9,3)="101","*** VALIDA PARA CREDITO
FISCAL ***","*** CONSUMIDOR FINAL ***"), 40, Space(1))
*?Chr(27)+Chr(97)+Chr(0) &&Regrearlo a su estado natural
?Padc('=', 40, '=') Font 'Courier',8 && Raya
?Padc(" CANT DESCRIPCION IMPORTE ", 40, Space(1)) Font
'Courier',8
?Padc('=', 40, '=') Font 'Courier',8 && Raya
Scan
**Acá viene el bloque de impresión de la factura o recibo
* ?Str(mdesfac2.cantidad,
6,0),Alltrim(mdesfac2.des_pro),Alltrim(mdesfac2.unidad),Alltrim(Transform((mdesfac2.cantidad*mdesfac2.precio)
+mdesfac2.ITBIS,'@Z 999,999.99'))
* 02-05-2010 Porblema del redeondeo Carolina
?Str(mdesfac2.cantidad,
6,0),Alltrim(mdesfac2.des_pro),Iif(Isnull(Alltrim(mdesfac2.unidad)),"",Alltrim(mdesfac2.unidad)), ;
iif(mdesfac2.precio=0 And Allt(mdesfac2.COD_PRO)<>"000001","BONO
OFE.",Alltrim(Transform((mdesfac2.valor),'@Z 999,999.99')))
nRegistros=nRegistros+1
Endscan
?Padc('=', 40, '=') Font 'Courier',8 && Raya
Go Top
?Padl("SUBTOTAL....:"+Transform(mdesfac2.Valor_brut,"999,999,999.99"),
40, Space(1)) Font 'Courier',8 Style 'I'
?Padl("DESCUENTO...:"+Transform(mdesfac2.Descuento2,"999,999,999.99"),
40, Space(1)) Font 'Courier',8 Style 'I'
?Padl("ITBIS.......:"+Transform(mdesfac2.Itebis,"999,999,999.99"), 40,
Space(1)) Font 'Courier',8 Style 'I'
* ?Padl("10% PROPINA.:"+Transform(mdesfac2.TOTAL10,"999,999,999.99"),
40, Space(1)) Font 'Courier',8 Style 'I' && 10% para los meseros
VERSION RESTAURANT
?Padl("TOTAL NETO..:"+Transform(mdesfac2.valor2,"999,999,999.99"), 40,
Space(1)) Font 'Courier',8 Style 'B'
?""
?Padl("FORMA DE PAGO..:"+Iif(VAL_EFE>0," EFE ","")+Iif(VAL_TAR>0," TAR
","")+Iif(VAL_CHE>0," CHE ","")+Iif(credito>0," CRED ","")
+Iif(NUMNOTACR>0," NT CR ",""), 40, Space(1)) Font 'Courier',8 Style
'I'
?Padl("PAGO........:"+Transform((VAL_EFE+VAL_TAR
+VAL_CHE),"999,999,999.99"), 40, Space(1)) Font 'Courier',8 Style 'I'
?Padl("DEVUELTA....:"+Transform(mdesfac2.devuelta,"999,999,999.99"),
40, Space(1)) Font 'Courier',8 Style 'I'
* ?"Cantidad de Renglones.:",Alltrim(Transform(nRegistros,"@Z
999,999,999.99")) Font 'Courier',8 Style 'I'
?Padc(Upper(Alltrim(mdesfac2.cnota)), 40, Space(1))
?"Cajera: ",Allt(mdesfac2.usuario)+Space(5)+"Vendedor:
",Allt(mdesfac2.user_prefact) Font 'Courier',6
?Padc("GRACIAS", 40, Space(1))
**Acá al final debe cortar el papel
?Chr(10)
?Chr(27)+"p"+Chr(0)+Chr(200)+Chr(255) &&Abrir caja.
If Upper(Left(Allt(Os(1)),10))<>"WINDOWS NT" Or Upper(Left(Allt(Os(1)),
10))="WINDOWS 5."
?
?
?
?
*!* ?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
Set Alternate Off
Set Alternate To
If cSalida = "P" && Pantalla
Modify File (cArchivo) Noedit
Else
Select CONFIG
If CONFIG.lPrintName
If Empty(CONFIG.printName)
Set Printer To lpt1
Else
Set Printer To Name (Alltrim(CONFIG.printName))
Endif
Else
Set Printer To lpt1
Endif
Set Printer On
Set Device To Printer
! Type &cArchivo > prn
Set Printer To
Set Printer To Defaul
Endif
Set Console On
Set Printer To
Set Printer To Default
Set Device To Screen
Endproc

Christian López Gómez

unread,
Apr 13, 2011, 4:11:54 PM4/13/11
to publice...@googlegroups.com
Ami me paso lo mismo y lo que hice fue que como la otra impresora lo
mandas por código la impresión lo único que debes hacer es poner como
default la impresora HP
Saludos

El 13/04/11, HernanCano <jherna...@gmail.com> escribió:

--
Enviado desde mi dispositivo móvil

Atentamente.
Ing. Christian López Gómez
Jefe de Sistemas
MSN: christi...@hotmail.com
christi...@gmail.com

Depto. Sistemas
P.D. "Un buen programador nunca muere solo se pierde en un proceso"

Armando Rodríguez

unread,
Apr 13, 2011, 4:19:32 PM4/13/11
to publice...@googlegroups.com
Ahora que recuerdo, tengo una mini printer instalada en un punto de venta de
uno de mis clientes. Esta es la parte donde imprimo en la mini printer
Bixolón:

** Imprimir

SET PRINTER TO NAME ALLTRIM(param.impticket)
SET CONSOLE OFF

*Se inicializa el codigo de Impresion de Tiket's
*??? CHR(27)+CHR(48)+CHR(27)+CHR(67)+CHR(44)
??? CHR(18)+CHR(27)+CHR(77)+CHR(15)
??? CHR(27)+CHR(77)+CHR(20)

*Código para Abrir la Caja de Dinero.
??? CHR(27)+'p'+CHR(0)+CHR(40)+CHR(250)
??? CHR(7)

****
??? CHR(15)

****

??? CHR(10)+CHR(13)+PADC(ALLTRIM(vNomEmpr),40," ")
IF !EMPTY(vRfc)
??? CHR(10)+CHR(13)+PADC("RFC: "+ALLTRIM(vRfc),40," ")
ENDIF
??? CHR(10)+CHR(13)+PADC(ALLTRIM(vCalle)+" "+ALLTRIM(vColonia),40," ")
??? CHR(10)+CHR(13)+PADC(ALLTRIM(vCiudad),40," ")

IF !EMPTY(vCodPos)
??? CHR(10)+CHR(13)+PADC("C.P.: "+ALLTRIM(vCodPos),40," ")
ENDIF

IF !EMPTY(vtel1)
??? CHR(10)+CHR(13)+PADC("Tel.: "+ALLTRIM(vtel1),40," ")
ENDIF

??? CHR(10)+CHR(13)+""
??? CHR(10)+CHR(13)+""

??? "Cliente: "+ALLTRIM(c_ctevt.nomcte)
??? CHR(10)+CHR(13)+""

vHora = TIME()
??? CHR(10)+CHR(13)+"FECHA Y HORA: "+TTOC(DATETIME()) &&+" "+vHora
??? CHR(10)+CHR(13)+""
??? CHR(10)+CHR(13)+"Cant Codigo Precio U Importe"
??? CHR(10)+CHR(13)+"----------------------------------------"

IF !param.notaresum
SELECT vTablaPv
vCantidad = 0
SCAN
??? CHR(10)+CHR(13)+SUBSTR(descrip,1,40)
vLinea = TRANSFORM(cantidad,"99")+" "+codprod+"
"+TRANSFORM(preciou,"99,999.99")+" "+TRANSFORM(totalr,"$99,999.99")
??? CHR(10)+CHR(13)+vLinea
vCantidad = vCantidad + cantidad
ENDSCAN
ELSE
SELECT vTablaPv
REPLACE codprod2 WITH SUBSTR(codprod,1,6) all

** Select para concentrar los registros por modelo.
SELECT SUBSTR(codprod,1,6) as
codprod,SUBSTR(descrip,1,LEN(ALLTRIM(descrip))-9) as descrip,SUM(cantidad)
as cantidad,preciou,SUM(cantidad * preciou) as totalr;
FROM vTablaPv;
GROUP BY codprod2;
INTO CURSOR NotaResum
vCantidad = 0
SCAN
??? CHR(10)+CHR(13)+SUBSTR(descrip,1,40)
vLinea = TRANSFORM(cantidad,"99")+" "+codprod+"
"+TRANSFORM(preciou,"99,999.99")+" "+TRANSFORM(totalr,"$99,999.99")
??? CHR(10)+CHR(13)+vLinea
vCantidad = vCantidad + cantidad
ENDSCAN
SELECT NotaResum
USE
ENDIF

??? CHR(10)+CHR(13)+"----------------------------------------"
??? CHR(10)+CHR(13)+"Total de Articulos: "+ALLTRIM(STR(vCantidad))
??? CHR(10)+CHR(13)+" "
IF thisform.txtimpDesc.Value > 0
??? CHR(10)+CHR(13)+PADL("Descuento:
"+TRANSFORM(thisform.txtimpDesc.Value,"999,999.99"),40," ")
ENDIF
IF thisform.txtimpIva.Value > 0
??? CHR(10)+CHR(13)+PADL("Impuesto:
"+TRANSFORM(thisform.txtimpIva.Value,"999,999.99"),40," ")
ENDIF
*??? CHR(27)+CHR(69)+"1"
??? CHR(10)+CHR(13)+PADL("Total:
"+TRANSFORM(thisform.txttotpag.Value,"999,999.99"),40," ")
??? CHR(10)+CHR(13)+" "
*??? CHR(27)+CHR(69)+"0"
??? CHR(10)+CHR(13)+cantlet(thisform.txttotpag.value)
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+PADC("*** GRACIAS POR SU COMPRA ***",40," ")
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+"Su
Pago:"+TRANSFORM(thisform.txtpagacon.Value,"99,999.99")+" Su
Cambio:"+TRANSFORM(thisform.txtCambio.Value,"99,999.99")
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+"Cambio: "+factenc.serfac+factenc.folfac
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+PADC("Devoluciones solo por defecto de fábrica",40," ")
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "
??? CHR(10)+CHR(13)+" "

CLOSE PRINT
SET CONSOLE ON
SET PRINTER TO

Suerte
Armando

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de TurbiSoft

Enviado el: Miércoles, 13 de Abril de 2011 02:24 p.m.


Para: Comunidad de Visual Foxpro en Español

Asunto: [vfp] Re: Problema con reporte factura en Puerto Usb y cola de
impresion

Saludos a todos, gracias por sus respuestas.

TurbiSoft

unread,
Apr 13, 2011, 6:38:43 PM4/13/11
to Comunidad de Visual Foxpro en Español


Saludos:

Crystian, ya tengo configurada como impresora por defecto la HP en
Windows.

Armando, intentare algo directo sin el type.

PD: Recuerden que ambas impresoras son USB

Armando Rodríguez

unread,
Apr 13, 2011, 6:55:22 PM4/13/11
to publice...@googlegroups.com
El ejemplo que te envié es para usb sin el type.

Saludos
Armando

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de TurbiSoft

Enviado el: Miércoles, 13 de Abril de 2011 05:39 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Problema con reporte factura en Puerto Usb y cola de
impresion

Saludos:

Reply all
Reply to author
Forward
0 new messages