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 @@ - @@ -213,7 +212,7 @@