diff --git a/sf_base/models/common.py b/sf_base/models/common.py index 7450fff9..6cddafd7 100644 --- a/sf_base/models/common.py +++ b/sf_base/models/common.py @@ -61,7 +61,7 @@ class MrsMaterialModel(models.Model): supplier_ids = fields.One2many('sf.supplier.sort', 'materials_model_id', string='供应商') active = fields.Boolean('有效', default=True) - @api.constrains('gain_way', 'supplier_ids') + @api.constrains('supplier_ids') def _check_gain_way(self): if not self.gain_way: raise UserError("请输入获取方式") diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 61be5b40..7c4915c1 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -50,6 +50,8 @@ class MrpProduction(models.Model): work_state = fields.Char('业务状态') programming_state = fields.Char('编程状态') glb_file = fields.Binary("glb模型文件") + production_line_id = fields.Many2one('sf.production.line', string='生产线') + plan_start_processing_time = fields.Datetime('计划开始加工时间') @api.depends( diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index 712940f0..a0ba1317 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -131,7 +131,7 @@ class ResMrpWorkOrder(models.Model): maximum_clamping_force = fields.Char(string="最大夹持力[n]") production_line = fields.Char(string="生产线") preset_program_information = fields.Char(string="预调程序信息") - workpiece_delivery_id = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送') + workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送') @api.onchange('is_ok') def _onchange_inspection_user_id(self): @@ -196,9 +196,24 @@ class ResMrpWorkOrder(models.Model): work = workorder.production_id.workorder_ids work.compensation_value_x = eval(self.material_center_point)[0] work.compensation_value_y = eval(self.material_center_point)[1] + workorder.button_finish() + except: raise UserError("参数计算有误") + # def button_workpiece_delivery(self): + # if self.routing_type == '装夹预调': + # if not self.workpiece_delivery_ids: + # raise UserError('请添加【工件配送】信息') + # else: + # for item in self.workpiece_delivery_ids: + # if not item.feeder_station_start: + # raise UserError('【工件配送】明细中请输入起点接驳站') + # if not item.workpiece_code: + # raise UserError('请对【同运工件】进行扫描') + # else: + # workpiece_code + # 拼接工单对象属性值 def json_workorder_str(self, k, production, route): # 计算预计时长duration_expected @@ -241,7 +256,9 @@ class ResMrpWorkOrder(models.Model): 'date_planned_finished': False, 'duration_expected': duration_expected, 'duration': 0, - + 'workpiece_delivery_ids': False if not route.routing_type == '装夹预调' else self.env[ + 'sf.workpiece.delivery'].create( + {'production_id': production.id}) }] return workorders_values_str @@ -731,7 +748,7 @@ class SfWorkOrderBarcodes(models.Model): if workorder: if workorder.routing_type == '装夹预调': stock_move_line = self.env['stock.move.line'].search([('lot_name', '=', barcode)]) - if stock_move_line: + if stock_move_line.product_id.categ_type == '夹具': workorder.write({ 'tray_serial_number': stock_move_line.lot_name, 'tray_product_id': stock_move_line.product_id.id, @@ -740,26 +757,36 @@ class SfWorkOrderBarcodes(models.Model): 'tray_model_id': stock_move_line.product_id.fixture_model_id.id }) workorder.button_start() + # elif stock_move_line.product_id.categ_type == '坯料': + # if stock_move_line.production_id.production_line_id.id == workorder.production_id.production_line_id.id + # workorder. class WorkPieceDelivery(models.Model): _name = "sf.workpiece.delivery" _description = '工件配送' - workorder_id = fields.Many2one('mrp.workorder', string='工单', - domain=[('name', 'in', ('装夹', '解除装夹'))]) - production_code = fields.Char(related='workorder_id.production_id.name', string='工件编码/任务编码', store=True) - plan_start_processing_time = fields.Datetime('计划开始加工时间') + workorder_id = fields.Many2one('mrp.workorder', string='工单', readonly=True) + production_id = fields.Many2one('mrp.production', string='制造订单', readonly=True) + production_line_id = fields.Many2one('sf.production.line', compute='_compute_production_line_id', + string='目标生产线', readonly=True, + store=True) + plan_start_processing_time = fields.Datetime('计划开始加工时间', readonly=True) workpiece_code = fields.Char('同运工件编码') feeder_station_start = fields.Char('起点接驳站') feeder_station_destination = fields.Char('目的接驳站') - production_line_id = fields.Many2one('sf.production.line', string='目标生产线') task_delivery_time = fields.Datetime('任务下发时间') task_completion_time = fields.Datetime('任务完成时间') delivery_time = fields.Char('配送时长', compute='_compute_delivery_time') status = fields.Selection([('待下发', '待下发'), ('待配送', '待配送'), ('已配送', '已配送')], string='状态', default='待下发') + @api.depends('production_id.production_line_id') + def _compute_production_line_id(self): + if self.production_id.production_line_id: + self.production_line_id = self.production_id.production_line_id.id + self.plan_start_processing_time = self.production_id.plan_start_processing_time + @api.depends('task_delivery_time', 'task_completion_time') def _compute_delivery_time(self): for obj in self: diff --git a/sf_manufacturing/views/mrp_production_addional_change.xml b/sf_manufacturing/views/mrp_production_addional_change.xml index 6ba4d4d5..b93ad455 100644 --- a/sf_manufacturing/views/mrp_production_addional_change.xml +++ b/sf_manufacturing/views/mrp_production_addional_change.xml @@ -69,6 +69,8 @@ + +