diff --git a/yuthon_salary/__manifest__.py b/yuthon_salary/__manifest__.py
index 1e99eec65..83a05254c 100644
--- a/yuthon_salary/__manifest__.py
+++ b/yuthon_salary/__manifest__.py
@@ -20,9 +20,13 @@
'views/yuthon_payroll_project_views.xml',
'views/yuthon_payroll_board_views.xml',
'views/yuthon_payroll_type_setting_views.xml',
+ 'views/yuthon_payroll_labor_views.xml',
+ 'views/yuthon_payroll_retired_views.xml',
'wizard/yuthon_salary_wizard_views.xml',
'wizard/temporary_payslip_wizard_views.xml',
'wizard/yuthon_payroll_wizard_views.xml',
+ 'wizard/payroll_labor_wizard_views.xml',
+ 'wizard/payroll_retired_wizard_views.xml',
'wizard/salary_compute_wizard_views.xml',
'wizard/salary_payslip_wizard_views.xml',
'wizard/select_delete_wizard_viwes.xml',
diff --git a/yuthon_salary/models/__init__.py b/yuthon_salary/models/__init__.py
index 4fac03273..334304fe1 100644
--- a/yuthon_salary/models/__init__.py
+++ b/yuthon_salary/models/__init__.py
@@ -4,4 +4,6 @@ from . import inherit_hr_payroll_structure_type
from . import inherit_hr_payslip
from . import yuthon_payroll_type_setting
from . import yuthon_payroll_project
-from . import yuthon_payroll_board
\ No newline at end of file
+from . import yuthon_payroll_board
+from . import yuthon_payroll_labor
+from . import yuthon_payroll_retired
\ No newline at end of file
diff --git a/yuthon_salary/models/yuthon_payroll_labor.py b/yuthon_salary/models/yuthon_payroll_labor.py
new file mode 100644
index 000000000..6b0b78c55
--- /dev/null
+++ b/yuthon_salary/models/yuthon_payroll_labor.py
@@ -0,0 +1,37 @@
+from odoo import api, fields, models
+
+
+class YuthonPayrollLabor(models.Model):
+ _name = 'yuthon.payroll.labor'
+ _description = '劳务费'
+
+ employee_id = fields.Many2one('hr.employee', string='姓名')
+ 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="月份")
+ labor_amount = fields.Float(string='金额')
+
+
+ def action_payroll_labor_wizard(self):
+ return {
+ "type": "ir.actions.act_window",
+ "name": "劳务费导入",
+ "res_model": "payroll.labor.wizard",
+ "view_mode": "form",
+ "target": "new",
+ }
+
+
+
diff --git a/yuthon_salary/models/yuthon_payroll_retired.py b/yuthon_salary/models/yuthon_payroll_retired.py
new file mode 100644
index 000000000..e86637ba1
--- /dev/null
+++ b/yuthon_salary/models/yuthon_payroll_retired.py
@@ -0,0 +1,33 @@
+from odoo import api, fields, models
+
+
+class YuthonPayrollRetired(models.Model):
+ _name = 'yuthon.payroll.retired'
+ _description = '退休人员费用'
+
+ name = fields.Char(string='姓名')
+ 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="月份")
+ retired_amount = fields.Float(string='金额')
+
+ def action_payroll_retired_wizard(self):
+ return {
+ "type": "ir.actions.act_window",
+ "name": "退休人员费用",
+ "res_model": "payroll.retired.wizard",
+ "view_mode": "form",
+ "target": "new",
+ }
\ 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 3c0a7f79c..06c6ad5c9 100644
--- a/yuthon_salary/security/ir.model.access.csv
+++ b/yuthon_salary/security/ir.model.access.csv
@@ -14,4 +14,8 @@ access_return_wizard,access_return_wizard,model_return_wizard,base.group_user,1,
access_return_salary_wizard, access_return_salary_wizard,model_return_salary_wizard,base.group_user,1,1,1,1
access_put_salary_wizard,access_put_salary_wizard,model_put_salary_wizard,base.group_user,1,1,1,1
access_yuthon_payroll_board,access_yuthon_payroll_board,model_yuthon_payroll_board,base.group_user,1,1,1,1
-access_temporary_payslip_wizard,access_temporary_payslip_wizard,model_temporary_payslip_wizard,base.group_user,1,1,1,1
\ No newline at end of file
+access_temporary_payslip_wizard,access_temporary_payslip_wizard,model_temporary_payslip_wizard,base.group_user,1,1,1,1
+access_yuthon_payroll_labor,access_yuthon_payroll_labor,model_yuthon_payroll_labor,base.group_user,1,1,1,1
+access_yuthon_payroll_retired,access_yuthon_payroll_retired,model_yuthon_payroll_retired,base.group_user,1,1,1,1
+access_payroll_labor_wizard,access_payroll_labor_wizard,model_payroll_labor_wizard,base.group_user,1,1,1,1
+access_payroll_retired_wizard,access_payroll_retired_wizard,model_payroll_retired_wizard,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/yuthon_salary/views/yuthon_payroll_labor_views.xml b/yuthon_salary/views/yuthon_payroll_labor_views.xml
new file mode 100644
index 000000000..3fc6e63ca
--- /dev/null
+++ b/yuthon_salary/views/yuthon_payroll_labor_views.xml
@@ -0,0 +1,44 @@
+
+
+
+ yuthon.payroll.labor.tree
+ yuthon.payroll.labor
+
+
+
+
+
+
+
+
+
+
+ yuthon.payroll.labor.search
+ yuthon.payroll.labor
+
+
+
+
+
+
+
+
+
+
+
+ 劳务费
+ yuthon.payroll.labor
+ tree,form
+
+
+ 导入劳务费用
+
+
+ code
+ action = model.action_payroll_labor_wizard()
+
+
+
+
+
+
diff --git a/yuthon_salary/views/yuthon_payroll_retired_views.xml b/yuthon_salary/views/yuthon_payroll_retired_views.xml
new file mode 100644
index 000000000..70608ee24
--- /dev/null
+++ b/yuthon_salary/views/yuthon_payroll_retired_views.xml
@@ -0,0 +1,41 @@
+
+
+
+ yuthon.payroll.retired.tree
+ yuthon.payroll.retired
+
+
+
+
+
+
+
+
+
+
+ yuthon.payroll.retired.search
+ yuthon.payroll.retired
+
+
+
+
+
+
+
+
+
+
+
+ 退休人员费用
+ yuthon.payroll.retired
+ tree,form
+
+
+ 导入退休人员费用
+
+
+ code
+ action = model.action_payroll_retired_wizard()
+
+
+
diff --git a/yuthon_salary/wizard/__init__.py b/yuthon_salary/wizard/__init__.py
index 1705e7ca2..4ee17002f 100644
--- a/yuthon_salary/wizard/__init__.py
+++ b/yuthon_salary/wizard/__init__.py
@@ -4,4 +4,6 @@ from . import salary_compute_wizard
from . import salary_payslip_wizard
from . import select_delete_wizard
from . import put_return_wizard
-from . import temporary_payslip_wizard
\ No newline at end of file
+from . import temporary_payslip_wizard
+from . import payroll_labor_wizard
+from . import payroll_retired_wizard
\ No newline at end of file
diff --git a/yuthon_salary/wizard/payroll_labor_wizard.py b/yuthon_salary/wizard/payroll_labor_wizard.py
new file mode 100644
index 000000000..6682bce98
--- /dev/null
+++ b/yuthon_salary/wizard/payroll_labor_wizard.py
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+from odoo import models, fields, api, _, SUPERUSER_ID
+from odoo.exceptions import ValidationError, UserError
+from pypinyin import pinyin, Style
+import xlrd
+import base64
+import datetime
+from datetime import datetime
+
+
+class PayrollLaborWizard(models.Model):
+ _name = 'payroll.labor.wizard'
+ _description = '劳务费导入弹窗'
+
+ excel_file = fields.Binary(string="上传Excel表")
+ excel_name = fields.Char(string="文件名")
+
+ def confirm(self):
+ if not self.excel_file:
+ raise ValidationError('请上传文件。')
+ book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file))
+ sh = book.sheet_by_index(0)
+ for rx in range(1, sh.nrows):
+ row = sh.row(rx)
+ self.yuthon_payroll_data(row)
diff --git a/yuthon_salary/wizard/payroll_labor_wizard_views.xml b/yuthon_salary/wizard/payroll_labor_wizard_views.xml
new file mode 100644
index 000000000..05af76c04
--- /dev/null
+++ b/yuthon_salary/wizard/payroll_labor_wizard_views.xml
@@ -0,0 +1,35 @@
+
+
+
+ 劳务费
+ self
+ .
+
+
+
+ 审批意见弹窗
+ payroll.labor.wizard
+
+
+
+
+
\ No newline at end of file
diff --git a/yuthon_salary/wizard/payroll_retired_wizard.py b/yuthon_salary/wizard/payroll_retired_wizard.py
new file mode 100644
index 000000000..2c2c980f1
--- /dev/null
+++ b/yuthon_salary/wizard/payroll_retired_wizard.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+from odoo import models, fields, api, _, SUPERUSER_ID
+from odoo.exceptions import ValidationError, UserError
+from pypinyin import pinyin, Style
+import xlrd
+import base64
+import datetime
+from datetime import datetime
+
+
+class PayrollLaborWizard(models.Model):
+ _name = 'payroll.retired.wizard'
+ _description = '退休人员费用导入弹窗'
+
+ excel_file = fields.Binary(string="上传Excel表")
+ excel_name = fields.Char(string="文件名")
+
+ def confirm(self):
+ if not self.excel_file:
+ raise ValidationError('请上传文件。')
+ book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file))
+ sh = book.sheet_by_index(0)
+ for rx in range(1, sh.nrows):
+ row = sh.row(rx)
+ self.yuthon_payroll_data(row)
+
diff --git a/yuthon_salary/wizard/payroll_retired_wizard_views.xml b/yuthon_salary/wizard/payroll_retired_wizard_views.xml
new file mode 100644
index 000000000..cbe2817fa
--- /dev/null
+++ b/yuthon_salary/wizard/payroll_retired_wizard_views.xml
@@ -0,0 +1,36 @@
+
+
+
+ 退休人员导入模板
+ self
+ .
+
+
+
+ 审批意见弹窗
+ payroll.retired.wizard
+
+
+
+
+
+
diff --git a/yuthon_salary/wizard/salary_compute_wizard.py b/yuthon_salary/wizard/salary_compute_wizard.py
index 5c1e8a46c..0007b5e75 100644
--- a/yuthon_salary/wizard/salary_compute_wizard.py
+++ b/yuthon_salary/wizard/salary_compute_wizard.py
@@ -32,7 +32,11 @@ class SalaryComputeWizard(models.Model):
@api.onchange('yuthon_company')
def onchange_yuthon_company(self):
if self.yuthon_company:
- employees = self.env['hr.employee'].search([('yuthon_company', '=', self.yuthon_company),('is_salary', '=', True)])
+ employees = self.env['hr.employee'].search([
+ ('yuthon_company', '=', self.yuthon_company),
+ ('is_salary', '=', True),
+ ('use_user_type', '!=', 'labor')
+ ])
self.employee_ids = [(6, 0, employees.ids)]
self.employee_number = len(self.employee_ids)
diff --git a/yuthon_work_brand/views/hr_menus.xml b/yuthon_work_brand/views/hr_menus.xml
index c446c2706..0bb3868e4 100644
--- a/yuthon_work_brand/views/hr_menus.xml
+++ b/yuthon_work_brand/views/hr_menus.xml
@@ -330,6 +330,16 @@
parent="human_resources_salary_root_board"
action="yuthon_salary.action_view_hr_payslip_month_form2"
sequence="3"/>
+
+