81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
| # -*- coding: utf-8 -*-
 | |
| # © 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):
 | |
|         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
 |