Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2023
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Codigo QR AFIP Argentina

Buenas noches:

Estoy utilizando delphi 7

Necesito imprimir el codigo QR en las facturas. Ya tengo el componente que imprime el Codigo y puedo armé el string.

Ejemplo:

mensaje:='hola loco';
qr.Text:=mensaje;

Imprimo la factura y escaneo el codigo y se lee.. "Hola loco".

Ahora bien, hay que armar un string con los campos de la factura, pero ese string hay que codificarlo de alguna manera y luego cargarlo al qr.

Ej,
mensaje:='{"factura": 123456, "fecha ":2023-09-10 ..... etc etc}'
mensaje:=fcodificarQR(mensaje);
qr.Text:=mensaje;

ni idea de como es ese fcodificarQR

El link de las especificaciones de la AFIP, están mas abajo, pero son muy claras para quien ya sabe la respuesta.
y les copio el ejemplo de JSON y el codificado.

Si alguien sabe por donde iniciar esto, se lo agradezco.

Saludos



https://www.afip.gob.ar/fe/qr/especificaciones.asp


JSON con datos del comprobante:

{"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476}


Texto codificado en el QR:

https://www.afip.gob.ar/fe/qr/?p=eyJ...A1NDM2NzQ3Nn0=
Responder Con Cita
  #2  
Antiguo 19-09-2023
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Esto último no se copió.

JSON con datos del comprobante:

{"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476}
Responder Con Cita
  #3  
Antiguo 19-09-2023
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Texto codificado en el QR:

https://www.afip.gob.ar/fe/qr/?p=eyJ...A1NDM2NzQ3Nn0=




esto es lo que hay que conseguir
Responder Con Cita
  #4  
Antiguo 19-09-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal vez se me escapa algo, pero por lo que he entendido...
1) Montar un JSON con los datos que te piden:
Cita:
{"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65," tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476}

2) Codificar ese JSON en base64; Con esa codificación obtienes esto:
Cita:
eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJu cm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1Jl YyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0
(https://www.base64encode.org/)

3) Con eso montas la URL, añadiendo delante esto: https://www.afip.gob.ar/fe/qr/?p=
Resultado es esta URL:

Cita:
h_t_t_ps://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxL CJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY 1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=
4) Con eso ya puedes generar un QR:


(https://qrcode.tec-it.com/es)

5) y puedes probar a "decodificarlo" en este web: https://www.codigos-qr.com/lector-qr-online/
Y volverás a obtener el texto:

Cita:
h_t_tps://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxL CJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY 1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=
NOTA: A las URLs les he añadido h_t_tp... para que se vean completas
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 19-09-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Para crear la imagen QR utilizo el componente TDelphiZXingQRCode
Lo puedes descargar en https://github.com/foxitsoftware/DelphiZXingQRCode

Luego hice un procedimiento que me devuelve un TBitmap del mismo

Código Delphi [-]
procedure CrearCodigoQR(Bitmap: TBitmap; s: string; Factor: integer = 1);
var
  QRCode : TDelphiZXingQRCode;
  Row, Column : integer;
begin
  /// Pinta un codigo QR en el BITMAP.
  /// Modificara el tamaño del BITMAP para que entre el codigo QR.
  /// Factor es el tamaño de cada punto (1 = 1 pixel, 2 son puntos de 2x2 pixels, etc.)

  QRCode := TDelphiZXingQRCode.Create;
  try
     // Configuracion del codigo QR (Alfa o numerico automatico, 4 puntos de borde).
     QRCode.Data := s;
     QRCode.Encoding := qrAuto;
     QRCode.QuietZone := 4;

     // Modifico tamaño del Bitmap
     Bitmap.Height := QRCode.Rows * Factor;
     Bitmap.Width := QRCode.Columns * Factor;

     // Recorro el codigo QR y pinto los puntos
     for Row := 0 to QRCode.Rows - 1 do
     begin
        for Column := 0 to QRCode.Columns - 1 do
        begin
           if (QRCode.IsBlack[Row, Column]) then
              Bitmap.Canvas.Brush.Color := clBlack
           else
              Bitmap.Canvas.Brush.Color := clWhite;

           // Cada punto se corresponderá a un cuadrado de (Factor x Factor) pixeles
           Bitmap.Canvas.FillRect(Classes.Rect((Factor * Column), (Factor * Row), (Factor * Column) + Factor, (Factor * Row) + Factor));
        end;
     end;
  finally
     QRCode.Free;
  end;

Y lo utilizo para la imagen que voy a imprimir.
Código Delphi [-]
        [...]
        Imagen := TImage.Create(nil);
        try
           CrearCodigoQR(Imagen.Picture.Bitmap, xCabecera.FieldByName('SFV_CODIGO_RESPUESTA_RAPIDA').AsString, 3);
           TfrPictureView(View).Picture.Assign(Imagen.Picture);
        finally
           Imagen.Free;
        end;
        [...]
Responder Con Cita
  #6  
Antiguo 20-09-2023
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Buen día:

Gracias por responder.

lo que no sé como hacer es :

"Codificar ese JSON en base64"
Responder Con Cita
  #7  
Antiguo 09-01-2024
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Buenas!!!
Uso el mismo componente para crear un .bmp con el QR, lo que me está dificultando es la impresión,
ya que no sale del tamaño que debería. Ahí usas otros componentes gráficos?


Recién noto que usas FastReport, Sorry!



Saludos y muchas gracias

Última edición por waly2k1 fecha: 09-01-2024 a las 21:12:51. Razón: Noté que usas FastReport
Responder Con Cita
  #8  
Antiguo 09-01-2024
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Impresion del QR?

Y cómo sería la impresión del .bmp? sin FastReport
probé con:


Código Delphi [-]
BitMap := TBitmap.Create;
BitMap.LoadFromFile( ExtractFilePath( Application.ExeName ) + '\QR.bmp' ); // el QR generado con TDelphiZXingQRCode


Canvas.StretchDraw();
Canvas.Draw();


Y nada, solo logro imprimir una imagen muy pequeña ilegible


Saludos y muchas gracias!
Responder Con Cita
  #9  
Antiguo 10-01-2024
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Depende de cómo estés imprimiendo...

Yo utilizo FastReport, pero hay otros muchos componentes para impresión. ¿Cuál utilizas?

Supongo que podrías generar un PDF e insertar el gráfico.
Además se puede hacer una impresión directa a la impresora.
Ciertas impresoras de tickets tienen la funcionalidad de imprimir imágenes o códigos de barra directamente, como si fuera una impresora matricial a la que le envías un código especial y luego la imagen.
Responder Con Cita
  #10  
Antiguo 17-01-2024
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Buenas!
No utilizo componentes sino con canvas nomás lo hice
Pasa que ya tenía el ticket con impresión manual (Printer), luego encontré
en otro hilo que decía que la imagen debe ser mucho más grande para que se imprima
en tamaño acorde. La hice de 1000 * 1000 e imprime en una pulgada +/-.
Perdón por no contestar antes, pero anduve como loco con eso y cuando funcionó
suspiré al fin.
Siempre uso FastReport, pero para Tickets nunca, me hubiera ahorrado mucho tiempo con
la impresión manual de logos/QR.
Saludos y muchas gracias por tu tiempo!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Factura Electronica - Afip Argentina Joe_Balda Varios 30 30-01-2021 04:10:34
Constancia de Inscripcion AFIP argentina adripugliesso Varios 1 13-07-2017 21:00:11
AFIP Argentina: Consultas al padron de contribuyentes AgustinOrtu Bibliotecas de código fuente 18 28-06-2017 03:04:38
Factura Electrónica AFIP Argentina SergioFrey Noticias 2 19-05-2017 21:02:03
Ayuda Web Service AFIP Argentina patriciojgf Delphi para la web 1 04-11-2014 17:46:34


La franja horaria es GMT +2. Ahora son las 22:59:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi