diff --git a/customer_product_qrcode/README.rst b/customer_product_qrcode/README.rst new file mode 100755 index 000000000..ceaac71fd --- /dev/null +++ b/customer_product_qrcode/README.rst @@ -0,0 +1,54 @@ +.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg + :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html + :alt: License: LGPL-3 + +Customer and Product QR Code Generator +====================================== +The Customer and Product QRCode Generator Helps You to Generate Unique +QR Codes to your Products or Customers + +Configuration +============= +Need to set the prefix for product and Customer Qr code + +Company +------- +* `Cybrosys Techno Solutions `__ + + +License +------- +General Public License, Version 3 (LGPL v3). +( https://www.gnu.org/licenses/lgpl-3.0-standalone.html) + + +Credits +------- +* Developer: +(V14) Sarath Suresh , +(V15) Midilaj V K , +(V16) Athira P S , +(V17) Anjhana A K , +Contact: odoo@cybrosys.com + +contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/customer_product_qrcode/__init__.py b/customer_product_qrcode/__init__.py new file mode 100755 index 000000000..fbaeb400a --- /dev/null +++ b/customer_product_qrcode/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import models +from . import report +from odoo import api, SUPERUSER_ID +def _set_qr(cr): + env = api.Environment(cr, SUPERUSER_ID, {}) + for record in env['product.product'].search([]): + name = record.name.replace(" ", "") + record.sequence = 'DEF' + name.upper()+str(record.id) + record.generate_qr() diff --git a/customer_product_qrcode/__manifest__.py b/customer_product_qrcode/__manifest__.py new file mode 100755 index 000000000..0a8a4f60e --- /dev/null +++ b/customer_product_qrcode/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +{ + 'name': 'Customer and Product QR Code Generator', + 'version': '17.0.1.0.0', + 'category': 'Extra Tools', + 'summary': 'Generate Unique QR Codes for Customers and Products', + 'description': '''QR Code, QR Code Generator, Odoo QR Code Generator, + Customer QR Code, Product QR Code, QR, QR Code Odoo''', + 'author': 'Cybrosys Techno solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'sale', 'stock'], + 'data': [ + 'data/sequence.xml', + 'views/res_config_settings_view.xml', + 'views/res_partner_view.xml', + 'views/product_product_view.xml', + 'views/product_template_view.xml', + 'report/customer_product_qrcode_template.xml.xml', + 'report/paperformat.xml', + 'report/report_action.xml', + ], + 'images': ['static/description/banner.jpg'], + 'license': 'LGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, + 'post_init_hook': '_set_qr' +} diff --git a/customer_product_qrcode/data/sequence.xml b/customer_product_qrcode/data/sequence.xml new file mode 100644 index 000000000..9b9fc8091 --- /dev/null +++ b/customer_product_qrcode/data/sequence.xml @@ -0,0 +1,19 @@ + + + + + + product_sequence + product.product + + 5 + + + + customer_sequence + res.partner + + 5 + + + diff --git a/customer_product_qrcode/doc/RELEASE_NOTES.md b/customer_product_qrcode/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..2c2401398 --- /dev/null +++ b/customer_product_qrcode/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 13.11.2023 +#### Version 17.0.1.0.0 +#### ADD +- Initial commit for Customer and Product QR Code Generator diff --git a/customer_product_qrcode/models/__init__.py b/customer_product_qrcode/models/__init__.py new file mode 100755 index 000000000..226ce5839 --- /dev/null +++ b/customer_product_qrcode/models/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import product_product +from . import product_template +from . import res_config_settings +from . import res_partner diff --git a/customer_product_qrcode/models/product_product.py b/customer_product_qrcode/models/product_product.py new file mode 100644 index 000000000..9d18c0748 --- /dev/null +++ b/customer_product_qrcode/models/product_product.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +try: + import qrcode +except ImportError: + qrcode = None +try: + import base64 +except ImportError: + base64 = None +from io import BytesIO +from odoo import _, api, fields, models +from odoo.exceptions import UserError + + +class ProductProduct(models.Model): + """Extends the productproduct model to include QR code functionality.""" + _inherit = 'product.product' + + sequence = fields.Char(string="QR Sequence", readonly=True, + help='to add sequence') + qr = fields.Binary(string="QR Code", help='Qr file') + + @api.model + def create(self, vals): + """Create a new product and assign a unique QR sequence and QR code + to it.""" + prefix = self.env['ir.config_parameter'].sudo().get_param( + 'customer_product_qr.config.product_prefix') + if not prefix: + raise UserError(_('Set A Product Prefix In General Settings')) + prefix = str(prefix) + seq = prefix + self.env['ir.sequence'].next_by_code( + 'product.product') or '/' + vals['sequence'] = seq + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(vals['sequence']) + qr.make(fit=True) + img = qr.make_image() + temp = BytesIO() + img.save(temp, format="PNG") + qr_image = base64.b64encode(temp.getvalue()) + vals.update({'qr': qr_image}) + return super().create(vals) + + @api.depends('sequence') + def generate_qr(self): + """Generate a QR code based on the product's sequence and store it in + the 'qr' field of the product.""" + if qrcode and base64: + if not self.sequence: + prefix = self.env['ir.config_parameter'].sudo().get_param( + 'customer_product_qr.config.product_prefix') + if not prefix: + raise UserError( + _('Set A Customer Prefix In General Settings')) + prefix = str(prefix) + self.sequence = prefix + self.env['ir.sequence'].next_by_code( + 'product.product') or '/' + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(self.sequence) + qr.make(fit=True) + img = qr.make_image() + temp = BytesIO() + img.save(temp, format="PNG") + qr_image = base64.b64encode(temp.getvalue()) + self.write({'qr': qr_image}) + return self.env.ref( + 'customer_product_qrcode.print_qr2').report_action(self, data={ + 'data': self.id, 'type': 'prod'}) + else: + raise UserError( + _('Necessary Requirements To Run This Operation Is Not' + ' Satisfied')) + + def get_product_by_qr(self, **args): + """Retrieve a product based on the provided QR sequence.""" + return self.env['product.product'].search( + [('sequence', '=', self.id), ], limit=1).id diff --git a/customer_product_qrcode/models/product_template.py b/customer_product_qrcode/models/product_template.py new file mode 100644 index 000000000..4d880d36b --- /dev/null +++ b/customer_product_qrcode/models/product_template.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models + + +class ProductTemplate(models.Model): + """Extends the product.template model to generate QR codes for all + related product variants.""" + _inherit = 'product.template' + + def generate_qr(self): + """Generate QR codes for all product variants associated with the + product template.""" + product = self.env['product.product'].search( + [('product_tmpl_id', '=', self.id), ]) + for rec in product: + rec.generate_qr() + return self.env.ref('customer_product_qrcode.print_qr2').report_action( + self, data={'data': self.id, 'type': 'all'}) diff --git a/customer_product_qrcode/models/res_config_settings.py b/customer_product_qrcode/models/res_config_settings.py new file mode 100644 index 000000000..2bea630fe --- /dev/null +++ b/customer_product_qrcode/models/res_config_settings.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + """Extends the res.config.settings model to include configuration + settings for QR code prefixes.""" + _inherit = 'res.config.settings' + + customer_prefix = fields.Char(string="Customer QR Prefix", + help='Customer Qr prefix') + product_prefix = fields.Char(string="Product QR Prefix", + help='Product Qr prefix') + + def get_values(self): + """fRetrieve the current configuration values for QR code prefixes.""" + res = super().get_values() + customer_prefix = self.env["ir.config_parameter"].get_param( + "customer_product_qr.config.customer_prefix") + product_prefix = self.env["ir.config_parameter"].get_param( + "customer_product_qr.config.product_prefix") + res.update({ + 'customer_prefix': customer_prefix if type( + customer_prefix) else False, + 'product_prefix': product_prefix if type(product_prefix) else False + } + ) + return res + + def set_values(self): + """Set the configuration values for QR code prefixes.""" + self.env['ir.config_parameter'].sudo().set_param( + 'customer_product_qr.config.customer_prefix', self.customer_prefix) + self.env['ir.config_parameter'].sudo().set_param( + 'customer_product_qr.config.product_prefix', self.product_prefix) + super().set_values() diff --git a/customer_product_qrcode/models/res_partner.py b/customer_product_qrcode/models/res_partner.py new file mode 100644 index 000000000..673f5dd3b --- /dev/null +++ b/customer_product_qrcode/models/res_partner.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +try: + import qrcode +except ImportError: + qrcode = None +try: + import base64 +except ImportError: + base64 = None +from io import BytesIO + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError + + +class ResPartners(models.Model): + """Extends the res partner model to include QR code functionality.""" + _inherit = 'res.partner' + + sequence = fields.Char(string="QR Sequence", readonly=True) + qr = fields.Binary(string="QR Code", help='Used for Qr code') + + def init(self): + """Initialize the QR sequence for customer partners with a combination + of 'DEF', partner's name (without spaces), and partner's ID.""" + for record in self.env['res.partner'].search( + [('customer_rank', '=', True)]): + name = record.name.replace(" ", "") + record.sequence = 'DEF' + name.upper() + str(record.id) + + @api.model + def create(self, vals): + """Create a new partner record and assign a unique QR sequence to + it.""" + prefix = self.env['ir.config_parameter'].sudo().get_param( + 'customer_product_qr.config.customer_prefix') + if not prefix: + raise UserError(_('Set A Customer Prefix In General Settings')) + prefix = str(prefix) + seq = prefix + self.env['ir.sequence'].next_by_code( + 'res.partner') or '/' + vals['sequence'] = seq + return super().create(vals) + + @api.model + def write(self, vals): + """ this fn is to write vals""" + return super().write(vals) + + @api.depends('sequence') + def generate_qr(self): + """Generate a QR code based on the partner's sequence and store it in + the 'qr' field of the partner record.""" + if qrcode and base64: + if not self.sequence: + prefix = self.env['ir.config_parameter'].sudo().get_param( + 'customer_product_qr.config.customer_prefix') + if not prefix: + raise UserError( + _('Set A Customer Prefix In General Settings')) + prefix = str(prefix) + self.sequence = prefix + self.env['ir.sequence'].next_by_code( + 'res.partner') or '/' + qr = qrcode.QRCode( + version=1, + error_correction=qrcode.constants.ERROR_CORRECT_L, + box_size=10, + border=4, + ) + qr.add_data(self.sequence) + qr.make(fit=True) + img = qr.make_image() + temp = BytesIO() + img.save(temp, format="PNG") + qr_image = base64.b64encode(temp.getvalue()) + self.write({'qr': qr_image}) + return self.env.ref( + 'customer_product_qrcode.print_qr').report_action(self, data={ + 'data': self.id, 'type': 'cust'}) + else: + raise UserError( + _('Necessary Requirements To Run This Operation Is Not ' + 'Satisfied')) + + def get_partner_by_qr(self, **args): + """THis fn is to get partner by qr """ + return self.env['res.partner'].search([('sequence', '=', self.id), ], + limit=1).id diff --git a/customer_product_qrcode/report/__init__.py b/customer_product_qrcode/report/__init__.py new file mode 100755 index 000000000..863a975d4 --- /dev/null +++ b/customer_product_qrcode/report/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from . import parser diff --git a/customer_product_qrcode/report/customer_product_qrcode_template.xml b/customer_product_qrcode/report/customer_product_qrcode_template.xml new file mode 100755 index 000000000..571af0421 --- /dev/null +++ b/customer_product_qrcode/report/customer_product_qrcode_template.xml @@ -0,0 +1,52 @@ + + + + + + + diff --git a/customer_product_qrcode/report/paperformat.xml b/customer_product_qrcode/report/paperformat.xml new file mode 100755 index 000000000..ebceb24c6 --- /dev/null +++ b/customer_product_qrcode/report/paperformat.xml @@ -0,0 +1,20 @@ + + + + + PDF Report + + custom + 100 + 100 + Portrait + 10 + 0 + 10 + 10 + + 80 + 90 + + diff --git a/customer_product_qrcode/report/parser.py b/customer_product_qrcode/report/parser.py new file mode 100755 index 000000000..2d3ccd91e --- /dev/null +++ b/customer_product_qrcode/report/parser.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Anjhana A K() +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# +from odoo import models, api +from odoo.http import request + + +class CustomerQrTemplate(models.AbstractModel): + """Abstract model for generating the customer QR template report.""" + _name = 'report.customer_product_qrcode.customer_qr_template' + + @api.model + def _get_report_values(self, docids, data=None): + """Get the report values for generating the customer QR template.""" + if data['type'] == 'cust': + dat = [request.env['res.partner'].browse(data['data'])] + elif data['type'] == 'all': + dat = [request.env['product.product'].search( + [('product_tmpl_id', '=', data['data'])])] + else: + dat = request.env['product.product'].browse(data['data']) + return { + 'data': dat, + } diff --git a/customer_product_qrcode/report/report_action.xml b/customer_product_qrcode/report/report_action.xml new file mode 100755 index 000000000..53cbc4f59 --- /dev/null +++ b/customer_product_qrcode/report/report_action.xml @@ -0,0 +1,41 @@ + + + + + + QR code + res.partner + qweb-pdf + customer_product_qrcode.customer_qr_template + customer_product_qrcode.customer_qr_template + + '%s - Badge' % object.name + + report + + + + QR code + product.product + qweb-pdf + customer_product_qrcode.customer_qr_template + customer_product_qrcode.customer_qr_template + + '%s - Badge' % object.name + + report + + + + QR code + product.template + qweb-pdf + customer_product_qrcode.customer_qr_template + customer_product_qrcode.customer_qr_template + + '%s - Badge' % object.name + + report + + + diff --git a/customer_product_qrcode/static/description/assets/icons/check.png b/customer_product_qrcode/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/check.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/chevron.png b/customer_product_qrcode/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/chevron.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/cogs.png b/customer_product_qrcode/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/cogs.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/consultation.png b/customer_product_qrcode/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/consultation.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/ecom-black.png b/customer_product_qrcode/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/ecom-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/education-black.png b/customer_product_qrcode/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/education-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/hotel-black.png b/customer_product_qrcode/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/hotel-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/license.png b/customer_product_qrcode/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/license.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/lifebuoy.png b/customer_product_qrcode/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/lifebuoy.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/manufacturing-black.png b/customer_product_qrcode/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/manufacturing-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/pos-black.png b/customer_product_qrcode/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/pos-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/puzzle.png b/customer_product_qrcode/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/puzzle.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/restaurant-black.png b/customer_product_qrcode/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/restaurant-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/service-black.png b/customer_product_qrcode/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/service-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/trading-black.png b/customer_product_qrcode/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/trading-black.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/training.png b/customer_product_qrcode/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/training.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/update.png b/customer_product_qrcode/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/update.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/user.png b/customer_product_qrcode/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/user.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/wrench.png b/customer_product_qrcode/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/wrench.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/Cybrosys R.png b/customer_product_qrcode/static/description/assets/misc/Cybrosys R.png new file mode 100644 index 000000000..da4058087 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/Cybrosys R.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/categories.png b/customer_product_qrcode/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/categories.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/check-box.png b/customer_product_qrcode/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/check-box.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/compass.png b/customer_product_qrcode/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/compass.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/corporate.png b/customer_product_qrcode/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/corporate.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/customer-support.png b/customer_product_qrcode/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/customer-support.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/cybrosys-logo.png b/customer_product_qrcode/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/cybrosys-logo.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/email.svg b/customer_product_qrcode/static/description/assets/misc/email.svg new file mode 100644 index 000000000..15291cdc3 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/email.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/features.png b/customer_product_qrcode/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/features.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/logo.png b/customer_product_qrcode/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/logo.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/phone.svg b/customer_product_qrcode/static/description/assets/misc/phone.svg new file mode 100644 index 000000000..b7bd7f251 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/customer_product_qrcode/static/description/assets/misc/pictures.png b/customer_product_qrcode/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/pictures.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/pie-chart.png b/customer_product_qrcode/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/pie-chart.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/right-arrow.png b/customer_product_qrcode/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/right-arrow.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/star (1) 2.svg b/customer_product_qrcode/static/description/assets/misc/star (1) 2.svg new file mode 100644 index 000000000..5ae9f507a --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/star (1) 2.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/star.png b/customer_product_qrcode/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/star.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/support (1) 1.svg b/customer_product_qrcode/static/description/assets/misc/support (1) 1.svg new file mode 100644 index 000000000..7d37a8f30 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/support (1) 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/support-email.svg b/customer_product_qrcode/static/description/assets/misc/support-email.svg new file mode 100644 index 000000000..eb70370d6 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/support-email.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/support.png b/customer_product_qrcode/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/support.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/tick-mark.svg b/customer_product_qrcode/static/description/assets/misc/tick-mark.svg new file mode 100644 index 000000000..2dbb40187 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/tick-mark.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/whatsapp 1.svg b/customer_product_qrcode/static/description/assets/misc/whatsapp 1.svg new file mode 100644 index 000000000..0bfaf8fc6 --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/whatsapp 1.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/misc/whatsapp.png b/customer_product_qrcode/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/misc/whatsapp.png differ diff --git a/customer_product_qrcode/static/description/assets/misc/whatsapp.svg b/customer_product_qrcode/static/description/assets/misc/whatsapp.svg new file mode 100644 index 000000000..b618aea1d --- /dev/null +++ b/customer_product_qrcode/static/description/assets/misc/whatsapp.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/customer_product_qrcode/static/description/assets/modules/1.png b/customer_product_qrcode/static/description/assets/modules/1.png new file mode 100644 index 000000000..ba1058c42 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/1.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/2.png b/customer_product_qrcode/static/description/assets/modules/2.png new file mode 100644 index 000000000..6949185dd Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/2.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/3.png b/customer_product_qrcode/static/description/assets/modules/3.png new file mode 100644 index 000000000..4e506f79b Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/3.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/4.png b/customer_product_qrcode/static/description/assets/modules/4.png new file mode 100644 index 000000000..e78427938 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/4.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/5.gif b/customer_product_qrcode/static/description/assets/modules/5.gif new file mode 100644 index 000000000..2a5f8e659 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/5.gif differ diff --git a/customer_product_qrcode/static/description/assets/modules/5.png b/customer_product_qrcode/static/description/assets/modules/5.png new file mode 100755 index 000000000..272ec20f9 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/5.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/6.png b/customer_product_qrcode/static/description/assets/modules/6.png new file mode 100644 index 000000000..7d5c3154f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/6.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/l2.png b/customer_product_qrcode/static/description/assets/modules/l2.png new file mode 100644 index 000000000..f40a0756d Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/l2.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/l3.png b/customer_product_qrcode/static/description/assets/modules/l3.png new file mode 100644 index 000000000..5738a486e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/l3.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/l4.png b/customer_product_qrcode/static/description/assets/modules/l4.png new file mode 100644 index 000000000..8d99e8c68 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/l4.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/l5.png b/customer_product_qrcode/static/description/assets/modules/l5.png new file mode 100644 index 000000000..3415917c2 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/l5.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/l6.png b/customer_product_qrcode/static/description/assets/modules/l6.png new file mode 100644 index 000000000..c7ea331ee Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/l6.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/hero.gif b/customer_product_qrcode/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..5ba4a2b50 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/hero.gif differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/screenshot1.png b/customer_product_qrcode/static/description/assets/screenshots/screenshot1.png new file mode 100644 index 000000000..8f11fd9e4 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/screenshot1.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/screenshot2.png b/customer_product_qrcode/static/description/assets/screenshots/screenshot2.png new file mode 100644 index 000000000..a46db2fa9 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/screenshot2.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/screenshot3.png b/customer_product_qrcode/static/description/assets/screenshots/screenshot3.png new file mode 100644 index 000000000..67f02489d Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/screenshot3.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/screenshot4.png b/customer_product_qrcode/static/description/assets/screenshots/screenshot4.png new file mode 100644 index 000000000..07eed4b14 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/screenshot4.png differ diff --git a/customer_product_qrcode/static/description/banner.jpg b/customer_product_qrcode/static/description/banner.jpg new file mode 100644 index 000000000..655cf38f5 Binary files /dev/null and b/customer_product_qrcode/static/description/banner.jpg differ diff --git a/customer_product_qrcode/static/description/icon.png b/customer_product_qrcode/static/description/icon.png new file mode 100644 index 000000000..8d98efdc3 Binary files /dev/null and b/customer_product_qrcode/static/description/icon.png differ diff --git a/customer_product_qrcode/static/description/index.html b/customer_product_qrcode/static/description/index.html new file mode 100644 index 000000000..cc2a36548 --- /dev/null +++ b/customer_product_qrcode/static/description/index.html @@ -0,0 +1,703 @@ + + + + + + + Odoo App 3 Index + + + + + + + + +
+
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+
+ Odoo.sh +
+
+
+
+
+
+

+ Customer + and Product QR Code Generator

+

+ Generate Unique QR Codes for + Customers and Products.

+ +

+
+ +
+
+
+
+
+

+ Key Highlights +

+
+
+
+
+
+ +
+
+

+ Easily Browse

+

The Customer and Product QR Code + Generator allows the users to scan QR codes simply and easily + from within your browser. +

+
+
+
+
+
+
+ +
+
+

+ Unique Qr code.

+

This module helps to set up a unique QR code to both your + products and customers.

+
+
+
+
+
+
+ +
+
+
+
+
+ + +
+
+

+ Set the product and + customer prefixes from General Settings Menu. + Set a Unique and Denotable Prefix to Your Customers

+
+
+
+
+
+
+ + +
+
+

Goto The Customer or + Product Form.Click the Generate QR Button. + The QR Sequence will be generated and the QR Code will be printed as a PDF. +

+
+
+
+
+
+
+ + +
+
+

+ Each Customer or + Product will have a unique qr sequence. Simply go to scan from menu bar + and grant access to your device camera, you’re ready to scan a QR code using your + laptop or mobile devices

+
+
+
+
+ +
+
+
    +
  • + Enables to configure a word prefix to QR code for unique identification. +
  • +
  • + QR code for whole product template variants. + +
  • +
  • + Unique QR code for products and customers. +
  • +
  • + QR code for individual product variants. +
  • + +
+
+
+
+
+
+
Version + 17.0.1.0.0|Released on:13th November 2023 +
+

+ + Initial Commit for Customer + and Product QR Code Generator.

+
+
+
+
+
+
+
+

+ Related Products

+
+
+ +
+
+

+ Our Services

+ +
+
+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Customization

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Support

+
+
+
+
+
+
+ service-icon +
+
+

Hire + Odoo Developer

+
+
+
+
+ +
+
+ service-icon +
+
+

Odoo + Integration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Migration

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Consultancy

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Implementation

+
+
+
+
+
+
+ service-icon +
+
+

Odoo + Licensing Consultancy

+
+
+
+
+
+
+

+ Our Industries

+ +
+
+
+
+
+
+ +

Trading

+

Easily procure and sell your products

+
+
+
+
+ +

POS

+

Easy configuration and convivial experience

+
+
+
+
+ +

+ Education

+

A platform for educational management

+
+
+
+
+ +

+ Manufacturing

+

Plan, track and schedule your operations

+
+
+
+
+ +

E-commerce & + Website

+

Mobile friendly, awe-inspiring product pages

+
+
+
+
+ +

Service + Management

+

Keep track of services and invoice

+
+
+
+
+ +

+ Restaurant

+

Run your bar or restaurant methodically

+
+
+
+
+ +

Hotel + Management

+

An all-inclusive hotel management application

+
+
+
+
+
+
+

+ Support

+
+
+
+
+
+
+
+ +
+ Need + Help? +

Got + questions or need help? Get in touch.

+
odoo@cybrosys.com +
+
+
+
+
+
+
+
+ +
+ WhatsApp +

Say hi to + us on WhatsApp!

+
+91 + 99456767686 +
+
+
+
+
+
+
+
+
+ + + + + + diff --git a/customer_product_qrcode/views/product_product_view.xml b/customer_product_qrcode/views/product_product_view.xml new file mode 100644 index 000000000..78e2ae7cb --- /dev/null +++ b/customer_product_qrcode/views/product_product_view.xml @@ -0,0 +1,21 @@ + + + + + product.product.form.qr.inherit + product.product + + +
+ +
+ + + + +
+
diff --git a/customer_product_qrcode/views/product_template_view.xml b/customer_product_qrcode/views/product_template_view.xml new file mode 100644 index 000000000..d59bc592b --- /dev/null +++ b/customer_product_qrcode/views/product_template_view.xml @@ -0,0 +1,17 @@ + + + + + product.template.form.qr.inherit + product.template + + +
+ +
+
+
+
diff --git a/customer_product_qrcode/views/res_config_settings_view.xml b/customer_product_qrcode/views/res_config_settings_view.xml new file mode 100644 index 000000000..04591b8f1 --- /dev/null +++ b/customer_product_qrcode/views/res_config_settings_view.xml @@ -0,0 +1,41 @@ + + + + + res.config.inherit.qr + res.config.settings + + + +
+

Setup QRCode

+
+
+
+
+
+
+
+
+
+
+
diff --git a/customer_product_qrcode/views/res_partner_view.xml b/customer_product_qrcode/views/res_partner_view.xml new file mode 100644 index 000000000..6ee569464 --- /dev/null +++ b/customer_product_qrcode/views/res_partner_view.xml @@ -0,0 +1,21 @@ + + + + + res.partner.form.qr.inherit + res.partner + + +
+ +
+ + + + +
+