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,2 @@
from . import rsbu_vat_recompute_wizard
from . import rsbu_vat_declaration_wizard

View File

@@ -0,0 +1,61 @@
from odoo import fields, models
class RsbuVatDeclarationWizard(models.TransientModel):
"""Визард быстрого просмотра итогов НДС на экране.
Полноценная декларация НДС с выгрузкой XML (комплект из 3 файлов по
формату ФНС 5.12) — постоянная модель rsbu.nds.declaration в модуле
rsbu_fns_reporting (меню «Отчётность ФНС → Декларация НДС»). Этот
визард оставлен для быстрой прикидки сумм за произвольный период.
"""
_name = 'rsbu.vat.declaration.wizard'
_description = 'РСБУ — Расчёт декларации НДС'
date_from = fields.Date(string='Дата с', required=True)
date_to = fields.Date(string='Дата по', required=True)
company_id = fields.Many2one(
'res.company', string='Компания', required=True,
default=lambda self: self.env.company)
currency_id = fields.Many2one(
related='company_id.currency_id')
tax_base = fields.Monetary(string='Налоговая база', readonly=True,
currency_field='currency_id')
vat_charged = fields.Monetary(string='НДС начислен', readonly=True,
currency_field='currency_id')
vat_deducted = fields.Monetary(string='Вычеты', readonly=True,
currency_field='currency_id')
vat_payable = fields.Monetary(string='НДС к уплате', readonly=True,
currency_field='currency_id')
computed = fields.Boolean(default=False)
def action_compute(self):
self.ensure_one()
# Гарантируем актуальность книг/итогов.
self.env['rsbu.vat.book.line'].recompute_period(
self.date_from, self.date_to, self.company_id)
self.env['rsbu.vat.summary'].recompute_period(
self.date_from, self.date_to, self.company_id)
books = self.env['rsbu.vat.book.line'].search([
('company_id', '=', self.company_id.id),
('date', '>=', self.date_from),
('date', '<=', self.date_to),
])
charged = sum(books.filtered(lambda b: b.book == 'sales')
.mapped('vat_amount'))
deducted = sum(books.filtered(lambda b: b.book == 'purchases')
.mapped('vat_amount'))
self.write({
'vat_charged': charged,
'vat_deducted': deducted,
'vat_payable': charged - deducted,
'computed': True,
})
return {
'type': 'ir.actions.act_window',
'res_model': 'rsbu.vat.declaration.wizard',
'res_id': self.id,
'view_mode': 'form',
'target': 'new',
}

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_rsbu_vat_declaration_wizard_form" model="ir.ui.view">
<field name="name">rsbu.vat.declaration.wizard.form</field>
<field name="model">rsbu.vat.declaration.wizard</field>
<field name="arch" type="xml">
<form string="Расчёт декларации НДС">
<group>
<field name="date_from"/>
<field name="date_to"/>
<field name="company_id"
groups="base.group_multi_company"/>
<field name="currency_id" invisible="1"/>
<field name="computed" invisible="1"/>
</group>
<group string="Итоги за период" invisible="not computed">
<field name="vat_charged"/>
<field name="vat_deducted"/>
<field name="vat_payable"/>
</group>
<footer>
<button name="action_compute" type="object"
string="Рассчитать" class="btn-primary"/>
<button string="Закрыть" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_rsbu_vat_declaration_wizard" model="ir.actions.act_window">
<field name="name">Расчёт декларации НДС</field>
<field name="res_model">rsbu.vat.declaration.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>

View File

@@ -0,0 +1,31 @@
from odoo import fields, models, _
class RsbuVatRecomputeWizard(models.TransientModel):
"""Визард пересчёта книг НДС и итогов за период."""
_name = 'rsbu.vat.recompute.wizard'
_description = 'РСБУ — Пересчёт книг НДС'
date_from = fields.Date(string='Дата с', required=True)
date_to = fields.Date(string='Дата по', required=True)
company_id = fields.Many2one(
'res.company', string='Компания', required=True,
default=lambda self: self.env.company)
def action_recompute(self):
self.ensure_one()
self.env['rsbu.vat.book.line'].recompute_period(
self.date_from, self.date_to, self.company_id)
self.env['rsbu.vat.summary'].recompute_period(
self.date_from, self.date_to, self.company_id)
return {
'type': 'ir.actions.act_window',
'name': _('Книги НДС'),
'res_model': 'rsbu.vat.book.line',
'view_mode': 'list',
'domain': [
('company_id', '=', self.company_id.id),
('date', '>=', self.date_from),
('date', '<=', self.date_to),
],
}

View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_rsbu_vat_recompute_wizard_form" model="ir.ui.view">
<field name="name">rsbu.vat.recompute.wizard.form</field>
<field name="model">rsbu.vat.recompute.wizard</field>
<field name="arch" type="xml">
<form string="Пересчёт книг НДС">
<group>
<field name="date_from"/>
<field name="date_to"/>
<field name="company_id"
groups="base.group_multi_company"/>
</group>
<footer>
<button name="action_recompute" type="object"
string="Пересчитать" class="btn-primary"/>
<button string="Отмена" class="btn-secondary"
special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_rsbu_vat_recompute_wizard" model="ir.actions.act_window">
<field name="name">Пересчёт книг НДС</field>
<field name="res_model">rsbu.vat.recompute.wizard</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>