添加功能
This commit is contained in:
@@ -18,12 +18,16 @@ class YuthonShiftApproval(models.Model):
|
||||
alternate_shifts = fields.Selection([('transferees', '换班'), ('alternate', '顶班')], string="申请类型" , default='transferees')
|
||||
shift_date = fields.Date(string="日期")
|
||||
shift_id = fields.Many2one('planning.slot', string="我的班次")
|
||||
shift_rest = fields.Char(string="休息")
|
||||
shift_two_date = fields.Date(string="日期")
|
||||
shift_two_id = fields.Many2one('planning.slot', string="我的班次")
|
||||
shift_two_rest = fields.Char(string="休息")
|
||||
return_date = fields.Date(string="日期")
|
||||
return_id = fields.Many2one('planning.slot', string="对方班次")
|
||||
return_rest = fields.Char(string="休息")
|
||||
return_two_date = fields.Date(string="日期")
|
||||
return_two_id = fields.Many2one('planning.slot', string="对方班次")
|
||||
return_two_rest = fields.Char(string="休息")
|
||||
department_id = fields.Many2one('hr.department', string="部门", related='resource_id.employee_id.department_id')
|
||||
resource_ids = fields.Many2many('resource.resource', string="资源用户列表")
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
@@ -51,7 +55,9 @@ class YuthonShiftApproval(models.Model):
|
||||
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_rest = '休息'
|
||||
else:
|
||||
self.shift_rest = None
|
||||
self.shift_id = slot
|
||||
else:
|
||||
self.shift_id = False
|
||||
@@ -60,7 +66,10 @@ class YuthonShiftApproval(models.Model):
|
||||
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} 没有班次,请重新选择日期!")
|
||||
if not slot:
|
||||
self.shift_two_rest = '休息'
|
||||
else:
|
||||
self.shift_two_rest = None
|
||||
self.shift_two_id = slot
|
||||
else:
|
||||
self.shift_two_id = False
|
||||
@@ -72,7 +81,9 @@ class YuthonShiftApproval(models.Model):
|
||||
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_rest = '休息'
|
||||
else:
|
||||
self.return_rest = None
|
||||
self.return_id = slot
|
||||
else:
|
||||
self.return_id = False
|
||||
@@ -81,7 +92,9 @@ class YuthonShiftApproval(models.Model):
|
||||
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_rest = '休息'
|
||||
else:
|
||||
self.return_two_rest = None
|
||||
self.return_two_id = slot
|
||||
else:
|
||||
self.return_two_id = False
|
||||
@@ -111,36 +124,88 @@ class YuthonShiftApproval(models.Model):
|
||||
})
|
||||
|
||||
def button_shift_approval(self):
|
||||
shift_id = self.shift_id
|
||||
return_id = self.return_id
|
||||
shift_two_id = self.shift_two_id
|
||||
return_two_id = self.return_two_id
|
||||
start_time= shift_id.start_datetime
|
||||
end_time = shift_id.end_datetime
|
||||
role_id = shift_id.role_id
|
||||
template_id = self.env['planning.slot.template'].search([('id', '=', shift_id.template_id.id)])
|
||||
if self.alternate_id:
|
||||
shift_id.unlink()
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id':self.alternate_id.id,
|
||||
'template_id':template_id.id,
|
||||
'start_datetime':start_time,
|
||||
'end_datetime':end_time,
|
||||
'role_id':role_id.id,
|
||||
'allocated_hours':8
|
||||
})
|
||||
else:
|
||||
shift_id.write({
|
||||
'template_id': return_id.template_id.id,
|
||||
})
|
||||
shift_two_id.write({
|
||||
'template_id':return_two_id.template_id.id,
|
||||
})
|
||||
return_id.write({
|
||||
'template_id':shift_id.template_id.id,
|
||||
})
|
||||
return_two_id.write({
|
||||
'template_id':return_two_id.template_id.id})
|
||||
for record in self:
|
||||
shift_id = record.shift_id # 申请人原班次
|
||||
shift_two_id = record.shift_two_id
|
||||
return_id = record.return_id # 对方原班次
|
||||
return_two_id = record.return_two_id
|
||||
|
||||
# 休息标记(非空即视为需要休息)
|
||||
self_rest = bool(record.shift_rest) # 申请人第一班次休息
|
||||
self_rest_two = bool(record.shift_two_rest) # 申请人第二班次休息
|
||||
other_rest = bool(record.return_rest) # 对方第一班次休息
|
||||
other_rest_two = bool(record.return_two_rest) # 对方第二班次休息
|
||||
|
||||
if record.alternate_id:
|
||||
if shift_id:
|
||||
shift_id.unlink()
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id': record.alternate_id.id,
|
||||
'template_id': shift_id.template_id.id,
|
||||
'start_datetime': shift_id.start_datetime,
|
||||
'end_datetime': shift_id.end_datetime,
|
||||
'role_id': shift_id.role_id.id,
|
||||
'allocated_hours': 8
|
||||
})
|
||||
else:
|
||||
# 申请人休息(第一班次)
|
||||
if self_rest and return_id:
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id': record.resource_id.id, # 申请人
|
||||
'template_id': return_id.template_id.id, # 对方模板
|
||||
'start_datetime': return_id.start_datetime,
|
||||
'end_datetime': return_id.end_datetime,
|
||||
'role_id': return_id.role_id.id,
|
||||
'allocated_hours': 8,
|
||||
'name': f"申请人休息调整:{record.shift_rest}"
|
||||
})
|
||||
return_id.unlink() #删除对方原班次
|
||||
|
||||
# 申请人休息(第二班次)
|
||||
if self_rest_two and return_two_id:
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id': record.resource_id.id,
|
||||
'template_id': return_two_id.template_id.id,
|
||||
'start_datetime': return_two_id.start_datetime,
|
||||
'end_datetime': return_two_id.end_datetime,
|
||||
'role_id': return_two_id.role_id.id,
|
||||
'allocated_hours': 8,
|
||||
'name': f"申请人第二班次休息调整:{record.shift_two_rest}"
|
||||
})
|
||||
return_two_id.unlink() # 删除对方第二班次
|
||||
|
||||
# 对方休息
|
||||
if other_rest and shift_id:
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id': record.transferees_id.id, # 对方
|
||||
'template_id': shift_id.template_id.id, # 申请人模板
|
||||
'start_datetime': shift_id.start_datetime,
|
||||
'end_datetime': shift_id.end_datetime,
|
||||
'role_id': shift_id.role_id.id,
|
||||
'allocated_hours': 8,
|
||||
'name': f"对方休息调整:{record.return_rest}"
|
||||
})
|
||||
shift_id.unlink() # 删除申请人原班次
|
||||
|
||||
# 对方休息(第二班次)
|
||||
if other_rest_two and shift_two_id:
|
||||
self.env['planning.slot'].create({
|
||||
'resource_id': record.transferees_id.id,
|
||||
'template_id': shift_two_id.template_id.id,
|
||||
'start_datetime': shift_two_id.start_datetime,
|
||||
'end_datetime': shift_two_id.end_datetime,
|
||||
'role_id': shift_two_id.role_id.id,
|
||||
'allocated_hours': 8,
|
||||
})
|
||||
shift_two_id.unlink() # 删除申请人第二班次
|
||||
|
||||
if not any([self_rest, self_rest_two, other_rest, other_rest_two]):
|
||||
if shift_id and return_id:
|
||||
shift_id.write({'template_id': return_id.template_id.id})
|
||||
return_id.write({'template_id': shift_id.template_id.id})
|
||||
if shift_two_id and return_two_id:
|
||||
shift_two_id.write({'template_id': return_two_id.template_id.id})
|
||||
return_two_id.write({'template_id': shift_two_id.template_id.id})
|
||||
|
||||
@api.onchange('resource_id', 'transferees_id', 'alternate_id')
|
||||
def onchange_name(self):
|
||||
|
||||
@@ -64,53 +64,45 @@
|
||||
<field name="transferees_id" invisible="alternate_shifts != 'transferees'"/>
|
||||
<field name="department_id" invisible="1"/>
|
||||
</group>
|
||||
<group col="4" invisible="alternate_shifts == 'alternate'" string="班次1">
|
||||
<group>
|
||||
<field name="shift_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="shift_id"
|
||||
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"/>
|
||||
</group>
|
||||
<group/>
|
||||
<group/>
|
||||
<group string="班次1" invisible="alternate_shifts == 'alternate'">
|
||||
<label for="shift_date"/>
|
||||
<div>
|
||||
<field name="shift_date" class="oe_inline"/>我的班次:
|
||||
<field name="shift_id" class="oe_inline" invisible="shift_rest"/>
|
||||
<field name="shift_rest" class="oe_inline" invisible="shift_id"/>
|
||||
</div>
|
||||
</group>
|
||||
<group col="4">
|
||||
<group>
|
||||
<field name="return_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="return_id" context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
|
||||
/>
|
||||
</group>
|
||||
<group/>
|
||||
<group/>
|
||||
<label for="return_date"/>
|
||||
<div>
|
||||
<field name="return_date" class="oe_inline"/>对方班次:
|
||||
<field name="return_id" class="oe_inline" invisible="return_rest"/>
|
||||
<field name="return_rest" class="oe_inline" invisible="return_id"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="班次2" col="4" invisible="alternate_shifts == 'alternate'">
|
||||
<group>
|
||||
<field name="shift_two_date"/>
|
||||
<field name="return_two_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="shift_two_id"
|
||||
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"/>
|
||||
<field name="return_two_id" context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
|
||||
<group string="班次2" invisible="alternate_shifts == 'alternate'">
|
||||
<label for="shift_two_date"/>
|
||||
<div>
|
||||
<field name="shift_two_date" class="oe_inline"/>我的班次:
|
||||
<field name="shift_two_id" class="oe_inline" invisible="shift_two_rest"
|
||||
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
|
||||
/>
|
||||
</group>
|
||||
<group/>
|
||||
<group/>
|
||||
<field name="shift_two_rest" class="oe_inline" invisible="shift_two_id"/>
|
||||
</div>
|
||||
<label for="return_two_date"/>
|
||||
<div>
|
||||
<field name="return_two_date" class="oe_inline"/>对方班次:
|
||||
<field name="return_two_id" class="oe_inline" invisible="return_two_rest"
|
||||
context="{'tree_view_ref': 'yuthon_hr_attendance.view_yuthon_shift_context',
|
||||
'search_view_ref': 'yuthon_hr_attendance.search_yuthon_shift_context',
|
||||
'order': 'start_datetime desc',
|
||||
'search_default_group_by_month': True,}" options="{'no_create': True, 'no_edit':True}"
|
||||
/>
|
||||
<field name="return_two_rest" class="oe_inline" invisible="return_two_id"/>
|
||||
</div>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
|
||||
@@ -509,7 +509,7 @@ class PropertyReconciliationWizard(models.Model):
|
||||
rec.amount_been_reconciled += line.amount
|
||||
yes_amount += line.amount
|
||||
|
||||
rec.bank_id.yes_amount = yes_amount
|
||||
rec.bank_id.yes_amount = rec.bank_id.yes_amount + yes_amount
|
||||
rec.bank_id.change_amount = sum(line.amount for line in rec.reconciliation_line_ids)
|
||||
|
||||
all_contracts = self.bank_id.contract_ids
|
||||
|
||||
Reference in New Issue
Block a user