Ver la Versión Completa : [Duda] Enlazar con servicios web y codigos QR
lumalma
12 de julio de 2021, 11:38
Buenos dias a todos
Las Haciendas forales vascas implantan un sistema de envio de las facturas mediante un archivo XML a traves de servicios web RESTful y ademas cada factura en papel o pdf, etc debe llevar un identificador que se debe generar y un codigo QR.
A pesar de haber mirado documentacion al respecto estoy bastante perdido. Todos estos temas no los he tratado nunca y no se por donde empezar ya que el desarrollo que he hecho habitualmente es adaptar las aplicaciones para funcionamiento en modo local o red.
No se como puedo enlazar desde una aplicacion powercobol con una aplicacion que genere codigos QR ni generar una API para enviar el fichero XML. Realmente estoy muy perdido con todos estos temas y, la verdad, un poco desesperado.
Espero haberme explicado bien.
Agradezco por adelantado toda ayuda.
Un saludo
Joseg
12 de julio de 2021, 12:30
Buenos dias a todos
Las Haciendas forales vascas implantan un sistema de envio de las facturas mediante un archivo XML a traves de servicios web RESTful y ademas cada factura en papel o pdf, etc debe llevar un identificador que se debe generar y un codigo QR.
A pesar de haber mirado documentacion al respecto estoy bastante perdido. Todos estos temas no los he tratado nunca y no se por donde empezar ya que el desarrollo que he hecho habitualmente es adaptar las aplicaciones para funcionamiento en modo local o red.
No se como puedo enlazar desde una aplicacion powercobol con una aplicacion que genere codigos QR ni generar una API para enviar el fichero XML. Realmente estoy muy perdido con todos estos temas y, la verdad, un poco desesperado.
Espero haberme explicado bien.
Agradezco por adelantado toda ayuda.
Un saludo
QRCode - eu uzo o zint (opensource), posteriormente anexo a imagem a um report (no meu caso Crystal Report)
Exemplo:
STRING "zint -o " DELIMiTED SIZE
qrfilename DELIMiTED " " ----------------------------------------->> o que fica no qrcode
" --vers=12 --secure=2 --scale=5 -b 58 -d " DELIMiTED SIZE
'"' DELIMiTED BY SIZE
WGSTRING DELIMiTED BY " "
'"' DELIMiTED BY SIZE
INTO REGCOMMAND.
INVOKE POW-SELF "ExecuteSync" USING REGCOMMAND POW-SWHIDE RETURNING ReturnValue.
Para JSON dá para fazer tudo com esta ferramenta:
jq (https://stedolan.github.io/jq/)
Também existem outras alternativas, ver exemplos neste forum.
Gusaiello
12 de julio de 2021, 14:02
Hola @lumalma, por si sirve de algo envié para el concurso un programita que genera un QR.
Esta el fuente con todos los accesorios que necesita (Zint para generar el QR y Magick para cambiarle el formato).
Zint genera la imagen pero con formato .png.
No se si tiene algún parámetro para cambiar ese formato, por use Magick para generar un .jpg.
Espero te sirva.
lumalma
12 de julio de 2021, 16:13
Hola
Muchas gracias Joseg y Gusaiello por vuestra rapida respuesta.
Me pondré con ello y ya comentaré mis progresos.
Un saludo
Fito
12 de julio de 2021, 16:30
Buen día: En Argentina tenemos el servicio de Factura Electrónica que sería más o meno lo mismo.
Para todo el manejo del webservice, acá hay empresas que se dedican a la producción de Activex u Ejecutables en Batch para realizar este tipo de tarea. Tendrías que ver si en España hay productos de ese estilo, para no tener que ponerte a renegar vos con todos esos temas. Porque más allá de tener que realizar la aplicación, después hay que mantenerlas actualizadas por todo los cambios que el Fisco realiza. De esta manera es más sencillo para nosotros.
Y la parte del QR, todo dependerá qué herramienta utilices para hacer los reportes. En mi caso uso Cobview y ya la ultima versión genera QR.
Saludos...
Fito...
lumalma
15 de julio de 2021, 19:27
Muchas gracias Fito
Un saludo
---------- Post añadido : 19:27 ---------- Post anterior : 19:16 ----------
Buenas tardes
Siguiendo los ejemplos de Joseg y Gusaiello he intentado crear un codigo QR con zint e insertarlo en un documento impreso.
Gusaiello, además lo he hecho en bmp ya que con un parámetro se puede crear un codigo QR en bmp.
El texto de ejemplo que estoy utilizando es: TICKETBAI (https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-44619360G-261020-EzyQEMtxw37Gm-161&s=TB-2020-F&nf=419&i=1542.75&cr=182)
El problema es que al ejecutar el comando con executesync como comentaba Joseg me devuelve el error +000000005. Si pruebo con texto mas pequeño como "Esto es una prueba" me genera el QR en formato bmp.
Pero si pruebo a introducir el texto largo en el programa que Gusaiello presentó al concurso se genera perfectamente el QR y lo puedo imprimir y al leerlo obtengo la url que he indicado.
En el manual de zint en Zint: Home (https://www.zint.org.uk/) indican unos errores en el capítulo 5. Using the API pero no viene nada respecto al comentado mas arriba.
He hecho bastantes pruebas y no logro nada. Pongo el código que estoy utilizando:
01 WTEXTOQR PIC X(256) VALUE SPACES.
01 WARCHIVOQR PIC X(8192) VALUE SPACES.
MOVE SPACES TO WARCHIVOQR WTEXTOQR
MOVE "CODQR.BMP;" TO WARCHIVOQR
MOVE "https://tbai.egoitza.gipuzkoa.eus/qr/?id=TBAI-44619360G-261020-EzyQEMtxw37Gm-161&s=TB-2020-F&nf=419&i=1542.75&cr=182;" TO WTEXTOQR
* MOVE "Esto es una prueba;" TO WTEXTOQR
STRING "zint.exe -o " DELIMITED BY SIZE
WARCHIVOQR DELIMITED BY ";"
" --vers=4 --secure=2 --scale=5 -b 58 --filetype=BMP -d " DELIMITED BY SIZE
'"' DELIMITED BY SIZE
WTEXTOQR DELIMITED BY ";"
'"' DELIMITED BY SIZE
INTO WLINEACOMANDO.
* INVOKE POW-SELF "ExecuteSync" USING WLINEACOMANDO POW-SWHIDE
* RETURNING WRETURNVALUE2
INVOKE POW-SELF "ExecuteSync" USING WLINEACOMANDO
RETURNING WRETURNVALUE2
display "WRETURNVALUE2: " WRETURNVALUE2
MOVE "B" TO EDIT-MODE OF BM-CODQR OF IFactuVT
MOVE "CODQR.BMP" TO BM-CODQR OF IFactuVT
Muchas gracias
Un saludo
Fito
15 de julio de 2021, 20:48
Hola:
Estás usando en ZINT de Gustavo u otra versión? porque esa versión no tiene para trabajar con BMP.
Sacale --filetype=BMP y generalo en PNG
Saludos...
Fito...
Gusaiello
15 de julio de 2021, 21:45
Gusaiello, además lo he hecho en bmp ya que con un parámetro se puede crear un codigo QR en bmp.
Pues esta parte no se la encontré por ningun lado. Claro, asi te ahorras el paso de convertir el .png a otro formato.
En mi caso lo necesito en .bmp o .jpg que son los formatos gráficos que puedo leer con Acu.
---------- Post añadido : 16:45 ---------- Post anterior : 16:41 ----------
Estás usando en ZINT de Gustavo u otra versión? porque esa versión no tiene para trabajar con BMP
Ah, entonces no es que no lo encontré, es que no lo tiene.
Gracias @Fito, entonces no soy tan burro :mola:
Agrego : buscando por ahi encontré otro programa para generar QR : qrencode, se usa mas o menos como Zint, por un lado tiene menos limitaciones, pero por otro lado no corre bajo XP.
Y...si... tengo algunos clientes que aún usan XP.
fastpho
15 de julio de 2021, 22:00
Buenas
Esta ocx que subio Rapinto
en este link [Componente] Imprimir código QR - COBOL Foro (https://www.cobolforo.es/showthread.php?t=109&highlight=qr-code)
Genera qr-code en formato .jpg .png .bmp sin problemas
move "TEXT" OF EncodeTxt to "TextToEncode" OF qrcode1.
move "filepng.png" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
move "filebmp.bmp" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
move "filejpg.jpg" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
Saludos
Joseg
16 de julio de 2021, 10:22
Pues esta parte no se la encontré por ningun lado. Claro, asi te ahorras el paso de convertir el .png a otro formato.
En mi caso lo necesito en .bmp o .jpg que son los formatos gráficos que puedo leer con Acu.
---------- Post añadido : 16:45 ---------- Post anterior : 16:41 ----------
Ah, entonces no es que no lo encontré, es que no lo tiene.
Gracias @Fito, entonces no soy tan burro :mola:
Agrego : buscando por ahi encontré otro programa para generar QR : qrencode, se usa mas o menos como Zint, por un lado tiene menos limitaciones, pero por otro lado no corre bajo XP.
Y...si... tengo algunos clientes que aún usan XP.
Também uso isto para o efeito:
Mais detalhes: ImageMagick - Convert, Edit, or Compose Digital Images (https://imagemagick.org/index.php)
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 REGCOMMAND PIC X(4096).
01 WSTEXTOENC PIC X(4096).
01 ReturnValue pic s9(5) comp-5.
PROCEDURE DIVISION.
MOVE qrfilename TO qrfileconv.
inspect qrfileconv replacing ALL ".png" BY ".bmp".
INITIALIZE REGCOMMAND.
STRING "magick convert " DELIMiTED SIZE
qrfilename DELIMiTED " "
" " DELIMiTED BY SIZE
qrfileconv DELIMiTED " "
INTO REGCOMMAND.
INVOKE POW-SELF "ExecuteSync" USING REGCOMMAND POW-SWHIDE RETURNING ReturnValue.
display "Convert ReturnValue " ReturnValue.
Kuk
16 de julio de 2021, 10:25
@fastpho, si te fijas en el comentario de Rui, lo generado es un BMP: [Componente] Imprimir código QR - COBOL Foro (https://www.cobolforo.es/showthread.php?t=109&p=447)
La cosa no está en la extensión, sino en el formato de datos (de imagen en este caso).
Lo de cambiarle la extensión no significa nada, porque algunos visores de imágenes ni si quiera leen la extensión, sino que van directamente mirando el metadato del fichero y saben qué formato es. Y es por esto que si a un BMP le pones JPG o PNG, te lo sigue abriendo y mostrando, porque sabe que en realidad es un BMP y sabe leerlos todos.
Pero los componentes específicos para lectura y mostrado de un formato particular, no sabrán leer el contenido de un BMP si solo conocen el de PNG etc...
No sé si me he explicado bien. ;)
fastpho
16 de julio de 2021, 14:35
Buenas
Esta ocx que subio Rapinto
en este link [Componente] Imprimir código QR - COBOL Foro (https://www.cobolforo.es/showthread.php?t=109&highlight=qr-code)
Genera qr-code en formato .jpg .png .bmp sin problemas
move "TEXT" OF EncodeTxt to "TextToEncode" OF qrcode1.
move "filepng.png" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
move "filebmp.bmp" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
move "filejpg.jpg" to "ImageFileName" OF qrcode1.
INVOKE qrcode1 "Refresh".
INVOKE qrcode1 "SavePicture".
Saludos
Este posts esta mal solo genera formato bmp
Kuk entendi perfectamente tu explicacion
Saludos
lumalma
21 de julio de 2021, 12:55
Buenos días a todos
Lo primero agradecer a todos por vuestras respuestas.
No he respondido hasta ahora porque he estado enfermo unos días y afortunadamente no era covid.
Al principio descargué la última versión de Zint que genera en BMP y empecé a probar en un equipo XP, ya que yo también tengo algún cliente con algún equipo XP todavía como le ocurre a Joseg, y no funcionaba. Si lo creaba desde el programa de Gusaiello si lo conseguía. Pero las versiones son diferentes.
Además usaba las dll (libpng15, qrcodelib, zlib1) de Gusaiello con esa nueva versión de las que descargaba zint.exe y zint.dll y no conseguía nada. Supongo que habrá nuevas versiones de esas librerías que funcionaran pero no las he encontrado. Yo descargo la versión 2.9.1 de zint pero no trae esas librerías.
Usando powercobol se puede utilizar un png sin problema pero yo seguía empeñado en obtener un bmp.
Después probé en un equipo con Windows 10 y usando el zint de Gusaiello funcionaba perfectamente como no podía ser de otra forma. De momento seguiré con esto.
Espero haberme explicado bien.
Un saludo
Gusaiello
21 de julio de 2021, 14:34
@lumalma, me alegra que la rutina te haya sido de utilidad.
lumalma
21 de julio de 2021, 16:50
@Gusaiello, solucionado un primer problema y mucho mas sencillo de lo que esperaba.
Ahora tengo el tema de envío de la información a través de servicios web RESTful. Desconozco completamente todo este mundo y no se ni por donde empezar ni si podré enlazar desde powercobol. Buscaré a ver si encuentro lo que me comentó Fito aunque estoy muy perdido.
Un saludo a todos
lumalma
11 de agosto de 2021, 19:41
Buenas tardes
He seguido el consejo que me dio @Fito, y he contactado con empresas que ofrecen el servicio web.
La que mas me convence tiene una Api a la que tengo que llamar desde mi aplicación mediante http post. El intercambio de información es mediante ficheros Json. Me han pasado las especificaciones y he mirado las especificaciones del formato Json y creo que podré crear el fichero que debo pasar con cada factura. Otra cosa será como recibir la respuesta porque el formato Json, a pesar de ser un fichero de texto, no es tan sencillo de leer. Ya he visto en otro tema que se puede usar el control ocx de chilkat y he mirado el ejemplo pero me pierdo por ejemplo con el control script que no veo de donde sale.
En otros temas he mirado como debeía hacer la llamada a la api y que para analizar el fichero Json se puede usar el control ocx de chilkat. Pero miro el código de los ejemplos de ambas cosas y no entiendo prácticamente nada ya que mi desconocimiento sobre el tema COM es total.
Agradeceré toda la ayuda que podáis ofrecerme o donde puedo conseguir información para tratar de aprender lo más rápido posible y así ver si puedo contratar este servicio que como os decía anteriormente es bastante interesante sobre todo económicamente comparado con otras opciones.
Hasta ahora todo lo que he hecho en powercobol ha sido ha sido sin utilizar aplicaciones de terceros.
Disculpad mi ignorancia en todos los temas que he mencionado
Muchas gracias
Un saludo
Yuri
8 de enero de 2025, 10:26
Buenas colegas,
Esta OCX que subiu Rapinto parece não funcionar em Windows 11 Pro 64 bits :(
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.