添加功能

This commit is contained in:
zhou
2025-02-18 11:53:47 +08:00
parent dd3c130436
commit 040239b245
9 changed files with 224 additions and 93 deletions
+36 -2
View File
@@ -37,7 +37,41 @@
</tree>
</field>
</record>
<record id="soong_workflow_record_kanban" model="ir.ui.view">
<field name="name">soong.workflow.record.kanban</field>
<field name="model">soong.workflow.record</field>
<field name="arch" type="xml">
<kanban class="kk_kanban_row">
<templates>
<t t-name="kanban-box">
<div class="oe_kanban_card oe_kanban_global_click">
<div class="oe_kanban_details">
<div class="o_kanban_record_top mb-0">
<div class="o_kanban_record_headings">
<strong class="o_kanban_record_title">
<field name="name"/>
</strong>
<div>
<span>发起人:</span>
<field name="done_by"/>
</div>
<div>
<span>流水号:</span>
<field name="code"/>
</div>
<div>
<span>最后更新日期:</span>
<field name="write_date"/>
</div>
</div>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="soong_workflow_record_tree_restore" model="ir.ui.view">
<field name="name">soong.workflow.record.tree.restore</field>
<field name="model">soong.workflow.record</field>
@@ -64,7 +98,7 @@
<field name="name">工作流记录</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree,form,kanban</field>
<field name="domain">[('users_ids', 'in', [uid]), ('reclaim_state', '=', False)]</field>
<field name="search_view_id" ref="soong_workflow_record_search"/>
</record>
+1
View File
@@ -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',
],
+2 -1
View File
@@ -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
from . import yuthon_payroll_type_setting
from . import yuthon_payroll_project
@@ -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):
@@ -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="失效日期")
+4 -1
View File
@@ -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
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_yuthon_salary_wizard access_yuthon_salary_wizard model_yuthon_salary_wizard base.group_user 1 1 1 1
3 access_yuthon_payroll_type_setting access_yuthon_payroll_type_setting model_yuthon_payroll_type_setting base.group_user 1 1 1 1
4 access_yuthon_payroll_common access_yuthon_payroll_common model_yuthon_payroll_common base.group_user 1 1 1 1
5 access_yuthon_payroll_temporary access_yuthon_payroll_temporary model_yuthon_payroll_temporary base.group_user 1 1 1 1
6 access_yuthon_payroll_insurances access_yuthon_payroll_insurances model_yuthon_payroll_insurances base.group_user 1 1 1 1
@@ -17,7 +17,7 @@
<xpath expr="//field[@name='name']" position="before">
<field name="sequence"/>
<field name="type_id"/>
<field name="level_id"/>
<field name="level_id" column_invisible="1"/>
<field name="lv_name" column_invisible="1"/>
</xpath>
<xpath expr="//field[@name='name']" position="after">
@@ -28,50 +28,6 @@
<field name="seniority_salary"/>
<field name="overtime_pay"/>
<field name="full_attendance_bonus"/>
<field name="attendance_deduction"/>
<field name="assessment_reserve"/>
<field name="temporary_performance_salary"/>
<field name="post_allowance_bonus"/>
<field name="excellence_performance_bonus"/>
<field name="performance_bonus_recovery"/>
<field name="seniority_award"/>
<field name="special_management_bonus"/>
<field name="annual_leave_settlement"/>
<field name="assessment_reserve_payment"/>
<field name="learning_progress_award"/>
<field name="performance_assessment_excellence_bonus"/>
<field name="prepaid_performance_bonus_recovery"/>
<field name="temporary_performance_wages"/>
<field name="year_end_double_salary"/>
<field name="excellence_award_bonus"/>
<field name="excellence_bonus"/>
<field name="learning_progress_bonus"/>
<field name="social_security_overdeduction_refund"/>
<field name="performance_bonus_deduction"/>
<field name="communication_subsidy_deduction"/>
<field name="seniority_award_bonus"/>
<field name="total_budget_salary"/>
<field name="pre_tax_salary"/>
<field name="year_end_bonus"/>
<field name="basic_pension"/>
<field name="basic_medical"/>
<field name="unemployment"/>
<field name="housing_fund"/>
<field name="personal_contributions_total"/>
<field name="child_education"/>
<field name="elderly_support"/>
<field name="housing_loan"/>
<field name="housing_rent"/>
<field name="continuing_education"/>
<field name="infant_care"/>
<field name="special_deductions_total"/>
<field name="corporate_annuity"/>
<field name="payable_salary"/>
<field name="social_security_funds"/>
<field name="annuity"/>
<field name="tax_adjustment"/>
<field name="union_fees"/>
<field name="actual_salary"/>
<field name="yuthon_company"/>
<field name="create_time"/>
<field name="end_time"/>
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="view_yuthon_payroll_common_tree" model="ir.ui.view">
<field name="name">yuthon.payroll.common.tree</field>
<field name="model">yuthon.payroll.common</field>
<field name="arch" type="xml">
<tree string="薪资常用项" editable="bottom">
<field name="name"/>
<field name="yuthon_company"/>
<field name="department_id"/>
<field name="conditional_formulas"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</record>
<record id="view_yuthon_payroll_tt_common_action" model="ir.actions.act_window">
<field name="name">薪资常用项</field>
<field name="res_model">yuthon.payroll.common</field>
<field name="domain">[('yuthon_company','=','thtz')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_lc_common_action" model="ir.actions.act_window">
<field name="name">薪资常用项</field>
<field name="res_model">yuthon.payroll.common</field>
<field name="domain">[('yuthon_company','=','thlc')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_wg_common_action" model="ir.actions.act_window">
<field name="name">薪资常用项</field>
<field name="res_model">yuthon.payroll.common</field>
<field name="domain">[('yuthon_company','=','thwg')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_temporary_tree" model="ir.ui.view">
<field name="name">yuthon.payroll.temporary.tree</field>
<field name="model">yuthon.payroll.temporary</field>
<field name="arch" type="xml">
<tree string="临时工资项" editable="bottom">
<field name="name"/>
<field name="yuthon_company"/>
<field name="department_id"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</record>
<record id="view_yuthon_payroll_tt_temporary_action" model="ir.actions.act_window">
<field name="name">临时工资项</field>
<field name="res_model">yuthon.payroll.temporary</field>
<field name="domain">[('yuthon_company','=','thtz')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_lc_temporary_action" model="ir.actions.act_window">
<field name="name">临时工资项</field>
<field name="res_model">yuthon.payroll.temporary</field>
<field name="domain">[('yuthon_company','=','thlc')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_wg_temporary_action" model="ir.actions.act_window">
<field name="name">临时工资项</field>
<field name="res_model">yuthon.payroll.temporary</field>
<field name="domain">[('yuthon_company','=','thwg')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_insurances_tree" model="ir.ui.view">
<field name="name">yuthon.payroll.insurances.tree</field>
<field name="model">yuthon.payroll.insurances</field>
<field name="arch" type="xml">
<tree string="五险一金" editable="bottom">
<field name="name"/>
<field name="yuthon_company"/>
<field name="department_id"/>
<field name="start_date"/>
<field name="end_date"/>
</tree>
</field>
</record>
<record id="view_yuthon_payroll_tt_insurances_action" model="ir.actions.act_window">
<field name="name">五险一金</field>
<field name="res_model">yuthon.payroll.insurances</field>
<field name="domain">[('yuthon_company','=','thtz')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_lc_insurances_action" model="ir.actions.act_window">
<field name="name">五险一金</field>
<field name="res_model">yuthon.payroll.insurances</field>
<field name="domain">[('yuthon_company','=','thlc')]</field>
<field name="view_mode">tree</field>
</record>
<record id="view_yuthon_payroll_wg_insurances_action" model="ir.actions.act_window">
<field name="name">五险一金</field>
<field name="res_model">yuthon.payroll.insurances</field>
<field name="domain">[('yuthon_company','=','thwg')]</field>
<field name="view_mode">tree</field>
</record>
</odoo>
+45
View File
@@ -350,6 +350,21 @@
parent="human_pay_setting_structural_tt_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form1"
sequence="3"/>
<menuitem id="hr_payroll_common_tt_board"
name="常用项"
parent="human_pay_setting_structural_tt_board"
action="yuthon_salary.view_yuthon_payroll_tt_common_action"
sequence="5"/>
<menuitem id="hr_payroll_temporary_tt_board"
name="临时项"
parent="human_pay_setting_structural_tt_board"
action="yuthon_salary.view_yuthon_payroll_tt_temporary_action"
sequence="7"/>
<menuitem id="hr_payroll_insurance_tt_board"
name="五险一金"
parent="human_pay_setting_structural_tt_board"
action="yuthon_salary.view_yuthon_payroll_tt_insurances_action"
sequence="9"/>
<!-- <menuitem id="human_pay_setting_payroll_items_tt_board"-->
<!-- name="工资项"-->
<!-- parent="human_pay_setting_structural_tt_board"-->
@@ -374,6 +389,21 @@
parent="human_pay_setting_structural_lc_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form2"
sequence="3"/>
<menuitem id="hr_payroll_common_lc_board"
name="常用项"
parent="human_pay_setting_structural_lc_board"
action="yuthon_salary.view_yuthon_payroll_lc_common_action"
sequence="5"/>
<menuitem id="hr_payroll_temporary_lc_board"
name="临时项"
parent="human_pay_setting_structural_lc_board"
action="yuthon_salary.view_yuthon_payroll_lc_temporary_action"
sequence="7"/>
<menuitem id="hr_payroll_insurances_lc_board"
name="五险一金"
parent="human_pay_setting_structural_lc_board"
action="yuthon_salary.view_yuthon_payroll_lc_insurances_action"
sequence="9"/>
<!-- <menuitem id="human_pay_setting_payroll_items_lc_board"-->
<!-- name="工资项"-->
<!-- parent="human_pay_setting_structural_lc_board"-->
@@ -398,6 +428,21 @@
parent="human_pay_setting_structural_wg_board"
action="yuthon_salary.action_view_hr_payroll_structure_list_form3"
sequence="5"/>
<menuitem id="hr_payroll_common_wg_board"
name="常用项"
parent="human_pay_setting_structural_wg_board"
action="yuthon_salary.view_yuthon_payroll_wg_common_action"
sequence="7"/>
<menuitem id="hr_payroll_temporary_wg_board"
name="临时项"
parent="human_pay_setting_structural_wg_board"
action="yuthon_salary.view_yuthon_payroll_wg_temporary_action"
sequence="9"/>
<menuitem id="hr_payroll_insurance_wg_board"
name="五险一金"
parent="human_pay_setting_structural_wg_board"
action="yuthon_salary.view_yuthon_payroll_wg_insurances_action"
sequence="11"/>
<!-- <menuitem id="human_pay_setting_payroll_items_wg_board"-->
<!-- name="工资项"-->
<!-- parent="human_pay_setting_structural_wg_board"-->