# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import fields, models, api class MrpProduction(models.Model): _inherit = 'mrp.production' demand_plan_line_id = fields.Many2one(comodel_name="sf.production.demand.plan", string="需求计划明细", readonly=True) @api.depends('demand_plan_line_id') def _compute_production_type(self): for production in self: if production.demand_plan_line_id.supply_method == 'automation': production.production_type = '自动化产线加工' elif production.demand_plan_line_id.supply_method == 'manual': production.production_type = '人工线下加工' else: production.production_type = None def _get_purchase_request(self): """获取跟制造订单相关的采购申请单(根据采购申请单行项目的产品匹配)""" pr_ids = self.env['purchase.request'].sudo().search( [('line_ids.demand_plan_line_id', 'in', self.demand_plan_line_id.ids)]) return pr_ids @api.depends('procurement_group_id', 'procurement_group_id.stock_move_ids.group_id') def _compute_picking_ids(self): for order in self: if order.product_id.product_tmpl_id.single_manufacturing == True and not order.is_remanufacture: first_order = self.env['mrp.production'].search( [('demand_plan_line_id', '=', order.demand_plan_line_id.id), ('product_id', '=', order.product_id.id)], limit=1, order='id asc') order.picking_ids = self.env['stock.picking'].search([ ('group_id', '=', first_order.procurement_group_id.id), ('group_id', '!=', False), ]) order.delivery_count = len(first_order.picking_ids) else: order.picking_ids = self.env['stock.picking'].search([ ('group_id', '=', order.procurement_group_id.id), ('group_id', '!=', False), ]) order.delivery_count = len(order.picking_ids)