fix payroll domain
This commit is contained in:
parent
c9750c0656
commit
037f251e87
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<data noupdate="0">
|
||||
<data noupdate="1">
|
||||
<record id="contrib_register_employees" model="hr.contribution.register">
|
||||
<field name="name">Employees</field>
|
||||
<field name="partner_id" eval="False"/>
|
||||
|
|
|
|||
|
|
@ -2246,7 +2246,7 @@ class HrPayslipRun(models.Model):
|
|||
# Relational fields
|
||||
salary_scale = fields.Many2one('hr.payroll.structure', string='Salary Scale')
|
||||
employee_ids = fields.Many2many('hr.employee', 'hr_employee_payslip_rel', 'payslip_id', 'employee_id', 'Employees',
|
||||
index=True)
|
||||
index=True,domain="[('id', 'in', employee_value_ids)]")
|
||||
department_ids = fields.Many2many('hr.department', 'hr_department_payslip_rel',
|
||||
'payslip_id', 'department_id', 'Departments')
|
||||
journal_id = fields.Many2one('account.journal', 'Salary Journal')
|
||||
|
|
@ -2254,6 +2254,7 @@ class HrPayslipRun(models.Model):
|
|||
percentage = fields.Float(string='Percentage', default=100)
|
||||
move_id = fields.Many2one('account.move', string="Move Number")
|
||||
company_id = fields.Many2one('res.company', string='Company', default=lambda self: self.env.company)
|
||||
employee_value_ids = fields.Many2many(comodel_name="hr.employee", compute="_compute_allowed_value_ids")
|
||||
|
||||
@api.onchange('date_start')
|
||||
def check_date_start(self):
|
||||
|
|
@ -2278,11 +2279,49 @@ class HrPayslipRun(models.Model):
|
|||
else:
|
||||
self.required_condition = False
|
||||
|
||||
# domain the employee to compute salary
|
||||
@api.depends('salary_scale','department_ids','date_start')
|
||||
def _compute_allowed_value_ids(self):
|
||||
for item in self:
|
||||
date_from = str(item.date_start)
|
||||
date_to = str(item.date_end)
|
||||
if item.salary_scale:
|
||||
if item.department_ids:
|
||||
depart = item.department_ids._origin
|
||||
#for dep in item.department_ids._origin:
|
||||
employee_contracts = self.env['hr.contract'].search(
|
||||
[('salary_scale', '=', item.salary_scale.id),
|
||||
('state', '=', 'program_directory')]).filtered(
|
||||
lambda item: item.employee_id.department_id in depart and item.employee_id.state == 'open'
|
||||
and str(item.employee_id.first_hiring_date) <= date_to)
|
||||
item.employee_value_ids = employee_contracts.mapped("employee_id")
|
||||
else:
|
||||
employee_contracts = self.env['hr.contract'].search(
|
||||
[('salary_scale', '=', item.salary_scale.id), ('state', '=', 'program_directory')]).filtered(
|
||||
lambda item: item.employee_id.state == 'open' and str(item.employee_id.first_hiring_date) <= date_to)
|
||||
|
||||
item.employee_value_ids = employee_contracts.mapped("employee_id")
|
||||
else:
|
||||
item.employee_value_ids = False
|
||||
|
||||
@api.onchange('salary_scale')
|
||||
def _onchange_salary_scale_id(self):
|
||||
for item in self:
|
||||
if item.salary_scale:
|
||||
item.employee_ids = False
|
||||
item.department_ids = False
|
||||
|
||||
@api.onchange('department_ids','date_start')
|
||||
def _onchange_department_ids(self):
|
||||
for item in self:
|
||||
item.employee_ids = False
|
||||
|
||||
'''@api.onchange('salary_scale')
|
||||
def onchange_salary_scale_id(self):
|
||||
for item in self:
|
||||
if item.salary_scale:
|
||||
item.employee_ids = False
|
||||
item.department_ids = False
|
||||
if item.department_ids:
|
||||
for dep in item.department_ids:
|
||||
employee_contracts = self.env['hr.contract'].search(
|
||||
|
|
@ -2302,10 +2341,11 @@ class HrPayslipRun(models.Model):
|
|||
emps.append(contract.employee_id.id)
|
||||
return {'domain': {'employee_ids': [('id', 'in', emps)]}}
|
||||
else:
|
||||
return {'domain': {'employee_ids': [('id', 'in', [])]}}
|
||||
return {'domain': {'employee_ids': [('id', 'in', [])]}}'''
|
||||
|
||||
# Override function compute sheet in Payslip Batches
|
||||
|
||||
|
||||
def compute_sheet(self):
|
||||
payslips = self.env['hr.payslip']
|
||||
[data] = self.read()
|
||||
|
|
@ -2553,7 +2593,7 @@ class HrPayslipRun(models.Model):
|
|||
# else:
|
||||
# payslips += item_payslip
|
||||
else:
|
||||
if not employee_slip_line:
|
||||
if not employee_slip_line and str(employee.first_hiring_date) < from_date:
|
||||
if employee.leaving_date:
|
||||
if str(employee.leaving_date) <= from_date:
|
||||
pass
|
||||
|
|
@ -2590,7 +2630,7 @@ class HrPayslipRun(models.Model):
|
|||
|
||||
payslips += self.env['hr.payslip'].create(res)
|
||||
else:
|
||||
if employee.leaving_date:
|
||||
if employee.leaving_date and str(employee.first_hiring_date) < from_date:
|
||||
if str(employee.leaving_date) <= from_date:
|
||||
pass
|
||||
else:
|
||||
|
|
@ -2759,7 +2799,7 @@ class HrPayslipRun(models.Model):
|
|||
# else:
|
||||
# payslips += item_payslip
|
||||
else:
|
||||
if not employee_slip_line:
|
||||
if not employee_slip_line and str(emp.first_hiring_date) < from_date:
|
||||
if emp.leaving_date:
|
||||
if str(emp.leaving_date) <= from_date:
|
||||
pass
|
||||
|
|
@ -2804,7 +2844,7 @@ class HrPayslipRun(models.Model):
|
|||
# else:
|
||||
payslips += self.env['hr.payslip'].create(res)
|
||||
else:
|
||||
if emp.leaving_date:
|
||||
if emp.leaving_date and str(emp.first_hiring_date) < from_date:
|
||||
if str(emp.leaving_date) <= from_date:
|
||||
pass
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -35,6 +35,13 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,computed,confirmed,transfered"/>
|
||||
</header>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//form" position="attributes">
|
||||
<attribute name="edit">0</attribute>
|
||||
<attribute name="delete">0</attribute>
|
||||
<attribute name="create">0</attribute>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='name']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
|
|
@ -162,6 +169,7 @@
|
|||
<field name="company_id" groups="base.group_multi_company" readonly="1" options="{'no_create': True}"/>
|
||||
<!--field name="percentage" string="Percentage" attrs="{'readonly': [('state','!=','draft')]}"/-->
|
||||
<field name="required_condition" invisible="1"/>
|
||||
<field name="employee_value_ids" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='slip_ids']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
|
|
@ -266,7 +274,7 @@
|
|||
<field name="inherit_id" ref="exp_hr_payroll.view_hr_payslip_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree position="replace">
|
||||
<tree decoration-success="state=='transfered'" decoration-info="state == 'draft'">
|
||||
<tree decoration-success="state=='transfered'" decoration-info="state == 'draft'" create="false" edit="false" delete="false">
|
||||
<field name="number"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="name"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue