1.修复工件配送扫描工件(坯料)时,同运工件显示的是坯料对应的制造订单号,修改配送时长字段类型及对应的时长方法,修复工件装夹岗不能修改配送工件

2.修复产品中计划总监岗和调度总监岗不能访问切削速度的权限
This commit is contained in:
jinling.yang
2024-02-01 17:37:41 +08:00
parent 56847c7a22
commit ab9fcf97e0
7 changed files with 47 additions and 43 deletions

View File

@@ -132,7 +132,7 @@ class ResMrpWorkOrder(models.Model):
production_line = fields.Char(string="生产线")
preset_program_information = fields.Char(string="预调程序信息")
workpiece_delivery_ids = fields.One2many('sf.workpiece.delivery', 'workorder_id', '工件配送')
is_delivery = fields.Boolean('是否配送完成',default=False)
is_delivery = fields.Boolean('是否配送完成', default=False)
@api.onchange('is_ok')
def _onchange_inspection_user_id(self):
@@ -197,25 +197,19 @@ 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.workpiece_delivery_ids[0].write({
'status': '待下发'
})
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:
item.write({'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
for item in self.workpiece_delivery_ids:
if not item.feeder_station_start:
raise UserError('【工件配送】明细中请输入起点接驳站')
# if not item.workpiece_code:
# raise UserError('请对【同运工件】进行扫描')
else:
item.write({'task_delivery_time': fields.Datetime.now(), 'status': '待配送'})
# 拼接工单对象属性值
def json_workorder_str(self, k, production, route):
@@ -760,6 +754,13 @@ class SfWorkOrderBarcodes(models.Model):
'tray_model_id': stock_move_line.product_id.fixture_model_id.id
})
workorder.button_start()
# return {
# 'type': 'ir.actions.act_window',
# 'res_model': 'mrp.workorder',
# 'view_mode': 'form',
# 'domain': [('id', 'in', workorder.id)],
# 'target': 'current'
# }
else:
embryo_stock_lot = self.env['stock.lot'].search([('name', '=', barcode)])
if embryo_stock_lot:
@@ -769,16 +770,20 @@ class SfWorkOrderBarcodes(models.Model):
('lot_id', '=', embryo_stock_lot.id),
('product_category_name', '=', '坯料')])
if embryo_stock_move_line:
bom_production = self.env['mrp.production'].search(
[('product_id', '=', embryo_stock_lot.product_id.id),
('origin', '=', workorder.production_id.name)], limit=1, order='id asc')
workpiece_delivery = self.env['sf.workpiece.delivery'].search(
[('workorder_id', '=', workorder.id)], limit=1, order='id asc')
if workpiece_delivery:
embryo_workpiece_code = workpiece_delivery.workpiece_code
if workpiece_delivery.workpiece_code and embryo_stock_lot.name not in \
workpiece_delivery.workpiece_code:
embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
embryo_stock_lot.name
if not workpiece_delivery.workpiece_code:
embryo_workpiece_code = embryo_stock_lot.name
if bom_production:
if workpiece_delivery.workpiece_code and bom_production.name not in \
workpiece_delivery.workpiece_code:
embryo_workpiece_code = workpiece_delivery.workpiece_code + ',' + \
bom_production.name
if not workpiece_delivery.workpiece_code:
embryo_workpiece_code = bom_production.name
workpiece_delivery.write({'workpiece_code': embryo_workpiece_code})
else:
raise UserError('工件生产线不一致,请重新确认')
@@ -799,7 +804,7 @@ class WorkPieceDelivery(models.Model):
feeder_station_destination = fields.Char('目的接驳站')
task_delivery_time = fields.Datetime('任务下发时间')
task_completion_time = fields.Datetime('任务完成时间')
delivery_time = fields.Char('配送时长', compute='_compute_delivery_time')
delivery_duration = fields.Float('配送时长', compute='_compute_delivery_duration')
status = fields.Selection(
[('待下发', '待下发'), ('待配送', '待配送'), ('已配送', '已配送')], string='状态',
default='待下发')
@@ -830,14 +835,10 @@ class WorkPieceDelivery(models.Model):
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):
def _compute_delivery_duration(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
obj.delivery_duration = round(
(obj.task_completion_time - obj.task_delivery_time).total_seconds() / 60.0, 2)
else:
obj.delivery_time = ''
obj.delivery_duration = 0.0