1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -*-
# Copyright (C) 2016-Today: La Louve (<http://www.lalouve.net/>)
# @author: La Louve
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html
from openerp import api, fields, models
import openerp.addons.decimal_precision as dp
class ProductTemplate(models.Model):
_inherit = 'product.template'
scale_logo_code = fields.Char(string="Scale Logo Code", readonly=True)
weight_net = fields.Float(digits=dp.get_precision('Net Weight'))
volume = fields.Float(digits=dp.get_precision('Volume'))
@api.model
def create(self, vals):
vals['scale_logo_code'] = '1'
if 'label_ids' in vals:
label_ids_val = vals.get("label_ids", [])
if label_ids_val and isinstance(label_ids_val, list) and \
len(label_ids_val[0]) == 3:
label_ids = label_ids_val[0][2]
labels = self.env['product.label'].browse(label_ids)
vals['scale_logo_code'] = labels and \
labels[0].scale_logo_code or '1'
res = super(ProductTemplate, self).create(vals)
return res
@api.multi
def write(self, vals):
if 'label_ids' in vals:
for product in self:
current_logo_code = product.scale_logo_code
res = super(ProductTemplate, product).write(vals)
# Browse again to see check the value
updated_prod = self.browse(product.id)
new_logo_code = updated_prod.label_ids and \
updated_prod.label_ids[0].scale_logo_code or '1'
# Only trigger the change if it is actually change
if current_logo_code != new_logo_code:
res = super(ProductTemplate, updated_prod).write(
{'scale_logo_code': new_logo_code}
)
else:
return super(ProductTemplate, self).write(vals)
return res