Public release from ruodoo-project: 19.0 - 2026-11-01 22:52:25 UTC
This commit is contained in:
2
rsbu_vat/wizards/__init__.py
Normal file
2
rsbu_vat/wizards/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from . import rsbu_vat_recompute_wizard
|
||||
from . import rsbu_vat_declaration_wizard
|
||||
61
rsbu_vat/wizards/rsbu_vat_declaration_wizard.py
Normal file
61
rsbu_vat/wizards/rsbu_vat_declaration_wizard.py
Normal 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',
|
||||
}
|
||||
37
rsbu_vat/wizards/rsbu_vat_declaration_wizard_views.xml
Normal file
37
rsbu_vat/wizards/rsbu_vat_declaration_wizard_views.xml
Normal 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>
|
||||
31
rsbu_vat/wizards/rsbu_vat_recompute_wizard.py
Normal file
31
rsbu_vat/wizards/rsbu_vat_recompute_wizard.py
Normal 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),
|
||||
],
|
||||
}
|
||||
30
rsbu_vat/wizards/rsbu_vat_recompute_wizard_views.xml
Normal file
30
rsbu_vat/wizards/rsbu_vat_recompute_wizard_views.xml
Normal 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>
|
||||
Reference in New Issue
Block a user