diff --git a/addons/base_iban/models/res_partner_bank.py b/addons/base_iban/models/res_partner_bank.py index 2c9f4f868b9..dfe1031acd5 100644 --- a/addons/base_iban/models/res_partner_bank.py +++ b/addons/base_iban/models/res_partner_bank.py @@ -67,15 +67,16 @@ class ResPartnerBank(models.Model): raise UserError(_("Cannot compute the BBAN because the account number is not an IBAN.")) return get_bban_from_iban(self.acc_number) - @api.model - def create(self, vals): - if vals.get('acc_number'): - try: - validate_iban(vals['acc_number']) - vals['acc_number'] = pretty_iban(normalize_iban(vals['acc_number'])) - except ValidationError: - pass - return super(ResPartnerBank, self).create(vals) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + if vals.get('acc_number'): + try: + validate_iban(vals['acc_number']) + vals['acc_number'] = pretty_iban(normalize_iban(vals['acc_number'])) + except ValidationError: + pass + return super(ResPartnerBank, self).create(vals_list) def write(self, vals): if vals.get('acc_number'): diff --git a/addons/board/models/board.py b/addons/board/models/board.py index a3355755b2f..738f9850e08 100644 --- a/addons/board/models/board.py +++ b/addons/board/models/board.py @@ -9,8 +9,8 @@ class Board(models.AbstractModel): _description = "Board" _auto = False - @api.model - def create(self, vals): + @api.model_create_multi + def create(self, vals_list): return self @api.model diff --git a/addons/l10n_fr/models/res_company.py b/addons/l10n_fr/models/res_company.py index 4088a1afac4..6235d207b9a 100644 --- a/addons/l10n_fr/models/res_company.py +++ b/addons/l10n_fr/models/res_company.py @@ -23,14 +23,15 @@ class ResCompany(models.Model): return False return self.country_id and self.country_id.code in self._get_unalterable_country() - @api.model - def create(self, vals): - company = super(ResCompany, self).create(vals) - #when creating a new french company, create the securisation sequence as well - if company._is_accounting_unalterable(): - sequence_fields = ['l10n_fr_closing_sequence_id'] - company._create_secure_sequence(sequence_fields) - return company + @api.model_create_multi + def create(self, vals_list): + companies = super().create(vals_list) + for company in companies: + #when creating a new french company, create the securisation sequence as well + if company._is_accounting_unalterable(): + sequence_fields = ['l10n_fr_closing_sequence_id'] + company._create_secure_sequence(sequence_fields) + return companies def write(self, vals): res = super(ResCompany, self).write(vals) diff --git a/addons/l10n_fr_pos_cert/models/res_company.py b/addons/l10n_fr_pos_cert/models/res_company.py index c701c6f348e..e509dd52005 100644 --- a/addons/l10n_fr_pos_cert/models/res_company.py +++ b/addons/l10n_fr_pos_cert/models/res_company.py @@ -26,14 +26,15 @@ class ResCompany(models.Model): l10n_fr_pos_cert_sequence_id = fields.Many2one('ir.sequence') - @api.model - def create(self, vals): - company = super(ResCompany, self).create(vals) - #when creating a new french company, create the securisation sequence as well - if company._is_accounting_unalterable(): - sequence_fields = ['l10n_fr_pos_cert_sequence_id'] - company._create_secure_sequence(sequence_fields) - return company + @api.model_create_multi + def create(self, vals_list): + companies = super().create(vals_list) + for company in companies: + #when creating a new french company, create the securisation sequence as well + if company._is_accounting_unalterable(): + sequence_fields = ['l10n_fr_pos_cert_sequence_id'] + company._create_secure_sequence(sequence_fields) + return companies def write(self, vals): res = super(ResCompany, self).write(vals) diff --git a/addons/product/models/res_company.py b/addons/product/models/res_company.py index 30ae4e95931..e9420ed5133 100644 --- a/addons/product/models/res_company.py +++ b/addons/product/models/res_company.py @@ -7,24 +7,28 @@ from odoo import api, models, _ class ResCompany(models.Model): _inherit = "res.company" - @api.model - def create(self, vals): - new_company = super(ResCompany, self).create(vals) + @api.model_create_multi + def create(self, vals_list): + companies = super(ResCompany, self).create(vals_list) ProductPricelist = self.env['product.pricelist'] - pricelist = ProductPricelist.search([('currency_id', '=', new_company.currency_id.id), ('company_id', '=', False)], limit=1) - if not pricelist: - params = {'currency': new_company.currency_id.name} - pricelist = ProductPricelist.create({ - 'name': _("Default %(currency)s pricelist") % params, - 'currency_id': new_company.currency_id.id, - }) - self.env['ir.property']._set_default( - 'property_product_pricelist', - 'res.partner', - pricelist, - new_company, - ) - return new_company + for new_company in companies: + pricelist = ProductPricelist.search([ + ('currency_id', '=', new_company.currency_id.id), + ('company_id', '=', False) + ], limit=1) + if not pricelist: + params = {'currency': new_company.currency_id.name} + pricelist = ProductPricelist.create({ + 'name': _("Default %(currency)s pricelist") % params, + 'currency_id': new_company.currency_id.id, + }) + self.env['ir.property']._set_default( + 'property_product_pricelist', + 'res.partner', + pricelist, + new_company, + ) + return companies def write(self, values): # When we modify the currency of the company, we reflect the change on the list0 pricelist, if diff --git a/addons/web/models/models.py b/addons/web/models/models.py index 092dd9a1681..ba431b8addc 100644 --- a/addons/web/models/models.py +++ b/addons/web/models/models.py @@ -755,13 +755,13 @@ class Base(models.AbstractModel): class ResCompany(models.Model): _inherit = 'res.company' - @api.model - def create(self, values): - res = super().create(values) + @api.model_create_multi + def create(self, vals_list): + companies = super().create(vals_list) style_fields = {'external_report_layout_id', 'font', 'primary_color', 'secondary_color'} - if not style_fields.isdisjoint(values): + if any(not style_fields.isdisjoint(values) for values in vals_list): self._update_asset_style() - return res + return companies def write(self, values): res = super().write(values)