|
- # -*- coding: utf-8 -*-
-
- from odoo import models, fields, api
-
- from odoo.exceptions import UserError
-
-
- class Goods(models.Model):
- _inherit = 'goods'
-
- specification = fields.Char('规格型号', help='规格型号,如果商品有产品图纸,此处填写产品图号')
-
- # 产品显示品牌、名称、内部编号、规格型号。
- @api.depends('name','code','specification')
- def _compute_display_name(self):
- for good in self:
- if good.name:
- name_display = good.name
- else:
- name_display = ""
- if good.code:
- code_display = "[" + good.code + "]"
- else:
- code_display = ""
- if good.specification:
- specification_display = "[" + good.specification + "]"
- else:
- specification_display = ""
- good.display_name = code_display + name_display + specification_display
-
- @api.model
- def name_search(self, name='', args=None, operator='ilike', limit=100):
- """在many2one字段中支持按编号、图号、规格型号、品牌搜索"""
- args = args or []
- code_search_goods = []
- # brand_id_search_goods = []
- specification_search_goods = []
- if name:
- goods_id = self.search([('code', '=', name)])
- if goods_id:
- return goods_id.name_get()
- args.append(('code', 'ilike', name))
- goods_ids = self.search(args)
- if goods_ids:
- code_search_goods = goods_ids.name_get()
- args.remove(('code', 'ilike', name))
- """在many2one字段中支持按规格型号搜索"""
- args.append(('specification', 'ilike', name))
- my_goods_ids = self.search(args)
- if my_goods_ids:
- specification_search_goods = my_goods_ids.name_get()
- args.remove(('specification', 'ilike', name))
- # """在many2one字段中支持按品牌搜索"""
- # args.append(('brand_id', 'ilike', name))
- # my_goods_ids = self.search(args)
- # if my_goods_ids:
- # brand_id_search_goods = my_goods_ids.name_get()
- # args.remove(('brand_id', 'ilike', name))
- # """在many2one字段中支持按型号搜索"""
- # args.append(('specification', 'ilike', name))
- # my_goods_ids = self.search(args)
- # if my_goods_ids:
- # specification_search_goods = my_goods_ids.name_get()
- # args.remove(('specification', 'ilike', name))
- search_goods = super(Goods, self).name_search(
- name=name, args=args,
- operator=operator, limit=limit
- )
- for good_tup in code_search_goods: # 去除重复产品
- if good_tup not in search_goods:
- search_goods.append(good_tup)
- # for good_tup in brand_id_search_goods: # 去除重复产品
- # if good_tup not in search_goods:
- # search_goods.append(good_tup)
- for good_tup in specification_search_goods: # 去除重复产品
- if good_tup not in search_goods:
- search_goods.append(good_tup)
- return search_goods
-
- @api.model_create_multi
- def create(self, values):
- for line in values:
- if line.get('code', False) and self.search(
- [('code', '=', line.get('code', False)), ('active', 'in', [True, False])]):
- raise UserError(f'当前编码 {line.get("code")} 已存在,请检查后重新确认。')
- return super(Goods, self).create(values)
|