diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 8e81d076..3b8ed0a6 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -776,6 +776,8 @@ class ResProductMo(models.Model): part_number = fields.Char(string='零件图号', readonly=True) machining_drawings = fields.Binary('2D加工图纸', readonly=True) quality_standard = fields.Binary('质检标准', readonly=True) + machining_drawings_name = fields.Char('2D加工图纸名', readonly=True) + quality_standard_name = fields.Char('质检标准名', readonly=True) @api.constrains('tool_length') def _check_tool_length_size(self): @@ -837,6 +839,11 @@ class ResProductMo(models.Model): else: return self.env.ref('sf_dlm.product_uom_cubic_millimeter') + def attachment_update(self, name, res_id, res_field): + attachment_info = self.env['ir.attachment'].sudo().search( + [('res_id', '=', res_id), ('res_field', '=', res_field)], limit=1) + attachment_info.write({'name': name}) + # 业务平台分配工厂后在智能工厂先创建销售订单再创建该产品 def product_create(self, product_id, item, order_id, order_number, i): copy_product_id = product_id.with_user(self.env.ref("base.user_admin")).copy() @@ -875,8 +882,11 @@ class ResProductMo(models.Model): 'manual_quotation': item['manual_quotation'] or False, 'part_number': item.get('part_number') or '', 'active': True, - 'machining_drawings': '' if not item['machining_drawings'] else base64.b64decode(item['machining_drawings']), - 'quality_standard': '' if not item['quality_standard'] else base64.b64decode(item['quality_standard']), + 'machining_drawings_name': item['machining_drawings_name'], + 'quality_standard_name': item['quality_standard_name'], + 'machining_drawings': '' if not item['machining_drawings'] else base64.b64decode( + item['machining_drawings']), + 'quality_standard': '' if not item['quality_standard'] else base64.b64decode(item['quality_standard']), } tax_id = self.env['account.tax'].sudo().search( [('type_tax_use', '=', 'sale'), ('amount', '=', item.get('tax')), ('price_include', '=', 'True')]) @@ -884,6 +894,12 @@ class ResProductMo(models.Model): vals.update({'taxes_id': [(6, 0, [int(tax_id)])]}) copy_product_id.sudo().write(vals) product_id.product_tmpl_id.active = False + if item['machining_drawings'] and item['machining_drawings_name']: + self.attachment_update(item['machining_drawings_name'], copy_product_id.product_tmpl_id.id, + 'machining_drawings') + if item['quality_standard'] and item['quality_standard_name']: + self.attachment_update(item['quality_standard_name'], copy_product_id.product_tmpl_id.id, + 'quality_standard') return copy_product_id def _get_ids(self, param): diff --git a/sf_manufacturing/models/stock.py b/sf_manufacturing/models/stock.py index 85290d18..02161b4a 100644 --- a/sf_manufacturing/models/stock.py +++ b/sf_manufacturing/models/stock.py @@ -182,6 +182,11 @@ class StockRule(models.Model): moves._action_confirm() return True + def attachment_update(self, name, res_id, res_field): + attachment_info = self.env['ir.attachment'].sudo().search( + [('res_id', '=', res_id), ('res_field', '=', res_field)], limit=1) + attachment_info.write({'name': name}) + @api.model def _run_manufacture(self, procurements): productions_values_by_company = defaultdict(list) @@ -276,6 +281,12 @@ class StockRule(models.Model): production.write({'part_number': production.product_id.part_number, 'part_drawing': production.product_id.machining_drawings, 'quality_standard': production.product_id.quality_standard}) + if production.product_id.machining_drawings and production.product_id.machining_drawings_name: + self.attachment_update(production.product_id.machining_drawings_name, production.id, + 'part_drawing') + if production.product_id.quality_standard and production.product_id.quality_standard_name: + self.attachment_update(production.product_id.quality_standard_name, production.id, + 'quality_standard') if sale_order: # sale_order.write({'schedule_status': 'to schedule'}) self.env['sf.production.plan'].sudo().with_company(company_id).create({