FoxPro/Visual FoxPro - impresión en tickets

   
Vista:

impresión en tickets

Publicado por ANTONIO antoniozr2@yahoo.es (16 intervenciones) el 13/06/2016 13:18:44
Buenas a todos y gracias anticipadas a quien pueda ayudarme.

Estoy realizando una aplicación de tpv para bares y restaurantes y el problema principal que estoy teniendo es a la hora de imprimir los ticket.

Estoy realizando pruebas con 2 impresoras una EPSON TM-U300A y otra termica de 55 mm que no recuerdo la marca.

El caso es que he intentado crear el ticket en un informe el cual me sale correcto en a4, pero al crear el tamaño de papel en el servidor de impresión, imprime pero no se me para despues de terminar las lineas del ticket si no que pega como un salto de página.

Estoy intentando hacerlo bajo codigo de programación.

He intentado con ??? y padc, padr, padl, pero no se por que en algunas pruebas me salen pegadas las líneas sin hacer el salto de página.

He probado con @x,y say xxxx y al final lo he conseguido pero me pasa como en el informe, al terminar los datos sigue saliendo papel y papel....

He estado mirando muchos ejemplos por ahí, pero ya he recurrido aquí, por si hubiese una forma mas básica o fácil de hacerlo.

Muchas Gracias.
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

impresión en tickets

Publicado por ANTONIO (16 intervenciones) el 13/06/2016 22:43:08
pongo la respuesta que he hencontrado despues de muchas pruebas. Por si a alguien le viene bien.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
PARAMETERS donde
SET NOTIFY OFF
SET TALK OFF
SET SAFETY OFF
SET CONSOLE OFF
SET DEVICE TO PRINT
???CHR(27)+"C"+CHR(15) && Cantidad de Lineas
 
 
 
 
*********** UNA FORMA DE IMPRIMIR
*!*	DO CASE
*!*	   CASE donde = 1
*!*	      LN_NCOL = tpvconfig.columnas1
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"NOTA COCINA"+tipo(tpvconfig.qgruesa1)
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"-----------"+tipo(tpvconfig.qgruesa1)
*!*	   CASE donde = 2
*!*	      LN_NCOL = tpvconfig.columnas2
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"NOTA BARRA"+tipo(tpvconfig.qgruesa1)
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"-----------"+tipo(tpvconfig.qgruesa1+
*!*	   CASE donde = 3
*!*	      LN_NCOL = tpvconfig.columnas3
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"NOTA TPV"+tipo(tpvconfig.qgruesa1)
*!*	      ??? TIPO(tpvconfig.pgruesa1)+"-----------"+tipo(tpvconfig.qgruesa1)
*!*	ENDCASE
 
*!*	??? PADR(DATETIME(),LN_NCOL)
*!*	??? PADR("SALON: "+curtpv.salon+" MESA: "+curtpv.mesa,LN_NCOL)
*!*	??? PADR("CAMARERO: "+curtpv.camarero,LN_NCOL)
*!*	??? PADR(REPLICATE("-",LN_NCOL),LN_NCOL)
*!*	??? PADR(" ",LN_NCOL)
*!*	??? PADR("COMANDA                    UND.",LN_NCOL)
*!*	??? PADR(REPLICATE("-",LN_NCOL),LN_NCOL)
*!*	DO WHILE !EOF()
*!*	   ??? PADR(LEFT(descripcion,LN_NCOL-10)+"  "+ALLTRIM(STR(unidades)),LN_NCOL)
*!*	   skip
*!*	ENDDO
 
 
********* OTRA FORMA DE IMPRIMIR
x=1
DO CASE
   CASE donde = 1
      LN_NCOL = tpvconfig.columnas1
      @x,1 SAY TIPO(tpvconfig.pgruesa1)+PADR("NOTA COCINA",LN_NCOL/2)+TIPO(tpvconfig.qgruesa1)+tipo(tpvconfig.inicio1)
 *    x=x+1
 *    @x,1 SAY TIPO(tpvconfig.pgruesa1)+PADR("------------",LN_NCOL/2)+TIPO(tpvconfig.qgruesa1)+tipo(tpvconfig.inicio1)
      avance=tpvconfig.avance1
   CASE donde = 2
      LN_NCOL = tpvconfig.columnas2
      @x,1 SAY TIPO(tpvconfig.pgruesa2)+PADR("NOTA BARRA",LN_NCOL/2)+TIPO(tpvconfig.qgruesa2)+tipo(tpvconfig.inicio2)
 *    x=x+1
 *    @x,1 SAY TIPO(tpvconfig.pgruesa2)+PADR("----------",LN_NCOL/2)+TIPO(tpvconfig.qgruesa2)+tipo(tpvconfig.inicio2)
      avance=tpvconfig.avance2
   CASE donde = 3
      LN_NCOL = tpvconfig.columnas3
      @x,1 SAY TIPO(tpvconfig.pgruesa3)+PADR("NOTA TPV",LN_NCOL/2)+TIPO(tpvconfig.qgruesa3)+tipo(tpvconfig.inicio3)
*     x=x+1
*     @x,1 SAY TIPO(tpvconfig.pgruesa3)+PADR("---------",LN_NCOL/2)+TIPO(tpvconfig.qgruesa3)+tipo(tpvconfig.inicio3)
      avance=tpvconfig.avance3
ENDCASE
 
x=x+1
 
@x,0 say PADL(DATETIME(),LN_NCOL)
x=x+1
@x,0 say PADR("SALON: "+curtpv.salon+" MESA: "+curtpv.mesa,LN_NCOL)
x=x+1
@x,0 say PADR("CAMARERO: "+curtpv.camarero,LN_NCOL)
x=x+2
@x,0 say PADR("COMANDA                    UND.",LN_NCOL)
x=x+1
@x,0 say PADR(REPLICATE("-",LN_NCOL),LN_NCOL)
x=x+1
DO WHILE !EOF()
   @x,0 say LEFT(descripcion,LN_NCOL-6)+"  "+ALLTRIM(STR(unidades))
   x=x+1
   skip
ENDDO
@x,1 SAY SPACE(1)
 
 
FOR y=1 TO  avance
    ??? CHR(13)+CHR(10)
ENDFOR
 
 
EJECT
??? CHR(12)
&& código de corte de papel
??? TIPO(tpvconfig.cortepapel1)
 
 
SET DEVICE TO SCREEN
SET PRINTER TO
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

impresión en tickets

Publicado por xve (74 intervenciones) el 14/06/2016 08:27:41
Gracias por compartirlo Antonio!!!
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

impresión en tickets

Publicado por Jose Luis Quiroz (1 intervención) el 21/07/2016 23:03:39
Estas trabajando con una Impresora Termal. Te recomiendo utilizar el comando Report Form. Es mas fácil para resolver ese tipo de

Impresión que quieres hacer. Asi como lo envias, es como Texto, y la impresora no va a controlar saltos ni corte de papel.
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

impresión en tickets

Publicado por ANTONIO (16 intervenciones) el 21/07/2016 23:14:58
Buenas, gracias por seguir con el tema.

De momento he estado probando las impresiones por código y puedo controlar el fin del papel, el corte y el cajón, cosa que con el report form de momento no, supongo que será por que de momento no manejarlo bien.

Tengo una seríe de programas comerciales que parece ser que lo imprimen con un report form, miraré como está realizado el informe e intentaré ir probando pues es mas fácil en diseño que en código, además que a la hora de meter gráficos tambien supongo que lo hará mas fácil.

Gracias nuevamente.
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

impresión en tickets

Publicado por mario guillermo (21 intervenciones) el 22/07/2016 15:12:52
HOLA BUEN DIA, CREO QUE DEBERIAS PROBAR DE ENCABEZAR EL LISTADO CON EL CODIGO DE INICIALIZA LA HOJA, SINO AL SER CONTINUO, ES COMO QUE TIENE MUCHAS LINEAS PARA IMPRIMIR
PROBA D PONER ANTES COMENZAR LA IMPRESION @ 0,0 SAY " ", AL FINALIZAR DEBES PONER EJECT, POR SUPUESTO
Y VER EL FORMATEO DE LA IMPRESORA.ESPERO QUE TE SIRVA. SALUDOS
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