diff --git a/addons/data_recycle/models/data_recycle_record.py b/addons/data_recycle/models/data_recycle_record.py
index 363138755a2..5a3a995b299 100644
--- a/addons/data_recycle/models/data_recycle_record.py
+++ b/addons/data_recycle/models/data_recycle_record.py
@@ -11,14 +11,14 @@ class DataRecycleRecord(models.Model):
_description = 'Recycling Record'
active = fields.Boolean('Active', default=True)
- name = fields.Char('Record Name', compute='_compute_values', compute_sudo=True)
+ name = fields.Char('Record Name', compute='_compute_name', compute_sudo=True)
recycle_model_id = fields.Many2one('data_recycle.model', string='Recycle Model', ondelete='cascade')
res_id = fields.Integer('Record ID', index=True)
res_model_id = fields.Many2one(related='recycle_model_id.res_model_id', store=True, readonly=True)
res_model_name = fields.Char(related='recycle_model_id.res_model_name', store=True, readonly=True)
- company_id = fields.Many2one('res.company', compute='_compute_values', store=True)
+ company_id = fields.Many2one('res.company', compute='_compute_company_id', store=True)
@api.model
def _get_company_id(self, record):
@@ -28,17 +28,25 @@ class DataRecycleRecord(models.Model):
return company_id
@api.depends('res_id')
- def _compute_values(self):
- original_records = {'%s_%s' % (r._name, r.id): r for r in self._original_records()}
+ def _compute_name(self):
+ original_records = {(r._name, r.id): r for r in self._original_records()}
for record in self:
- original_record = original_records.get('%s_%s' % (record.res_model_name, record.res_id))
+ original_record = original_records.get((record.res_model_name, record.res_id))
if original_record:
- record.company_id = self._get_company_id(original_record)
record.name = original_record.display_name or _('Undefined Name')
else:
- record.company_id = self.env['res.company']
record.name = _('**Record Deleted**')
+ @api.depends('res_id')
+ def _compute_company_id(self):
+ original_records = {(r._name, r.id): r for r in self._original_records()}
+ for record in self:
+ original_record = original_records.get((record.res_model_name, record.res_id))
+ if original_record:
+ record.company_id = self._get_company_id(original_record)
+ else:
+ record.company_id = self.env['res.company']
+
def _original_records(self):
if not self:
return []
diff --git a/addons/hr_recruitment/models/hr_applicant.py b/addons/hr_recruitment/models/hr_applicant.py
index 583fb43b969..68ad9624519 100644
--- a/addons/hr_recruitment/models/hr_applicant.py
+++ b/addons/hr_recruitment/models/hr_applicant.py
@@ -76,7 +76,7 @@ class Applicant(models.Model):
domain="['|', ('company_id', '=', False), ('company_id', '=', company_id)]", tracking=True)
day_open = fields.Float(compute='_compute_day', string="Days to Open", compute_sudo=True)
day_close = fields.Float(compute='_compute_day', string="Days to Close", compute_sudo=True)
- delay_close = fields.Float(compute="_compute_day", string='Delay to Close', readonly=True, group_operator="avg", help="Number of days to close", store=True)
+ delay_close = fields.Float(compute="_compute_delay", string='Delay to Close', readonly=True, group_operator="avg", help="Number of days to close", store=True)
color = fields.Integer("Color Index", default=0)
emp_id = fields.Many2one('hr.employee', string="Employee", help="Employee linked to the applicant.", copy=False)
emp_is_active = fields.Boolean(string="Employee Active", related='emp_id.active')
@@ -131,9 +131,15 @@ class Applicant(models.Model):
date_create = applicant.create_date
date_closed = applicant.date_closed
applicant.day_close = (date_closed - date_create).total_seconds() / (24.0 * 3600)
- applicant.delay_close = applicant.day_close - applicant.day_open
else:
applicant.day_close = False
+
+ @api.depends('day_open', 'day_close')
+ def _compute_delay(self):
+ for applicant in self:
+ if applicant.date_open and applicant.day_close:
+ applicant.delay_close = applicant.day_close - applicant.day_open
+ else:
applicant.delay_close = False
@api.depends('email_from', 'partner_phone', 'partner_mobile')
diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py
index fc564966cf4..f39e87eca27 100644
--- a/addons/point_of_sale/models/pos_session.py
+++ b/addons/point_of_sale/models/pos_session.py
@@ -55,8 +55,8 @@ class PosSession(models.Model):
opening_notes = fields.Text(string="Opening Notes")
closing_notes = fields.Text(string="Closing Notes")
- cash_control = fields.Boolean(compute='_compute_cash_all', string='Has Cash Control', compute_sudo=True)
- cash_journal_id = fields.Many2one('account.journal', compute='_compute_cash_all', string='Cash Journal', store=True)
+ cash_control = fields.Boolean(compute='_compute_cash_control', string='Has Cash Control')
+ cash_journal_id = fields.Many2one('account.journal', compute='_compute_cash_journal', string='Cash Journal', store=True)
cash_register_balance_end_real = fields.Monetary(
string="Ending Balance",
@@ -154,15 +154,20 @@ class PosSession(models.Model):
action['domain'] = [('id', 'in', self.picking_ids.ids)]
return action
- @api.depends('config_id', 'payment_method_ids')
- def _compute_cash_all(self):
+ @api.depends('cash_journal_id')
+ def _compute_cash_control(self):
+ # Only one cash register is supported by point_of_sale.
+ for session in self:
+ if session.cash_journal_id:
+ session.cash_control = session.config_id.cash_control
+ else:
+ session.cash_control = False
+
+ @api.depends('config_id', 'payment_method_ids')
+ def _compute_cash_journal(self):
# Only one cash register is supported by point_of_sale.
for session in self:
- session.cash_journal_id = session.cash_control = False
cash_journal = session.payment_method_ids.filtered('is_cash_count')[:1].journal_id
- if not cash_journal:
- continue
- session.cash_control = session.config_id.cash_control
session.cash_journal_id = cash_journal
@api.constrains('config_id')
diff --git a/addons/point_of_sale/models/res_config_settings.py b/addons/point_of_sale/models/res_config_settings.py
index 2e1552111cb..a30fd024f81 100644
--- a/addons/point_of_sale/models/res_config_settings.py
+++ b/addons/point_of_sale/models/res_config_settings.py
@@ -39,7 +39,6 @@ class ResConfigSettings(models.TransientModel):
module_pos_preparation_display = fields.Boolean(string="Preparation Display", help="Show orders on the preparation display screen.")
update_stock_quantities = fields.Selection(related="company_id.point_of_sale_update_stock_quantities", readonly=False)
account_default_pos_receivable_account_id = fields.Many2one(string='Default Account Receivable (PoS)', related='company_id.account_default_pos_receivable_account_id', readonly=False)
- is_default_pricelist_displayed = fields.Boolean(compute="_compute_pos_pricelist_id", compute_sudo=True)
barcode_nomenclature_id = fields.Many2one('barcode.nomenclature', related='company_id.nomenclature_id', readonly=False)
is_kiosk_mode = fields.Boolean(string="Is Kiosk Mode", default=False)
@@ -273,9 +272,6 @@ class ResConfigSettings(models.TransientModel):
res_config.pos_available_pricelist_ids = res_config.pos_config_id.available_pricelist_ids
res_config.pos_pricelist_id = res_config.pos_config_id.pricelist_id
- # TODO: Remove this field in master because it's always True.
- res_config.is_default_pricelist_displayed = True
-
@api.depends('pos_available_pricelist_ids', 'pos_use_pricelist')
def _compute_pos_allowed_pricelist_ids(self):
for res_config in self:
diff --git a/addons/point_of_sale/views/res_config_settings_views.xml b/addons/point_of_sale/views/res_config_settings_views.xml
index ad0f31ef461..273401adcee 100644
--- a/addons/point_of_sale/views/res_config_settings_views.xml
+++ b/addons/point_of_sale/views/res_config_settings_views.xml
@@ -15,7 +15,6 @@