diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index c79a90d66..a92d9efbf 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -37,7 +37,41 @@
-
+
+ soong.workflow.record.kanban
+ soong.workflow.record
+
+
+
+
+
+
+
+
+
+
+
+
+ 发起人:
+
+
+
+ 流水号:
+
+
+
+ 最后更新日期:
+
+
+
+
+
+
+
+
+
+
+
soong.workflow.record.tree.restore
soong.workflow.record
@@ -64,7 +98,7 @@
工作流记录
ir.actions.act_window
soong.workflow.record
- tree,form
+ tree,form,kanban
[('users_ids', 'in', [uid]), ('reclaim_state', '=', False)]
diff --git a/yuthon_salary/__manifest__.py b/yuthon_salary/__manifest__.py
index eda5a0480..e52bc52d0 100644
--- a/yuthon_salary/__manifest__.py
+++ b/yuthon_salary/__manifest__.py
@@ -17,6 +17,7 @@
'views/inherit_hr_salary_rule_views.xml',
'views/inherit_hr_payslip_views.xml',
'views/inherit_hr_payroll_structure_type_views.xml',
+ 'views/yuthon_payroll_project_views.xml',
'views/yuthon_payroll_type_setting_views.xml',
'wizard/yuthon_salary_wizard_views.xml',
],
diff --git a/yuthon_salary/models/__init__.py b/yuthon_salary/models/__init__.py
index 66a92a44c..86634a361 100644
--- a/yuthon_salary/models/__init__.py
+++ b/yuthon_salary/models/__init__.py
@@ -2,4 +2,5 @@ from . import inherit_hr_payroll_structure
from . import inherit_hr_salary_rule
from . import inherit_hr_payroll_structure_type
from . import inherit_hr_payslip
-from . import yuthon_payroll_type_setting
\ No newline at end of file
+from . import yuthon_payroll_type_setting
+from . import yuthon_payroll_project
\ No newline at end of file
diff --git a/yuthon_salary/models/inherit_hr_payroll_structure.py b/yuthon_salary/models/inherit_hr_payroll_structure.py
index 1ec80a1ba..2bbdecbc6 100644
--- a/yuthon_salary/models/inherit_hr_payroll_structure.py
+++ b/yuthon_salary/models/inherit_hr_payroll_structure.py
@@ -24,50 +24,6 @@ class HrPayrollStructure(models.Model):
seniority_salary = fields.Monetary(string="工龄工资", currency_field="currency_id")
overtime_pay = fields.Monetary(string="加班费", currency_field="currency_id")
full_attendance_bonus = fields.Monetary(string="全勤奖", currency_field="currency_id")
- attendance_deduction = fields.Monetary(string="考勤扣款合计", currency_field="currency_id")
- assessment_reserve = fields.Monetary(string="考核保留量", currency_field="currency_id")
- temporary_performance_salary = fields.Monetary(string="临时绩效工资", currency_field="currency_id")
- post_allowance_bonus = fields.Monetary(string="顶岗奖励", currency_field="currency_id")
- excellence_performance_bonus = fields.Monetary(string="评优绩效奖金", currency_field="currency_id")
- performance_bonus_recovery = fields.Monetary(string="绩效奖金扣回", currency_field="currency_id")
- seniority_award = fields.Monetary(string="年功奖", currency_field="currency_id")
- special_management_bonus = fields.Monetary(string="经营特别奖", currency_field="currency_id")
- annual_leave_settlement = fields.Monetary(string="年假结算", currency_field="currency_id")
- assessment_reserve_payment = fields.Monetary(string="考核保留量发放", currency_field="currency_id")
- learning_progress_award = fields.Monetary(string="学习进步奖", currency_field="currency_id")
- performance_assessment_excellence_bonus = fields.Monetary(string="绩效考核评优奖金", currency_field="currency_id")
- prepaid_performance_bonus_recovery = fields.Monetary(string="预发绩效奖金扣回", currency_field="currency_id")
- temporary_performance_wages = fields.Monetary(string="临时绩效工资", currency_field="currency_id")
- year_end_double_salary = fields.Monetary(string="年终双薪", currency_field="currency_id")
- excellence_award_bonus = fields.Monetary(string="评优绩效奖金", currency_field="currency_id")
- excellence_bonus = fields.Monetary(string="评优奖金", currency_field="currency_id")
- learning_progress_bonus = fields.Monetary(string="学习进步奖", currency_field="currency_id")
- social_security_overdeduction_refund = fields.Monetary(string="多扣社保退回", currency_field="currency_id")
- performance_bonus_deduction = fields.Monetary(string="绩效奖金扣回", currency_field="currency_id")
- communication_subsidy_deduction = fields.Monetary(string="通讯补贴扣回", currency_field="currency_id")
- seniority_award_bonus = fields.Monetary(string="年功奖", currency_field="currency_id")
- total_budget_salary = fields.Monetary(string="(预算口径)应发工资合计", currency_field="currency_id")
- pre_tax_salary = fields.Monetary(string="税前工资合计", currency_field="currency_id")
- year_end_bonus = fields.Monetary(string="年终奖金", currency_field="currency_id")
- basic_pension = fields.Monetary(string="基本养老", currency_field="currency_id")
- basic_medical = fields.Monetary(string="基本医疗", currency_field="currency_id")
- unemployment = fields.Monetary(string="失业", currency_field="currency_id")
- housing_fund = fields.Monetary(string="公积金", currency_field="currency_id")
- personal_contributions_total = fields.Monetary(string="个人缴纳合计", currency_field="currency_id")
- child_education = fields.Monetary(string="子女教育", currency_field="currency_id")
- elderly_support = fields.Monetary(string="赡养老人", currency_field="currency_id")
- housing_loan = fields.Monetary(string="住房贷款", currency_field="currency_id")
- housing_rent = fields.Monetary(string="住房租金", currency_field="currency_id")
- continuing_education = fields.Monetary(string="继续教育", currency_field="currency_id")
- infant_care = fields.Monetary(string="3岁以下婴幼儿照护", currency_field="currency_id")
- special_deductions_total = fields.Monetary(string="专项附加扣除小计", currency_field="currency_id")
- corporate_annuity = fields.Monetary(string="企业年金", currency_field="currency_id")
- payable_salary = fields.Monetary(string="应发工资", currency_field="currency_id")
- social_security_funds = fields.Monetary(string="三险一金", currency_field="currency_id")
- annuity = fields.Monetary(string="年金", currency_field="currency_id")
- tax_adjustment = fields.Monetary(string="应补(退)税额", currency_field="currency_id")
- union_fees = fields.Monetary(string="工会会费", currency_field="currency_id")
- actual_salary = fields.Monetary(string="实发工资", currency_field="currency_id")
@api.model
def read_group(self, domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True):
diff --git a/yuthon_salary/models/yuthon_payroll_project.py b/yuthon_salary/models/yuthon_payroll_project.py
new file mode 100644
index 000000000..625b79c65
--- /dev/null
+++ b/yuthon_salary/models/yuthon_payroll_project.py
@@ -0,0 +1,38 @@
+from odoo import api, fields, models, _
+
+
+class YuthonPayrollCommon(models.Model):
+ _name = 'yuthon.payroll.common'
+ _description = '薪资常用项'
+
+ name = fields.Char(string='工资项名称')
+ yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储')],
+ string='所属公司')
+ department_id = fields.Many2one('hr.department', string="部门")
+ conditional_formulas = fields.Char(string='条件公式') # todo 可能是个many2one
+ start_date = fields.Date(string="生效日期", default=fields.Date.today())
+ end_date = fields.Date(string="失效日期")
+
+
+class YuthonPayrollTemporary(models.Model):
+ _name = 'yuthon.payroll.temporary'
+ _description = '薪资临时项'
+
+ name = fields.Char(string='工资项名称')
+ yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储')],
+ string='所属公司')
+ department_id = fields.Many2one('hr.department', string="部门")
+ start_date = fields.Date(string="生效日期", default=fields.Date.today())
+ end_date = fields.Date(string="失效日期")
+
+
+class YuthonPayrollInsurances (models.Model):
+ _name = 'yuthon.payroll.insurances'
+ _description = '五险一金'
+
+ name = fields.Char(string='工资项名称')
+ yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储')],
+ string='所属公司')
+ department_id = fields.Many2one('hr.department', string="部门")
+ start_date = fields.Date(string="生效日期", default=fields.Date.today())
+ end_date = fields.Date(string="失效日期")
\ No newline at end of file
diff --git a/yuthon_salary/security/ir.model.access.csv b/yuthon_salary/security/ir.model.access.csv
index fd7e38151..a68cc4d82 100644
--- a/yuthon_salary/security/ir.model.access.csv
+++ b/yuthon_salary/security/ir.model.access.csv
@@ -1,3 +1,6 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_yuthon_salary_wizard,access_yuthon_salary_wizard,model_yuthon_salary_wizard,base.group_user,1,1,1,1
-access_yuthon_payroll_type_setting,access_yuthon_payroll_type_setting,model_yuthon_payroll_type_setting,base.group_user,1,1,1,1
\ No newline at end of file
+access_yuthon_payroll_type_setting,access_yuthon_payroll_type_setting,model_yuthon_payroll_type_setting,base.group_user,1,1,1,1
+access_yuthon_payroll_common,access_yuthon_payroll_common,model_yuthon_payroll_common,base.group_user,1,1,1,1
+access_yuthon_payroll_temporary,access_yuthon_payroll_temporary,model_yuthon_payroll_temporary,base.group_user,1,1,1,1
+access_yuthon_payroll_insurances,access_yuthon_payroll_insurances,model_yuthon_payroll_insurances,base.group_user,1,1,1,1
diff --git a/yuthon_salary/views/inherit_hr_payroll_structure_views.xml b/yuthon_salary/views/inherit_hr_payroll_structure_views.xml
index 31cc55539..d794a5aea 100644
--- a/yuthon_salary/views/inherit_hr_payroll_structure_views.xml
+++ b/yuthon_salary/views/inherit_hr_payroll_structure_views.xml
@@ -17,7 +17,7 @@
-
+
@@ -28,50 +28,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/yuthon_salary/views/yuthon_payroll_project_views.xml b/yuthon_salary/views/yuthon_payroll_project_views.xml
new file mode 100644
index 000000000..5a7017e01
--- /dev/null
+++ b/yuthon_salary/views/yuthon_payroll_project_views.xml
@@ -0,0 +1,97 @@
+
+
+
+ yuthon.payroll.common.tree
+ yuthon.payroll.common
+
+
+
+
+
+
+
+
+
+
+
+
+ 薪资常用项
+ yuthon.payroll.common
+ [('yuthon_company','=','thtz')]
+ tree
+
+
+ 薪资常用项
+ yuthon.payroll.common
+ [('yuthon_company','=','thlc')]
+ tree
+
+
+ 薪资常用项
+ yuthon.payroll.common
+ [('yuthon_company','=','thwg')]
+ tree
+
+
+ yuthon.payroll.temporary.tree
+ yuthon.payroll.temporary
+
+
+
+
+
+
+
+
+
+
+
+ 临时工资项
+ yuthon.payroll.temporary
+ [('yuthon_company','=','thtz')]
+ tree
+
+
+ 临时工资项
+ yuthon.payroll.temporary
+ [('yuthon_company','=','thlc')]
+ tree
+
+
+ 临时工资项
+ yuthon.payroll.temporary
+ [('yuthon_company','=','thwg')]
+ tree
+
+
+ yuthon.payroll.insurances.tree
+ yuthon.payroll.insurances
+
+
+
+
+
+
+
+
+
+
+
+ 五险一金
+ yuthon.payroll.insurances
+ [('yuthon_company','=','thtz')]
+ tree
+
+
+ 五险一金
+ yuthon.payroll.insurances
+ [('yuthon_company','=','thlc')]
+ tree
+
+
+ 五险一金
+ yuthon.payroll.insurances
+ [('yuthon_company','=','thwg')]
+ tree
+
+
diff --git a/yuthon_work_brand/views/hr_menus.xml b/yuthon_work_brand/views/hr_menus.xml
index 7e7567573..c18750d95 100644
--- a/yuthon_work_brand/views/hr_menus.xml
+++ b/yuthon_work_brand/views/hr_menus.xml
@@ -350,6 +350,21 @@
parent="human_pay_setting_structural_tt_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form1"
sequence="3"/>
+
+
+
@@ -374,6 +389,21 @@
parent="human_pay_setting_structural_lc_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form2"
sequence="3"/>
+
+
+
@@ -398,6 +428,21 @@
parent="human_pay_setting_structural_wg_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form3"
sequence="5"/>
+
+
+