(self)
V 1.1
        Código QR TBAI, que consiste en un código con formato QR de tamaño mayor o igual
         a 30x30 milímetros y
        menor o igual a 40x40 milímetros (en adelante, QR TBAI).
        El nivel de corrección de errores del QR será M.
        La codificación utilizada para la generación del código será UTF-8.
V 1.1
        Código QR TBAI, que consiste en un código con formato QR de tamaño mayor o igual
         a 30x30 milímetros y
        menor o igual a 40x40 milímetros (en adelante, QR TBAI).
        El nivel de corrección de errores del QR será M.
        La codificación utilizada para la generación del código será UTF-8.
V 1 . 1 Código QR TBAI que consiste en un código con formato QR de tamaño mayor o igual a 30x30 milímetros y menor o igual a 40x40 milímetros ( en adelante QR TBAI ) . El nivel de corrección de errores del QR será M . La codificación utilizada para la generación del código será UTF - 8 .
def _compute_tbai_qr(self):
        """V 1.1
        Código QR TBAI, que consiste en un código con formato QR de tamaño mayor o igual
         a 30x30 milímetros y
        menor o igual a 40x40 milímetros (en adelante, QR TBAI).
        El nivel de corrección de errores del QR será M.
        La codificación utilizada para la generación del código será UTF-8.
        """
        for record in self:
            if record.tbai_identifier:
                if record.company_id.tbai_test_enabled:
                    qr_base_url = record.company_id.tbai_tax_agency_id.test_qr_base_url
                else:
                    qr_base_url = record.company_id.tbai_tax_agency_id.qr_base_url
                qr_values = record._get_qr_url_values()
                qr_url_without_crc = "{}?{}".format(
                    qr_base_url,
                    urlencode(qr_values, encoding="utf-8"),
                )
                qr_crc = crc8(qr_url_without_crc)
                qr_values["cr"] = qr_crc
                qr_url_with_crc = "{}?{}".format(
                    qr_base_url,
                    urlencode(qr_values, encoding="utf-8"),
                )
                record.qr_url = qr_url_with_crc
                # Let QRCode decide the best version when calling make()
                qr = qrcode.QRCode(
                    border=0, error_correction=qrcode.constants.ERROR_CORRECT_M
                )
                qr.add_data(record.qr_url)
                qr.make()
                img = qr.make_image()
                with io.BytesIO() as temp:
                    img.save(temp, format="PNG")
                    record.qr = base64.b64encode(temp.getvalue())
def _compute_tbai_qr ( self ) : for record in self : if record . tbai_identifier : if record . company_id . tbai_test_enabled : qr_base_url = record . company_id . tbai_tax_agency_id . test_qr_base_url else : qr_base_url = record . company_id . tbai_tax_agency_id . qr_base_url qr_values = record . _get_qr_url_values ( ) qr_url_without_crc = "{}?{}" . format ( qr_base_url , urlencode ( qr_values , encoding = "utf-8" ) , ) qr_crc = crc8 ( qr_url_without_crc ) qr_values [ "cr" ] = qr_crc qr_url_with_crc = "{}?{}" . format ( qr_base_url , urlencode ( qr_values , encoding = "utf-8" ) , ) record . qr_url = qr_url_with_crc # Let QRCode decide the best version when calling make() qr = qrcode . QRCode ( border = 0 , error_correction = qrcode . constants . ERROR_CORRECT_M ) qr . add_data ( record . qr_url ) qr . make ( ) img = qr . make_image ( ) with io . BytesIO ( ) as temp : img . save ( temp , format = "PNG" ) record . qr = base64 . b64encode ( temp . getvalue ( ) )