diff --git a/sf_base/models/base.py b/sf_base/models/base.py index d7a71e1e..54a1fe1f 100644 --- a/sf_base/models/base.py +++ b/sf_base/models/base.py @@ -421,3 +421,4 @@ class EmbryoRedundancy(models.Model): width = fields.Float('宽度(mm)', required=True) height = fields.Float('高度(mm)', required=True) active = fields.Boolean('有效', default=True) + remark = fields.Char('描述') diff --git a/sf_base/views/base_view.xml b/sf_base/views/base_view.xml index bd6f103b..ccac31c9 100644 --- a/sf_base/views/base_view.xml +++ b/sf_base/views/base_view.xml @@ -645,6 +645,7 @@ + diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index fbea675c..fc12ca79 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -777,33 +777,11 @@ class ResProductMo(models.Model): manual_quotation = fields.Boolean('人工编程', default=False, readonly=True) machining_drawings = fields.Binary('2D加工图纸', readonly=True) quality_standard = fields.Binary('质检标准', readonly=True) - part_name = fields.Char(string='零件名称', compute='_compute_related_product', readonly=True, store=True) - part_number = fields.Char(string='零件图号', compute='_compute_related_product', readonly=True, store=True) + part_name = fields.Char(string='零件名称', readonly=True) + part_number = fields.Char(string='零件图号', readonly=True) machining_drawings_name = fields.Char(string='零件图号名称', readonly=True) machining_drawings_mimetype = fields.Char(string='零件图号类型', readonly=True) - @api.depends('name') - def _compute_related_product(self): - for record in self: - if record.categ_id.name == '坯料': - product_name = '' - match = re.search(r'(S\d{5}-\d)', record.name) - # 如果匹配成功,提取结果 - if match: - product_name = match.group(0) - sale_order_name = '' - match_sale = re.search(r'S(\d+)', record.name) - if match_sale: - sale_order_name = match_sale.group(0) - sale_order = self.env['sale.order'].sudo().search( - [('name', '=', sale_order_name)]) - if sale_order: - filtered_order_line = sale_order.order_line.filtered( - lambda order_line: re.search(f'{product_name}$', order_line.product_id.name) - ) - record.part_number = filtered_order_line.product_id.part_number if filtered_order_line else None - record.part_name = filtered_order_line.product_id.part_name if filtered_order_line else None - @api.constrains('tool_length') def _check_tool_length_size(self): if self.tool_length > 1000000: diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 8f5e0023..c5047f6c 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -562,6 +562,18 @@ class StockPicking(models.Model): sale_order_id = fields.Many2one('sale.order', '销售单号', compute='_compute_move_ids', store=True) picking_type_sequence_code = fields.Char(related='picking_type_id.sequence_code') + part_numbers = fields.Char(string="零件图号", compute='_compute_part_info', store=True, index=True) + part_names = fields.Char(string="零件名称", compute='_compute_part_info', store=True, index=True) + + @api.depends('move_ids_without_package.part_number', 'move_ids_without_package.part_name') + def _compute_part_info(self): + for picking in self: + # 聚合所有关联行的 part_number 和 part_name + part_numbers = picking.move_ids_without_package.mapped('part_number') + part_names = picking.move_ids_without_package.mapped('part_name') + picking.part_numbers = ','.join(filter(None, part_numbers)) + picking.part_names = ','.join(filter(None, part_names)) + @api.depends('move_ids', 'move_ids.product_id') def _compute_move_ids(self): for item in self: diff --git a/sf_manufacturing/views/stock_picking_view.xml b/sf_manufacturing/views/stock_picking_view.xml index 3cb877a9..f5b1941b 100644 --- a/sf_manufacturing/views/stock_picking_view.xml +++ b/sf_manufacturing/views/stock_picking_view.xml @@ -68,14 +68,8 @@ context="{'group_by': 'retrospect_ref'}"/> - - + + @@ -97,7 +91,8 @@ True - diff --git a/sf_mrs_connect/models/sync_common.py b/sf_mrs_connect/models/sync_common.py index cd0d8405..652ec3eb 100644 --- a/sf_mrs_connect/models/sync_common.py +++ b/sf_mrs_connect/models/sync_common.py @@ -3214,6 +3214,7 @@ class EmbryoRedundancySync(models.Model): embryo_redundancy.width = item['width'] embryo_redundancy.height = item['height'] embryo_redundancy.active = item['active'] + embryo_redundancy.remark = item['remark'] else: self.env['sf.embryo.redundancy'].sudo().create({ "name": item['name'], @@ -3222,4 +3223,5 @@ class EmbryoRedundancySync(models.Model): "width": item['width'], "height": item['height'], "active": item['active'], + "remark": item['remark'], }) \ No newline at end of file