Normas para el QR-Code
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Normas para el QR-Code
Hola Cesar
yo uso H 3.2.0dev (r1703231115)
fwh17.07
bcc 7.0
pero no creo que esté por ahi el problema
ni por que debes hacer bmp en lugar de jpg
subite la imagen de qr que te genera a ver si lo puedo leer o ver el problema
o bien el código que usaste
viste que hay veces que pones una coma o punto de mas que escapa a la vista y es el problema
yo uso H 3.2.0dev (r1703231115)
fwh17.07
bcc 7.0
pero no creo que esté por ahi el problema
ni por que debes hacer bmp en lugar de jpg
subite la imagen de qr que te genera a ver si lo puedo leer o ver el problema
o bien el código que usaste
viste que hay veces que pones una coma o punto de mas que escapa a la vista y es el problema
Re: Normas para el QR-Code
Pablo:
El jpg me lo genera con el codigo negro.
Ahí hago zoom en el preview y me lo lee (con el bmp)
El tema es que tambien tengo programas que imprimen en comanderas termicas, y ahi me parece que la calidad con la que imprime es mala, por eso no me lo lee
El jpg me lo genera con el codigo negro.
Ahí hago zoom en el preview y me lo lee (con el bmp)
El tema es que tambien tengo programas que imprimen en comanderas termicas, y ahi me parece que la calidad con la que imprime es mala, por eso no me lo lee
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Normas para el QR-Code
ah ah
aclaro
yo sólo programo para mis actividades comerciales, no soy profesional, de hecho soy autodidacta pero ahi vamos
con lo cual, te imaginaras mis limitaciones
las facturas las genero via webserver de afip y las guardo como pdf y envío x email a los clientes, siempre en formato A4
en estos dias les saque el codigo de barras y puse el qr asi como te mostré
tambien uso ticketera para imprimir no fiscal, pero jamás pude imprimir imagenes ( uso epson tm 88 )
logro imprimir texto, codigo de barras y el corte automatico de papel
dicho esto
si sos tan amable te pido me muestres como imprimis imagenes en ticketeras
saludos
aclaro
yo sólo programo para mis actividades comerciales, no soy profesional, de hecho soy autodidacta pero ahi vamos
con lo cual, te imaginaras mis limitaciones
las facturas las genero via webserver de afip y las guardo como pdf y envío x email a los clientes, siempre en formato A4
en estos dias les saque el codigo de barras y puse el qr asi como te mostré
tambien uso ticketera para imprimir no fiscal, pero jamás pude imprimir imagenes ( uso epson tm 88 )
logro imprimir texto, codigo de barras y el corte automatico de papel
dicho esto
si sos tan amable te pido me muestres como imprimis imagenes en ticketeras
saludos
Re: Normas para el QR-Code
Excelente Pablo!
La imprimo de igual manera que en la impresora laser.
(La impresora de ticket tiene que estar instalada en windows)
Tengo una POS58 para hacer las pruebas...
La imprimo de igual manera que en la impresora laser.
(La impresora de ticket tiene que estar instalada en windows)
Code: Select all
*********** Impresion ticket
DEFINE FONT oFont NAME "COURIER NEW" SIZE -config:fon,config:fon*2.5
DEFINE FONT oFont3 NAME "COURIER NEW" SIZE -config:fon,config:fon*2.5 BOLD
PRINT oPrn TO ALLTRIM(oQryComand:name) //Imprime por comandera
PAGE
@ 0,1 PRINT TO oPrn IMAGE "logo.jpg" SIZE 3, 1.5 CM STRETCH
@ 0, .1 PRINT TO oPrn TEXT ALLTRIM(oApp:nomb_emp) ;
SIZE 5,1 CM FONT oFont ALIGN "C" LASTROW nRow
@ nRow, .1 PRINT TO oPrn TEXT ALLTRIM(oApp:dire_emp) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT ALLTRIM(aiva[oApp:tipo_iva]) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT "CUIT:"+oApp:cuit_emp ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT "Ing.br:"+ALLTRIM(oApp:ingb_emp);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT "Inic.Act.:"+DTOC(oApp:inac_emp);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT IF(cTipoDoc="NC","NOTA DE CREDITO ","TICKET ") + LEFT(cNumComp,1) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT "Cod:" + oQryVen1:tipfor+" Nro:"+RIGHT(cNumcomp,13) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
@ nRow, .1 PRINT TO oPrn TEXT "Fecha Emision:" + +DTOC(oQryVen1:fecha);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
IF oQryVen1:coniva = 5
@ nRow, .1 PRINT TO oPrn TEXT "A Consumidor Final";
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "C"
ELSE
@ nRow, .1 PRINT TO oPrn TEXT ALLTRIM(oQryVen1:nombre);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow, .1 PRINT TO oPrn TEXT oQryVen1:cuit;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow, .1 PRINT TO oPrn TEXT aIva[oQryVen1:coniva];
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow, .1 PRINT TO oPrn TEXT ALLTRIM(oQryVen1:direccion) + " " + ;
ALLTRIM(oQryVen1:localidad);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
ENDIF
@ nRow, 00 PRINT TO oPrn TEXT "Descripcion";
SIZE 2.5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow, 2.7 PRINT TO oPrn TEXT "Cant";
SIZE .9,.5 CM FONT oFont LASTROW nRow ALIGN "R"
@ nRow, 3.7 PRINT TO oPrn TEXT "Total";
SIZE 1,.5 CM FONT oFont LASTROW nRow ALIGN "R"
oQryDet1:GoTop()
FOR i = 1 TO oQryDet1:nRecCount
nRow1 := nRow
@ nRow1, 00 PRINT TO oPrn TEXT ALLTRIM(oQryDet1:detart);
SIZE 2.5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow1, 2.7 PRINT TO oPrn TEXT STR(oQryDet1:cantidad,06);
SIZE 0.9,.5 CM FONT oFont LASTROW nRow ALIGN "R"
@ nRow1, 3.7 PRINT TO oPrn TEXT IF(LEFT(cNumComp,1) <> "A",;
STR((oQryDet1:neton*1.21),9,2),;
STR(oQryDet1:neton,9,2));
SIZE 1,.5 CM FONT oFont LASTROW nRow ALIGN "R"
nSuma := nSuma + oQryDet1:importe
oQryDet1:Skip()
NEXT
IF LEFT(cNumComp,1)<>"A"
@ nRow, .1 PRINT TO oPrn TEXT "Total $ " + STR(oQryVen1:importe,10,2);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
ELSE
@ nRow, .1 PRINT TO oPrn TEXT "Subtotal $ " + STR(oQryVen1:neto,10,2);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
oQryIvaDet:GoTop()
FOR i = 1 TO oQryIvaDet:nRecCount
@ nRow, .1 PRINT TO oPrn TEXT "I.V.A. "+ALLTRIM(oQryIvaDet:nomiva) + " $:" +STR(oQryIvaDet:iva,10,2) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
NEXT
@ nRow, .1 PRINT TO oPrn TEXT "Total $:"+STR(oQryVen1:importe,10,2) ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
ENDIF
@ nRow, .1 PRINT TO oPrn TEXT "CAE Nro:"+oQryVen1:cae ;
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow, .1 PRINT TO oPrn TEXT "Fecha Vto CAE:"+DTOC(oQryVen1:fecVto);
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
IF oQryPar:emite_pie
@ nRow, .1 PRINT TO oPrn TEXT oQryPar:texto_pie;
SIZE 5,.5 CM FONT oFont3 LASTROW nRow ALIGN "L"
ENDIF
@ nRow,.1 PRINT TO oPrn TEXT ".";
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow,.4 PRINT TO oPrn IMAGE "FactQR.bmp" SIZE 2.5,2.5 CM NOTRANSPARENT;
LASTROW nRow
@ nRow,.1 PRINT TO oPrn TEXT "...";
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
@ nRow,.1 PRINT TO oPrn TEXT "...";
SIZE 5,.5 CM FONT oFont LASTROW nRow ALIGN "L"
ENDPAGE
ENDPRINT
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Normas para el QR-Code
gracias
voy a probar
para las ticketeras uso tdosprn y manda siempre cualquiera sea la impresora instalada
manda directo a com,lpt o usb
no se si con PRINT podes enviar el corte automatico de papel
voy a probar
para las ticketeras uso tdosprn y manda siempre cualquiera sea la impresora instalada
manda directo a com,lpt o usb
no se si con PRINT podes enviar el corte automatico de papel
Re: Normas para el QR-Code
En algunas que he probado, el corte de papel (si la impresora tiene) lo hace al hacer endpage
-
- Posts: 35
- Joined: Tue Oct 11, 2016 1:02 pm
Re: Normas para el QR-Code
Hola buenas tardes, estoy viendo este tema, compilo el ejemplo y me da error StrToBase64 no existe la función.
me falta alguna librería?
Saludos
Jorge
me falta alguna librería?
Saludos
Jorge
postinelli wrote://----------------------------------------------------------------------------//
function GeneraQR()
Local cOrigen, cJason, cDestino, ElTxt
cOrigen:="https://www.afip.gob.ar/fe/qr/?p="
cJason:='{"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}'
cJason=StrToBase64( cJason )
cOrigen=cOrigen+cJason
//MsgAlert(cOrigen)
ElTxt:= "QrJason.txt"
Nhandle:= fcreate(ElTxt)
If (nhandle > 0)
fwrite(Nhandle, cOrigen + CRLF)
fclose(nhandle)
EndIf
cDestino:="FastQR.jpg"
QRCode(cOrigen,cDestino)
MsgInfo("Qr Generado OK")
Return NIL
//----------------------------------------------------------------------------//
DLL32 STATIC FUNCTION QRCode(cStr As STRING, cFile As STRING) AS LONG PASCAL FROM "FastQRCode" LIB "QRCodelib.Dll"
RETURN NIL
/*
Re: Normas para el QR-Code
João Santos - São Paulo - Brasil
Re: Normas para el QR-Code
Copiado del Foro Brasil
Code: Select all
//
FUNCTION StrToBase64( cTexte )
//******************
// Conversion en base 64 de la chaine cTexte
// Un alphabet de 65 caractères est utilisé pour permettre la représentation de 6 bits par caractère :
// "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
// Le '=' (65e caractère) est utilisé dans le processus de codage pour les caractères finaux.
LOCAL cTexte64 := ""
LOCAL X
LOCAL cHex
DO WHILE !( cTexte == "" )
cHex := ""
// Le processus de codage représente des groupes de 24 bits de données en entrée par une chaîne en sortie de 4 caractères codés.
// En procédant de gauche à droite, un groupe de 24 bits est créé en concaténant 3 octets (8 bits par octet).
FOR X := 1 TO 3
// Conversion de chaque caractère en chaine binaire de 8 octets
cHex += CarToBin( LEFT( cTexte, 1 ) )
IF LEN( cTexte ) > 1
cTexte := SUBSTR( cTexte, 2 )
ELSE
cTexte := ""
EXIT
ENDIF
NEXT X
// Ces 24 bits (ici contenus dans cHex, ou au moins un multiple) sont traités comme 4 groupes concaténés de 6 bits chacun convertis
// en un unique caractère dans l'alphabet de la base 64.
// Chaque groupe de 6 bits est utilisé comme index dans la table des caractères de la base 64.
// Le caractère référencé par l'index correspondant est utilisé comme codage de ce groupe de 6 bits.
FOR X := 1 TO 4
IF SUBSTR( cHex, ( (X - 1 ) * 6 ) + 1 ) == ""
cTexte64 += REPLICATE( "=", 4 - X + 1 )
EXIT
ELSE
// Un traitement spécial est effectué si moins de 24 bits sont disponibles à la fin des données
// à coder. Aucun bit ne restant non-codé,
// si moins de 24 bits sont disponibles alors des bits à zéro sont ajoutés à la droite des données
// pour former un nombre entier de groupes de 6 bits.
IF LEN( cHex ) % 6 > 0
// Ajout des bits à zéro
cHex += REPLICATE( "0", 6 - ( LEN( cHex ) % 6 ) )
ENDIF
cTexte64 += Carac64( "00" + SUBSTR( cHex, ( (X - 1 ) * 6 ) + 1, 6 ) )
ENDIF
NEXT X
ENDDO
RETURN cTexte64
FUNCTION Carac64( cBin )
//***************
// Renvoie le caractère correspondant en base 64
LOCAL nPos := ASC( BinToCar( @cBin ) ) + 1
RETURN SUBSTR( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", nPos, 1 )
FUNCTION Hex64( carac64 )
//*************
// Renvoie le caractère correspondant en base 64
LOCAL cCodeAsc := CHR( AT( carac64, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ) - 1 )
RETURN SUBSTR( CarToBin( @cCodeAsc ) , 3, 6 )
FUNCTION CarToBin( carac, lInverse )
//****************
// Renvoie le caractère correspondant dans une chaine binaire (composée de 0 et 1) de 8 bits
#define cHexa "0123456789ABCDEF"
#define aBin {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" }
LOCAL cToHex
IF EMPTY( lInverse )
// Retourne la chaine binaire en ayant reçu le caractère ASCII
cToHex := str2Hex( carac )
RETURN aBin[ AT( LEFT(cToHex,1), cHexa ) ] + aBin[ AT( SUBSTR(cToHex,2), cHexa ) ]
ELSE
// Retourne le caractère ASCII en ayant reçu la chaine binaire
cToHex := SUBSTR( cHexa, ASCAN( aBin, LEFT(carac,4 ) ), 1 ) + SUBSTR( cHexa, ASCAN( aBin, SUBSTR(carac,5,4 ) ), 1 )
RETURN Hex2str( cToHex )
ENDIF
RETURN NIL
FUNCTION BinToCar( cBin )
//****************
RETURN CarToBin( @cBin, .T. )
-
- Posts: 35
- Joined: Tue Oct 11, 2016 1:02 pm
Re: Normas para el QR-Code
Hola, logre generar el código e imprimirlo perfecto.
Quise validarlo, saben si funciona la página que recibirá estos códigos.
Saludos.
Jorge
Quise validarlo, saben si funciona la página que recibirá estos códigos.
Saludos.
Jorge
-
- Posts: 128
- Joined: Tue Jul 15, 2008 7:12 pm
- Location: Argentina
Re: Normas para el QR-Code
Estimado
la pagina de afip aun está a prueba, no valida una factura en si, solo te lleva a la pagina informativa de codigos qr de afip
siempre te lleva a https://www.afip.gob.ar/fe/qr/conceptos-generales.asp
yo lo que hice fue generar un txt con el link completo
lo abro con el block de notas y copio el json y lo decodifico en https://www.base64decode.org/
ahi vas a ver si el link generado es correcto comparandolo con la informacion que da la afip para este tema
es todo bastante simple
la pagina de afip aun está a prueba, no valida una factura en si, solo te lleva a la pagina informativa de codigos qr de afip
siempre te lleva a https://www.afip.gob.ar/fe/qr/conceptos-generales.asp
yo lo que hice fue generar un txt con el link completo
lo abro con el block de notas y copio el json y lo decodifico en https://www.base64decode.org/
ahi vas a ver si el link generado es correcto comparandolo con la informacion que da la afip para este tema
es todo bastante simple
-
- Posts: 35
- Joined: Tue Oct 11, 2016 1:02 pm
Re: Normas para el QR-Code
Joya, ahí lo probé, quedo perfecto.
Muchas gracias
Saludos
Muchas gracias
Saludos