Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC

This commit is contained in:
CI Publish Bot
2026-05-10 21:19:11 +00:00
commit cbf9e6e6d6
1213 changed files with 183945 additions and 0 deletions

View File

@ -0,0 +1,103 @@
from odoo import api, fields, models
from odoo.exceptions import UserError
class AccountMoveTemplateWizardLine(models.TransientModel):
_name = 'account.move.template.wizard.line'
_description = 'Черновая строка визарда шаблона'
wizard_id = fields.Many2one(
comodel_name='account.move.template.wizard',
required=True,
ondelete='cascade',
)
account_id = fields.Many2one(
comodel_name='account.account',
string='Счёт',
required=True,
)
move_type = fields.Selection(
selection=[('debit', 'Дебет'), ('credit', 'Кредит')],
string='Сторона',
required=True,
)
amount = fields.Float(
string='Сумма',
digits=(16, 2),
)
class AccountMoveTemplateWizard(models.TransientModel):
_name = 'account.move.template.wizard'
_description = 'Визард создания проводки по шаблону'
res_model = fields.Char(string='Модель документа', required=True)
res_id = fields.Integer(string='ID документа', required=True)
template_id = fields.Many2one(
comodel_name='account.move.template',
string='Шаблон',
)
amount = fields.Float(
string='Базовая сумма',
digits=(16, 2),
)
draft_line_ids = fields.One2many(
comodel_name='account.move.template.wizard.line',
inverse_name='wizard_id',
string='Черновые строки',
)
@api.onchange('template_id', 'amount')
def _onchange_compute_draft_lines(self):
"""Recompute draft lines when template or amount changes."""
self.draft_line_ids = [(5, 0, 0)] # clear existing
if not self.template_id or not self.amount:
return
lines = []
for tpl_line in self.template_id.line_ids:
line_amount = self.amount * tpl_line.percent / 100.0
lines.append((0, 0, {
'account_id': tpl_line.account_id.id,
'move_type': tpl_line.move_type,
'amount': line_amount,
}))
self.draft_line_ids = lines
def action_post(self):
"""Create account.move from draft lines and link to source document."""
self.ensure_one()
if not self.template_id or not self.amount:
raise UserError('Необходимо выбрать шаблон и указать базовую сумму.')
try:
# Build move lines
move_line_vals = []
for draft_line in self.draft_line_ids:
if draft_line.move_type == 'debit':
debit = draft_line.amount
credit = 0.0
else:
debit = 0.0
credit = draft_line.amount
move_line_vals.append((0, 0, {
'account_id': draft_line.account_id.id,
'debit': debit,
'credit': credit,
'name': self.template_id.name,
}))
# Create the move
move = self.env['account.move'].create({
'move_type': 'entry',
'state': 'draft',
'line_ids': move_line_vals,
})
# Link move to source document via move_ids
source_record = self.env[self.res_model].browse(self.res_id)
source_record.move_ids = [(4, move.id)]
except Exception as e:
raise UserError(f'Ошибка при создании проводки: {str(e)}') from e
return {'type': 'ir.actions.act_window_close'}