未齐套提示

This commit is contained in:
guanhuan
2025-06-04 16:38:46 +08:00
parent b0f2fe6a8e
commit fbcd8c57c5

View File

@@ -362,7 +362,8 @@ class sf_production_plan(models.Model):
def _compute_hide_action_purchase_orders(self): def _compute_hide_action_purchase_orders(self):
for record in self: for record in self:
record.hide_action_purchase_orders = False record.hide_action_purchase_orders = False
if record.material_check == '0' and not record.sale_order_line_id.is_incoming_material: if record.supply_method in ('automation',
'manual') and record.material_check == '0' and not record.sale_order_line_id.is_incoming_material:
mrp_production = record.sale_order_id.mrp_production_ids.filtered( mrp_production = record.sale_order_id.mrp_production_ids.filtered(
lambda p: p.product_id.id == record.product_id.id lambda p: p.product_id.id == record.product_id.id
).sorted(key=lambda p: p.id) ).sorted(key=lambda p: p.id)
@@ -379,13 +380,30 @@ class sf_production_plan(models.Model):
if line.product_id in raw_materials if line.product_id in raw_materials
) )
record.hide_action_purchase_orders = total_purchase_quantity < record.product_uom_qty and pr_ids.state != 'done' record.hide_action_purchase_orders = total_purchase_quantity < record.product_uom_qty and pr_ids.state != 'done'
elif record.supply_method == 'purchase':
purchase_orders = self.env['purchase.order'].sudo().search([
('state', 'in', ('purchase', 'done')),
('order_line.product_id', '=', record.product_id.id)
])
total_purchase_quantity = sum(
line.product_qty for order in purchase_orders for line in order.order_line
if line.product_id in record.product_id
)
record.hide_action_purchase_orders = total_purchase_quantity < record.product_uom_qty
@api.depends('sale_order_id.mrp_production_ids.picking_ids', 'sale_order_id.mrp_production_ids.picking_ids.state') @api.depends('sale_order_id.mrp_production_ids.picking_ids', 'sale_order_id.mrp_production_ids.picking_ids.state')
def _compute_hide_action_stock_picking(self): def _compute_hide_action_stock_picking(self):
for record in self: for record in self:
manufacturing_orders = record.sale_order_id.mrp_production_ids record.hide_action_stock_picking = False
record.hide_action_stock_picking = bool(manufacturing_orders.mapped('picking_ids').filtered( if record.supply_method in ('automation', 'manual'):
lambda p: p.state == 'assigned')) manufacturing_orders = record.sale_order_id.mrp_production_ids
record.hide_action_stock_picking = bool(manufacturing_orders.mapped('picking_ids').filtered(
lambda p: p.state == 'assigned'))
elif record.supply_method == 'purchase':
assigned_picking_ids = record.sale_order_id.picking_ids.filtered(
lambda
p: p.state == 'assigned' and p.picking_type_id.name != '发料出库' and p.move_line_ids.product_id in record.product_id)
record.hide_action_stock_picking = bool(assigned_picking_ids)
def action_open_sale_order(self): def action_open_sale_order(self):
self.ensure_one() self.ensure_one()
@@ -420,9 +438,14 @@ class sf_production_plan(models.Model):
def action_view_purchase_request(self): def action_view_purchase_request(self):
self.ensure_one() self.ensure_one()
first_mp = self.env['mrp.production'].search( domain = []
[('origin', '=', self.sale_order_id.name)], limit=1, order='id asc') if self.supply_method in ('automation', 'manual'):
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', first_mp.name)]) first_mp = self.env['mrp.production'].search(
[('origin', '=', self.sale_order_id.name)], limit=1, order='id asc')
domain = [('origin', 'like', first_mp.name)]
elif self.supply_method == 'purchase':
domain = [('origin', 'like', self.sale_order_id.name)]
pr_ids = self.env['purchase.request'].sudo().search(domain)
action = { action = {
'res_model': 'purchase.request', 'res_model': 'purchase.request',
'type': 'ir.actions.act_window', 'type': 'ir.actions.act_window',
@@ -443,16 +466,23 @@ class sf_production_plan(models.Model):
def action_view_stock_picking(self): def action_view_stock_picking(self):
self.ensure_one() self.ensure_one()
action = self.env["ir.actions.actions"]._for_xml_id("stock.action_picking_tree_all") action = self.env["ir.actions.actions"]._for_xml_id("stock.action_picking_tree_all")
picking_ids = self.sale_order_id.mrp_production_ids.mapped('picking_ids').filtered( picking_ids = None
lambda p: p.state == 'assigned') if self.supply_method in ('automation', 'manual'):
if len(picking_ids) > 1: picking_ids = self.sale_order_id.mrp_production_ids.mapped('picking_ids').filtered(
action['domain'] = [('id', 'in', picking_ids.ids)] lambda p: p.state == 'assigned')
elif picking_ids: elif self.supply_method == 'purchase':
action['res_id'] = picking_ids.id picking_ids = self.sale_order_id.picking_ids.filtered(
action['views'] = [(self.env.ref('stock.view_picking_form').id, 'form')] lambda
if 'views' in action: p: p.state == 'assigned' and p.picking_type_id.name != '发料出库' and p.move_line_ids.product_id in self.product_id)
action['views'] += [(state, view) for state, view in action['views'] if view != 'form'] if picking_ids:
return action if len(picking_ids) > 1:
action['domain'] = [('id', 'in', picking_ids.ids)]
elif picking_ids:
action['res_id'] = picking_ids.id
action['views'] = [(self.env.ref('stock.view_picking_form').id, 'form')]
if 'views' in action:
action['views'] += [(state, view) for state, view in action['views'] if view != 'form']
return action
def action_view_programming(self): def action_view_programming(self):
self.ensure_one() self.ensure_one()
@@ -463,4 +493,3 @@ class sf_production_plan(models.Model):
programming_no = list(set(programming_mrp_production_ids)) programming_no = list(set(programming_mrp_production_ids))
numbers_str = "".join(programming_no) numbers_str = "".join(programming_no)
raise ValidationError(f"编程单号:{numbers_str},请去云平台处理") raise ValidationError(f"编程单号:{numbers_str},请去云平台处理")