EPSON TM-T20II
Posted: Thu Jan 04, 2018 9:47 pm
Saludos amigos,
Antes que nada espero hayan tenido un fin de año espectacular.
A la empresa en la que trabajo se le dió por reducir costos y adquirimos un impresora EPSON TM-T20II para instalarla en almacén e imprimir en ella las hojas de picking (antes usabamos una impresora laser). Modifique el módulo que diseñé para tal fin para ajustar la impresión de datos para el picking al angosto rollo que usa esta impresora, las pruebas preliminares aparentemente estaban ok.
Cuando se pasó a producción la impresora nos dimos con la sorpresa que, cada cierta cantidad de documentos (aproximadamente unos 70) esta ya no imprimia los documentos subsiguientes, simplemente se los comia, y se producia un error (una ventana que simplemente decia error, no se veia mas). En algunas ocasiones el módulo se colgaba.
Hice varios cambios y no logré solucionarlo, lo único que me ha funcionado ha sido esto :
Como verán en el código uso un contador (nConta) para que cada 25 documentos la aplicación se cierre, el usuario tiene que volver a hacer doble click en la aplicación de su escritorio para abrir nuevamenta la aplicación y retome la impresión de documentos desde donde se quedó, es la única manera que encontré para que no se "coma" ningún documento.
Agradeceré cualquier ayuda al respecto.
Saludos y mil gracias por su tiempo.
Antes que nada espero hayan tenido un fin de año espectacular.
A la empresa en la que trabajo se le dió por reducir costos y adquirimos un impresora EPSON TM-T20II para instalarla en almacén e imprimir en ella las hojas de picking (antes usabamos una impresora laser). Modifique el módulo que diseñé para tal fin para ajustar la impresión de datos para el picking al angosto rollo que usa esta impresora, las pruebas preliminares aparentemente estaban ok.
Cuando se pasó a producción la impresora nos dimos con la sorpresa que, cada cierta cantidad de documentos (aproximadamente unos 70) esta ya no imprimia los documentos subsiguientes, simplemente se los comia, y se producia un error (una ventana que simplemente decia error, no se veia mas). En algunas ocasiones el módulo se colgaba.
Hice varios cambios y no logré solucionarlo, lo único que me ha funcionado ha sido esto :
Code: Select all
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* ------------------------------------------------------ *
* SISTEMA : DIURNO *
* PRG : TIMER.PRG *
* CREADO : 13-09-2010 *
* ACTUALIZADO : *
* AUTOR : EDUARDO V. FLORES RIVAS *
* COMENTARIOS : TIMER PARA IMPRESION DE FACTURAS *
* ------------------------------------------------------ *
#include <minigui.ch>
#include <sql.ch>
#define adUseNone 1
#define adUseServer 2
#define adUseClient 3
#define adOpenForwardOnly 0
#define adOpenKeySet 1
#define adOpenDynamic 2
#define adOpenStatic 3
#define adLockReadOnly 1
#define adLockPessimistic 2
#define adLockOptimistic 3
#define adLockBatchOptimistic 4
#define adCmdText 1
#define adCmdTable 2
#define adCmdStoredProc 4
#define adCmdUnknown 8
#define adCmdFile 256
#define adCmdTableDirect 512
#define adIndex 0x100000
FUNCTION MAIN
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
SET BELL Off
SET BROWSESYNC On
SET CONSOLE Off
SET CURSOR Off
SET DATE TO BRIT
SET DELETED On
SET DELIMITERS Off
SET ECHO Off
SET EPOCH TO 1990
SET MULTIPLE Off
SET SCOREBOARD Off
SET TALK Off
SET WRAP On
PUBLIC BOLDON := CHR(27)+'G'
PUBLIC BOLDOFF := CHR(27)+'H'
PUBLIC LITTLEON := CHR(15)
PUBLIC LITTLEOFF := CHR(18)
PUBLIC PFF := CHR(12)
PUBLIC PLF := CHR(10)
PUBLIC PCR := CHR(13)
PUBLIC Mi_Amarillo := {255,255,192}
PUBLIC Mi_Verde_Nilo := {160,192,192}
PUBLIC Mi_Verde_Claro := {192,255,192}
PUBLIC Mi_Celeste_Suave := {160,192,255}
PUBLIC Mi_Celeste_Claro := {192,255,255}
PUBLIC Mi_Naranja := {255,160,096}
PUBLIC Mi_Rosa_Oscuro := {128,032,096}
PUBLIC Mi_Azul_Grisaceo := {128,160,192}
PUBLIC Mi_Azul_Oscuro := {032,032,128}
PUBLIC Color_Label1_Font := BLACK
PUBLIC Color_Label1_Back := Mi_Naranja
PUBLIC Color_Dato1_Font := YELLOW
PUBLIC Color_Dato1_Back := Mi_Rosa_Oscuro
PUBLIC Color_Label2_Font := BLACK
PUBLIC Color_Label2_Back := Mi_Verde_Nilo
PUBLIC Color_Dato2_Font := BLACK
PUBLIC Color_Dato2_Back := Mi_Verde_Claro
PUBLIC Color_Label3_Font := WHITE
PUBLIC Color_Label3_Back := Mi_Azul_Oscuro
PUBLIC Color_Dato3_Font := WHITE
PUBLIC Color_Dato3_Back := Mi_Azul_Grisaceo
PUBLIC Color_Label4_Font := BLACK
PUBLIC Color_Label4_Back := Mi_Celeste_Claro
PUBLIC Color_Dato4_Font := BLACK
PUBLIC Color_Dato4_Back := Mi_Celeste_Suave
PUBLIC HOY := DATE()
PUBLIC SIS_EMPRE := 'INVERSIONES FARMACOM'
PUBLIC SYS_PORT := "LPT1"
PUBLIC SYS_EDIT := ".F."
PUBLIC SYS_IMPO := "00000000000000"
PUBLIC SYS_PRINTER := GetDefaultPrinter()
PUBLIC aDiasSem := {'Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sábado'}
PUBLIC SYS_MES := {'ENE','FEB','MAR','ABR','MAY','JUN','JUL','AGO','SET','OCT','NOV','DIC'}
PUBLIC aRegDia := {}
PUBLIC aListaRutas := { 'NORTE' , 'SUR' , 'CENTRO' , 'OESTE' , 'PROVINCIA' }
PUBLIC cFechaMem := DTOC(DATE())
PUBLIC SIS_IMPORTI := 'C:\Farmacom\Pickers\'
PUBLIC SIS_TIMER := .F.
PUBLIC cStampHoy := DTOS(DATE())
PUBLIC lLocker := .F.
PUBLIC aCajas := {}
PUBLIC aProfs := {}
PUBLIC cTTF1 := 'Imagen\Code39.ttf'
PUBLIC cFont1 := 'Bar-Code 39'
PUBLIC cTTF2 := 'Imagen\Bcode128.ttf'
PUBLIC cFont2 := 'BarCode 128 INTERAL'
PUBLIC oConexion
PUBLIC aRecordSetX
PUBLIC CFG_PUBLIC
PUBLIC nConta := 0
nTTF1 := WAPI_ADDFONTRESOURCEEX( cTTF1 )
nTTF2 := WAPI_ADDFONTRESOURCEEX( cTTF2 )
DEFINE WINDOW Win_Taker;
AT 0 , 0 ;
WIDTH 930 HEIGHT 550 ;
TITLE 'PICKING' ;
ON INIT TakerIniciar() ;
ON RELEASE TakerTerminar() ;
MAIN
ON KEY CONTROL+F1 OF Win_Taker ACTION VerTracker()
ON KEY CONTROL+I OF Win_Taker ACTION ElegirImpresora()
ON KEY CONTROL+R OF Win_Taker ACTION ReImprimirPicker()
ON KEY CONTROL+D OF Win_Taker ACTION ReImprimirPickerNumero()
ON KEY CONTROL+A OF Win_Taker ACTION AgregarFacturasNuevas()
ON KEY CONTROL+N OF Win_Taker ACTION BuscarImpresionesNuevas()
ON KEY CONTROL+V OF Win_Taker ACTION SetCheckAll()
DEFINE TIMER Timer_1 ;
INTERVAL 20000 ;
ACTION BuscarFacturasNuevas()
DEFINE TOOLBAR FacturaBar BUTTONSIZE 70,30 FLAT BORDER
BUTTON BotPausa ;
CAPTION '&Pausa' ;
PICTURE 'imagen\pausa.bmp' ;
ACTION TakerPausar()
BUTTON BotRetomar ;
CAPTION '&Retomar' ;
PICTURE 'imagen\imprimir.bmp' ;
ACTION TakerRetomar()
BUTTON BotReanudar ;
CAPTION '&Reanudar' ;
PICTURE 'imagen\siguiente.bmp' ;
ACTION TakerReanudar()
BUTTON BotSalir ;
CAPTION '&Salir' ;
PICTURE 'imagen\salir.bmp' ;
ACTION Win_Taker.Release
END TOOLBAR
//
//
//
@ 060 , 010 BROWSE BrwFacturas ;
WIDTH 550 ;
HEIGHT 400 ;
HEADERS { 'Estado' , 'Num.' , 'Interno' , 'Documento' , 'Clie.' , 'Pick' , 'Pack' } ;
WIDTHS { 070 , 50 , 100 , 120 , 060 , 50 , 50 } ;
FIELDS { 'FLAG' , 'STR(ORDKEYNO(),4)' , 'VENTA' , 'DOCUM' , 'CLIE' , 'PICK' , 'PACK' } ;
JUSTIFY { BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_CENTER , BROWSE_JTFY_CENTER , BROWSE_JTFY_CENTER , BROWSE_JTFY_CENTER } ;
WORKAREA FLUJ ;
IMAGE { 'Imagen\equis.bmp' , 'Imagen\check.bmp' , 'Imagen\mas.bmp'} ;
ON DBLCLICK TakerMarcar()
//
//
//
@ 060 , 570 GRID GrdAnuladas ;
WIDTH 350 ;
HEIGHT 400 ;
HEADERS { 'Número' , 'Documento' , 'Estado' } ;
WIDTHS { 100 , 120 , 070 } ;
JUSTIFY { BROWSE_JTFY_LEFT , BROWSE_JTFY_LEFT , BROWSE_JTFY_CENTER } ;
FONTCOLOR RED ;
BACKCOLOR Mi_Amarillo
//
//
//
DEFINE STATUSBAR
STATUSITEM "..." ACTION MsgInfo('Facturador')
CLOCK
DATE
END STATUSBAR
END WINDOW
ACTIVATE WINDOW Win_Taker
nTtf1 := WAPI_REMOVEFONTRESOURCEEX( cTTF1 )
nTtf2 := WAPI_REMOVEFONTRESOURCEEX( cTTF2 )
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC BuscarFacturasNuevas
IF lLocker = .T.
RETURN
ENDIF
lLocker = .T.
Win_Taker.Timer_1.Enabled := .F.
Win_Taker.FacturaBar.BotPausa.Enabled := .F.
Win_Taker.FacturaBar.BotRetomar.Enabled := .F.
Win_Taker.FacturaBar.BotReanudar.Enabled := .F.
AgregarFacturasNuevas() // Cargadores.prg
BuscarFacturasAnuladas() // Cargadores.prg
SELE FLUJ
LOCATE FOR FLUJ->FLAG = 0
Win_Taker.BrwFacturas.Value := FLUJ->(ORDKEYNO())
Win_Taker.BrwFacturas.Refresh
DO EVENTS
BuscarImpresionesNuevas()
lLocker = .F.
Win_Taker.Timer_1.Enabled := .T.
Win_Taker.FacturaBar.BotPausa.Enabled := .T.
Win_Taker.FacturaBar.BotRetomar.Enabled := .F.
Win_Taker.FacturaBar.BotReanudar.Enabled := .F.
RETURN
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC BuscarImpresionesNuevas
LOCAL aClies := {}
LOCAL aFacts := {}
LOCAL nClie
LOCAL cClie
MENSABAR('Preparando impresiones nuevas...')
SELE FLUJ
DBGOTOP()
DO WHILE .NOT. FLUJ->(EOF())
IF FLUJ->FLAG = 0
IF FacturaEstaCerrada( FLUJ->VENTA )
nConta++
IF nConta > 25
Win_Taker.Release // <-- AQUI CIERRO LA APLICACION DESPUES DE IMPRIMIR 25 DOCUMENTOS.
ENDIF
ImprimirFactura( FLUJ->VENTA , FLUJ->(ORDKEYNO()) )
FLUJ->FLAG := 1
SKIP
ENDIF
ELSE
SKIP
ENDIF
ENDDO
MENSABAR()
RETURN
Agradeceré cualquier ayuda al respecto.
Saludos y mil gracias por su tiempo.