Entrar
¿Nuevo usuario? Inscribirme
guvoaII · GUVOA Visual Object Español
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés hacer búsquedas de antiguos mensajes del grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Clase para Impresoras Fiscales.   Lista de mensajes  
Responder | Reenviar Mensaje #945 de 2837 |
RE: [guvoaII] Clase para Impresoras Fiscales.

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



Mar, 11 de Jul, 2006 12:04 am

martin_labat...
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #945 de 2837 |
Desplegar mensajes Autor Ordenar por fecha

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...
Gerardo J. Biagiotti
gjbiagiotti
Sin conexión Enviar correo
10 de Jul, 2006
10:33 pm

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 := ...
Martin La Battaglia
martin_labat...
Sin conexión Enviar correo
11 de Jul, 2006
12:14 am

Gerardo, Me quede maquinando con esto de Epson y que yo no tengo nada.... pero no se podra hacer lo mismo que yo hice con Hasar ? Es decir a traves del...
Pablo J. Pereyra
pjpereyra
Sin conexión Enviar correo
11 de Jul, 2006
12:19 am

Pablo, ya tengo la clase que genera el Automation Server, pero no genera ninguna constante para tener una referencia. Gerardo J. Biagiotti Analista de Sistemas...
Gerardo J. Biagiotti
gjbiagiotti
Sin conexión Enviar correo
11 de Jul, 2006
3:08 am

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 := ...
Martin La Battaglia
martin_labat...
Sin conexión Enviar correo
11 de Jul, 2006
12:26 am

Hola Martín. Por supuesto que me sirve. Podrías enviarme las rutinas siguientes: FT_Dec2Bin16() FT_Hex2Dec() Gerardo J. Biagiotti Analista de Sistemas (2580)...
Gerardo J. Biagiotti
gjbiagiotti
Sin conexión Enviar correo
11 de Jul, 2006
4:23 pm

Si, discúlpame no me di cuenta: Estas son las funciones: FUNCTION FT_Hex2Dec( cHexNum ) LOCAL HEXTABLE := "0123456789ABCDEF" AS STRING LOCAL n, nDec := 0,...
Martin La Battaglia
martin_labat...
Sin conexión Enviar correo
11 de Jul, 2006
9:00 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda