Skip to Content
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odgovori
4697 Prikazi

Hi,

My domain is conditional. How do i join them base on criteria below:

The function is to get ids from a table.

@api.onchange('month','year','department_ids','job_ids', 'date_from', 'date_to')

 def onchange_data_criteria(self):

        print('-----start processing payslip id from criteria-------')

        slip_ids = []

        domain = []


        if self.month and self.year:

            domain = domain + [('year', '=', self.year),('month', '=', self.month)]


        if self.job_ids:

            domain = domain + [('job_id', 'in', self.job_ids)]

        

        if self.date_from and self.date_to:

            domain = domain + [('date_from', '>=', self.date_from), ('date_from', '<=', self.date_to)]


        payslip = self.env['hr.payslip'].search(domain).id


I got the following error:

  File "/opt/odoo12/odoo/odoo/models.py", line 5308, in process
    if res.get('value'):
AttributeError: 'hr.payslip' object has no attribute 'get'


    

Avatar
Opusti
Best Answer

Hi, Gain

Instead of searching you need to return domain with this method like below,

@api.onchange('month','year','department_ids','job_ids''date_from''date_to')
def onchange_data_criteria(self):
print('-----start processing payslip id from criteria-------')
  slip_ids = []
  domain = []
if self.month and self.year:
  domain = domain + [('year''='self.year),('month''='self.month)]
if self.job_ids:
  domain = domain + [('job_id''in'self.job_ids)]
if self.date_from and self.date_to:
  domain = domain + [('date_from''>='self.date_from), ('date_from''<='self.date_to)]
  res = {}
if domain:
  res['domain'] = domain
return res
Feel free to ask in case you still have the same query.

Thanks,
Ashish Singh (Team Lead)
Webkul Software Private Limited
Avatar
Opusti
Best Answer

Try to append like this


@api.onchange('month','year','department_ids','job_ids', 'date_from', 'date_to')

 def onchange_data_criteria(self):

        print('-----start processing payslip id from criteria-------')

        slip_ids = []

        domain = []


        if self.month and self.year:

            domain.append(('year', '=', self.year))

            domain.append(('month', '=', self.month))


        if self.job_ids:

            domain.append(('job_id', 'in', self.job_ids))

        

        if self.date_from and self.date_to:

            domain.append(('date_from', '>=', self.date_from)

            domain.append(('date_from', '<=', self.date_to))


        payslip = self.env['hr.payslip'].search(domain).id

Avatar
Opusti
Related Posts Odgovori Prikazi Aktivnost
1
apr. 25
4274
1
maj 24
3130
0
mar. 24
1789
1
nov. 22
5641
0
okt. 22
2966