qr.py 1.89 KB
import qrcode, json, base64


class qrfiscal():
    """Armo esta clase para separar la generacion de la imagen del modelo
    El unico objetivo es el orden, no tengo en claro cuanto me va a llevar
    Capas es al pedo"""
    doc_a = {"fac":"001:", "notc":"003", "notd":"002"}
    doc_b = {"fac":"006:", "notc":"008", "notd":"007"}

    def __init__(self, ver=1, FechaEmision="2020-10-13",
    cuit=30000000007,
    PuntoVenta=10,
    tipoComprobante="001",
    nroCmp=94,
    importe=12100,
    moneda="PES",
    ctz=1,
    tipoDocRec=80,
    nroDocRec=20000000001,
    tipoCodAut="E",
    codAut=70417054367476) -> dict:
        self.data = {"ver":1,
        "fecha":FechaEmision,
        "cuit":cuit,
        "ptoVta":PuntoVenta,
        "tipoCmp":tipoComprobante,
        "nroCmp":nroCmp,
        "importe":importe,
        "moneda":moneda,
        "ctz":ctz,
        "tipoDocRec": tipoDocRec,
        "nroDocRec":nroDocRec,
        "tipoCodAut":tipoCodAut,
        "codAut":codAut,
        }
        self.archivo = """/dev/shm/{}.png""".format(self.data["cuit"])
        #print(self.data)

    def GenerarQR(self):
        json_dump = json.dumps(self.data,separators=(',', ':'))
        data = json_dump.encode('ascii')
        base64_bytes = base64.b64encode(data)
        base64_message = base64_bytes.decode('ascii')
        URL = """https://www.afip.gob.ar/fe/qr/?p={}""".format(base64_message)
        self.URL = json_dump
        self.generadorQR(URL)
        #print(URL)

    def generadorQR(self, URL):
        qr = qrcode.QRCode(version=1,box_size=2,border=2)
        qr.add_data(URL)
        qr.make(fit=True)
        img = qr.make_image(fill='black', back_color='white')
        img.save(self.archivo)

    def LeerQR(self):
        data = open(self.archivo, "rb").read()
        encoded = base64.b64encode(data)
        return(encoded)



#qr = qrfiscal()
#jsz = qr.GenerarQR()
#import ipdb; ipdb.set_trace()