gooderp18绿色标准版
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.

87 lines
3.6KB

  1. # -*- coding: utf-8 -*-
  2. from odoo import models, fields, api
  3. from odoo.exceptions import UserError
  4. class Goods(models.Model):
  5. _inherit = 'goods'
  6. specification = fields.Char('规格型号', help='规格型号,如果商品有产品图纸,此处填写产品图号')
  7. # 产品显示品牌、名称、内部编号、规格型号。
  8. @api.depends('name','code','specification')
  9. def _compute_display_name(self):
  10. for good in self:
  11. if good.name:
  12. name_display = good.name
  13. else:
  14. name_display = ""
  15. if good.code:
  16. code_display = "[" + good.code + "]"
  17. else:
  18. code_display = ""
  19. if good.specification:
  20. specification_display = "[" + good.specification + "]"
  21. else:
  22. specification_display = ""
  23. good.display_name = code_display + name_display + specification_display
  24. @api.model
  25. def name_search(self, name='', args=None, operator='ilike', limit=100):
  26. """在many2one字段中支持按编号、图号、规格型号、品牌搜索"""
  27. args = args or []
  28. code_search_goods = []
  29. # brand_id_search_goods = []
  30. specification_search_goods = []
  31. if name:
  32. goods_id = self.search([('code', '=', name)])
  33. if goods_id:
  34. return goods_id.name_get()
  35. args.append(('code', 'ilike', name))
  36. goods_ids = self.search(args)
  37. if goods_ids:
  38. code_search_goods = goods_ids.name_get()
  39. args.remove(('code', 'ilike', name))
  40. """在many2one字段中支持按规格型号搜索"""
  41. args.append(('specification', 'ilike', name))
  42. my_goods_ids = self.search(args)
  43. if my_goods_ids:
  44. specification_search_goods = my_goods_ids.name_get()
  45. args.remove(('specification', 'ilike', name))
  46. # """在many2one字段中支持按品牌搜索"""
  47. # args.append(('brand_id', 'ilike', name))
  48. # my_goods_ids = self.search(args)
  49. # if my_goods_ids:
  50. # brand_id_search_goods = my_goods_ids.name_get()
  51. # args.remove(('brand_id', 'ilike', name))
  52. # """在many2one字段中支持按型号搜索"""
  53. # args.append(('specification', 'ilike', name))
  54. # my_goods_ids = self.search(args)
  55. # if my_goods_ids:
  56. # specification_search_goods = my_goods_ids.name_get()
  57. # args.remove(('specification', 'ilike', name))
  58. search_goods = super(Goods, self).name_search(
  59. name=name, args=args,
  60. operator=operator, limit=limit
  61. )
  62. for good_tup in code_search_goods: # 去除重复产品
  63. if good_tup not in search_goods:
  64. search_goods.append(good_tup)
  65. # for good_tup in brand_id_search_goods: # 去除重复产品
  66. # if good_tup not in search_goods:
  67. # search_goods.append(good_tup)
  68. for good_tup in specification_search_goods: # 去除重复产品
  69. if good_tup not in search_goods:
  70. search_goods.append(good_tup)
  71. return search_goods
  72. @api.model_create_multi
  73. def create(self, values):
  74. for line in values:
  75. if line.get('code', False) and self.search(
  76. [('code', '=', line.get('code', False)), ('active', 'in', [True, False])]):
  77. raise UserError(f'当前编码 {line.get("code")} 已存在,请检查后重新确认。')
  78. return super(Goods, self).create(values)
上海开阖软件有限公司 沪ICP备12045867号-1