# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html). from odoo import fields, models, modules from odoo.exceptions import UserError MODULE_FIELDS = [ "module_l10n_ru_act_rev", "module_l10n_ru_contract", "module_l10n_ru_upd_xml", "module_l10n_ru_doc", "module_l10n_ru_attorney", ] class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings" module_l10n_ru_act_rev = fields.Boolean( string="Акты сверки", help="Создание актов сверки" ) module_l10n_ru_contract = fields.Boolean( string="Договоры", help="Управление договорами" ) module_l10n_ru_upd_xml = fields.Boolean( string="Экспорт УПД", help="Экспорт УПД в формате XML" ) module_l10n_ru_doc = fields.Boolean( string="Печатные формы", help="Формирование документов" ) module_l10n_ru_attorney = fields.Boolean( string="Доверенности", help="Оформление доверенностей" ) def write(self, values): if self.env.company.country_id.code != "RU": raise UserError("Признак Российской компании не обнаружен.") # Проверяем наличие модуля в addons path, # чтобы избежать ситуации, когда модуль присутствует в базе, но фактически удалён missing_modules = { field[7:] for field in MODULE_FIELDS if self.mapped(field)[0] and not modules.get_module_path(field[7:]) } if missing_modules: raise UserError( "Обратитесь в тех.поддержку для получения лицензии для следующих модулей:\n{}".format( "\n".join(missing_modules) ) ) return super().write(values)