You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
5.4 KiB
114 lines
5.4 KiB
from odoo import api, fields, models, _
|
|
import datetime
|
|
from odoo.exceptions import UserError
|
|
|
|
|
|
class ResConfigSettings(models.TransientModel):
|
|
_inherit = 'res.config.settings'
|
|
|
|
active_standard_price = fields.Boolean(string='Standard price as a code',
|
|
help="check this box to show cost on the product labels as code")
|
|
active_ref = fields.Boolean(string='Show product reference ',
|
|
help="check this box to show product reference as in product labels")
|
|
|
|
@api.model
|
|
def get_values(self):
|
|
res = super(ResConfigSettings, self).get_values()
|
|
params = self.env['ir.config_parameter'].sudo()
|
|
active_standard_price = params.get_param('active_standard_price', default=False)
|
|
active_ref = params.get_param('active_ref', default=False)
|
|
res.update(
|
|
active_standard_price=bool(active_standard_price),
|
|
active_ref=bool(active_ref),
|
|
)
|
|
return res
|
|
|
|
|
|
def set_values(self):
|
|
super(ResConfigSettings, self).set_values()
|
|
self.env['ir.config_parameter'].sudo().set_param("active_standard_price",
|
|
self.active_standard_price)
|
|
self.env['ir.config_parameter'].sudo().set_param("active_ref",
|
|
self.active_ref)
|
|
|
|
|
|
class CustomizeBarcodeGenerator(models.Model):
|
|
_name = 'barcode.code'
|
|
name = fields.Char(default='Numeric Code')
|
|
code_for_zero = fields.Char(string=' 0 ', required=True, limit=1, size=1,
|
|
default='a', help="insert substitute code ")
|
|
code_for_one = fields.Char(string='1 ', required=True, limit=1, size=1,
|
|
default='b', help="insert substitute code ")
|
|
code_for_two = fields.Char(string='2 ', required=True, limit=1, size=1,
|
|
default='c', help="insert substitute code ")
|
|
code_for_three = fields.Char(string='3 ', required=True, limit=1, size=1,
|
|
default='d', help="insert substitute code ")
|
|
code_for_four = fields.Char(string='4 ', required=True, limit=1, size=1,
|
|
default='e', help="insert substitute code ")
|
|
code_for_five = fields.Char(string='5 ', required=True, limit=1, size=1,
|
|
default='f', help="insert substitute code ")
|
|
code_for_six = fields.Char(string='6 ', required=True, limit=1, size=1,
|
|
default='g', help="insert substitute code ")
|
|
code_for_seven = fields.Char(string='7 ', required=True, limit=1, size=1,
|
|
default='h', help="insert substitute code ")
|
|
code_for_eight = fields.Char(string='8 ', required=True, limit=1, size=1,
|
|
default='i', help="insert substitute code ")
|
|
code_for_nine = fields.Char(string='9 ', required=True, limit=1, size=1,
|
|
default='j', help="insert substitute code ")
|
|
active_check = fields.Boolean(string="Active", default=False)
|
|
date_check = fields.Datetime(default=datetime.datetime.today(), string="Date")
|
|
|
|
|
|
@api.onchange('active_check')
|
|
def onchange_active_check(self):
|
|
for i in self.search([]):
|
|
if i.active_check == self.active_check and self.active_check:
|
|
self.active_check = False
|
|
raise UserError(_("Only one rule for code can be active at a time"))
|
|
|
|
|
|
class CostToCode(models.Model):
|
|
_inherit = 'product.template'
|
|
cost_in_code = fields.Char(string='Cost in code', compute='get_cost_in_code')
|
|
|
|
@api.depends('standard_price')
|
|
def get_cost_in_code(self):
|
|
code = self.env['barcode.code'].sudo().search([('active_check', '=', True)])
|
|
active_check = self.env['ir.config_parameter'].sudo().search([('key','=','active_standard_price'),('value','=',True)])
|
|
if active_check:
|
|
if code:
|
|
real = str(self.standard_price).split('.')[0]
|
|
for i in real:
|
|
if i == '0':
|
|
real = real.replace('0', code.code_for_zero)
|
|
elif i == '1':
|
|
real = real.replace('1', code.code_for_one)
|
|
elif i == '2':
|
|
real = real.replace('2', code.code_for_two)
|
|
elif i == '3':
|
|
real = real.replace('3', code.code_for_three)
|
|
elif i == '4':
|
|
real = real.replace('4', code.code_for_four)
|
|
elif i == '5':
|
|
real = real.replace('5', code.code_for_five)
|
|
elif i == '6':
|
|
real = real.replace('6', code.code_for_six)
|
|
elif i == '7':
|
|
real = real.replace('7', code.code_for_seven)
|
|
elif i == '8':
|
|
real = real.replace('8', code.code_for_eight)
|
|
else:
|
|
real = real.replace('9', code.code_for_nine)
|
|
print(real)
|
|
return real
|
|
else:
|
|
return " "
|
|
else:
|
|
return " "
|
|
|
|
def get_product_ref(self):
|
|
active_check = self.env['ir.config_parameter'].sudo().search([('key','=','active_ref'),('value','=',True)])
|
|
if active_check:
|
|
return self.default_code
|
|
else:
|
|
return " "
|
|
|