You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

92 lines
2.8 KiB

# 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"),
]
@api.multi
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.multi
@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.multi
@api.onchange("partner_names_order")
def _onchange_partner_names_order(self):
self._compute_names_order_changed()
@api.multi
def set_values(self):
super(ResConfigSettings, self).set_values()
self.env["ir.config_parameter"].sudo().set_param(
"partner_names_order", self.partner_names_order
)
@api.multi
def _partners_for_recalculating(self):
return self.env["res.partner"].search(
[
("is_company", "=", False),
("firstname", "!=", False),
("lastname", "!=", False),
]
)
@api.multi
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