|
|
# Copyright 2015 Antiun Ingenieria S.L. - Antonio Espinosa # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
from odoo import api, fields, models
_logger = logging.getLogger(__name__)
class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings"
partner_names_order = fields.Selection( string="Partner names order", selection="_partner_names_order_selection", help="Order to compose partner fullname", required=True, ) partner_names_order_changed = fields.Boolean(compute="_compute_names_order_changed")
def _partner_names_order_selection(self): return [ ("last_first", "Lastname Firstname"), ("last_first_comma", "Lastname, Firstname"), ("first_last", "Firstname Lastname"), ]
def _partner_names_order_default(self): return self.env["res.partner"]._names_order_default()
@api.model def get_values(self): res = super(ResConfigSettings, self).get_values() partner_names_order = ( self.env["ir.config_parameter"] .sudo() .get_param( "partner_names_order", default=self._partner_names_order_default() ) ) res.update(partner_names_order=partner_names_order) return res
@api.depends("partner_names_order") def _compute_names_order_changed(self): current = ( self.env["ir.config_parameter"] .sudo() .get_param( "partner_names_order", default=self._partner_names_order_default() ) ) for record in self: record.partner_names_order_changed = bool( record.partner_names_order != current )
@api.onchange("partner_names_order") def _onchange_partner_names_order(self): self._compute_names_order_changed()
def set_values(self): super(ResConfigSettings, self).set_values() self.env["ir.config_parameter"].sudo().set_param( "partner_names_order", self.partner_names_order )
def _partners_for_recalculating(self): return self.env["res.partner"].search( [ ("is_company", "=", False), ("firstname", "!=", False), ("lastname", "!=", False), ] )
def action_recalculate_partners_name(self): self.env["ir.config_parameter"].sudo().set_param( "partner_names_order", self.partner_names_order ) partners = self._partners_for_recalculating() _logger.info("Recalculating names for %d partners.", len(partners)) partners._compute_name() _logger.info("%d partners updated.", len(partners)) return True
|