diff --git a/sf_base/models/tool_base_new.py b/sf_base/models/tool_base_new.py index 7988dc7a..8f3eb86f 100644 --- a/sf_base/models/tool_base_new.py +++ b/sf_base/models/tool_base_new.py @@ -277,13 +277,13 @@ class ToolGroups(models.Model): else: raise ValidationError("机床刀具组发送失败") - def write(self, vals): - obj = super().write(vals) - self._register_tool_groups(obj) - return obj - - @api.model_create_multi - def create(self, vals_list): - records = super(ToolGroups, self).create(vals_list) - self._register_tool_groups(records) - return records + # def write(self, vals): + # obj = super().write(vals) + # self._register_tool_groups(obj) + # return obj + # + # @api.model_create_multi + # def create(self, vals_list): + # records = super(ToolGroups, self).create(vals_list) + # self._register_tool_groups(records) + # return records diff --git a/sf_manufacturing/models/mrp_workorder.py b/sf_manufacturing/models/mrp_workorder.py index eabdff95..19476b8a 100644 --- a/sf_manufacturing/models/mrp_workorder.py +++ b/sf_manufacturing/models/mrp_workorder.py @@ -772,3 +772,34 @@ class SfWorkOrderBarcodes(models.Model): # # else: # self.pro_code_ok = workorder.pro_code_is_ok(barcode) + + +class WorkpieceDelivery(models.Model): + _name = 'sf.workpiece.delivery' + _description = '工件配送单列表' + + name = fields.Char('工件编码/任务编码') + mrp_workorder_id = fields.Many2one('mrp.workorder', string='工件编码/任务编码', + domain=[('name', 'in', ('装夹', '解除装夹'))]) + 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('task_delivery_time', 'task_completion_time') + def _compute_delivery_time(self): + for obj in self: + if obj.task_delivery_time and obj.task_completion_time: + delivery_duration = obj.task_completion_time - obj.task_delivery_time + hours, seconds = divmod(delivery_duration.total_seconds(), 3600) + minutes, _ = divmod(seconds, 60) + delivery_time_str = "{:.0f}时 {:.0f}分".format(hours, minutes) + + obj.delivery_time = delivery_time_str + else: + obj.delivery_time = '' diff --git a/sf_manufacturing/models/product_template.py b/sf_manufacturing/models/product_template.py index 90395d18..b9209d57 100644 --- a/sf_manufacturing/models/product_template.py +++ b/sf_manufacturing/models/product_template.py @@ -874,6 +874,20 @@ class SfMaintenanceEquipmentTool(models.Model): code = fields.Char('机床刀位号') name = fields.Char('刀位号', compute='_compute_name') + # 待删除字段 + product_template_id = fields.Many2one('product.template', string='功能刀具名称', + domain="[('categ_type', '=', '刀具')]") + image_1920 = fields.Binary('图片', related='product_template_id.image_1920') + categ_type = fields.Char(string='功能刀具类型') + diameter = fields.Char('直径') + precision = fields.Char('粗\中\精') + tool_code = fields.Char('功能刀具编码') + hilt_name = fields.Char('刀柄名称') + hilt_code = fields.Char('刀柄编码') + life_value_max = fields.Char('最大寿命值') + alarm_value = fields.Char('报警值') + used_value = fields.Char('已使用值') + @api.depends('code') def _compute_name(self): for record in self: diff --git a/sf_manufacturing/security/ir.model.access.csv b/sf_manufacturing/security/ir.model.access.csv index 7711e4fe..52545bcf 100644 --- a/sf_manufacturing/security/ir.model.access.csv +++ b/sf_manufacturing/security/ir.model.access.csv @@ -23,6 +23,9 @@ access_mrp_workcenter_manager,mrp_workcenter,model_mrp_workcenter,sf_base.group_ access_mrp_workcenter_productivity,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_productivity_manager,mrp_workcenter_productivity,model_mrp_workcenter_productivity,sf_base.group_sf_mrp_manager,1,1,1,0 +access_sf_workpiece_delivery,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_user,1,0,0,0 +access_sf_workpiece_delivery_manager,sf_workpiece_delivery,model_sf_workpiece_delivery,sf_base.group_sf_mrp_manager,1,1,1,0 + access_mrp_workcenter_productivity_loss_manager,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_productivity_loss,mrp.workcenter.productivity.loss,mrp.model_mrp_workcenter_productivity_loss,sf_base.group_sf_mrp_user,1,0,0,0 access_mrp_workcenter_productivity_loss_type,mrp.workcenter.productivity.loss.type,mrp.model_mrp_workcenter_productivity_loss_type,sf_base.group_sf_mrp_user,1,0,0,0 @@ -87,6 +90,7 @@ access_mrp_production_split,access.mrp.production.split,mrp.model_mrp_production access_mrp_production_split_line,access.mrp.production.split.line,mrp.model_mrp_production_split_line,sf_base.group_sf_mrp_user,1,1,1,0 access_mrp_workcenter_capacity_manager,mrp.workcenter.capacity.manager,mrp.model_mrp_workcenter_capacity,sf_base.group_sf_mrp_user,1,1,1,0 + access_mrp_production_group_plan_dispatch,mrp_production,model_mrp_production,sf_base.group_plan_dispatch,1,0,0,0 access_mrp_workorder,mrp_workorder,model_mrp_workorder,sf_base.group_plan_dispatch,1,1,1,0 access_sf_production_line_group_plan_dispatch,sf.production.line,model_sf_production_line,sf_base.group_plan_dispatch,1,0,0,0 diff --git a/sf_manufacturing/views/mrp_workorder_view.xml b/sf_manufacturing/views/mrp_workorder_view.xml index d9e53599..757922e8 100644 --- a/sf_manufacturing/views/mrp_workorder_view.xml +++ b/sf_manufacturing/views/mrp_workorder_view.xml @@ -107,19 +107,24 @@