diff --git a/yuthon_hr_employee/models/yuthon_hr_department.py b/yuthon_hr_employee/models/yuthon_hr_department.py
index a625ffb19..f20abed1f 100644
--- a/yuthon_hr_employee/models/yuthon_hr_department.py
+++ b/yuthon_hr_employee/models/yuthon_hr_department.py
@@ -8,6 +8,13 @@ class YuthonHrDepartment(models.Model):
_rec_name = 'name'
_order = 'department_code asc'
+ def change_company_id(self):
+ company_dict = {'thtz':'集团本部', 'thwg':'天河物管', 'thlc':'天河粮储', }
+ employee_ids = self.browse(self._context.get('active_ids', self._context.get('active_id')))
+ for i in employee_ids:
+ company_id = self.env['res.company'].search([('name', '=', company_dict[i.yuthon_company])])
+ i.company_id = company_id
+
department_phone = fields.Char(string="部门电话")
department_fax = fields.Char(string="部门传真")
department_location = fields.Char(string="部门地址")
diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py
index 957bb408b..0032bf8f3 100644
--- a/yuthon_hr_employee/models/yuthon_hr_employee.py
+++ b/yuthon_hr_employee/models/yuthon_hr_employee.py
@@ -26,6 +26,12 @@ class YuthonHrEmployee(models.Model):
_inherit = "hr.employee"
_order = 'number asc'
+ def change_company_id(self):
+ company_dict = {'thtz':'集团本部', 'thwg':'天河物管', 'thlc':'天河粮储', }
+ employee_ids = self.browse(self._context.get('active_ids', self._context.get('active_id')))
+ for i in employee_ids:
+ company_id = self.env['res.company'].search([('name', '=', company_dict[i.yuthon_company])])
+ i.company_id = company_id
# odoo里是这样做的,一个用户可以多个公司绑定多个员工,每个员工都有自己的部门和岗位
user_role_ids_changed = fields.Boolean(string="xxx") # bug
wecom_userid = fields.Char(string="成员UserID", default="")
@@ -171,6 +177,7 @@ class YuthonHrEmployee(models.Model):
@api.depends('social_base_on', 'social_base_off')
def _compute_insurance_bases(self):
current_month = datetime.now().month
+ self.medical_insurance_base = self.pension_insurance_base = self.work_injury_insurance_base = self.housing_fund_base = 0
if 1 <= current_month <= 6:
base = self.social_base_on
else:
diff --git a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
index 851e8f0dd..93c408e65 100644
--- a/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
+++ b/yuthon_hr_employee/views/yuthon_hr_employee_views.xml
@@ -394,6 +394,26 @@
code
action = model.action_hr_employee()
+
+
+
+
+ 测试更新公司company_id
+
+
+ code
+ action = model.change_company_id()
+
+
+ 测试更新公司company_id
+
+
+ code
+ action = model.change_company_id()
+
+
+
+
tree,kanban,form,activity,graph,pivot,hierarchy
diff --git a/yuthon_salary/models/inherit_hr_payslip.py b/yuthon_salary/models/inherit_hr_payslip.py
index 9efabd8c5..02b1ee96c 100644
--- a/yuthon_salary/models/inherit_hr_payslip.py
+++ b/yuthon_salary/models/inherit_hr_payslip.py
@@ -75,6 +75,17 @@ class InheritHrPayslip(models.Model):
commuting_deduction = fields.Float(string='扣发通勤补贴', store=True)
base_salary_deduction = fields.Float(string='扣发基本工资', store=True)
+
+ def action_refresh_from_work_entries(self):
+ if any(p.state not in ['draft', 'verify'] for p in self):
+ raise UserError(_('The payslips should be in Draft or Waiting state.'))
+ payslip_records = self.browse(self._context.get('active_ids', self._context.get('active_id')))
+ for pay in payslip_records:
+ # payslips = self.filtered(lambda p: not p.edited)
+ pay.mapped('worked_days_line_ids').unlink()
+ pay.mapped('line_ids').unlink()
+ pay._compute_worked_days_line_ids()
+ pay.compute_sheet()
@api.depends('line_ids')
def _compute_salary(self):
for rec in self:
diff --git a/yuthon_salary/models/yuthon_payroll_project.py b/yuthon_salary/models/yuthon_payroll_project.py
index a2c4e20c8..af80b6875 100644
--- a/yuthon_salary/models/yuthon_payroll_project.py
+++ b/yuthon_salary/models/yuthon_payroll_project.py
@@ -173,27 +173,41 @@ class YuthonPayrollInsurances (models.Model):
continue
rule_list = []
formula_salary = ''
+ number = ins.proportion_employee * 0.01
+ code = 'None'
+ if ins.name == '基本医疗保险费':
+ code = 'JBYLIAO'
+ formula_salary = "result = employee.medical_insurance_base * " + str(number)
+ if ins.name == '基本养老保险费':
+ code = 'JBYLAO'
+ formula_salary = "result = employee.pension_insurance_base * " + str(number)
+ if ins.name == '失业保险费':
+ code = 'SYBX'
+ formula_salary = "result = employee.social_base_on * " + str(number)
+ if ins.name == '工伤保险费':
+ code = 'GSBX'
+ formula_salary = "result = employee.work_injury_insurance_base * " + str(number)
+ if ins.name == '住房公积金':
+ code = 'ZFGJJ'
+ formula_salary = "result = employee.housing_fund_base * " + str(number)
+ if ins.name == '工会会费':
+ code = 'GHHF'
+ formula_salary = "result = round((payslip.base_salary * 0.005), 2)"
+ if ins.name == '企业(职业)年金':
+ code = 'QYNJ'
+ # formula_salary = "result = (employee.last_year_salary * 0.02) if employee.regularization_year != 0 else ((payslip.base_salary + payslip.rank_salary) * 0.02)"
+ formula_salary = "result = round((employee.last_year_salary * 0.02), 0)"
if ins.name not in sal.rule_ids.mapped('name'):
- number = ins.proportion_employee * 0.01
- if ins.name == '基本医疗保险费':
- formula_salary = "result = employee.medical_insurance_base * " + str(number)
- if ins.name == '基本养老保险费':
- formula_salary = "result = employee.pension_insurance_base * " + str(number)
- if ins.name == '失业保险费':
- formula_salary = "result = employee.social_base_on * " + str(number)
- if ins.name == '工伤保险费':
- formula_salary = "result = employee.work_injury_insurance_base * " + str(number)
- if ins.name == '住房公积金':
- formula_salary = "result = employee.housing_fund_base * " + str(number)
- code = "".join([p[0][0] for p in pinyin(ins.name, style=Style.FIRST_LETTER)]).upper()
rule_list.append([0, 0, {
'name': ins.name,
'category_id': self.env['hr.salary.rule.category'].search([('name', '=', '五险一金')], limit=1).id,
- 'code': code if ins.name != '基本养老保险费' else 'JBYLBXF2',
+ 'code': code,
'amount_select': 'code',
'amount_python_compute': formula_salary,
'struct_id': sal.id,
}])
sal.write({'rule_ids': rule_list})
+ else:
+ sal.rule_ids.search([('name', '=', ins.name)]).write({'amount_python_compute': formula_salary})