paxapos / fiscalberry

[JSON ↔ HW] Connect things using JSON API with the fiscalberry websocket server interact easily with any kind of Hardware. Another IoT solution...
https://paxapos.github.io/fiscalberry/
Other
57 stars 40 forks source link

Problema de conexión con Epson TM-T900FA via USB #119

Closed fchiappano closed 2 years ago

fchiappano commented 2 years ago

Buenas tardes,

Estoy intentando conectar fiscal berry con controlador fiscal epson de segunda generación TM-T900FA, pero no logro que fiscal berry se comunique con el CF. Lo extraño, es que en ningun momento se genera excepción alguna por fallo de comunicación o algo por el estilo. Simplemente, a recibir el json con el comando, cierra la comunicación.

El unico comando que probe y responde, es el getStatus, ya que no depende de la conexión con el CF.

Aca les dejo, lo devuelto por fiscal berry:

[root@adempiereqa fiscalberry git:(master)]# python server.py /urs/local/python27/lib/python2.7/site-packages/jwt/utils.py:8: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release. from cryptography.hazmat.primitives.asymmetric.utils import ( 2022-03-22 17:12:46,028 @ FiscalberryApp [INFO]: Preparando Fiscalberry Server 2022-03-22 17:12:46,030 @ FiscalberryApp [INFO]: La IP privada es 192.168.1.13 2022-03-22 17:12:46,030 @ Fb => Discover [INFO]: No hay Discover configurado 2022-03-22 17:12:46,031 @ FiscalberryApp [INFO]: Iniciando Fiscalberry Server 2022-03-22 17:12:46,097 @ FiscalberryApp [INFO]: Websocket Server Started as HTTP at 192.168.1.13 port 12000 2022-03-22 17:12:46,098 @ FiscalberryApp [INFO]: Impresora disponible: 2022-03-22 17:12:46,098 @ FiscalberryApp [INFO]: - IMPRESORA_FISCAL_E2G 2022-03-22 17:12:46,098 @ FiscalberryApp [INFO]: marca: Epson2Gen, driver: Epson2Gen 2022-03-22 17:13:59,780 @ FiscalberryApp [INFO]: Connection Established 2022-03-22 17:13:59,783 @ FiscalberryApp [INFO]: Request -> {"dailyClose":"X"} 2022-03-22 17:13:59,784 @ root [INFO]: Iniciando procesamiento de json:::: {"dailyClose": "X"} 2022-03-22 17:13:59,784 @ FiscalberryApp [INFO]: Connection Closed

======================================================================================= Por aca, les pego mi config.ini:

[SERVIDOR] puerto = 12000 discover_url = ssl_crt_path = ssl_key_path = uuid = 548ca0439df4 ip_privada = 192.168.1.13

[IMPRESORA_FISCAL_E2G] marca = Epson2Gen modelo = tm-t900fa driver = Epson2Gen path = /dev/bus/usb/002/004

En este caso estoy trabajando con SO Centos. Otra cosa queria consultarles, es como tendria que configurar fiscal berry, para poder operar con el CF via Ethernet, si es que no hay solución para la conexión via USB.

Quedo atento a sus comentarios.

Saludos,

spetrungaro commented 2 years ago

Estimado, en el config.ini.sample esta el ejemplo de la impresora que desea configurar:

[IMPRESORA_FISCAL_E2G] marca = Epson2Gen modelo = tm-t900fa driver = Epson2Gen path = serial: /dev/usb/lp0

La parte de "serial: /dev..." en path es lo que te esta faltando. Ese driver en particular utiliza una libreria de Epson. Si lo estas corriendo como servicio, los prints que hace en consola el driver no los vas a ver, pero deberia loggear mas datos de los que estas viendo ahora

fchiappano commented 2 years ago

Buenas tardes espetrungaro,

Gracias por tu pronta respuesta. Probe exactamente esa misma configuración, pero obtuve exactamente el mismo resultado expuesto anteriormente, donde no devuelve errores pero cierra la conexión ni bien recibe el json con los comandos. Creo entonces, que lo que me esta faltando es la libreria de epson.

En la pagina oficial de epson, ofrecen esta libreria a modo de "Driver" : libEpsonFiscalDriver.so y libEpsonFiscalDriver.a.

A estas librerias haces referencia? donde espera fiscal berry que esten estan librerias?

Quedo mas que atento a tu respuesta.

Saludos,

spetrungaro commented 2 years ago

La libreria esta incluída en fiscalberry, la encontras en fiscalberry/epsonlib/lin/

Casualmente probé ese mismo modelo hace poco mas de dos semanas, solo hice un cierre X para asegurarme de que estuviera funcionando. En cuanto recuerde el setup que utilicé te lo puedo pasar

spetrungaro commented 2 years ago

En el json te esta faltando la key "printername"

2022-03-22 17:13:59,784 @ root [INFO]: Iniciando procesamiento de json:::: {"dailyClose": "X"}

Tendria que ser {"dailyClose": "X", "printerName" : "IMPRESORA_FISCAL_E2G"}

Cuando abris localhost:1200, el primer paso es enviar el comando de Listar Impresoras, luego seleccionar la correspondiente del desplegable y recien ahi enviarle comandos a una impresora, sin printername no hay impresora, TraductoresHandler no lo pasa a ninguna funcion y la ejecucion termina ahi

fchiappano commented 2 years ago

Entiendo lo que esta faltando. Lo voy a probar y te comento como me fue.

Saludos!

spetrungaro commented 2 years ago

Me olvide de comentarlo, las librerias que encontras en epsonlib/lin/64/libEpsonFiscalinterface.so o epsonlib/lin/32/libEpsonFiscalinterface.so hay que copiarlas (la de 32 o 64 segun sistema a /lib64/libEpsonFiscalInterface.so o /lib/libEpsonFiscalInterface.so en linux. Despues de esos pasos te deberia funcionar

spetrungaro commented 2 years ago

Ahi encontre el config que usé:

[fiscal] marca = Epson2Gen modelo = tm-t900fa driver = Epson2Gen path = serial: /dev/usb/lp0

Con las librerias copiadas a /lib y /lib64 respectivamente y server.py corriendo con sudo.

Particularmente nunca usé fiscalberry fuera de debian, por lo que no puedo darte precisiones en centOS.

Comprobá que al conectar la impresora por usb se cree el archivo /dev/usb/lp0 (o lp1 etc). Pero es ahi donde se crea

fchiappano commented 2 years ago

Buenas tardes spetrungaro,

Despues de unos dias hemos logrado que nos instalaran un equipo con todo lo necesario para operar (sobre todo con todos los requerimientos para las librerias de epson) y hemos logrador comunicarnos con el Controlador Fiscal de manera exitosa (el cierre fiscal X, imprimio sin problemas).

Ahora tengo un error a la hora de emitir una factura (en este caso tipo A) y no tengo claro cual puede ser el problema. Les dejo a continuación el detalle devuelto por fiscal berry:

2022-03-31 15:57:44,952 @ FiscalberryApp [INFO]: Connection Established 2022-03-31 15:57:45,513 @ FiscalberryApp [INFO]: Request -> {"printerName":"IMPRESORA_FISCAL_E2G","printTicket":{"encabezado":{"tipo_cbte":"FA","tipo_doc":"CUIT","domicilio_cliente":"600 HECTAREAS , IGUAZU, PUERTO IGUAZU 3370, Misiones ","nro_doc":"30710458401","tipo_responsable":"RESPONSABLE_INSCRIPTO","nombre_cliente":"AWVB S.A.- Awasi "},"items":[{"alic_iva":21.00,"qty":1.00,"importe":21.80,"ds":"GALL.MAURI VAINILLAS x80g"}]}} 2022-03-31 15:57:45,514 @ root [INFO]: Iniciando procesamiento de json:::: {"printTicket": {"encabezado": {"tipo_cbte": "FA", "nro_doc": "30710458401", "domicilio_cliente": "600 HECTAREAS , IGUAZU, PUERTO IGUAZU 3370, Misiones ", "tipo_doc": "CUIT", "nombre_cliente": "AWVB S.A.- Awasi ", "tipo_responsable": "RESPONSABLE_INSCRIPTO"}, "items": [{"alic_iva": 21.0, "importe": 21.8, "ds": "GALL.MAURI VAINILLAS x80g", "qty": 1.0}]}, "printerName": "IMPRESORA_FISCAL_E2G"} 2022-03-31 15:57:45,519 @ root [INFO]: mandando comando de impresora 2022-03-31 15:57:45,531 @ root [INFO]: inicializando ConectorDriverComando driver de '$Epson2Gen'


EPSON FISCAL



Machinne Version : 83886123 String Machinne Version : Neptuno Major Machinne Version : 1 Minor Machine Version : 3 Conexion Status : 83886116 Log iniciado Status : 0 2022-03-31 15:57:45,700 @ root [INFO]: Conectada la Epson 2Gen al puerto : serial: /dev/usb/lp0 Machinne Version : 83886123 String Machinne Version : Neptuno Major Machinne Version : 1 Minor Machine Version : 3 Conexion Status : 83886116 Log iniciado Status : 0 2022-03-31 15:57:45,760 @ root [INFO]: Conectada la Epson 2Gen al puerto : serial: /dev/usb/lp0 Last Error : 83886127 2022-03-31 15:57:46,680 @ root [INFO]: Desconectada la Epson 2Gen al puerto: serial: /dev/usb/lp0 Process Process-2: Traceback (most recent call last): File "/usr/lib64/python2.7/multiprocessing/process.py", line 267, in _bootstrap self.run() File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run self._target(*self._args, self._kwargs) File "/opt/fiscalberry/Traductores/TraductoresHandler.py", line 67, in runTraductor queue.put(traductor.run(jsonTicket)) File "/opt/fiscalberry/Traductores/TraductorInterface.py", line 27, in run res = fnAction(jsonTicket[action]) File "/opt/fiscalberry/Traductores/TraductorFiscal.py", line 81, in printTicket self._abrirComprobante(**encabezado) File "/opt/fiscalberry/Traductores/TraductorFiscal.py", line 145, in _abrirComprobante nro_doc, doc_fiscal, pos_fiscal) File "/opt/fiscalberry/Comandos/Epson2GenComandos.py", line 201, in openBillTicket comprobanteType = self.comprobanteTypes[type] KeyError: u'A' 2022-03-31 15:57:46,682 @ FiscalberryApp [INFO]: Response <- {'rta': ''} 2022-03-31 15:57:46,684 @ FiscalberryApp [INFO]: Connection Closed

Por otra parte, les dejo el JSon que estoy enviando:

{ "printerName": "IMPRESORA_FISCAL_E2G", "printTicket": { "encabezado": { "tipo_cbte": "FA", "tipo_doc": "CUIT", "domicilio_cliente": "600 HECTAREAS , IGUAZU, PUERTO IGUAZU 3370, Misiones ", "nro_doc": "30710458401", "tipo_responsable": "RESPONSABLE_INSCRIPTO", "nombre_cliente": "AWVB S.A.- Awasi " }, "items": [{ "alic_iva": 21.00, "qty": 1.00, "importe": 21.80, "ds": "GALL.MAURI VAINILLAS x80g" }] } }

Desde ya, que quedo atento a sus comentarios y estoy agradecido por su ayuda.

Saludos cordiales,

spetrungaro commented 2 years ago

Ahí detecte la razón del bug, en un rato estaré subiendo la corrección!

fchiappano commented 2 years ago

Muchas gracias spetrungaro,

Por nuestra parte, queremos aportar en lo que podamos al proyecto (si es posible). No estamos tan habituados al desarrollo en python, pero algo hemos realizado hasta ahora.

Queria consultarte finalmente, si FiscalBerry contempla algo respecto a impuestos internos, ya que tenemos un cliente que lo esta requiriendo.

Desde ya muchas gracias!!!

Saludos,

spetrungaro commented 2 years ago

Se podría implementar para esa impresora, de hecho en el codigo estan comentados los parametros que habria que agregar en el metodo. Solo que el rubro donde nos desenvolvemos no maneja esos tributos:

https://github.com/paxapos/fiscalberry/blob/ad9000982b2810bbd18a18b92210c7dad3d14c41/Comandos/Epson2GenComandos.py#L156

Podría agregarle esa funcionalidad y para cada item tendrían que agregar en el Json los siguentes parametros según manual, respetando el tipo requerido de cada uno (int y str):

image

spetrungaro commented 2 years ago

Abrí una nueva issue acerca de los Imp Internos para que pueda continuar esa temática ahí