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,73 @@
# -*- coding: utf-8 -*-
"""Оборотно-сальдовая ведомость (ОСВ) по РСБУ-проводкам.
Строится за период по проведённым строкам rsbu.move.line, сгруппированным
по счёту плана счетов. Для каждого счёта показываются шесть показателей:
сальдо на начало (Дт/Кт), обороты за период (Дт/Кт), сальдо на конец
(Дт/Кт) — как в 1С.
Особенности:
* сальдо активно-пассивных счетов (60/62/76) — РАЗВЁРНУТОЕ (дебиторка и
кредиторка одновременно), считается в разрезе субконто через
rsbu.account.get_expanded_balance;
* иерархия счетов сворачивается снизу вверх: показатели счёта-группы =
сумма показателей его потомков-листьев;
* начало года для сальдо — календарное (1 января), результатные счета
90/91/99 к концу года закрываются регламентом закрытия месяца.
Строки живут в рамках пользовательской сессии (TransientModel); отчёт на
экране (QWeb-HTML) и переход к проводкам (drill-down) строятся поверх них.
"""
from odoo import api, fields, models
class RsbuTrialBalanceLine(models.TransientModel):
_name = 'rsbu.trial.balance.line'
_description = 'РСБУ — Строка оборотно-сальдовой ведомости'
_order = 'code'
wizard_id = fields.Many2one(
'rsbu.trial.balance.wizard', string='Отчёт', ondelete='cascade',
index=True)
account_id = fields.Many2one('rsbu.account', string='Счёт', index=True)
code = fields.Char(string='Код счёта', index=True)
name = fields.Char(string='Наименование счёта')
level = fields.Integer(string='Уровень')
is_group = fields.Boolean(string='Счёт-группа')
parent_code = fields.Char(string='Код родителя')
company_id = fields.Many2one('res.company', string='Компания')
currency_id = fields.Many2one('res.currency', string='Валюта')
opening_debit = fields.Monetary(string='Сальдо нач. Дт',
currency_field='currency_id')
opening_credit = fields.Monetary(string='Сальдо нач. Кт',
currency_field='currency_id')
turnover_debit = fields.Monetary(string='Оборот Дт',
currency_field='currency_id')
turnover_credit = fields.Monetary(string='Оборот Кт',
currency_field='currency_id')
closing_debit = fields.Monetary(string='Сальдо кон. Дт',
currency_field='currency_id')
closing_credit = fields.Monetary(string='Сальдо кон. Кт',
currency_field='currency_id')
def action_open_entries(self):
"""Drill-down: открыть проводки счёта за период отчёта."""
self.ensure_one()
wiz = self.wizard_id
domain = [
('account_id', 'child_of', self.account_id.id),
('state', '=', 'posted'),
('company_id', '=', self.company_id.id),
('date', '>=', wiz.date_from),
('date', '<=', wiz.date_to),
]
return {
'type': 'ir.actions.act_window',
'name': '%s %s' % (self.code, self.name or ''),
'res_model': 'rsbu.move.line',
'view_mode': 'list,form',
'domain': domain,
'context': {'search_default_group_account': 0},
}