添加功能
This commit is contained in:
@@ -17,7 +17,7 @@ class YuthonShiftApproval(models.Model):
|
||||
alternate_id = fields.Many2one('resource.resource', string="顶班对象", domain="[('id', 'in', resource_ids)]")
|
||||
alternate_shifts = fields.Selection([('transferees', '换班'), ('alternate', '顶班')], string="申请类型" , default='transferees')
|
||||
shift_date = fields.Date(string="日期")
|
||||
shift_id = fields.Many2one('planning.slot', string="我的班次", compute='_compute_shift_id')
|
||||
shift_id = fields.Many2one('planning.slot', string="我的班次")
|
||||
shift_two_date = fields.Date(string="日期")
|
||||
shift_two_id = fields.Many2one('planning.slot', string="我的班次")
|
||||
return_date = fields.Date(string="日期")
|
||||
@@ -42,6 +42,59 @@ class YuthonShiftApproval(models.Model):
|
||||
name_title = fields.Char(default=_get_default_name_title)
|
||||
self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
|
||||
|
||||
@api.onchange('shift_date', 'resource_id',
|
||||
'shift_two_date',
|
||||
'return_date', 'transferees_id', 'alternate_id', 'alternate_shifts',
|
||||
'return_two_date')
|
||||
def _onchange_shifts(self):
|
||||
# 1. 校验并计算"我的班次"
|
||||
if self.shift_date and self.resource_id:
|
||||
slot = self._get_slot(self.resource_id.id, self.shift_date)
|
||||
if not slot:
|
||||
raise UserError(f"申请人在 {self.shift_date} 没有班次,请重新选择日期!")
|
||||
self.shift_id = slot
|
||||
else:
|
||||
self.shift_id = False
|
||||
|
||||
# 2. 校验并计算"我的第二班次"
|
||||
if self.shift_two_date and self.resource_id:
|
||||
slot = self._get_slot(self.resource_id.id, self.shift_two_date)
|
||||
if not slot:
|
||||
raise UserError(f"申请人在 {self.shift_two_date} 没有班次,请重新选择日期!")
|
||||
self.shift_two_id = slot
|
||||
else:
|
||||
self.shift_two_id = False
|
||||
|
||||
# 3. 确定对方资源
|
||||
other_resource = self.transferees_id if self.alternate_shifts == 'transferees' else self.alternate_id
|
||||
|
||||
# 4. 校验并计算"对方班次"
|
||||
if self.return_date and other_resource:
|
||||
slot = self._get_slot(other_resource.id, self.return_date)
|
||||
if not slot:
|
||||
raise UserError(f"{other_resource.name} 在 {self.return_date} 没有班次,请重新选择日期!")
|
||||
self.return_id = slot
|
||||
else:
|
||||
self.return_id = False
|
||||
|
||||
# 5. 校验并计算"对方第二班次"
|
||||
if self.return_two_date and other_resource:
|
||||
slot = self._get_slot(other_resource.id, self.return_two_date)
|
||||
if not slot:
|
||||
raise UserError(f"{other_resource.name} 在 {self.return_two_date} 没有班次,请重新选择日期!")
|
||||
self.return_two_id = slot
|
||||
else:
|
||||
self.return_two_id = False
|
||||
|
||||
def _get_slot(self, resource_id, date):
|
||||
if not resource_id or not date:
|
||||
return False
|
||||
return self.env['planning.slot'].search([
|
||||
('resource_id', '=', resource_id),
|
||||
('start_datetime', '>=', f"{date} 00:00:00"),
|
||||
('end_datetime', '<=', f"{date} 23:59:59")
|
||||
], limit=1)
|
||||
|
||||
@api.onchange('is_issues')
|
||||
def _onchange_is_issues(self):
|
||||
if self.is_issues:
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<h1>
|
||||
<field name="name_title" readonly="1"/>
|
||||
</h1>
|
||||
</div>>
|
||||
</div>
|
||||
<group string="审批事项">
|
||||
<group>
|
||||
<field name="name" placeholder="请输入标题"/>
|
||||
@@ -56,8 +56,8 @@
|
||||
</group>
|
||||
</group>
|
||||
<group string="调替班信息">
|
||||
<field name="alternate_shifts"/>
|
||||
<field name="resource_id" domain="[('company_id', '=', company_id)]" options="{'no_create': True, 'no_edit':True}"/>
|
||||
<field name="alternate_shifts"/>
|
||||
<field name="alternate_id" invisible="alternate_shifts != 'alternate'"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="users_id" invisible="1"/>
|
||||
|
||||
Reference in New Issue
Block a user