Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC

This commit is contained in:
CI Publish Bot
2026-11-01 22:54:30 +00:00
commit 26250aa580
2492 changed files with 664277 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
# -*- coding: utf-8 -*-
"""Приказы по воинскому учёту.
Организационные приказы ВУ (об организации воинского учёта, о назначении
ответственного за ВУ и бронирование и т.п.). Документ-шаблон: заполняется
реквизитами и выгружается в DOCX через docx_report.
Это ОБРАЗЕЦ: типовые формулировки приказов задаются по умолчанию и
правятся пользователем.
"""
from odoo import api, fields, models
from odoo.exceptions import UserError
# Виды приказов по ВУ.
ORDER_KIND = [
('organization', 'Об организации воинского учёта'),
('responsible', 'О назначении ответственного за ВУ и бронирование'),
('plan', 'Об утверждении плана работы по ВУ'),
('other', 'Иной приказ по ВУ'),
]
class RuodooRsbuMilOrder(models.Model):
_name = 'ruodoo.rsbu.mil.order'
_description = 'Приказ по воинскому учёту'
_order = 'order_date desc, id desc'
name = fields.Char(
string='Номер приказа', required=True, copy=False, default='б/н')
kind = fields.Selection(
selection=ORDER_KIND, string='Вид приказа', required=True,
default='organization')
company_id = fields.Many2one(
'res.company', string='Организация', required=True, index=True,
default=lambda self: self.env.company)
order_date = fields.Date(
string='Дата приказа', required=True,
default=fields.Date.context_today)
title = fields.Char(
string='Заголовок', compute='_compute_title', store=True,
readonly=False,
help='Заголовок приказа. По умолчанию формируется по виду приказа.')
body = fields.Html(
string='Текст приказа',
help='Основной текст (приказываю: ...). Можно править.')
responsible_employee_id = fields.Many2one(
'hr.employee', string='Назначаемый ответственный',
help='Сотрудник, назначаемый ответственным за ВУ (для приказа о '
'назначении).')
signatory_name = fields.Char(
string='Подписант', compute='_compute_signatory', store=True,
readonly=False)
signatory_title = fields.Char(
string='Должность подписанта', compute='_compute_signatory',
store=True, readonly=False)
@api.depends('kind')
def _compute_title(self):
labels = dict(ORDER_KIND)
for rec in self:
if not rec.title:
rec.title = labels.get(rec.kind, 'Приказ по воинскому учёту')
@api.depends('company_id')
def _compute_signatory(self):
for rec in self:
signatory = rec.company_id.rsbu_signatory_id
if signatory and not rec.signatory_name:
rec.signatory_name = signatory.partner_id.name
if not rec.signatory_title:
rec.signatory_title = (
rec.company_id.rsbu_signatory_title or 'Руководитель')
def action_print_docx(self):
"""Сформировать DOCX приказа по шаблону."""
self.ensure_one()
template = self.env.ref(
'ruodoo_rsbu_mil.docx_template_mil_order',
raise_if_not_found=False)
if not template:
raise UserError(
'Не найден шаблон DOCX приказа по воинскому учёту.')
return template.report_id.report_action(self)