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,4 @@
from . import res_company
from . import res_config_settings
from . import res_partner
from . import uom_uom

View File

@@ -0,0 +1,95 @@
"""Реквизиты компании (страхователя/налогоплательщика) для отчётности.
Обязательные реквизиты XML-форматов ФНС и СФР, отсутствующие в базовых
модулях: ОКТМО, код налогового органа, ОКВЭД, КБК по налогам/взносам,
регистрационный номер СФР, класс профессионального риска, подписант.
ВНИМАНИЕ: конкретные коды (ОКТМО, код НО), значения КБК и класс профриска
зависят от организации и региона — задаются пользователем в настройках.
Приведённые defaults КБК — типовые на 2026 и подлежат сверке с актуальными
приказами Минфина. TODO(сверка).
"""
from odoo import fields, models
# Типовые КБК 2026 (подлежат сверке — TODO). Заданы как defaults, чтобы
# не хардкодить в генераторах XML; пользователь корректирует в настройках.
KBK_USN_INCOME = '18210501011011000110' # УСН «Доходы»
KBK_NDS = '18210301000011000110' # НДС
KBK_NDFL = '18210102010011000110' # НДФЛ (агент)
KBK_INSURANCE_UNIFIED = '18210201000011000160' # Страховые взносы (ед. тариф)
KBK_INJURY = '79710212000061000160' # Взносы на травматизм (СФР)
class ResCompany(models.Model):
_inherit = 'res.company'
# --- Территория и налоговый орган ---
rsbu_oktmo = fields.Char(
string='ОКТМО',
help='Код территории муниципального образования (ОКТМО) для '
'деклараций и уведомлений. TODO(сверка).')
rsbu_tax_office_code = fields.Char(
string='Код налогового органа',
help='Четырёхзначный код ИФНС по месту учёта. TODO(сверка).')
rsbu_okved = fields.Char(
string='ОКВЭД',
help='Основной код вида экономической деятельности. TODO(сверка).')
# --- КБК по налогам и взносам ---
rsbu_kbk_usn = fields.Char(
string='КБК УСН', default=KBK_USN_INCOME,
help='КБК налога при УСН. TODO(сверка с приказом Минфина).')
rsbu_kbk_nds = fields.Char(
string='КБК НДС', default=KBK_NDS,
help='КБК налога на добавленную стоимость. TODO(сверка).')
rsbu_kbk_ndfl = fields.Char(
string='КБК НДФЛ', default=KBK_NDFL,
help='КБК налога на доходы физлиц (налоговый агент). TODO(сверка).')
rsbu_kbk_insurance = fields.Char(
string='КБК страховых взносов', default=KBK_INSURANCE_UNIFIED,
help='КБК страховых взносов по единому тарифу. TODO(сверка).')
rsbu_kbk_injury = fields.Char(
string='КБК взносов на травматизм', default=KBK_INJURY,
help='КБК взносов на травматизм (СФР). TODO(сверка).')
# --- Реквизиты страхователя в СФР ---
rsbu_sfr_reg_number = fields.Char(
string='Рег. номер в СФР',
help='Регистрационный номер страхователя в Социальном фонде России '
'(для ЕФС-1). TODO(сверка).')
rsbu_profrisk_class = fields.Char(
string='Класс профриска',
help='Класс профессионального риска (определяет тариф взносов на '
'травматизм). TODO(сверка с уведомлением СФР).')
rsbu_ogrn = fields.Char(
string='ОГРН',
help='Основной государственный регистрационный номер юридического '
'лица (13 знаков). Элемент «ОГРН» блока «Страхователь» в ЕФС-1. '
'Для ИП указывается ОГРНИП (15 знаков).')
# --- Подписант отчётности ---
rsbu_signatory_id = fields.Many2one(
'res.users', string='Подписант отчётности',
help='Лицо, подписывающее налоговую/страховую отчётность '
'(руководитель или уполномоченный представитель).')
rsbu_signatory_is_representative = fields.Boolean(
string='Подписант — представитель',
help='Отмечено — подписант является уполномоченным представителем '
'(признак «2» в XML), иначе руководитель (признак «1»).')
rsbu_signatory_title = fields.Char(
string='Должность подписанта', default='ГЕНЕРАЛЬНЫЙ ДИРЕКТОР',
help='Должность руководителя (уполномоченного представителя), '
'подписывающего отчётность. Элемент «Должность» в блоке '
'«Руководитель» ЕФС-1.')
# --- Электронный документооборот (ЭДО) — для имени файла обмена УПД ---
rsbu_edo_operator_code = fields.Char(
string='Код оператора ЭДО (УИОЭДО)', size=3, default='000',
help='Трёхзначный код оператора ЭДО, присвоенный ФНС (напр. «2BM» — '
'Диадок, «2BE» — СБИС). «000» — при обмене не через оператора '
'ЭДО. Используется в имени файла обмена УПД.')
rsbu_edo_participant_id = fields.Char(
string='Идентификатор участника ЭДО',
help='Уникальный идентификатор участника (организации) в системе '
'ЭДО, присвоенный оператором (УИОтпр в имени файла обмена). '
'При обмене не через оператора — GUID участника.')

View File

@@ -0,0 +1,48 @@
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
rsbu_oktmo = fields.Char(
related='company_id.rsbu_oktmo', readonly=False, string='ОКТМО')
rsbu_tax_office_code = fields.Char(
related='company_id.rsbu_tax_office_code', readonly=False,
string='Код налогового органа')
rsbu_okved = fields.Char(
related='company_id.rsbu_okved', readonly=False, string='ОКВЭД')
rsbu_kbk_usn = fields.Char(
related='company_id.rsbu_kbk_usn', readonly=False, string='КБК УСН')
rsbu_kbk_nds = fields.Char(
related='company_id.rsbu_kbk_nds', readonly=False, string='КБК НДС')
rsbu_kbk_ndfl = fields.Char(
related='company_id.rsbu_kbk_ndfl', readonly=False, string='КБК НДФЛ')
rsbu_kbk_insurance = fields.Char(
related='company_id.rsbu_kbk_insurance', readonly=False,
string='КБК страховых взносов')
rsbu_kbk_injury = fields.Char(
related='company_id.rsbu_kbk_injury', readonly=False,
string='КБК взносов на травматизм')
rsbu_sfr_reg_number = fields.Char(
related='company_id.rsbu_sfr_reg_number', readonly=False,
string='Рег. номер в СФР')
rsbu_profrisk_class = fields.Char(
related='company_id.rsbu_profrisk_class', readonly=False,
string='Класс профриска')
rsbu_signatory_id = fields.Many2one(
related='company_id.rsbu_signatory_id', readonly=False,
string='Подписант отчётности')
rsbu_signatory_is_representative = fields.Boolean(
related='company_id.rsbu_signatory_is_representative', readonly=False,
string='Подписант — представитель')
rsbu_signatory_title = fields.Char(
related='company_id.rsbu_signatory_title', readonly=False,
string='Должность подписанта')
rsbu_ogrn = fields.Char(
related='company_id.rsbu_ogrn', readonly=False, string='ОГРН')
rsbu_edo_operator_code = fields.Char(
related='company_id.rsbu_edo_operator_code', readonly=False,
string='Код оператора ЭДО (УИОЭДО)')
rsbu_edo_participant_id = fields.Char(
related='company_id.rsbu_edo_participant_id', readonly=False,
string='Идентификатор участника ЭДО')

View File

@@ -0,0 +1,17 @@
"""Идентификатор участника ЭДО на контрагенте — для имени файла обмена.
Ранее поле называлось `edi` (в устаревшем l10n_ru_upd_xml). Переносим в
РСБУ-слой как `rsbu_edo_participant_id`, чтобы отчётность/УПД не зависели
от deprecated-модуля.
"""
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
rsbu_edo_participant_id = fields.Char(
string='Идентификатор участника ЭДО',
help='Уникальный идентификатор контрагента в системе ЭДО, '
'присвоенный оператором (УИПол — получатель — в имени файла '
'обмена УПД). При обмене не через оператора — GUID участника.')

View File

@@ -0,0 +1,16 @@
"""Код ОКЕИ на единице измерения — для отчётных XML (УПД и др.).
Ранее поле добавлял устаревший l10n_ru_upd_xml; переносим в РСБУ-слой,
чтобы отчётность не зависела от deprecated-модуля. ОКЕИ — код единицы по
Общероссийскому классификатору единиц измерения (напр. 796 — штука,
006 — метр). TODO(справочник ОКЕИ).
"""
from odoo import fields, models
class UomUom(models.Model):
_inherit = 'uom.uom'
okei = fields.Char(
string='Код ОКЕИ',
help='Код единицы измерения по ОКЕИ (для УПД и налоговых XML).')