54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
# 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)
|