添加功能
This commit is contained in:
@@ -15,9 +15,9 @@
|
||||
<attribute name="advanced_filter">True</attribute>
|
||||
</xpath>
|
||||
<!-- <xpath expr="//tree" position="after">-->
|
||||
<!-- <header>-->
|
||||
<!-- <button name="all_put_department_change" type="action" string="部门变更" class="oe_highlight"/>-->
|
||||
<!-- </header>-->
|
||||
<header>
|
||||
<button name="all_put_department_change" type="object" string="部门变更" class="oe_highlight"/>
|
||||
</header>
|
||||
<!-- </xpath>-->
|
||||
<xpath expr="//field[@name='total_employee']" position="attributes">
|
||||
<attribute name="column_invisible">1</attribute>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
'views/yuthon_payroll_project_views.xml',
|
||||
'views/yuthon_payroll_type_setting_views.xml',
|
||||
'views/yuthon_salary_asset_views.xml',
|
||||
'views/salary_payroll_distribution_viwes.xml',
|
||||
'views/yuthon_salary_project_views.xml',
|
||||
'views/yuthon_payroll_labor_views.xml',
|
||||
'views/yuthon_salary_documents_views.xml',
|
||||
|
||||
@@ -9,4 +9,5 @@ from . import yuthon_payroll_retired
|
||||
from . import yuthon_salary_documents
|
||||
from . import yuthon_salary_year
|
||||
from . import yuthon_salary_project
|
||||
from . import yuthon_salary_asset
|
||||
from . import yuthon_salary_asset
|
||||
from . import salary_payroll_distribution
|
||||
@@ -333,6 +333,7 @@ class InheritHrPayslip(models.Model):
|
||||
self.env['hr.payslip.line'].create(payslips._get_payslip_lines())
|
||||
return True
|
||||
|
||||
# 薪资归档
|
||||
def put_release(self):
|
||||
for record in self:
|
||||
record.write({
|
||||
@@ -340,6 +341,7 @@ class InheritHrPayslip(models.Model):
|
||||
'salary_state': 'to_release',
|
||||
})
|
||||
|
||||
# 薪资归档
|
||||
def all_put_release(self):
|
||||
payslip_ids = self.env["hr.payslip"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in payslip_ids:
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class SalaryPayrollDistribution(models.Model):
|
||||
_name = 'salary.payroll.distribution'
|
||||
_description = '薪资发放'
|
||||
|
||||
salary_group_id = fields.Many2one('yuthon.salary.group', string="工资单分组", store=True)
|
||||
actual_salary = fields.Float(string='实发工资', store=True)
|
||||
current_year = fields.Integer(string='年份')
|
||||
current_month = fields.Selection([
|
||||
('1', '1月份'),
|
||||
('2', '2月份'),
|
||||
('3', '3月份'),
|
||||
('4', '4月份'),
|
||||
('5', '5月份'),
|
||||
('6', '6月份'),
|
||||
('7', '7月份'),
|
||||
('8', '8月份'),
|
||||
('9', '9月份'),
|
||||
('10', '10月份'),
|
||||
('11', '11月份'),
|
||||
('12', '12月份')
|
||||
], string="月份")
|
||||
company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company)
|
||||
@@ -21,4 +21,37 @@ class YuthonSalaryDocuments(models.Model):
|
||||
('12', '12月份')
|
||||
], string="月份")
|
||||
company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company)
|
||||
documents_ids = fields.Many2many('ir.attachment', string="附件")
|
||||
documents_ids = fields.Many2many('ir.attachment', string="附件")
|
||||
|
||||
def documents_confirm(self):
|
||||
month = int(self.current_month)
|
||||
month_mapping = {
|
||||
1: '一月', 2: '二月', 3: '三月', 4: '四月',
|
||||
5: '五月', 6: '六月', 7: '七月', 8: '八月',
|
||||
9: '九月', 10: '十月', 11: '十一月', 12: '十二月'
|
||||
}
|
||||
month_name = month_mapping.get(month, '一月')
|
||||
payslip_ids = self.env['hr.payslip'].search([
|
||||
('is_salary_release', '=', False),
|
||||
('is_salary_push', '=', True),
|
||||
('payslip_run_id.name', '=', f'{self.current_year}年-{month_name}'),
|
||||
('company_id', '=', self.company_id.id) # 确保公司一致
|
||||
])
|
||||
|
||||
# 按工资组分组并计算总和
|
||||
group_data = {}
|
||||
for payslip in payslip_ids:
|
||||
group_id = payslip.salary_group_id.id
|
||||
if group_id not in group_data:
|
||||
group_data[group_id] = {
|
||||
'salary_group_id': group_id,
|
||||
'actual_salary': 0.0,
|
||||
'current_year': self.current_year,
|
||||
'current_month': self.current_month,
|
||||
'company_id': self.company_id.id
|
||||
}
|
||||
group_data[group_id]['actual_salary'] += payslip.actual_salary
|
||||
|
||||
distribution_model = self.env['salary.payroll.distribution']
|
||||
for group_id, data in group_data.items():
|
||||
distribution_model.create(data)
|
||||
|
||||
@@ -27,4 +27,5 @@ access_yuthon_salary_documents,access_yuthon_salary_documents,model_yuthon_salar
|
||||
access_salary_print_wizard, access_salary_print_wizard,model_salary_print_wizard,base.group_user,1,1,1,1
|
||||
access_salary_year_wizard,access_salary_year_wizard,model_salary_year_wizard,base.group_user,1,1,1,1
|
||||
access_yuthon_salary_project, access_yuthon_salary_project,model_yuthon_salary_project,base.group_user,1,1,1,1
|
||||
access_yuthon_salary_asset, access_yuthon_salary_asset,model_yuthon_salary_asset,base.group_user,1,1,1,1
|
||||
access_yuthon_salary_asset, access_yuthon_salary_asset,model_yuthon_salary_asset,base.group_user,1,1,1,1
|
||||
access_salary_payroll_distribution,access_salary_payroll_distribution,model_salary_payroll_distribution,base.group_user,1,1,1,1
|
||||
|
||||
|
@@ -1,5 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record model="ir.rule" id="salary_payroll_distribution_rule">
|
||||
<field name="name">薪资方法多公司</field>
|
||||
<field name="model_id" ref="model_salary_payroll_distribution"/>
|
||||
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
|
||||
</record>
|
||||
<record model="ir.rule" id="yuthon_payroll_common_rule">
|
||||
<field name="name">常用项多公司</field>
|
||||
<field name="model_id" ref="model_yuthon_payroll_common"/>
|
||||
|
||||
@@ -87,15 +87,12 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<!--薪资发放-->
|
||||
<!--薪资归档-->
|
||||
<record id="view_hr_payslip_tree3" model="ir.ui.view">
|
||||
<field name="name">hr.payslip.tree</field>
|
||||
<field name="model">hr.payslip</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="薪资发放" default_order="employee_id" limit="20">
|
||||
<header>
|
||||
<button name="button_salary_print" string="打印" type="object" class="oe_highlight"/>
|
||||
</header>
|
||||
<tree string="薪资归档" default_order="employee_id" limit="20">
|
||||
<field name="employee_id" string="姓名" widget="ztree_select"/>
|
||||
<field name="date_of_entry"/>
|
||||
<field name="company_id" string="公司" optional="hide"/>
|
||||
@@ -394,7 +391,7 @@
|
||||
<field name="context">{'search_default_group_by_employee': 1}</field>
|
||||
</record>
|
||||
<record id="action_view_hr_payslip_salary_release" model="ir.actions.act_window">
|
||||
<field name="name">薪资发放</field>
|
||||
<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', '=', True)]</field>
|
||||
@@ -430,13 +427,6 @@
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_return_salary_wizard()</field>
|
||||
</record>
|
||||
<record id="all_data_put_release" 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.all_put_release()</field>
|
||||
</record>
|
||||
<record id="all_data_return_release" model="ir.actions.server">
|
||||
<field name="name">批量退回薪资审定</field>
|
||||
<field name="model_id" ref="hr_payroll.model_hr_payslip"/>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_salary_payroll_distribution_tree" model="ir.ui.view">
|
||||
<field name="name">salary.payroll.distribution.tree</field>
|
||||
<field name="model">salary.payroll.distribution</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="薪资发放" editable="bottom">
|
||||
<field name="current_year"/>
|
||||
<field name="current_month"/>
|
||||
<field name="salary_group_id"/>
|
||||
<field name="actual_salary"/>
|
||||
<field name="company_id" optional="hide"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="salary_payroll_distribution_action" model="ir.actions.act_window">
|
||||
<field name="name">薪资发放</field>
|
||||
<field name="res_model">salary.payroll.distribution</field>
|
||||
<field name="view_mode">tree</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -9,6 +9,7 @@
|
||||
<field name="current_month"/>
|
||||
<field name="documents_ids" widget="preview_many2many"/>
|
||||
<field name="company_id"/>
|
||||
<button name="documents_confirm" string="确认" type="object" class="oe_highlight"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -361,6 +361,11 @@
|
||||
parent="human_resources_salary_root_board"
|
||||
action="hr_payroll.action_view_hr_payslip_month_form"
|
||||
sequence="7"/>
|
||||
<menuitem id="human_pay_slips_root_board12"
|
||||
name="薪资归档"
|
||||
parent="human_resources_salary_root_board"
|
||||
action="yuthon_salary.action_view_hr_payslip_salary_release"
|
||||
sequence="10"/>
|
||||
<!-- <menuitem id="hr_payroll_structure_type_board"-->
|
||||
<!-- name="职级类型"-->
|
||||
<!-- parent="human_resources_salary_root_board"-->
|
||||
@@ -458,39 +463,18 @@
|
||||
name="资金管理"
|
||||
web_icon="yuthon_work_brand,static/description/finance.png"
|
||||
sequence="37"/>
|
||||
<menuitem id="finance_manage_employee_root_board"
|
||||
name="人力资源"
|
||||
parent="finance_root_board"
|
||||
sequence="1"/>
|
||||
<menuitem id="human_yuthon_payroll_labor_board"
|
||||
name="劳务费"
|
||||
parent="finance_manage_employee_root_board"
|
||||
action="yuthon_salary.action_yuthon_payroll_labor"
|
||||
sequence="1"/>
|
||||
<menuitem id="human_yuthon_payroll_retired_board"
|
||||
name="退休人员费用"
|
||||
parent="finance_manage_employee_root_board"
|
||||
action="yuthon_salary.action_yuthon_payroll_retired"
|
||||
sequence="10"/>
|
||||
<menuitem id="human_pay_slips_root_board2"
|
||||
name="个税计算"
|
||||
parent="finance_manage_employee_root_board"
|
||||
action="yuthon_salary.action_view_hr_payslip_month_form2"
|
||||
sequence="20"/>
|
||||
<menuitem id="human_pay_slips_root_board"
|
||||
name="薪资发放"
|
||||
parent="finance_manage_employee_root_board"
|
||||
action="yuthon_salary.action_view_hr_payslip_salary_release"
|
||||
sequence="30"/>
|
||||
parent="finance_root_board"
|
||||
action="yuthon_salary.salary_payroll_distribution_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="yuthon_salary_asset_board"
|
||||
name="预算管理"
|
||||
parent="finance_manage_employee_root_board"
|
||||
parent="finance_root_board"
|
||||
action="yuthon_salary.action_yuthon_salary_asset"
|
||||
sequence="40"/>
|
||||
<menuitem id="human_pay_slips_root_setting"
|
||||
name="配置"
|
||||
parent="finance_manage_employee_root_board"
|
||||
sequence="99"/>
|
||||
sequence="5"/>
|
||||
|
||||
|
||||
<menuitem id="yuthon_salary_project_menu"
|
||||
name="项目"
|
||||
parent="human_pay_slips_root_setting"
|
||||
@@ -521,6 +505,11 @@
|
||||
name="银行流水"
|
||||
parent="yuthon_financial_management_menu"
|
||||
action="yuthon_property.view_property_bank_statements_action1"/>
|
||||
|
||||
<menuitem id="human_pay_slips_root_setting"
|
||||
name="配置"
|
||||
parent="finance_root_board"
|
||||
sequence="99"/>
|
||||
<!--财务报表 -->
|
||||
<menuitem id="yuthon_property_process"
|
||||
sequence="90"
|
||||
|
||||
Reference in New Issue
Block a user