diff --git a/customer_product_qrcode/README.rst b/customer_product_qrcode/README.rst new file mode 100755 index 000000000..dcade480d --- /dev/null +++ b/customer_product_qrcode/README.rst @@ -0,0 +1,44 @@ +Customer and Product QR Code Generator +====================================== +The Customer and Product QRCode Generator Helps You to Generate Unique +QR Codes to your Products or Customers + +Installation +============ + - www.odoo.com/documentation/13.0/setup/install.html + - Install our custom addon + +License +------- +General Public License, Version 3 (LGPL v3). +(https://www.odoo.com/documentation/user/13.0/legal/licenses/licenses.html) + +Company +------- +* 'Cybrosys Techno Solutions `__ + +Credits +------- +* Developer: +(v13) Sarath Suresh @ Cybrosys + + +Contacts +-------- +* Mail Contact : odoo@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 +========== +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit https://www.cybrosys.com + +Further information +=================== +HTML Description: ``__ + + diff --git a/customer_product_qrcode/__init__.py b/customer_product_qrcode/__init__.py new file mode 100755 index 000000000..10c14e95d --- /dev/null +++ b/customer_product_qrcode/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER 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, registry): + 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() \ No newline at end of file diff --git a/customer_product_qrcode/__manifest__.py b/customer_product_qrcode/__manifest__.py new file mode 100755 index 000000000..26a037066 --- /dev/null +++ b/customer_product_qrcode/__manifest__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': 'Customer and Product QR Code Generator', + 'version': '13.0.1.0.0', + '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', + 'category': 'Extra Tools', + 'author': 'Cybrosys Techno solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'website': 'https://www.cybrosys.com', + 'depends': ['base', 'sale', 'stock'], + 'data': [ + 'report/paperformat.xml', + 'report/report.xml', + 'views/view.xml', + 'report/template.xml', + ], + 'images': ['static/description/banner.png'], + 'installable': True, + 'application': False, + 'auto_install': False, + 'license': 'LGPL-3', + 'post_init_hook': '_set_qr' +} diff --git a/customer_product_qrcode/models/__init__.py b/customer_product_qrcode/models/__init__.py new file mode 100755 index 000000000..f2c5a4636 --- /dev/null +++ b/customer_product_qrcode/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models diff --git a/customer_product_qrcode/models/models.py b/customer_product_qrcode/models/models.py new file mode 100755 index 000000000..0beb8abdd --- /dev/null +++ b/customer_product_qrcode/models/models.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER 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 models, fields, api, _, SUPERUSER_ID +from odoo.exceptions import UserError + + +class Partners(models.Model): + _inherit = 'res.partner' + + sequence = fields.Char(string="QR Sequence", readonly=True) + qr = fields.Binary(string="QR Code") + + def init(self): + 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): + prefix = str(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')) + seq = prefix + self.env['ir.sequence'].next_by_code( + 'res.partner') or '/' + vals['sequence'] = seq + return super(Partners, self).create(vals) + + @api.depends('sequence') + def generate_qr(self): + if qrcode and base64: + if not self.sequence: + prefix = str(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')) + 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): + return self.env['res.partner'].search([('sequence', '=', self.id), ], + limit=1).id + + +class Products(models.Model): + _inherit = 'product.product' + + sequence = fields.Char(string="QR Sequence", readonly=True) + qr = fields.Binary(string="QR Code") + + @api.model + def create(self, vals): + prefix = str(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')) + 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(Products, self).create(vals) + + @api.depends('sequence') + def generate_qr(self): + if qrcode and base64: + if not self.sequence: + prefix = str(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')) + 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): + return self.env['product.product'].search( + [('sequence', '=', self.id), ], limit=1).id + + +class ProductTemplate(models.Model): + _inherit = 'product.template' + + def generate_qr(self): + 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'}) + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + customer_prefix = fields.Char(string="Customer QR Prefix") + product_prefix = fields.Char(string="Product QR Prefix") + + def get_values(self): + res = super(ResConfigSettings, self).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): + 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) diff --git a/customer_product_qrcode/report/__init__.py b/customer_product_qrcode/report/__init__.py new file mode 100755 index 000000000..f2bf61f54 --- /dev/null +++ b/customer_product_qrcode/report/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import parser diff --git a/customer_product_qrcode/report/paperformat.xml b/customer_product_qrcode/report/paperformat.xml new file mode 100755 index 000000000..dab9a0264 --- /dev/null +++ b/customer_product_qrcode/report/paperformat.xml @@ -0,0 +1,17 @@ + + + PDF Report + + custom + 100 + 100 + Portrait + 10 + 0 + 10 + 10 + + 80 + 90 + + \ No newline at end of file diff --git a/customer_product_qrcode/report/parser.py b/customer_product_qrcode/report/parser.py new file mode 100755 index 000000000..ce56917eb --- /dev/null +++ b/customer_product_qrcode/report/parser.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2021-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from odoo import models, api +from odoo.http import request + + +class CustomerBadge(models.AbstractModel): + _name = 'report.customer_product_qrcode.customer_qr_template' + + @api.model + def _get_report_values(self, docids, data=None): + 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.xml b/customer_product_qrcode/report/report.xml new file mode 100755 index 000000000..c222114a7 --- /dev/null +++ b/customer_product_qrcode/report/report.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/customer_product_qrcode/report/template.xml b/customer_product_qrcode/report/template.xml new file mode 100755 index 000000000..aee077c66 --- /dev/null +++ b/customer_product_qrcode/report/template.xml @@ -0,0 +1,48 @@ + + + + + + \ No newline at end of file diff --git a/customer_product_qrcode/static/description/assets/arrow-circle-black.png b/customer_product_qrcode/static/description/assets/arrow-circle-black.png new file mode 100644 index 000000000..e8948eb73 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/arrow-circle-black.png differ diff --git a/customer_product_qrcode/static/description/assets/arrow-circle-magenta.png b/customer_product_qrcode/static/description/assets/arrow-circle-magenta.png new file mode 100644 index 000000000..91c3c11b8 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/arrow-circle-magenta.png differ diff --git a/customer_product_qrcode/static/description/assets/customerqrsystem.png b/customer_product_qrcode/static/description/assets/customerqrsystem.png new file mode 100644 index 000000000..949869b11 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/customerqrsystem.png differ diff --git a/customer_product_qrcode/static/description/assets/hero.gif b/customer_product_qrcode/static/description/assets/hero.gif new file mode 100644 index 000000000..24322b395 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/hero.gif differ diff --git a/customer_product_qrcode/static/description/assets/icons/ecom.png b/customer_product_qrcode/static/description/assets/icons/ecom.png new file mode 100644 index 000000000..6e720d50e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/ecom.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/education.png b/customer_product_qrcode/static/description/assets/icons/education.png new file mode 100644 index 000000000..f0de98eb0 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/education.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/hotel.png b/customer_product_qrcode/static/description/assets/icons/hotel.png new file mode 100644 index 000000000..917c6a63e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/hotel.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/manufacturing.png b/customer_product_qrcode/static/description/assets/icons/manufacturing.png new file mode 100644 index 000000000..68c3722f8 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/manufacturing.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/pos.png b/customer_product_qrcode/static/description/assets/icons/pos.png new file mode 100644 index 000000000..600bfe4f9 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/pos.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/restaurant.png b/customer_product_qrcode/static/description/assets/icons/restaurant.png new file mode 100644 index 000000000..680acf29e Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/restaurant.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/service.png b/customer_product_qrcode/static/description/assets/icons/service.png new file mode 100644 index 000000000..bfbe7a6d2 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/service.png differ diff --git a/customer_product_qrcode/static/description/assets/icons/trading.png b/customer_product_qrcode/static/description/assets/icons/trading.png new file mode 100644 index 000000000..a741219b5 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/icons/trading.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/advanced_ecom.png b/customer_product_qrcode/static/description/assets/modules/advanced_ecom.png new file mode 100644 index 000000000..9913652e1 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/advanced_ecom.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/export_excel.png b/customer_product_qrcode/static/description/assets/modules/export_excel.png new file mode 100644 index 000000000..d09dd347f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/export_excel.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/functional_tutorial.png b/customer_product_qrcode/static/description/assets/modules/functional_tutorial.png new file mode 100644 index 000000000..ff6b701b5 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/functional_tutorial.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/gantt_view.png b/customer_product_qrcode/static/description/assets/modules/gantt_view.png new file mode 100644 index 000000000..0b3e0bc3f Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/gantt_view.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/mobile_service.png b/customer_product_qrcode/static/description/assets/modules/mobile_service.png new file mode 100644 index 000000000..68d11114c Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/mobile_service.png differ diff --git a/customer_product_qrcode/static/description/assets/modules/shopify_connector.png b/customer_product_qrcode/static/description/assets/modules/shopify_connector.png new file mode 100644 index 000000000..e734546e4 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/modules/shopify_connector.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/customerQrcode.png b/customer_product_qrcode/static/description/assets/screenshots/customerQrcode.png new file mode 100644 index 000000000..830fa4742 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/customerQrcode.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/customer_qr.png b/customer_product_qrcode/static/description/assets/screenshots/customer_qr.png new file mode 100644 index 000000000..d665dcbd5 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/customer_qr.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/product_qr.png b/customer_product_qrcode/static/description/assets/screenshots/product_qr.png new file mode 100644 index 000000000..5a6a0326a Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/product_qr.png differ diff --git a/customer_product_qrcode/static/description/assets/screenshots/setup_qr.png b/customer_product_qrcode/static/description/assets/screenshots/setup_qr.png new file mode 100644 index 000000000..0995a6355 Binary files /dev/null and b/customer_product_qrcode/static/description/assets/screenshots/setup_qr.png differ diff --git a/customer_product_qrcode/static/description/banner.png b/customer_product_qrcode/static/description/banner.png new file mode 100644 index 000000000..88453d3d0 Binary files /dev/null and b/customer_product_qrcode/static/description/banner.png 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..02fada5ec 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..9bee09f97 --- /dev/null +++ b/customer_product_qrcode/static/description/index.html @@ -0,0 +1,653 @@ +
+
+
+
+

+ Customer and Product QR Code Generator +

+

+ Generate Unique QR Codes for Customers and Products +

+

+ Key Highlights +

+ +
+
+ +
+
+

+ Unique QR code for products and customers. +

+
+
+
+
+ +
+
+

+ Enables to configure a word prefix to QR code for unique + identification. +

+
+
+ +
+
+ +
+
+

+ QR code for individual product variants. +

+
+
+ +
+
+ +
+
+

+ QR code for whole product template variants. +

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

+ Overview +

+

+ If QR codes aren't the part of your current marketing strategy, + you might be missing the large chunks of benefits. Use QR codes + to generate customer interest, drive traffic, and increase sales + via print, online, or email. The Customer and Product QR Code + Generator allows the users to scan QR codes simply and easily + from within your browser. + This module helps to set up a unique QR code to both your + products and customers. +

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

+ Features +

+
+
+ +
+
+

+ Unique QR code for products and customers.

+
+
+
+
+ +
+
+

+ Enables to configure a word prefix to QR code for unique + identification.

+
+
+
+
+ +
+
+

+ QR code for individual product variants.

+
+
+
+
+ +
+
+

+ QR code for whole product template variants.

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

+ SCREENSHOTS +

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

+ Suggested Products +

+
+
+
+ +
+
+ + +
+
+
+ Odoo Gold Partner + +
+
+
+ + +
+ +
+ + +
+
+
+
+

+ Need Help? +

+
+
+ + +
+ +
+

Do you have any queries + regarding + our + products & services? Let us know.

+ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/customer_product_qrcode/views/view.xml b/customer_product_qrcode/views/view.xml new file mode 100755 index 000000000..400d93a1e --- /dev/null +++ b/customer_product_qrcode/views/view.xml @@ -0,0 +1,105 @@ + + + + + res.partner.form.qr.inherit + res.partner + + +
+ +
+ + + + +
+ + product.product.form.qr.inherit + product.product + + +
+ +
+ + + + +
+ + product.template.form.qr.inherit + product.template + + +
+ + +
+
+
+ + res.config.inherit.qr + res.config.settings + + + +
+

Setup QRCode

+
+
+
+
+
+
+
+
+
+
+
+ + + customer_sequence + res.partner + + 5 + + + + + product_sequence + product.product + + 5 + + +
\ No newline at end of file