TICKETERA EPSON TM-T20III

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 238
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

TICKETERA EPSON TM-T20III

Post by edufloriv »

Saludos amigos,

Tengo un problema con la ticketera térmica de un cliente aquí la configuración del papel:
tiketera_config.png
tiketera_config.png (99.3 KiB) Viewed 302 times
Sin embargo, cuando se envian tickets largos, la ticketera corta el ticket como si el papel tuviera una longitud de A4:
ticket_caja.png
ticket_caja.png (64.86 KiB) Viewed 302 times
A continuación el código que realiza la impresión del ticket (que es un cierre de caja que se realiza al finalizar el turno):

Code: Select all

*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------

PROC CajaPrintCierre( cQueStamp )

LOCAL cDocCier := 'CIERRE '+cQueStamp
LOCAL cCajaNum := ''
LOCAL cFecInic := ''
LOCAL cHraInic := ''
LOCAL cFecFina := ''
LOCAL cHraFina := ''
LOCAL cUserNom := ''
LOCAL nTtlEfec := 0
LOCAL nTtlVisa := 0
LOCAL nTtlMast := 0
LOCAL nTtlAmer := 0
LOCAL nTtlCred := 0
LOCAL nRow     := 38
LOCAL FRM_LEN  := 0
LOCAL FRM_LIN  := 4
LOCAL aVisas   := {}
LOCAL aMasts   := {}
LOCAL aAmers   := {}
LOCAL qRead , oRead , nRead , rRead

   qRead := ;
   "SELECT * "+;
   "FROM caja_cierres "+;
   "INNER JOIN usuarios ON caja_user_id = usuario_id "+;
   "WHERE caja_stamp_id = '"+cQueStamp+"' "
   oRead := oServer:Query( qRead )
   IF ! oRead:NetErr()												
      IF oRead:LastRec() > 0
         rRead := oRead:GetRow(1)
         cCajaNum := LEFT( rRead:fieldGet("caja_stamp_id") , 3 )
         cFecInic := SELLO2DATE( rRead:fieldGet("caja_stamp_ini") )
         cHraInic := SELLO2TIME( rRead:fieldGet("caja_stamp_ini") )
         cFecFina := SELLO2DATE( rRead:fieldGet("caja_stamp_fin") )
         cHraFina := SELLO2TIME( rRead:fieldGet("caja_stamp_fin") )
         cUserNom := rRead:fieldGet("usuario_nombre")
         nTtlEfec := rRead:fieldGet("caja_total_efec")
         nTtlVisa := rRead:fieldGet("caja_total_visa")
         nTtlMast := rRead:fieldGet("caja_total_mast")
         nTtlAmer := rRead:fieldGet("caja_total_amer")
         nTtlCred := rRead:fieldGet("caja_total_cred")
      ENDIF
   ELSE
      SQLErrorHost( oRead:Error() )
   ENDIF
   oRead:Destroy()

// SE EXTRAE LAS VENTAS VISA
   qRead := ;
   "SELECT vc_doc_nume,vc_pgo_visa "+;
   "FROM ventas_cab "+;
   "WHERE vc_caja = '"+cQueStamp+"' AND vc_pgo_visa > 0 AND vc_estado = 1 "
   oRead := oServer:Query( qRead )
   IF ! oRead:NetErr()
      FOR nPgo = 1 TO oRead:LastRec()
         rRead := oRead:GetRow(nPgo)
         AADD( aVisas , { rRead:fieldGet("vc_doc_nume") , rRead:fieldGet("vc_pgo_visa") } )
      NEXT
   ELSE
      SQLErrorHost( oRead:Error() )
   ENDIF
   oRead:Destroy()

// SE EXTRAE LAS VENTAS AMERICAN
   qRead := ;
   "SELECT vc_doc_nume,vc_pgo_amer "+;
   "FROM ventas_cab "+;
   "WHERE vc_caja = '"+cQueStamp+"' AND vc_pgo_amer > 0 AND vc_estado = 1 "
   oRead := oServer:Query( qRead )
   IF ! oRead:NetErr()
      FOR nPgo = 1 TO oRead:LastRec()
         rRead := oRead:GetRow(nPgo)
         AADD( aAmers , { rRead:fieldGet("vc_doc_nume") , rRead:fieldGet("vc_pgo_amer") } )
      NEXT
   ELSE
      SQLErrorHost( oRead:Error() )
   ENDIF
   oRead:Destroy()

// SE EXTRAE LAS VENTAS MASTER
   qRead := ;
   "SELECT vc_doc_nume,vc_pgo_mast "+;
   "FROM ventas_cab "+;
   "WHERE vc_caja = '"+cQueStamp+"' AND vc_pgo_mast > 0 AND vc_estado = 1 "
   oRead := oServer:Query( qRead )
   IF ! oRead:NetErr()
      FOR nPgo = 1 TO oRead:LastRec()
         rRead := oRead:GetRow(nPgo)
         AADD( aMasts , { rRead:fieldGet("vc_doc_nume") , rRead:fieldGet("vc_pgo_mast") } )
      NEXT
   ELSE
      SQLErrorHost( oRead:Error() )
   ENDIF
   oRead:Destroy()

// AQUI CALCULO LA ALTURA DEL TICKET
   FRM_LEN := 80 + ((LEN(aVisas)+5)*FRM_LIN) + ((LEN(aAmers)+5)*FRM_LIN) + ((LEN(aMasts)+5)*FRM_LIN)

   IF FILE(SYS_INFOF+"caja_preview.txt")
      SELECT PRINTER DEFAULT       ;
      PAPERSIZE PRINTER_PAPER_USER ;
      PAPERLENGTH         FRM_LEN  ;
      PAPERWIDTH           75      ;
      QUALITY PRINTER_RES_HIGH     ;
      PREVIEW
   ELSE
      SELECT PRINTER DEFAULT       ;
      PAPERSIZE PRINTER_PAPER_USER ;
      PAPERLENGTH         FRM_LEN  ;
      PAPERWIDTH           75      ;
      QUALITY PRINTER_RES_HIGH
   ENDIF
      
   START PRINTDOC NAME cDocCier

      START PRINTPAGE

         @ 10 , 40 PRINT SIS_EMPRE                        FONT 'Arial' SIZE 7 BOLD CENTER
         @ 14 , 40 PRINT 'CIERRE DE CAJA'                 FONT 'Arial' SIZE 7 BOLD CENTER

         @ 22 , 10 PRINT 'FECHA/HORA INICIO : '           FONT 'Arial' SIZE 7
         @ 22 , 40 PRINT cFecInic                         FONT 'Arial' SIZE 7
         @ 22 , 60 PRINT cHraInic                         FONT 'Arial' SIZE 7

         @ 26 , 10 PRINT 'FECHA/HORA FINAL  : '           FONT 'Arial' SIZE 7
         @ 26 , 40 PRINT cFecFina                         FONT 'Arial' SIZE 7
         @ 26 , 60 PRINT cHraFina                         FONT 'Arial' SIZE 7

         @ 30 , 10 PRINT 'CAJERO : '                      FONT 'Arial' SIZE 7
         @ 30 , 40 PRINT cUserNom                         FONT 'Arial' SIZE 7

         @ 34 , 10 PRINT 'CAJA   : '                      FONT 'Arial' SIZE 7
         @ 34 , 40 PRINT cCajaNum                         FONT 'Arial' SIZE 7

         nRow := 38

         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow , 40 PRINT 'COBROS VISA'                    FONT 'Arial' SIZE 7 CENTER
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         FOR nVisa = 1 TO LEN(aVisas)
            nRow := nRow + FRM_LIN
            @ nRow ,  5 PRINT aVisas[nVisa,1]               FONT 'Arial' SIZE 7
            @ nRow , 70 PRINT aVisas[nVisa,2]               FONT 'Arial' SIZE 7 RIGHT
         NEXT
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT 'TOTAL VISA:'                    FONT 'Arial' SIZE 7
         @ nRow , 70 PRINT nTtlVisa                         FONT 'Arial' SIZE 7 RIGHT

         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow , 40 PRINT 'COBROS YAPE'                    FONT 'Arial' SIZE 7 CENTER
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         FOR nMast = 1 TO LEN(aMasts)
            nRow := nRow + FRM_LIN
            @ nRow ,  5 PRINT aMasts[nMast,1]               FONT 'Arial' SIZE 7
            @ nRow , 70 PRINT aMasts[nMast,2]               FONT 'Arial' SIZE 7 RIGHT
         NEXT
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT 'TOTAL YAPE:'                    FONT 'Arial' SIZE 7
         @ nRow , 70 PRINT nTtlMast                         FONT 'Arial' SIZE 7 RIGHT

         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow , 40 PRINT 'COBROS ESTILOS'                 FONT 'Arial' SIZE 7 CENTER
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         FOR nAmer = 1 TO LEN(aAmers)
            nRow := nRow + FRM_LIN
            @ nRow ,  5 PRINT aAmers[nAmer,1]               FONT 'Arial' SIZE 7
            @ nRow , 70 PRINT aAmers[nAmer,2]               FONT 'Arial' SIZE 7 RIGHT
         NEXT
         @ nRow ,  5 PRINT REPL('_',50)                     FONT 'Arial' SIZE 7
         nRow := nRow + FRM_LIN
         @ nRow ,  5 PRINT 'TOTAL ESTILOS:'                 FONT 'Arial' SIZE 7
         @ nRow , 70 PRINT nTtlAmer                         FONT 'Arial' SIZE 7 RIGHT

      END PRINTPAGE

   END PRINTDOC

// aquí puse un .txt de control
   cLen := "Long.:"+INTSTR(FRM_LEN) + chr(13) + "nRow:"+INTSTR(nRow)
   hb_memowrit("ticket_length.txt",cLen)

RETURN
Al final del código puse un .txt de control para comparar la longitud calculada del ticket con la ultima línea de impresión y los valores están bien el .txt me indica:
Long.:392 nRow:326 por lo que la longitud del ticket debería ser de sobra más alto que la última línea impresa, es como si no hiciera caso al valor que le indico en PAPERLENGTH y siempre imprimiera sobre A4 :(

Agradeceré cualquier ayuda amigos. Que tengan excelente día.

Eduardo Flores Rivas


LIMA - PERU
martingz
Posts: 395
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: TICKETERA EPSON TM-T20III

Post by martingz »

Eduardo yo uso lo siguiente y no tengo ese problema

SELECT PRINTER DEFAULT TO lSuccess ;
ORIENTATION PRINTER_ORIENT_PORTRAIT;
PAPERSIZE PRINTER_PAPER_LETTER;
QUALITY PRINTER_RES_MEDIUM

saludos
franco
Posts: 821
Joined: Sat Nov 02, 2013 5:42 am
DBs Used: DBF
Location: Canada

Re: TICKETERA EPSON TM-T20III

Post by franco »

Eduardo, I use the same as Martingz except no PAPERSIZE
Works good for me.
All The Best,
Franco
Canada
Post Reply