添加功能

This commit is contained in:
zhou
2025-07-23 21:31:29 +08:00
parent 7c58989611
commit bd01df8fe5
2 changed files with 197 additions and 91 deletions
+182 -89
View File
@@ -45,94 +45,6 @@
<xpath expr="//field[@name='state']" position="attributes">
<attribute name="column_invisible">1</attribute>
</xpath>
<xpath expr="//field[@name='net_wage']" position="after">
<field name="date_of_entry" column_invisible="1"/>
<field name="struct_id" string="职级" column_invisible="1"/>
<field name="bank_account_id" optional="show"/>
<field name="actual_salary" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="actual_salary" decoration-danger="1" decoration-bf="1" column_invisible="1"/>
<field name="total_before_tax" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="b_year" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="tax_payable" decoration-danger="1" decoration-bf="1" readonly="1" column_invisible="1"/>
<field name="union_dues" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="three_one" optional="show"/>
<field name="base_salary" required="1" optional="show"/>
<field name="rank_salary" required="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="position_subsidy" groups="yuthon_salary.group_wg_user, yuthon_salary.group_lc_user" optional="show" decoration-success="1"/>
<field name="position_salary" groups="yuthon_salary.group_lc_user, yuthon_salary.group_wg_user" optional="show" decoration-danger="1"/>
<field name="performance_bonuses" required="1" optional="show" groups="yuthon_salary.group_jtbb_user, yuthon_salary.group_lc_user"/>
<field name="based_pay" required="1" optional="show" groups="yuthon_salary.group_lc_user, yuthon_salary.group_jtbb_user"/>
<field name="seniority_allowance" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="safety_subsidy" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="comprehensive_subsidy" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="job_performance" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="duty" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="environmental_allowance" decoration-success="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="quality_allowance" decoration-success="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="high_subsidy" decoration-success="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="spring_festival" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="seniority_salary" required="1" decoration-success="1" groups="yuthon_salary.group_jtbb_user" optional="show"/>
<field name="commuting_allowance" required="1" decoration-success="1" groups="yuthon_salary.group_jtbb_user, yuthon_salary.group_wg_user" optional="show"/>
<field name="full_attendance_award" decoration-success="1" groups="yuthon_salary.group_jtbb_user, yuthon_salary.group_wg_user" optional="show"/>
<field name="overtime_pay" decoration-success="1" groups="yuthon_salary.group_jtbb_user, yuthon_salary.group_wg_user" optional="show"/>
<field name="meal_misunderstanding_fee" decoration-success="1" groups="yuthon_salary.group_jtbb_user" optional="show"/>
<field name="children_welfare_fee" decoration-success="1" groups="yuthon_salary.group_jtbb_user" optional="show"/>
<field name="condolence_fund" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="retroactive_allowance" decoration-success="1" groups="yuthon_salary.group_jtbb_user" optional="show"/>
<field name="last_duty" decoration-success="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="excellent_employees" decoration-success="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="base_salary_deduction" decoration-success="1" decoration-bf="1" groups="yuthon_salary.group_jtbb_user" optional="show"/>
<field name="basic_endowment_insurance" decoration-info="1" optional="show"/>
<field name="basic_medical_insurance" decoration-info="1" optional="show"/>
<field name="unemployment_insurance" decoration-info="1" optional="show"/>
<field name="housing_provident_fund" decoration-info="1" optional="show"/>
<field name="work_injury_insurance" decoration-info="1" optional="show"/>
<field name="specialized_deduction" decoration-warning="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="infant_care" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="child_education" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="elderly_support" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="housing_loan_interest" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="housing_rent" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="continuing_education" decoration-warning="1" optional="show" column_invisible="1"/>
<field name="individual_tax_refund" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="temporary_performance_bonus" decoration-danger="1" optional="show" column_invisible="1"/>
<field name="social_security" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="liquidation_year" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="year_compute" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="year_jie" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="maternity_allowance" decoration-danger="1" optional="show"/>
<field name="individual_income_tax" decoration-danger="1" optional="show"/>
<field name="add_income_tax" decoration-danger="1" optional="show"/>
<field name="minus_annuity_difference" decoration-danger="1" optional="show"/>
<field name="add_annuity_difference" decoration-danger="1" optional="show"/>
<field name="minus_att" decoration-danger="1" optional="show"/>
<field name="add_att" decoration-danger="1" optional="show"/>
<field name="performance_up" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="jing_te" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="year_gong" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="study_on" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="excellent_employees" decoration-danger="1" groups="yuthon_salary.group_wg_user" optional="show"/>
<field name="last_year_jie" decoration-danger="1" optional="show"/>
<field name="medical_fee" decoration-danger="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="retroactive_insurance" decoration-danger="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="distribution_part" decoration-danger="1" groups="yuthon_salary.group_lc_user" optional="show"/>
<field name="commuting_deduction" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="performance_deduction" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="retention_previous_year" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="deduction_standard" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user" column_invisible="1"/>
<field name="safety_incentives" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user" />
<field name="last_year_safety" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="last_year_performance_evaluation" decoration-danger="1" optional="show" groups="yuthon_salary.group_jtbb_user"/>
<field name="salary_state" optional="show"/>
<field name="is_salary_release" column_invisible="1"/>
<field name="is_salary_push" column_invisible="1"/>
</xpath>
<xpath expr="//field[@name='state']" position="after">
<button name="put_release" type="object" string="推送" class="btn-primary" invisible="is_salary_release"/>
<button name="put_payslip" type="object" string="发送" class="btn-primary" invisible="not is_salary_release"/>
<button name="return_salary_button" string="退回" type="object" class="oe_highlight" invisible="not is_salary_release"/>
<button name="open_record" string="详情" type="object" class="oe_highlight"/>
</xpath>
</field>
</record>
<record id="hr_payroll_inherit_form" model="ir.ui.view">
@@ -276,6 +188,164 @@
</xpath>
</field>
</record>
<record id="view_hr_payslip_tree_validation_jtbb" model="ir.ui.view">
<field name="name">hr.payslip.tree.validation.jtbb</field>
<field name="model">hr.payslip</field>
<field name="arch" type="xml">
<tree string="薪资审定">
<field name="employee_id" string="姓名" readonly="1" options="{'no_open': True}" decoration-danger="is_bold" decoration-bf="is_bold"/>
<field name="date_of_entry" optional="show"/>
<field name="actual_salary" optional="show"/>
<field name="total_before_tax" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="three_one" optional="show"/>
<field name="b_year" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="union_dues" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="base_salary" required="1" optional="show"/>
<field name="basic_endowment_insurance" decoration-info="1" optional="show"/>
<field name="basic_medical_insurance" decoration-info="1" optional="show"/>
<field name="unemployment_insurance" decoration-info="1" optional="show"/>
<field name="housing_provident_fund" decoration-info="1" optional="show"/>
<field name="work_injury_insurance" decoration-info="1" optional="show"/>
<field name="maternity_allowance" decoration-danger="1" optional="show"/>
<field name="individual_income_tax" decoration-danger="1" optional="show"/>
<field name="add_income_tax" decoration-danger="1" optional="show"/>
<field name="minus_annuity_difference" decoration-danger="1" optional="show"/>
<field name="add_annuity_difference" decoration-danger="1" optional="show"/>
<field name="minus_att" decoration-danger="1" optional="show"/>
<field name="add_att" decoration-danger="1" optional="show"/>
<field name="last_year_jie" decoration-danger="1" optional="show"/>
<field name="rank_salary" required="1" optional="show"/>
<field name="performance_bonuses" required="1" optional="show"/>
<field name="based_pay" required="1" optional="show"/>
<field name="seniority_salary" required="1" decoration-success="1" optional="show"/>
<field name="commuting_allowance" required="1" decoration-success="1" optional="show"/>
<field name="full_attendance_award" decoration-success="1" optional="show"/>
<field name="overtime_pay" decoration-success="1" optional="show"/>
<field name="meal_misunderstanding_fee" decoration-success="1" optional="show"/>
<field name="condolence_fund" decoration-success="1" optional="show"/>
<field name="retroactive_allowance" decoration-success="1" optional="show"/>
<field name="specialized_deduction" decoration-warning="1" optional="show"/>
<field name="individual_tax_refund" decoration-danger="1" optional="show"/>
<field name="social_security" decoration-danger="1" optional="show"/>
<field name="liquidation_year" decoration-danger="1" optional="show"/>
<field name="year_compute" decoration-danger="1" optional="show"/>
<field name="year_jie" decoration-danger="1" optional="show"/>
<field name="performance_up" decoration-danger="1" optional="show"/>
<field name="jing_te" decoration-danger="1" optional="show"/>
<field name="year_gong" decoration-danger="1" optional="show"/>
<field name="study_on" decoration-danger="1" optional="show"/>
<field name="commuting_deduction" decoration-danger="1" optional="show"/>
<field name="performance_deduction" decoration-danger="1" optional="show"/>
<field name="retention_previous_year" decoration-danger="1" optional="show"/>
<field name="safety_incentives" decoration-danger="1" optional="show"/>
<field name="last_year_safety" decoration-danger="1" optional="show"/>
<field name="last_year_performance_evaluation" decoration-danger="1" optional="show"/>
<field name="salary_state" optional="show"/>
<field name="is_salary_release" column_invisible="1"/>
<field name="is_salary_push" column_invisible="1"/>
<button name="put_release" type="object" string="推送" class="btn-primary" invisible="is_salary_release"/>
<button name="put_payslip" type="object" string="发送" class="btn-primary" invisible="not is_salary_release"/>
<button name="return_salary_button" string="退回" type="object" class="oe_highlight" invisible="not is_salary_release"/>
<button name="open_record" string="详情" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
<record id="view_hr_payslip_tree_validation_wg" model="ir.ui.view">
<field name="name">hr.payslip.tree.validation.wg</field>
<field name="model">hr.payslip</field>
<field name="arch" type="xml">
<tree string="薪资审定">
<field name="employee_id" string="姓名" readonly="1" options="{'no_open': True}" decoration-danger="is_bold" decoration-bf="is_bold"/>
<field name="date_of_entry" optional="show"/>
<field name="actual_salary" optional="show"/>
<field name="total_before_tax" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="three_one" optional="show"/>
<field name="b_year" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="union_dues" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="base_salary" required="1" optional="show"/>
<field name="basic_endowment_insurance" decoration-info="1" optional="show"/>
<field name="basic_medical_insurance" decoration-info="1" optional="show"/>
<field name="unemployment_insurance" decoration-info="1" optional="show"/>
<field name="housing_provident_fund" decoration-info="1" optional="show"/>
<field name="work_injury_insurance" decoration-info="1" optional="show"/>
<field name="maternity_allowance" decoration-danger="1" optional="show"/>
<field name="position_salary" decoration-danger="1" optional="show"/>
<field name="individual_income_tax" decoration-danger="1" optional="show"/>
<field name="add_income_tax" decoration-danger="1" optional="show"/>
<field name="minus_annuity_difference" decoration-danger="1" optional="show"/>
<field name="add_annuity_difference" decoration-danger="1" optional="show"/>
<field name="minus_att" decoration-danger="1" optional="show"/>
<field name="add_att" decoration-danger="1" optional="show"/>
<field name="last_year_jie" decoration-danger="1" optional="show"/>
<field name="position_subsidy" optional="show" decoration-success="1"/>
<field name="seniority_allowance" decoration-success="1" optional="show"/>
<field name="safety_subsidy" decoration-success="1" optional="show"/>
<field name="comprehensive_subsidy" decoration-success="1" optional="show"/>
<field name="job_performance" decoration-success="1" optional="show"/>
<field name="duty" decoration-success="1" optional="show"/>
<field name="spring_festival" decoration-success="1" optional="show"/>
<field name="commuting_allowance" required="1" decoration-success="1" optional="show"/>
<field name="full_attendance_award" decoration-success="1" optional="show"/>
<field name="overtime_pay" decoration-success="1" optional="show"/>
<field name="condolence_fund" decoration-success="1" optional="show"/>
<field name="excellent_employees" decoration-danger="1" optional="show"/>
<field name="salary_state" optional="show"/>
<field name="is_salary_release" column_invisible="1"/>
<field name="is_salary_push" column_invisible="1"/>
<button name="put_release" type="object" string="推送" class="btn-primary" invisible="is_salary_release"/>
<button name="put_payslip" type="object" string="发送" class="btn-primary" invisible="not is_salary_release"/>
<button name="return_salary_button" string="退回" type="object" class="oe_highlight" invisible="not is_salary_release"/>
<button name="open_record" string="详情" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
<record id="view_hr_payslip_tree_validation_lc" model="ir.ui.view">
<field name="name">hr.payslip.tree.validation_lc</field>
<field name="model">hr.payslip</field>
<field name="arch" type="xml">
<tree string="薪资审定">
<field name="employee_id" string="姓名" readonly="1" options="{'no_open': True}" decoration-danger="is_bold" decoration-bf="is_bold"/>
<field name="date_of_entry" optional="show"/>
<field name="actual_salary" optional="show"/>
<field name="total_before_tax" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="three_one" optional="show"/>
<field name="b_year" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="union_dues" decoration-danger="1" decoration-bf="1" optional="show"/>
<field name="base_salary" required="1" optional="show"/>
<field name="basic_endowment_insurance" decoration-info="1" optional="show"/>
<field name="basic_medical_insurance" decoration-info="1" optional="show"/>
<field name="unemployment_insurance" decoration-info="1" optional="show"/>
<field name="housing_provident_fund" decoration-info="1" optional="show"/>
<field name="work_injury_insurance" decoration-info="1" optional="show"/>
<field name="maternity_allowance" decoration-danger="1" optional="show"/>
<field name="individual_income_tax" decoration-danger="1" optional="show"/>
<field name="add_income_tax" decoration-danger="1" optional="show"/>
<field name="minus_annuity_difference" decoration-danger="1" optional="show"/>
<field name="add_annuity_difference" decoration-danger="1" optional="show"/>
<field name="minus_att" decoration-danger="1" optional="show"/>
<field name="add_att" decoration-danger="1" optional="show"/>
<field name="last_year_jie" decoration-danger="1" optional="show"/>
<field name="position_subsidy" optional="show" decoration-success="1"/>
<field name="position_salary" decoration-danger="1" optional="show"/>
<field name="performance_bonuses" required="1" optional="show"/>
<field name="based_pay" required="1" optional="show"/>
<field name="environmental_allowance" decoration-success="1" optional="show"/>
<field name="quality_allowance" decoration-success="1" optional="show"/>
<field name="high_subsidy" decoration-success="1" optional="show"/>
<field name="last_duty" decoration-success="1" optional="show"/>
<field name="medical_fee" decoration-danger="1" optional="show"/>
<field name="retroactive_insurance" decoration-danger="1" optional="show"/>
<field name="distribution_part" decoration-danger="1" optional="show"/>
<field name="salary_state" optional="show"/>
<field name="is_salary_release" column_invisible="1"/>
<field name="is_salary_push" column_invisible="1"/>
<button name="put_release" type="object" string="推送" class="btn-primary" invisible="is_salary_release"/>
<button name="put_payslip" type="object" string="发送" class="btn-primary" invisible="not is_salary_release"/>
<button name="return_salary_button" string="退回" type="object" class="oe_highlight" invisible="not is_salary_release"/>
<button name="open_record" string="详情" type="object" class="oe_highlight"/>
</tree>
</field>
</record>
<record id="view_hr_payslip_tree_jtbb" model="ir.ui.view">
<field name="name">hr.payslip.tree.jtbb</field>
<field name="model">hr.payslip</field>
@@ -536,12 +606,35 @@
</xpath>
</field>
</record>
<record id="hr_payroll.action_view_hr_payslip_month_form" model="ir.actions.act_window">
<record id="view_hr_payslip_validation_jtbb_action" 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), ('is_salary_release', '=', 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_tree_validation_jtbb')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('hr_payroll.view_hr_payslip_form')})]"/>
</record>
<record id="view_hr_payslip_validation_wg_action" 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), ('is_salary_release', '=', 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_tree_validation_wg')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('hr_payroll.view_hr_payslip_form')})]"/>
</record>
<record id="view_hr_payslip_validation_lc_action" 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), ('is_salary_release', '=', 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_tree_validation_lc')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('hr_payroll.view_hr_payslip_form')})]"/>
</record>
<record id="action_view_hr_payslip_salary_release" model="ir.actions.act_window">
<field name="name">薪资归档</field>
+15 -2
View File
@@ -291,10 +291,23 @@
parent="human_resources_salary_root_board"
action="hr_payroll.action_hr_payslip_run_tree"
sequence="7"/>
<menuitem id="human_pay_slips_root_board10"
<menuitem id="human_pay_slips_root_board_jtbb"
name="员工薪资"
groups="yuthon_salary.group_jtbb_user"
parent="human_pay_salary_approval_root_board"
action="hr_payroll.action_view_hr_payslip_month_form"
action="yuthon_salary.view_hr_payslip_validation_jtbb_action"
sequence="1"/>
<menuitem id="human_pay_slips_root_board_wg"
name="员工薪资"
groups="yuthon_salary.group_wg_user"
parent="human_pay_salary_approval_root_board"
action="yuthon_salary.view_hr_payslip_validation_wg_action"
sequence="1"/>
<menuitem id="human_pay_slips_root_board_lc"
name="员工薪资"
groups="yuthon_salary.group_lc_user"
parent="human_pay_salary_approval_root_board"
action="yuthon_salary.view_hr_payslip_validation_lc_action"
sequence="1"/>
<menuitem id="yuthon_payroll_labor_board"
name="劳务费"