交期状态开发

This commit is contained in:
liaodanlong
2024-11-13 10:37:19 +08:00
parent 13ef106c0e
commit e38407c0a5
5 changed files with 138 additions and 14 deletions

View File

@@ -34,6 +34,65 @@ class MrpProduction(models.Model):
tool_state_remark = fields.Text(string='功能刀具状态备注(缺刀)', compute='_compute_tool_state_remark', store=True)
tool_state_remark2 = fields.Text(string='功能刀具状态备注(无效刀)', readonly=True)
def _compute_default_delivery_status(self):
need_list = [
'pending_cam',
'progress',
'rework',
'scrap',
'to_close',
]
try:
if self.state not in need_list:
return False
if not self.deadline_of_delivery:
return '已逾期'
hours = self.get_hours_diff()
if hours >= 48:
return '正常'
elif hours > 0 and hours < 48:
return '预警'
else:
return '已逾期'
except Exception as e:
logging.error("Error processing production ID {}: {}".format(self.id, e))
raise e
@api.depends('state', 'deadline_of_delivery')
def _compute_delivery_status(self):
need_list = [
'pending_cam',
'progress',
'rework',
'scrap',
'to_close',
]
for production in self:
production.delivery_status = production._compute_default_delivery_status()
delivery_status = fields.Selection([('正常', '正常'), ('预警', '预警'), ('已逾期', '已逾期')], string='交期状态',
store=True,
compute='_compute_delivery_status',
default=lambda self: self._compute_default_delivery_status())
def get_hours_diff(self):
# 获取当前日期和时间
current_datetime = fields.Datetime.now()
# 将 date_field 转换为 datetime 对象
if self.deadline_of_delivery:
date_obj = fields.Date.from_string(self.deadline_of_delivery)
# 将 date 对象转换为 datetime 对象,设置时间为 00:00:00
date_obj = datetime.datetime.combine(date_obj, datetime.time.min)
# 计算两个日期之间的差值
delta = date_obj - current_datetime
# 返回差值的小时数
return int(delta.total_seconds() / 3600)
else:
return 0.0
@api.depends('procurement_group_id.mrp_production_ids.move_dest_ids.group_id.sale_id')
def _compute_deadline_of_delivery(self):
for production in self:
@@ -1240,7 +1299,7 @@ class MrpProduction(models.Model):
'move_dest_ids': production.move_dest_ids.ids,
'user_id': production.user_id.id}
return production_values_str
# 增加制造订单类型
production_type = fields.Selection(
[('自动化产线加工', '自动化产线加工'), ('人工线下加工', '人工线下加工')],