A ver si te sirve de algo es una clase que
se instancia con el valor del access FiscalStatus de la OCX de Epson
SELF:oEstadoFiscal := EstadoFiscal{FT_Dec2Bin16(FT_Hex2Dec(SELF:oEpson01:FiscalStatus))}
Nosotros tambien
estamos trabajando en una clase que trabaje con todos los controladores, pero
la tenemos en stand by, el estado de la impresora te lo debo, pero aquí hay
algo del estado fiscal.
Adjunto modulo con la clase
Espero te sirva
Saludos
TEXTBLOCK _Estados Fiscales
/*
El Controlador Fiscal, como respuesta de
cada comando recibido, envía un completo set de
indicadores
de estado al Host
, tanto para el estado del Impresor como del Controlador Fiscal .Cuando se lo
convierte de hexadecimal
a una palabra binaria tiene indicadores de campo de bits con el siguiente
significado (el bit
0 es el de menor importancia):
Bit Estado Descripción
0 1 Error
de comprobación de Memoria Fiscal. Junto con el Bit 7
indica que la memoria Fiscal está llena.
1
1 Error de comprobación de Memoria
de Trabajo.
2
1 Poca batería.
3
1 Comando no reconocido.
4
1 Campo de datos Inválido.
5
1 Comando no válido para estado
fiscal.
6
1 Desbordamiento de Totales. Si el
Bit 11 esta en 1, indica que se necesita realizar
transporte de factura
7
1 Memoria Fiscal llena
8
1 Memoria Fiscal casi llena
9
1 Si el Bit
10 está en 1 , indica Impresor Fiscal Certificado .Si el Bit
10 está en 0, indica que el Controlador Fiscal esta Desfiscalizado.
10
1 Si el Bit
9 esta en 1, indica que el Impresor Fiscal está Fiscalizado .Si el Bit 9 está en 0, indica que la impresora esta Bloqueada por
Software.
11
1 Necesita que se haga un cierre
de la Jornada Fiscal.Se han enviado el número máximo
de Ítems en un Documento Fiscal y senecesita el
cierre del Tickets.Si el Bit
6 esta en 1, indica que se necesita realizar transporte de factura.
12
1 Documento Fiscal abierto.
13
1 Documento Fiscal abierto o
documento no Fiscal abierto que se emite por el rollo de papel.
14
1 Sin Uso
15
1 OR lógico de los bits 0-8
Bit 0: 1 = Error de comprobación de Memoria Fiscal. En el encendido,
fracasó la verificación de suma dela Memoria Fiscal.
No funcionará el Impresor Fiscal.
Bit 1: 1 = Error de Comprobación de Memoria de Trabajo. En el
encendido fracasó la verificación de
suma de la Memoria de Trabajo. No
funcionará el Impresor Fiscal.
Bit 2: 1 = La batería que alimenta la Memoria de Trabajo y el Reloj de
Tiempo Real está baja. Se debe llamar al Técnico Fiscal antes de los 30 días.
Bit 3: 1 = El comando recibido de la boca del Host
no es reconocido.
Bit 4: 1 = Datos de campo no válidos. Un campo de datos del comando
recibido del Host tenía datos no válidos (ej. datos no numéricos en un campo numérico).
Bit 5: 1 = Comando no válido para el estado fiscal. Se recibió un
comando del Host que no es válido
para el estado actual del Impresor Fiscal
(es decir, se abrió comprobante fiscal mientras hay abierto uncomprobante
no fiscal). NOTA: Cuando se produce un cambio de código impositivo no válido,
los bits 4 y 5 estarán activos (on).
Bit 6: 1 = Se producirá un desbordamiento de total de transacción,
diario o fiscal. Se emitió un
comando que generará un desbordamiento de
total. No se ejecutó el comando. El Host debe
monitorear este bit
y declarar un error en caso de que se produzca. Además si se encuentra el Bit 11 en 1 indica que el item a
facturar no entra en la factura y se necesita realizar un transporte.
Bit 7: 1 = Memoria Fiscal llena. No se puede abrir un comprobante
fiscal cuando la Memoria Fiscal está llena.
Bit 8: 1 = Memoria Fiscal casi llena. La Memoria Fiscal está dentro de
los 40 cierres para llenarse. El Host deberá emitir
el mensaje de aviso apropiado.
Bit 9: 1 = Impresor Fiscal certificado. Se activa este bit si se ha certificado el Impresor Fiscal.
Bit 10: 1 = Impresor Fiscal fiscalizado. Se activa este bit si se ha fiscalizado el Impresor Fiscal.
Bit 11: 1 = Necesita hacerse un cierre de la Jornada Fiscal ya que han
pasado 24 horas sin realizar un cierre ‘Z’ o se ha enviado el
número máximo de Ítems que acepta un Documento Fiscal, por lo que debe
realizarse el pago de la mercadería registrada y continuar la facturación en un
Tickets nuevo. Este indicador de estado es actualizado en el momento de iniciar
un documento fiscal o en el momento que se consulta el estado y no hay un
documento fiscal abierto. Si el bit 6 se encuentra en
1 indica que el item a facturar no entra en la
factura y se necesita realizar un transporte.
Bit 12: 1 = Documento fiscal abierto. Se activa este bit cada vez que hay un documento Fiscal abierto.Por ejemplo Ticketss o
Facturas o Tickets-Factura.
Bit 13:1 = Documento Fiscal abierto o documento no Fiscal abierto que
se emite por el rollo de papel. Si el Bit 12 esta en
0 se tiene un documento No Fiscal abierto y si el Bit
12 esta en 1 se tiene un Documento Fiscal abierto.
Bit 14: 1 = Sin Uso.
Bit 15: 1 = OR lógico de los bits 0 a 8. Se activa este bit cada vez que hay abierto un bit
de 0 a 8. Sirve para un control rápido de las condiciones de error. Si ocurre
un error en la impresora (Bit 15 en 1 del estado de
Impresora), este Bit 15 (del estado fiscal) permite
determinar si el error de impresora fue antes o después de la ejecución del
último comando recibido. Por ejemplo si la Impresora Fiscal informa que la
impresora esta sin papel (bit 14 del estado de la
impresora en 1), pero este Bit15 del estado fiscal esta en 0, significa que la
impresora se quedo sin papel luego de ejecutar el comando y por lo tanto no es
necesario reenviar el último comando, pero si este bit
15 del estado fiscal está en 1, significa
que el comando no pudo ser ejecutado por falta de papel y debe ser reenviado el
último comando.
*/
CLASS EstadoFiscal
INSTANCE
aEstado AS ARRAY
INSTANCE
aErrorFatal AS ARRAY
// Errores fatales no funciona el controlador
INSTANCE
aErrorCompr AS ARRAY
// Errores en el Compro, se anula y sigue funcionando el controlador
INSTANCE aAvisos AS ARRAY // Avisos del Controlador, pero sigue
funcionando normalmente
METHOD Init(cCodigo) CLASS EstadoFiscal
//
cCodigo string con un
número Binario de 16 Bits.
LOCAL nIndice AS LONG
SELF:aEstado := {}
FOR nIndice := 1 TO 16
IF
Val(SubStr(cCodigo,nIndice,1)) == 1
AAdd(aEstado,TRUE)
ELSE
AAdd(aEstado,FALSE)
ENDIF
NEXT
SELF:aErrorFatal := {}
SELF:aErrorCompr := {}
SELF:aAvisos := {}
//----------------Errores Fatales
DO CASE
CASE SELF:aEstado[1] ==
TRUE
AAdd(aErrorFatal,"Error de comprobación de Memoria
Fiscal.")
CASE
SELF:aEstado[2] == TRUE
AAdd(aErrorFatal,"Error de
comprobación de Memoria de Trabajo.")
CASE
SELF:aEstado[3] == TRUE
AAdd(aErrorFatal,"Poca
batería.")
CASE
SELF:aEstado[8] == TRUE
AAdd(aErrorFatal,"Memoria
Fiscal LLena.")
END
DO
//----------------Errores
al Emitir un Comprobante
DO CASE
CASE SELF:aEstado[4] ==
TRUE
AAdd(aErrorCompr,"Comando no reconocido.")
CASE
SELF:aEstado[5] == TRUE
AAdd(aErrorCompr,"Campo de
datos Inválido.")
CASE
SELF:aEstado[6] == TRUE
AAdd(aErrorCompr,"Comando no
válido Para el estado fiscal.")
CASE
SELF:aEstado[7] == TRUE
AAdd(aErrorCompr,"Desbordamiento
de Totales. Se Necesita realizar transporte de factura")
CASE SELF:aEstado[12] ==
TRUE
IF
SELF:aEstado[13] == TRUE
// hay un comprobante abierto
AAdd(aErrorCompr,"Desbordamiento
de Totales. Se Necesita realizar transporte de factura")
ELSE
AAdd(aErrorCompr,"Necesita
que se haga un cierre de la Jornada Fiscal. ")
ENDIF
END DO
//----------------Avisos al Usuario
DO CASE
CASE SELF:aEstado[9] ==
TRUE
AAdd(aAvisos,"Memoria Fiscal casi llena.")
END DO
RETURN
SELF
ACCESS
DocumentoFiscalAbierto() CLASS EstadoFiscal
RETURN
SELF:aEstado[13]
METHOD
MostrarMensaje(cTipErr) CLASS EstadoFiscal
LOCAL nIndice AS LONG
LOCAL cTitulo AS STRING
LOCAL cDescri AS STRING
LOCAL aErrores AS ARRAY
IF cTipErr == "F"
aErrores := SELF:aErrorFatal
cTitulo :=
"Fiscal - Errores Fatales"
ELSEIF cTipErr
== "C"
aErrores := SELF:aErrorCompr
cTitulo :=
"Fiscal - Errores del Comprobante"
ELSEIF cTipErr == "A"
aErrores := SELF:aAvisos
cTitulo :=
"Fiscal - Avisos al Usuario"
ENDIF
IF ALen(aErrores)
> 0
cDescri := ""
FOR
nIndice := 1 TO ALen(aErrores)
cDescri += "-" + aErrores[nIndice]
NEXT
AvisoTextbox(GoShell,cTitulo,cDescri)
ENDIF
RETURN NIL
METHOD HuboAvisosAlUsuario(lMuestra) CLASS EstadoFiscal
IF
IsNil(lMuestra) .or. lMuestra == TRUE
SELF:MostrarMensaje("A")
ENDIF
RETURN ALen(SELF:aAvisos) > 0
METHOD HuboErrorComprobante(lMuestra) CLASS EstadoFiscal
IF
IsNil(lMuestra) .or. lMuestra == TRUE
SELF:MostrarMensaje("C")
ENDIF
RETURN ALen(SELF:aErrorCompr) > 0
METHOD HuboErrorFatal(lMuestra) CLASS EstadoFiscal
IF IsNil(lMuestra) .or. lMuestra == TRUE
SELF:MostrarMensaje("F")
ENDIF
RETURN
ALen(SELF:aErrorFatal) > 0
Martin
La Battaglia
Cao Sistemas
(02262) 43-2200 Int. 19
Necochea - Buenos Aires
-----Mensaje
original-----
De: guvoaII@...
[mailto:guvoaII@...] En nombre
de Gerardo J. Biagiotti
Enviado el: Lunes, 10 de Julio de
2006 07:26 p.m.
Para: GUVOA II
Asunto: [guvoaII] Clase para
Impresoras Fiscales.
He
comenzado a desarrollar una clase para utilizar todos los modelos de
controladores fiscales.
Si
alguno ya tiene desarrollado algún método de control de errores para EPSON, le agradecería
que me lo envíe.
Me
refiero a los errores del estado de la impresora y el estado fiscal, por
ejemplo:
- Error
de comprobación de memoria fiscal
- Poca
batería
-
Memoria llena
-
desbordamiento de totales
Son los
errores relacionados con el byte 1 y 2 de la respuesta del IF luego de un
comando.
Estoy
usando el OCX de Epson.
Gerardo J. Biagiotti
Analista de Sistemas
(2580) Marcos Juárez
Córdoba - Argentina
Mail: gjbiagiotti@...
MSN: gerardo_biagiotti@...
gjbiagiotti@...
gjbiagiotti@...
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.10/383 - Release Date: 07/07/2006
--
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.394 / Virus Database: 268.9.10/383 - Release Date: 07/07/2006