Merge branch 'master' of gitee.com:jinan-pengyusen-data/gzth into dev

Signed-off-by: 李鹏宇 <9664676+pengyuthon@user.noreply.gitee.com>
This commit is contained in:
李鹏宇
2025-03-23 02:12:58 +00:00
committed by Gitee
8 changed files with 170 additions and 19 deletions
+4 -4
View File
@@ -33,8 +33,8 @@ class YuthonLeaveWizard(models.Model):
holiday_status_id = self.env['hr.leave.type'].search([('name', '=', row[2].value)])
base_date = datetime(1900, 1, 1)
if type(row[5].value) == float:
dt_from = base_date + timedelta(days=row[5].value - 1) if row[5].value > 0 else base_date
dt_to = base_date + timedelta(days=row[6].value - 1) if row[6].value > 0 else base_date
dt_from = base_date + timedelta(days=row[5].value - 2) if row[5].value > 0 else base_date
dt_to = base_date + timedelta(days=row[6].value - 2) if row[6].value > 0 else base_date
else:
dt_from = datetime.strptime(row[5].value, '%Y-%m-%d %H:%M')
dt_to = datetime.strptime(row[6].value, '%Y-%m-%d %H:%M')
@@ -65,8 +65,8 @@ class YuthonLeaveWizard(models.Model):
leave = self.env['hr.leave'].sudo().create({
'employee_id': employee_id.id,
'holiday_status_id': holiday_status_id.id,
'request_date_from': dt_to,
'request_date_to': dt_from,
'request_date_from': dt_from,
'request_date_to': dt_to,
'request_hour_from': request_hour_from[:2].lstrip('0'),
'request_hour_to': request_hour_to[:2].lstrip('0'),
'request_unit_hours':True,})
@@ -43,7 +43,7 @@ class YuthonHrEmployee(models.Model):
# 个人信息
user_salary = fields.Float(string="基本工资")
job_lv_salary = fields.Float(string="职级工资")
salary_group_id = fields.Many2one('yuthon.salary.group', string="工资单分组")
salary_group_id = fields.Many2one('yuthon.salary.group', string="工资单分组", store=True, index=True)
user_sex = fields.Selection([('girl', '女'), ('boy', '男')], string="性别")
+43 -1
View File
@@ -7,6 +7,7 @@ class InheritHrPayslip(models.Model):
base_salary = fields.Float(string='基本工资', compute='_compute_salary', store=True)
yuthon_company = fields.Selection([('thtz', '集团本部'), ('thwg', '天河物管'), ('thlc', '天河粮储')],
related='employee_id.yuthon_company', string="所属公司")
salary_group_id = fields.Many2one(related='employee_id.salary_group_id', string="工资组", store=True, index=True)
performance_bonuses = fields.Float(string='预发绩效奖金', compute='_compute_salary', store=True)
full_attendance_award = fields.Float(string='全勤奖', compute='_compute_salary', store=True)
commuting_allowance = fields.Float(string='通信补贴', compute='_compute_salary', store=True)
@@ -45,6 +46,7 @@ class InheritHrPayslip(models.Model):
attendance_deduction_total = fields.Float(string='考勤扣款合计')
assessment_reserved_amount = fields.Float(string='考核保留量')
is_push = fields.Boolean(string='推送')
is_salary_push = fields.Boolean(string='工资推送')
@api.depends('line_ids')
def _compute_salary(self):
@@ -149,10 +151,50 @@ class InheritHrPayslip(models.Model):
for record in self:
record.write({'is_push': True})
def return_button(self):
for record in self:
record.write({'is_push': False})
def put_salary_button(self):
for record in self:
record.write({'is_salary_push': True})
def return_salary_button(self):
for record in self:
record.write({'is_salary_push': False})
def action_put_wizard(self):
return {
"type": "ir.actions.act_window",
"name": "推送个税计算",
"res_model": "put.wizard",
"view_mode": "form",
"target": "new",
}
def action_return_wizard(self):
return {
"type": "ir.actions.act_window",
"name": "退回薪资计算",
"res_model": "return.wizard",
"view_mode": "form",
"target": "new",
}
def action_put_salary_wizard(self):
return {
"type": "ir.actions.act_window",
"name": "推送工资确认",
"res_model": "put.salary.wizard",
"view_mode": "form",
"target": "new",
}
def action_return_salary_wizard(self):
return {
"type": "ir.actions.act_window",
"name": "退回个税计算",
"res_model": "return.salary.wizard",
"view_mode": "form",
"target": "new",
}
+3 -1
View File
@@ -10,4 +10,6 @@ access_yuthon_account_group,access_yuthon_account_group,model_yuthon_account_gro
access_salary_payslip_wizard,access_salary_payslip_wizard,model_salary_payslip_wizard,base.group_user,1,1,1,1
access_select_delete_wizard,access_select_delete_wizard,model_select_delete_wizard,base.group_user,1,1,1,1
access_put_wizard,access_put_wizard,model_put_wizard,base.group_user,1,1,1,1
access_return_wizard,access_return_wizard,model_return_wizard,base.group_user,1,1,1,1
access_return_wizard,access_return_wizard,model_return_wizard,base.group_user,1,1,1,1
access_return_salary_wizard, access_return_salary_wizard,model_return_salary_wizard,base.group_user,1,1,1,1
access_put_salary_wizard,access_put_salary_wizard,model_put_salary_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
10 access_salary_payslip_wizard access_salary_payslip_wizard model_salary_payslip_wizard base.group_user 1 1 1 1
11 access_select_delete_wizard access_select_delete_wizard model_select_delete_wizard base.group_user 1 1 1 1
12 access_put_wizard access_put_wizard model_put_wizard base.group_user 1 1 1 1
13 access_return_wizard access_return_wizard model_return_wizard base.group_user 1 1 1 1
14 access_return_salary_wizard access_return_salary_wizard model_return_salary_wizard base.group_user 1 1 1 1
15 access_put_salary_wizard access_put_salary_wizard model_put_salary_wizard base.group_user 1 1 1 1
@@ -3,7 +3,7 @@
<record id="hr_payroll_inherit" model="ir.ui.view">
<field name="name">hr.payroll.inherit</field>
<field name="model">hr.payslip</field>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_tree"/>
<field name="inherit_id" ref="hr_payroll.view_hr_payslip_tree"/>
<field name="arch" type="xml">
<xpath expr="//tree" position="attributes">
<attribute name="js_class">custom_salary_button</attribute>
@@ -39,15 +39,16 @@
<field name="total_before_tax"/>
<field name="basic_medical_insurance"/>
<field name="basic_endowment_insurance"/>
<field name="unemployment_insurance"/>
<field name="tax"/>
<field name="housing_provident_fund"/>
<field name="union_dues"/>
<field name="meal_misunderstanding_fee"/>
<field name="is_salary_push" column_invisible="1"/>
</xpath>
<xpath expr="//field[@name='state']" position="after">
<button name="put_payslip" type="object" string="发送" class="btn-primary"/>
<button name="return_salary_button" string="退回" type="object" class="oe_highlight"/>
</xpath>
</field>
</record>
@@ -123,6 +124,7 @@
<field name="housing_provident_fund" invisible="1"/>
<field name="attendance_deduction_total" invisible="1"/>
<field name="assessment_reserved_amount" invisible="1"/>
<!-- <field name="salary_group_id" invisible="1"/>-->
</group>
</group>
</page>
@@ -173,7 +175,9 @@
<field name="continuing_education"/>
<field name="infant_care"/>
<field name="is_push" column_invisible="1"/>
<field name="is_salary_push" column_invisible="1"/>
<button name="return_button" string="退回" type="object" class="oe_highlight"/>
<button name="put_salary_button" string="推送" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
@@ -200,16 +204,24 @@
<field name="arch" type="xml">
<xpath expr="//field[@name='employee_id']" position="after">
<group expand="0" string="Group By">
<filter string="工资单" name="group_by_account_id" context="{'group_by': 'account_id'}"/>
<filter string="工资单" name="group_by_employee" context="{'group_by': 'salary_group_id'}"/>
</group>
</xpath>
</field>
</record>
<record id="hr_payroll.action_view_hr_payslip_month_form" model="ir.actions.act_window">
<field name="name">工资确认</field>
<field name="res_model">hr.payslip</field>
<field name="view_mode">tree,form,search</field>
<field name="domain">[('is_salary_push', '=', True)]</field>
<field name="context">{'search_default_group_by_employee': 1}</field>
</record>
<record id="action_view_hr_payslip_month_form1" model="ir.actions.act_window">
<field name="name">薪资计算</field>
<field name="res_model">hr.payslip</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree,form,search</field>
<field name="domain">[('is_push', '=', False)]</field>
<field name="context">{'search_default_group_by_employee': 1}</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_salary.view_hr_payslip_tree1')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('hr_payroll.view_hr_payslip_form')})]"/>
@@ -217,12 +229,41 @@
<record id="action_view_hr_payslip_month_form2" model="ir.actions.act_window">
<field name="name">个税计算</field>
<field name="res_model">hr.payslip</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('is_push', '=', True)]</field>
<field name="view_mode">tree,form,search</field>
<field name="domain">[('is_push', '=', True), ('is_salary_push', '=', False)]</field>
<field name="context">{'search_default_group_by_employee': 1}</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_salary.view_hr_payslip_tree2')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('hr_payroll.view_hr_payslip_form')})]"/>
</record>
<record id="all_data_put" model="ir.actions.server">
<field name="name">批量推送个税计算</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="state">code</field>
<field name="code">action = model.action_put_wizard()</field>
</record>
<record id="all_data_return" model="ir.actions.server">
<field name="name">批量退回薪资计算</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="state">code</field>
<field name="code">action = model.action_return_wizard()</field>
</record>
<record id="all_data_put_salary" model="ir.actions.server">
<field name="name">批量推送工资确认</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="state">code</field>
<field name="code">action = model.action_put_salary_wizard()</field>
</record>
<record id="all_data_return_salary" model="ir.actions.server">
<field name="name">批量退回个税计算</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip"/>
<field name="state">code</field>
<field name="code">action = model.action_return_salary_wizard()</field>
</record>
<record id="all_data_write_payslip" model="ir.actions.server">
<field name="name">导入累计专项</field>
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
+33 -6
View File
@@ -11,20 +11,47 @@ class PutWizard(models.TransientModel):
_name = 'put.wizard'
_description = '推送二次确认弹窗'
name = fields.Char(string='你确定要全部推送吗?', readonly=1)
name = fields.Char(string='你确定要推送吗?', readonly=1)
def put_confirm(self):
payslip_records = self.env['hr.payslip'].search([])
payslip_records = self.env["hr.payslip"].browse(
self._context.get('active_ids', self._context.get('active_id')))
for record in payslip_records:
record.write({'is_push': True})
class ReturnWizard(models.TransientModel):
_name = 'return.wizard'
_description = '推送退回确认弹窗'
_description = '退回确认弹窗'
name = fields.Char(string='你确定要全部退回吗?', readonly=1)
name = fields.Char(string='你确定要退回吗?', readonly=1)
def return_confirm(self):
payslip_records = self.env['hr.payslip'].search([])
payslip_records = self.env["hr.payslip"].browse(
self._context.get('active_ids', self._context.get('active_id')))
for record in payslip_records:
record.write({'is_push': False})
record.write({'is_push': False})
class PutSalaryWizard(models.TransientModel):
_name = 'put.salary.wizard'
_description = '推送确认弹窗'
name = fields.Char(string='你确定要退回吗?', readonly=1)
def put_confirm(self):
payslip_records = self.env["hr.payslip"].browse(
self._context.get('active_ids', self._context.get('active_id')))
for record in payslip_records:
record.write({'is_salary_push': True})
class ReturnSalaryWizard(models.TransientModel):
_name = 'return.salary.wizard'
_description = '退回确认弹窗'
name = fields.Char(string='你确定要退回吗?', readonly=1)
def return_confirm(self):
payslip_records = self.env["hr.payslip"].browse(
self._context.get('active_ids', self._context.get('active_id')))
for record in payslip_records:
record.write({'is_salary_push': False})
@@ -38,4 +38,42 @@
</form>
</field>
</record>
<record id="put_salary_wizard_form" model="ir.ui.view">
<field name="name">推送弹窗</field>
<field name="model">put.salary.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
<footer>
<button name="put_confirm" string="确认" type="object" class="oe_highlight"/>
<button string="返回" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="return_salary_wizard_form" model="ir.ui.view">
<field name="name">退回弹窗</field>
<field name="model">return.salary.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="name"/>
</group>
</group>
</sheet>
<footer>
<button name="return_confirm" string="确认" type="object" class="oe_highlight"/>
<button string="返回" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>
+1
View File
@@ -61,6 +61,7 @@
sequence="12"/>
<menuitem id="hr_recruitment_setting_menu_board"
name="配置"
parent="hr_recruitment_menu_root_board"
sequence="99"/>
<menuitem id="hr_recruitment_set_menu_board"
name="设置"