L10n_ru/l10n_ru_base/models/res_config_settings.py

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)