Browse Source

Apr 22 [IMP] : Updated 'customer_product_qrcode'

pull/317/head
AjmalCybro 1 year ago
parent
commit
236b3bf050
  1. 8
      customer_product_qrcode/__init__.py
  2. 6
      customer_product_qrcode/__manifest__.py
  3. 28
      customer_product_qrcode/data/ir_actions_server_data.xml
  4. 22
      customer_product_qrcode/models/product_product.py
  5. 14
      customer_product_qrcode/models/product_template.py
  6. 20
      customer_product_qrcode/models/res_partner.py
  7. 12
      customer_product_qrcode/report/report_action.xml

8
customer_product_qrcode/__init__.py

@ -20,10 +20,4 @@
#############################################################################
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()

6
customer_product_qrcode/__manifest__.py

@ -29,21 +29,21 @@
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['base', 'sale', 'stock'],
'depends': ['base', 'sale_management', 'stock'],
'data': [
'data/sequence.xml',
'data/ir_actions_server_data.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',
'report/paperformat.xml',
'report/report_action.xml',
'report/customer_product_qrcode_template.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'LGPL-3',
'installable': True,
'auto_install': False,
'application': False,
'post_init_hook': '_set_qr'
}

28
customer_product_qrcode/data/ir_actions_server_data.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="generate_qr_partner_action" model="ir.actions.server">
<field name="name">Generate Qr</field>
<field name="model_id" ref="customer_product_qrcode.model_res_partner"/>
<field name="binding_model_id" ref="customer_product_qrcode.model_res_partner"/>
<field name="binding_view_types">form,list</field>
<field name="state">code</field>
<field name="code">
for record in records:
if not record.sequence:
action = record.generate_sequence()
</field>
</record>
<record id="generate_qr_product_action" model="ir.actions.server">
<field name="name">Generate Qr</field>
<field name="model_id" ref="customer_product_qrcode.model_product_product"/>
<field name="binding_model_id" ref="customer_product_qrcode.model_product_product"/>
<field name="binding_view_types">form,list</field>
<field name="state">code</field>
<field name="code">
for record in records:
if not record.sequence:
action = record.generate_sequence()
</field>
</record>
</odoo>

22
customer_product_qrcode/models/product_product.py

@ -66,20 +66,22 @@ class ProductProduct(models.Model):
vals.update({'qr': qr_image})
return super().create(vals)
@api.depends('sequence')
def generate_sequence(self):
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 '/'
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 '/'
self.generate_sequence()
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
@ -94,7 +96,7 @@ class ProductProduct(models.Model):
qr_image = base64.b64encode(temp.getvalue())
self.write({'qr': qr_image})
return self.env.ref(
'customer_product_qrcode.print_qr2').report_action(self, data={
'customer_product_qrcode.print_qr1').report_action(self, data={
'data': self.id, 'type': 'prod'})
else:
raise UserError(

14
customer_product_qrcode/models/product_template.py

@ -19,6 +19,7 @@
#
#############################################################################
from odoo import models
from odoo.exceptions import UserError
class ProductTemplate(models.Model):
@ -26,12 +27,13 @@ class ProductTemplate(models.Model):
related product variants."""
_inherit = 'product.template'
def generate_sequence(self):
for rec in self.product_variant_ids:
if not rec.sequence:
rec.generate_sequence()
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'})
for rec in self.product_variant_ids:
return rec.generate_qr()

20
customer_product_qrcode/models/res_partner.py

@ -66,20 +66,22 @@ class ResPartners(models.Model):
""" this fn is to write vals"""
return super().write(vals)
@api.depends('sequence')
def generate_sequence(self):
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 '/'
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 '/'
self.generate_sequence()
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,

12
customer_product_qrcode/report/report_action.xml

@ -25,17 +25,5 @@
<field name="binding_model_id" ref="model_product_product"/>
<field name="binding_type">report</field>
</record>
<!-- report action for product template-->
<record id="customer_product_qrcode.print_qr2" model="ir.actions.report">
<field name="name">QR code</field>
<field name="model">product.template</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">customer_product_qrcode.customer_qr_template</field>
<field name="report_file">customer_product_qrcode.customer_qr_template</field>
<field name="paperformat_id" ref="customer_product_qrcode.customer_badge_paperformat"/>
<field name="print_report_name">'%s - Badge' % object.name</field>
<field name="binding_model_id" ref="model_product_template"/>
<field name="binding_type">report</field>
</record>
</data>
</odoo>

Loading…
Cancel
Save