采购申请字段调整
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import re
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
@@ -25,6 +26,12 @@ class PurchaseRequestLine(models.Model):
|
||||
_description = '采购申请明细'
|
||||
|
||||
origin = fields.Char(string="Source Document")
|
||||
|
||||
part_number = fields.Char('零件图号', store=True, compute='_compute_part_number')
|
||||
part_name = fields.Char('零件名称', store=True, compute='_compute_part_name')
|
||||
related_product = fields.Many2one('product.product', string='关联产品',
|
||||
help='经此产品工艺加工成的成品')
|
||||
|
||||
supply_method = fields.Selection([
|
||||
('automation', "自动化产线加工"),
|
||||
('manual', "人工线下加工"),
|
||||
@@ -56,3 +63,30 @@ class PurchaseRequestLine(models.Model):
|
||||
prl.supply_method = order_line[0].supply_method
|
||||
else:
|
||||
prl.supply_method = None
|
||||
|
||||
@api.depends('product_id')
|
||||
def _compute_part_number(self):
|
||||
for record in self:
|
||||
if record.part_number and record.part_name:
|
||||
continue
|
||||
if record.product_id.categ_id.name == '坯料':
|
||||
product_name = ''
|
||||
match = re.search(r'(S\d{5}-\d)', record.product_id.name)
|
||||
# 如果匹配成功,提取结果
|
||||
if match:
|
||||
product_name = match.group(0)
|
||||
sale_order_name = ''
|
||||
match_sale = re.search(r'S(\d+)', record.product_id.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
|
||||
record.part_name = filtered_order_line.product_id.part_name
|
||||
else:
|
||||
record.part_number = record.product_id.part_number
|
||||
record.part_name = record.product_id.part_name
|
||||
|
||||
Reference in New Issue
Block a user