FoxPro/Visual FoxPro - Falla al Imprimir Ticket

   
Vista:

Falla al Imprimir Ticket

Publicado por Amado Garcia (66 intervenciones) el 24/09/2008 15:33:14
Hola... buenos dias a todos...
Tengo un problemita al mandar imprimir los ticket en miniprinter.. estoy mandando el reporte a un archivo txt y luego lo mando imprimir con copy... asi...

SET CONSOLE OFF
SET DEVICE TO FILE ticketv.txt &&& Ticket de Ventas
???CHR(15) && Codigo para activar el modo comprimido
@ prow()3, SAY .." bla.. bla.."
@ prow()+1,4, 0 SAY ..." bla.. bla..Bla"
........
.... y termmina asi
? CHR(27)+"m" && Corta Papel
??? chr(18)
RUN /7 type ticketv.txt TO lpt1
SET PRINTER to
Eject
SET CONSOLE ON
set devi to screen
RETURN

lo que pasa es que el primer ticket si lo emite bien... pero el segundo o tercero... me presenta un mensaje en MSDOS... que dice "el archivo se encuentra ocupado por otra persona o por otro usuario...

Saludos...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Falla al Imprimir Ticket

Publicado por jose camilo (688 intervenciones) el 24/09/2008 17:29:10
hola papa y por k no lo envia directamente a la impresora en vez de un archivo de texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por Amado Garcia (66 intervenciones) el 24/09/2008 19:15:17
Porque no lo envio directamente a la impresora...??

Porque estoy usando en este equio 3 sistemas, en el cual 2 de ellas imprimen en puerto usb... y estan predeterminadas para cada sistema.... y solo la Miniprinter esta conectado al Puerto LPT1... y no quiero usar los controladores de impresoras,,, sino que enviarlo directamente a dicho puerto...

tuve ese problema... por la predeterminación de la impresora que se usa para seguros... el ticket me lo mandaba a esa impresora.. pero haciendo uso del puerto lpt1... ignora la predeterminacion de las demas impresoras...

Contento...??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por kong (681 intervenciones) el 24/09/2008 20:05:12
no necesitas driver para las impresoras de ticketes, tienes que setearlos como GENERIC/TEXTONLY , es decir agregar una impresora.

a partir de alli

- guardas la impresora que esté activa o predeterminada en una variable. No sé exactamente como, pero sé que hay una manera.
- direccionar la impresion a la impresora de ticketes, (SET PRINTER TO NAME)
- inicializa la impresora
- imprimes lo que desees
- otra vez inicializar la impresora
- restaurar a la impresora predeterminada con la variable que guardaste el nombre de la impresora (SET PRINTER TO NAME)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por abolom (31 intervenciones) el 25/09/2008 06:45:09
Yo lo hago de esta forma espero que pueda servir algo parecedo lo que haces

set prit to file.txt &&(archivo de texto)
???CHR(15) && Codigo para activar el modo comprimido
@ prow()3, SAY .." bla.. bla.."
@ prow()+1,4, 0 SAY ..." bla.. bla..Bla"

..
..
set print off
set print to temp1.txt &&este archivo es para cierre el archivo file.txt

RUN TYPE FILE.TXT>LPT1

NO ME DA PROBLEMAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por santiago (377 intervenciones) el 25/09/2008 17:58:50
Lo que pasa es que cuando generas el primer ticket recien creas el archivo txt y lo abres y lo imprimes, pero cuando intentas generar el segundo (con el mismo nombre), el DOS no te deja y te dice que el archivo ya existe y esta ocupado, puedes solucionarlo de 2 formas, la primera es generar diferentes txt para que no ocurra dicho suceso, por ejemplo puedes generar el txt con el nombre coincidente al numero de ticket, ejemplo:

tïcket 0000154 nombre = 0000154.txt
tïcket 0000155 nombre = 0000155.txt
tïcket 0000156 nombre = 0000156.txt

recuerda eliminar los txt despues de imprimirlos para que no te llenes de archivos y recuerda que el DOS tiene un limite de caracteres para el nombre, trata de no usar mas de 8 caracteres en el nombre.

run del 0000154.txt

tambien puedes usar el mismo archivo ticketv.txt una y otra vez, pero para eso tienes que mandar previamnete un caracter cualquiera (puede ser un blanco " ") al archivo txt y luego vuelves a usar el mismo txt para la impresion, de esta forma el DOS esta "viendo" el de caracter en blanco y no "ve" el de la impresion y no te bota el mensaje de error.

Ambos casos me ha funcionado sin problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por jose camilo (688 intervenciones) el 26/09/2008 14:43:17
gracias por el boche amado

pero no importa te keremos aun asi

una idea podrias borrar el archivo txt antes de crear el otro tike
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por santiago (377 intervenciones) el 26/09/2008 21:22:44
Me parece que quien tiene que jusgar la mejor alternativa es el usuario, el "boche" puede interpretarse de muchas formas y desde muchos angulos, en cuanto a borrar los txt, obviamente se borran uno a uno despues de imprimirse.

gracias por "kererme" aunque prefiero escribirlo con "qu".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Falla al Imprimir Ticket

Publicado por EVELIO FERNANDO CASANOVA (3 intervenciones) el 17/10/2008 05:24:39
UTILIZA LO MISMO

Ejemplo.
xLpn="lpt1"
SET PRINTER TO "FACTURA.TXT"
SET DEVICE TO PRINTER
SET CONSOLE OFF
faprinter()
DO ACTVTASM.FXP
SET PRINTER TO
SET DEVICE TO SCREEN
SET CONSOLE ON
IF xSilp=1
COPY FILE FACTURA.TXT TO &xLpn
ENDIF
SELECT FAVENTA2
SET FILTER TO CIA+NROPED="99ZZ"
GO BOTTOM
IF NOT EOF()
SKIP
ENDIF
RETURN .T.
********************************************
FUNCTION faprinter
STORE 0 TO l,lf,tg0,tg1,tg2,tg3,tg4,tg5,pg
********************************************
SELECT FAVENTA1
xnfa=FAVENTA1.NROFA
xfechav=DTOC(FAVENTA1.FECHA)
IF VAL(xnfa)=0 && Si Nrofa no a sido asignado &&
SET PROCEDURE TO FOXSERVI
xnfa=getnrofa() && Busca Numero de factura &&
SET PROCEDURE TO
SELECT FAVENTA1
REPLACE FAVENTA1.NROFA WITH xnfa && Asigna numero de Factura &&
ENDIF
SELECT FAVENTA1
xnfa=FAVENTA1.NROFA
xnped=FAVENTA1.NROPED
xfechav=DTOC(FAVENTA1.FECHA)
xfecha=FAVENTA1.FECHA
***************************************************************************
SET PROCEDURE TO UTIL
STORE 0 TO x1,x2,x3,x4,x5,x6
x1=centra(40,xRazonsoc)
x2=centra(40,"R.I.F. "+xNrif)
x3=centra(40,xDirecion1)
x4=centra(40,xDirecion2)
x5=centra(40,xCiudad+"/"+xEstado)
x6=centra(40,xTelefonos)
SET PROCEDURE TO
SELECT FAVENTA2
SET FILTER TO FAVENTA2.CIA+FAVENTA2.NROPED=xcods+xNroped
GO TOP
@PROW()+1,x1 SAY xRazonsoc
@PROW()+1, 0 SAY ""
@PROW()+1,x2 SAY "R.I.F. "+xNrif
@PROW()+1,x3 SAY xDirecion1
@PROW()+1,x4 SAY xDirecion2
@PROW()+1,x5 SAY xCiudad+"/"+xEstado
@PROW()+1,x6 SAY xTelefonos
@PROW()+1, 0 SAY "----------------------------------------"
@PROW()+1, 0 SAY "Rif:"+FAVENTA1.NRORIF
@PROW()+1, 0 SAY "Cte:"+left(FAVENTA1.Razonsoc,36)
@PROW()+1, 0 SAY "Tlf:"+FAVENTA1.telefono1
@PROW()+1, 0 SAY "----------------------------------------"
@PROW()+1, 0 SAY "PEDIDO:&xnped &xfechav FACTURA: &xnfa"
@PROW()+1, 0 SAY "CANT DESCRIPCION DEL PRODUCTO IMPORTE"
@PROW()+1, 0 SAY "---- ------------------------ ----------"
DO WHILE NOT EOF()
IF FAVENTA2.EXCENTO="S"
xtexto1=LEFT(faventa2.descripc,19)+"(E)"
ELSE
xtexto1=LEFT(faventa2.descripc,23)
ENDIF
xdata=TRANSFORM(faventa2.cant,"9999")+" "+xtexto1+" "+TRANSFORM(faventa2.totalmerca,"9999,999.99")
@PROW()+1,0 SAY xdata
tg0=tg0+faventa2.totalmerca
tg1=tg1+faventa2.totalsiva
tg2=tg2+faventa2.totaldes
tg3=tg3+faventa2.totaliva
tg4=tg4+faventa2.totalciva
tg5=tg5+faventa2.totalexcen
REPLACE FAVENTA2.NROFA WITH xnfa
REPLACE FAVENTA2.FECHA WITH xfecha
IF FAVENTA2.STS1="S"
REPLACE FAVENTA2.STS1 with "I"
REPLACE FAVENTA2.STS2 with "I"
REPLACE FAVENTA2.STS3 with "M"
ENDIF
SKIP
ENDDO
SELECT FAVENTA1
destxt=TRANSFORM(FAVENTA1.TASADES,"99.99")+"%"
ivatxt=TRANSFORM(FAVENTA1.IVA,"99.99")+"%.."
@PROW()+1,0 SAY ""
l=PROW()+1
@l,0 SAY "**** ------ SUB-TOTAL......"
@l,28 SAY TRANSFORM(tg0,"99999,999.99")
l = l + 1
@l, 0 SAY " Descuento&destxt"
@l,28 SAY TRANSFORM(tg2,"99999,999.99")
l = l + 1
@l, 0 SAY " I.V.A. &ivatxt."
@l,28 SAY TRANSFORM(tg3,"99999,999.99")
l = l + 1
@l, 0 SAY " NETO A PAGAR..."
@l,28 SAY TRANSFORM(tg4,"99999,999.99")
@PROW()+1,0 SAY ""
@PROW()+1,0 SAY ""
@PROW()+1,0 SAY ""
@PROW()+1,0 SAY ""
@PROW()+1,0 SAY ""
@PROW()+1,0 SAY ""
****************************************
SELECT FAVENTA1
REPLACE FAVENTA1.TOTALMERCA WITH tg0
REPLACE FAVENTA1.TOTALSIVA WITH tg1
REPLACE FAVENTA1.TOTALDES WITH tg2
REPLACE FAVENTA1.TOTALIVA WITH tg3
REPLACE FAVENTA1.TOTALCIVA WITH tg4
REPLACE FAVENTA1.TOTALEXCEN WITH tg5
IF FAVENTA1.STS1="S"
REPLACE FAVENTA1.STS1 WITH "I"
REPLACE FAVENTA1.STS2 WITH "I"
REPLACE FAVENTA1.STS3 WITH "M"
ENDIF
SELECT CONTROLP
REPLACE CONTROLP.STSV WITH "P"
DELETE
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar