diff --git a/mrp_workorder_qr_code/README.rst b/mrp_workorder_qr_code/README.rst new file mode 100644 index 0000000000..8606298c80 --- /dev/null +++ b/mrp_workorder_qr_code/README.rst @@ -0,0 +1,70 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-blue.svg + :target: https://opensource.org/licenses/LGPL-3.0 + :alt: License: LGPL-3 + +======================= +Workorder QR Code +======================= + +Overview +======== + +The **Workorder QR Code** module adds the capability to generate and display QR codes for workorders based on their barcodes. This is particularly useful for inventory management, workorder identification, and streamlined operations. + +Features +======== + +- **Automatic QR Code Generation**: + - QR codes are generated automatically for workorders with a barcode. +- **QR Code Display**: + - The QR code is displayed in the workorder form view for easy access. +- **Integrated Design**: + - The module integrates seamlessly into the existing workorder management system. + +Usage +===== + +1. **Install the Module**: + - Install the **Workorder QR Code** module from the Apps menu. + +2. **Generate QR Codes**: + - Open any workorder with a barcode. + - The QR code is automatically generated and displayed in the form view. + +3. **QR Code Preview**: + - The QR code can be previewed directly from the workorder form view. + +Configuration +============= + +No additional configuration is required. The module works automatically once installed. + +Testing +======= + +To verify the module's functionality: + +1. Create or edit a workorder and ensure it has a barcode. +2. Save the workorder. +3. Check the QR code field to confirm the QR code is generated. + +Bug Tracker +=========== + +If you encounter any issues, please report them on the GitHub repository at `GitHub Issues `_. + +Credits +======= + +Contributors +------------ + +* Ana Juaristi +* Unai Beristain + +For specific questions or support, please contact the contributors. + +License +======= + +This project is licensed under the LGPL-3 License. For more details, refer to the LICENSE file or visit . diff --git a/mrp_workorder_qr_code/__init__.py b/mrp_workorder_qr_code/__init__.py new file mode 100644 index 0000000000..0650744f6b --- /dev/null +++ b/mrp_workorder_qr_code/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/mrp_workorder_qr_code/__manifest__.py b/mrp_workorder_qr_code/__manifest__.py new file mode 100644 index 0000000000..7d3a909b43 --- /dev/null +++ b/mrp_workorder_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": ["mrp_workorder_sequence"], + "data": [ + "views/mrp_workorder_views.xml", + ], + "installable": True, + "application": False, + "website": "https://github.com/avanzosc/odoo-addons", +} diff --git a/mrp_workorder_qr_code/models/__init__.py b/mrp_workorder_qr_code/models/__init__.py new file mode 100644 index 0000000000..ddc78464d7 --- /dev/null +++ b/mrp_workorder_qr_code/models/__init__.py @@ -0,0 +1 @@ +from . import mrp_workorder diff --git a/mrp_workorder_qr_code/models/mrp_workorder.py b/mrp_workorder_qr_code/models/mrp_workorder.py new file mode 100644 index 0000000000..c008731d4f --- /dev/null +++ b/mrp_workorder_qr_code/models/mrp_workorder.py @@ -0,0 +1,40 @@ +import base64 +from io import BytesIO + +import qrcode + +from odoo import api, fields, models + + +class MrpWorkorder(models.Model): + _inherit = "mrp.workorder" + + qr_code = fields.Char( + "QR Code", + compute="_compute_qr_code", + store=True, + ) + + @api.depends("sequence") + def _compute_qr_code(self): + for workorder in self: + if workorder.sequence: + sequence_str = str(workorder.sequence) + + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(sequence_str) + 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()).decode("utf-8") + + workorder.qr_code = qr_image + else: + workorder.qr_code = False diff --git a/mrp_workorder_qr_code/views/mrp_workorder_views.xml b/mrp_workorder_qr_code/views/mrp_workorder_views.xml new file mode 100644 index 0000000000..a1c3846f64 --- /dev/null +++ b/mrp_workorder_qr_code/views/mrp_workorder_views.xml @@ -0,0 +1,17 @@ + + + mrp.workorder.form.inherit.qr + mrp.workorder + + + + + + + + diff --git a/setup/mrp_workorder_qr_code/odoo/addons/mrp_workorder_qr_code b/setup/mrp_workorder_qr_code/odoo/addons/mrp_workorder_qr_code new file mode 120000 index 0000000000..2860f51401 --- /dev/null +++ b/setup/mrp_workorder_qr_code/odoo/addons/mrp_workorder_qr_code @@ -0,0 +1 @@ +../../../../mrp_workorder_qr_code \ No newline at end of file diff --git a/setup/mrp_workorder_qr_code/setup.py b/setup/mrp_workorder_qr_code/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/mrp_workorder_qr_code/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)