Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][ADD] mrp_workorder_qr_code: Create field qr_code in mrp.workorder #3114

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions mrp_workorder_qr_code/README.rst
Original file line number Diff line number Diff line change
@@ -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 <https://github.com/avanzosc/odoo-addons/issues>`_.

Credits
=======

Contributors
------------

* Ana Juaristi <[email protected]>
* Unai Beristain <[email protected]>

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 <https://opensource.org/licenses/LGPL-3.0>.
1 change: 1 addition & 0 deletions mrp_workorder_qr_code/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
14 changes: 14 additions & 0 deletions mrp_workorder_qr_code/__manifest__.py
Original file line number Diff line number Diff line change
@@ -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",
}
1 change: 1 addition & 0 deletions mrp_workorder_qr_code/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import mrp_workorder
40 changes: 40 additions & 0 deletions mrp_workorder_qr_code/models/mrp_workorder.py
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions mrp_workorder_qr_code/views/mrp_workorder_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<odoo>
<record id="view_mrp_workorder_form_inherit" model="ir.ui.view">
<field name="name">mrp.workorder.form.inherit.qr</field>
<field name="model">mrp.workorder</field>
<field name="inherit_id" ref="mrp.mrp_production_workorder_form_view_inherit" />
<field name="arch" type="xml">
<xpath expr="//page" position="inside">
<field
name="qr_code"
widget="image"
class="oe_avatar"
options="{'preview_image': 'qr_code'}"
/>
</xpath>
</field>
</record>
</odoo>
6 changes: 6 additions & 0 deletions setup/mrp_workorder_qr_code/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import setuptools

setuptools.setup(
setup_requires=['setuptools-odoo'],
odoo_addon=True,
)
Loading