diff --git a/product_product_qr_code/__init__.py b/product_product_qr_code/__init__.py new file mode 100644 index 0000000000..9a7e03eded --- /dev/null +++ b/product_product_qr_code/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/product_product_qr_code/__manifest__.py b/product_product_qr_code/__manifest__.py new file mode 100644 index 0000000000..9f9bfdc4bd --- /dev/null +++ b/product_product_qr_code/__manifest__.py @@ -0,0 +1,14 @@ +{ + 'name': 'Product QR Code', + 'version': '16.0.1.0.0', + 'category': 'Product', + 'author': 'Avanzosc', + 'license': 'LGPL-3', + 'depends': ['product'], + 'data': [ + 'views/product_product_views.xml', + ], + 'installable': True, + 'application': False, + 'website': 'https://avanzosc.es', +} diff --git a/product_product_qr_code/models/product_product_qr_code.py b/product_product_qr_code/models/product_product_qr_code.py new file mode 100644 index 0000000000..5596c065a7 --- /dev/null +++ b/product_product_qr_code/models/product_product_qr_code.py @@ -0,0 +1,30 @@ +from odoo import models, fields, api +import base64 +import qrcode +from io import BytesIO + +class ProductProduct(models.Model): + _inherit = "product.product" + + qr_code = fields.Binary("QR Code", compute="_compute_qr_code", store=True) + + @api.depends('barcode') + def _compute_qr_code(self): + for product in self: + if product.barcode: + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(product.barcode) + qr.make(fit=True) + + img = qr.make_image(fill_color="black", back_color="white") + buffer = BytesIO() + img.save(buffer, format="PNG") + qr_image = base64.b64encode(buffer.getvalue()) + product.qr_code = qr_image + else: + product.qr_code = False diff --git a/product_product_qr_code/views/product_product_views.xml b/product_product_qr_code/views/product_product_views.xml new file mode 100644 index 0000000000..928039654b --- /dev/null +++ b/product_product_qr_code/views/product_product_views.xml @@ -0,0 +1,12 @@ + + + product.product.form.inherit.qr + product.product + + + + + + + +