[FIX] hr_payroll: Unlink all benefits at once

unlink() invalidates the whole cache, it's an anti-pattern
to use it in a loop! Accumulate the records to unlink and
do it at the very end.
This commit is contained in:
Yannick Tivisse
2019-02-18 15:28:15 +00:00
parent cffe008351
commit 507e098d5a
+4 -1
View File
@@ -178,6 +178,8 @@ class HrBenefit(models.Model):
return [(start, end) for start, end in days if start != end]
new_benefits = self.env['hr.benefit']
benefits_to_unlink = self.env['hr.benefit']
for benefit in self:
if benefit.date_start.date() == benefit.date_stop.date():
new_benefits |= benefit
@@ -190,7 +192,7 @@ class HrBenefit(models.Model):
'benefit_type_id': benefit.benefit_type_id.id,
}
benefit_state = benefit.state
benefit.unlink()
benefits_to_unlink |= benefit
for start, stop in _split_range_by_day(benefit_start, benefit_stop):
values['date_start'] = start.astimezone(pytz.utc)
values['date_stop'] = stop.astimezone(pytz.utc)
@@ -199,6 +201,7 @@ class HrBenefit(models.Model):
new_benefit.state = benefit_state
new_benefits |= new_benefit
benefits_to_unlink.unlink()
return new_benefits
@api.multi