Accept Merge Request #2110: (feature/tool_standard_library_process -> develop)

Merge Request: 调拨单就绪问题处理

Created By: @廖丹龙
Reviewed By: @胡尧
Approved By: @胡尧 
Accepted By: @廖丹龙
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/2110
This commit is contained in:
廖丹龙
2025-05-13 10:25:20 +08:00
committed by Coding
3 changed files with 18 additions and 19 deletions

View File

@@ -1553,7 +1553,8 @@ class ResMrpWorkOrder(models.Model):
lambda wo: wo.is_subcontract == True and wo.state != 'cancel').sorted('sequence') lambda wo: wo.is_subcontract == True and wo.state != 'cancel').sorted('sequence')
if self == subcontract_workorders[-1]: if self == subcontract_workorders[-1]:
# 给下一个库存移动就绪 # 给下一个库存移动就绪
self.move_subcontract_workorder_ids[0].move_dest_ids._action_done() if self.move_subcontract_workorder_ids:
self.move_subcontract_workorder_ids[0].move_dest_ids._action_done()
# self.production_id.button_mark_done() # self.production_id.button_mark_done()
tem_date_planned_finished = record.date_planned_finished tem_date_planned_finished = record.date_planned_finished
tem_date_finished = record.date_finished tem_date_finished = record.date_finished

View File

@@ -121,16 +121,21 @@ class PurchaseOrder(models.Model):
if not is_available: if not is_available:
raise UserError('请先完成坯料入库') raise UserError('请先完成坯料入库')
for production_id in productions: for production_id in productions:
picking_id = production_id.picking_ids.filtered( work_ids = production_id.workorder_ids.filtered(
lambda wk: wk.state not in ['done', 'rework', 'cancel'])
if not work_ids:
continue
min_sequence_wk = min(work_ids, key=lambda wk: wk.sequence)
if min_sequence_wk.is_subcontract:
picking_id = production_id.picking_ids.filtered(
lambda wk: wk.location_id.name == '制造前' and wk.location_dest_id.name == '外协加工区') lambda wk: wk.location_id.name == '制造前' and wk.location_dest_id.name == '外协加工区')
move_out = picking_id.move_ids move_out = picking_id.move_ids
for mo in move_out: for mo in move_out:
if mo.state != 'done': if mo.state != 'done':
mo.write({'state': 'assigned', 'production_id': False}) mo.write({'state': 'assigned', 'production_id': False})
if not mo.move_line_ids: if not mo.move_line_ids:
self.env['stock.move.line'].create( self.env['stock.move.line'].create(
mo.get_move_line(production_id,False)) mo.get_move_line(production_id, min_sequence_wk))
# product = self.env['mrp.production'].search([('product_id', '=', product_id)], limit=1) # product = self.env['mrp.production'].search([('product_id', '=', product_id)], limit=1)
# match = re.search(r'(S\d{5}-\d)',product.name) # match = re.search(r'(S\d{5}-\d)',product.name)
# pass # pass

View File

@@ -9,7 +9,7 @@ class SfProductionProcessParameter(models.Model):
_inherit = 'sf.production.process.parameter' _inherit = 'sf.production.process.parameter'
service_products = fields.Many2one( service_products = fields.Many2one(
'product.template', 'product.template',
string='外协服务产品',compute='_compute_service_products',inverse='_inverse_service_products', string='外协服务产品',compute='_compute_service_products',
store=True store=True
) )
outsourced_service_products = fields.One2many( outsourced_service_products = fields.One2many(
@@ -25,15 +25,8 @@ class SfProductionProcessParameter(models.Model):
def _compute_service_products(self): def _compute_service_products(self):
for record in self: for record in self:
# 假设取第一条作为主明细 # 假设取第一条作为主明细
record.service_products = record.outsourced_service_products.ids if record.outsourced_service_products else False record.service_products = record.outsourced_service_products[0].id if record.outsourced_service_products else False
def _inverse_service_products(self):
for record in self:
if record.service_products:
# 确保关联关系正确
record.outsourced_service_products = record.service_products.ids if record.service_products else False
else:
record.outsourced_service_products = False
def name_get(self): def name_get(self):
result = [] result = []
for record in self: for record in self: