This commit is contained in:
李鹏宇
2026-04-13 10:56:11 +08:00
5 changed files with 60 additions and 46 deletions
+17 -17
View File
@@ -425,23 +425,23 @@ class SoongWorkflowMixin(models.AbstractModel):
if apostille_log_obj:
raise UserError("当前加签人员还有没有审批完成的!")
# 继续正常流程
if btn_rec.has_comment:
return self.with_context(cx)._add_comment(log_obj, btn_rec)
if btn_rec.name == '收回':
return {
'name': '收回弹窗',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'soong.bounced.wizard',
"target": "new",
'context': {
'default_res_id': self.id,
"default_res_model": self._name,
}
}
else:
btn_rec.with_context(cx).log()
return btn_rec.with_context(cx).run()
# if btn_rec.has_comment:
return self.with_context(cx)._add_comment(log_obj, btn_rec)
# if btn_rec.name == '收回':
# return {
# 'name': '收回弹窗',
# 'type': 'ir.actions.act_window',
# 'view_mode': 'form',
# 'res_model': 'soong.bounced.wizard',
# "target": "new",
# 'context': {
# 'default_res_id': self.id,
# "default_res_model": self._name,
# }
# }
# else:
# btn_rec.with_context(cx).log()
# return btn_rec.with_context(cx).run()
def _add_comment(self, logs, btn_rec):
trans_link_ids = []
@@ -163,7 +163,7 @@
<field name="name" required="1"/>
<field name="is_highlight"/>
<!-- <field name="is_high_red"/>-->
<field name="has_comment"/>
<field name="has_comment" invisible="1"/>
</group>
<group>
<field name="node_id" options="{'no_open': True, 'no_create': True}"
@@ -498,7 +498,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
"done_by": query_user_id,
"node_btn_name": "0",
"node_btn_id": self.node_btn_id.id,
"lase_click_date": fields.Datetime.now(),
"approval_state": "2", # 已完成
"comment": self.comment,
})
@@ -614,7 +613,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
"workflow_id": self.node_btn_id.workflow_id.id,
"done_by": employee_id.user_id.id if self.employee_ids else query_user_id,
"node_btn_name": "3",
"lase_click_date": fields.Datetime.now(),
"approval_state": "1", # 待审批
})
@@ -859,7 +857,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
"model": self.res_model,
"res_id": self.res_id,
"workflow_id": self.node_btn_id.workflow_id.id,
"lase_click_date": fields.Datetime.now(),
"done_by": record_id.log_ids[0].done_by.id,
"approval_state": "0",
"node_btn_id": self.node_btn_id.id,
@@ -1053,7 +1050,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
record.write({'state': prev_log.name,
'work_end': False,
})
self.node_btn_id.with_context(cx).run()
if self.node_btn_name == '归档':
menu_id = self.env['ir.ui.menu'].search([('name', '=', '行政收文')], limit=1)
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
@@ -14,6 +14,10 @@ class YuthonShiftApproval(models.Model):
resource_id = fields.Many2one('resource.resource', string="申请人", default=lambda self: self.env.user.employee_id.resource_id.id)
company_id = fields.Many2one('res.company', string="公司", default=lambda self: self.env.user.company_id.id)
transferees_id = fields.Many2one('resource.resource', string="换班对象", domain="[('id', 'in', resource_ids)]")
resource_id1 = fields.Many2one('resource.resource', string="申请人", default=lambda self: self.env.user.employee_id.resource_id.id)
transferees_id1 = fields.Many2one('resource.resource', string="换班对象", domain="[('id', 'in', resource_ids)]")
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="日期")
@@ -56,7 +60,7 @@ class YuthonShiftApproval(models.Model):
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',
'shift_two_date', 'resource_id1', 'transferees_id1', 'return_id',
'return_date', 'transferees_id', 'alternate_id', 'alternate_shifts',
'return_two_date')
def _onchange_shifts(self):
@@ -72,8 +76,8 @@ class YuthonShiftApproval(models.Model):
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 self.shift_two_date and self.resource_id1:
slot = self._get_slot(self.resource_id1.id, self.shift_two_date)
if not slot:
self.shift_two_rest = '休息'
else:
@@ -97,8 +101,8 @@ class YuthonShiftApproval(models.Model):
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 self.return_two_date and self.transferees_id1:
slot = self._get_slot(self.transferees_id1.id, self.return_two_date)
if not slot:
self.return_two_rest = '休息'
else:
@@ -202,7 +206,7 @@ class YuthonShiftApproval(models.Model):
# 申请人休息(第二班次)
if self_rest_two and return_two_id:
self.env['planning.slot'].create({
'resource_id': record.resource_id.id,
'resource_id': record.resource_id1.id,
'template_id': return_two_id.template_id.id,
'start_datetime': return_two_id.start_datetime,
'end_datetime': return_two_id.end_datetime,
@@ -228,7 +232,7 @@ class YuthonShiftApproval(models.Model):
# 对方休息(第二班次)
if other_rest_two and shift_two_id:
self.env['planning.slot'].create({
'resource_id': record.transferees_id.id,
'resource_id': record.transferees_id1.id,
'template_id': shift_two_id.template_id.id,
'start_datetime': shift_two_id.start_datetime,
'end_datetime': shift_two_id.end_datetime,
@@ -249,13 +253,27 @@ class YuthonShiftApproval(models.Model):
shift_two_id.write({'template_id': return_template_two})
return_two_id.write({'template_id': shift_template_two})
@api.onchange('resource_id', 'transferees_id', 'alternate_id')
@api.onchange('resource_id', 'transferees_id', 'alternate_id', 'resource_id1', 'transferees_id1')
def onchange_name(self):
for rec in self:
if rec.resource_id and rec.transferees_id and rec.alternate_shifts =='transferees':
rec.name = '调班:'+ rec.resource_id.name + '-' + rec.transferees_id.name
elif rec.resource_id and rec.alternate_id and rec.alternate_shifts =='alternate':
rec.name = '替班:'+ rec.resource_id.name + '-' + rec.alternate_id.name
rec.name = ''
res = rec.resource_id
trans = rec.transferees_id
res1 = rec.resource_id1
trans1 = rec.transferees_id1
if res and trans and res1 and trans1:
if (res.id == res1.id) and (trans.id == trans1.id):
rec.name = '调班:' + res.name + '-' + trans.name
continue
name_parts = []
if rec.alternate_shifts == 'transferees':
if res and trans:
name_parts.append(f"{res.name}-{trans.name}")
if res1 and trans1:
name_parts.append(f"{res1.name}-{trans1.name}")
if name_parts:
rec.name = '调班:' + ' | '.join(name_parts)
@api.onchange('department_id')
def _onchange_resource_ids(self):
@@ -67,14 +67,14 @@
<group>
<label for="resource_id"/>
<div>
<field name="resource_id" class="oe_inline"/>
<field name="resource_id" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="shift_date" class="oe_inline"/>
<field name="shift_id" class="oe_inline" invisible="shift_rest" readonly="1"/>
<field name="shift_rest" class="oe_inline" invisible="shift_id or shift_date == False"/>
</div>
<label for="transferees_id"/>
<div>
<field name="transferees_id" class="oe_inline"/>
<field name="transferees_id" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="return_date" class="oe_inline"/>
<field name="return_id" class="oe_inline" invisible="return_rest" readonly="1"/>
<field name="return_rest" class="oe_inline" invisible="return_id or return_date == False" />
@@ -86,13 +86,13 @@
<group>
<label for="resource_id"/>
<div>
<field name="resource_id" class="oe_inline"/>
<field name="resource_id" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="shift_date" class="oe_inline"/>
<field name="old_shift" class="oe_inline"/>
</div>
<label for="transferees_id"/>
<div>
<field name="transferees_id" class="oe_inline"/>
<field name="transferees_id" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="return_date" class="oe_inline"/>
<field name="old_return" class="oe_inline"/>
</div>
@@ -110,9 +110,9 @@
<!-- </group>-->
<group string="换班2" invisible="work_end">
<group>
<label for="resource_id"/>
<label for="resource_id1"/>
<div>
<field name="resource_id" class="oe_inline"/>
<field name="resource_id1" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="shift_two_date" class="oe_inline"/>
<field name="shift_two_id" class="oe_inline" readonly="1" invisible="shift_two_rest"
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
@@ -122,9 +122,9 @@
/>
<field name="shift_two_rest" class="oe_inline" invisible="shift_two_id or shift_two_date == False"/>
</div>
<label for="transferees_id"/>
<label for="transferees_id1"/>
<div>
<field name="transferees_id" class="oe_inline"/>
<field name="transferees_id1" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="return_two_date" class="oe_inline"/>
<field name="return_two_id" class="oe_inline" readonly="1" invisible="return_two_rest"
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
@@ -139,15 +139,15 @@
<!--与上述同理-->
<group string="换班2" invisible="not work_end">
<group>
<label for="resource_id"/>
<label for="resource_id1"/>
<div>
<field name="resource_id" class="oe_inline"/>
<field name="resource_id1" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="shift_two_date" class="oe_inline"/>
<field name="old_two_shift" class="oe_inline"/>
</div>
<label for="transferees_id"/>
<label for="transferees_id1"/>
<div>
<field name="transferees_id" class="oe_inline"/>
<field name="transferees_id1" class="oe_inline" options="{'no_open': True, 'no_create': True}"/>
<field name="return_two_date" class="oe_inline"/>
<field name="old_two_return" class="oe_inline"/>
</div>