19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:30:07 +01:00
parent ba20ce7443
commit 768b70e05e
2357 changed files with 1057103 additions and 712486 deletions

View file

@ -1,11 +1,78 @@
from odoo import models
from odoo import api, Command, fields, models
class BaseDocumentLayout(models.TransientModel):
_inherit = 'base.document.layout'
from_invoice = fields.Boolean()
qr_code = fields.Boolean(related='company_id.qr_code', readonly=False)
vat = fields.Char(related='company_id.vat', readonly=False,)
account_number = fields.Char(compute='_compute_account_number', inverse='_inverse_account_number',)
def document_layout_save(self):
"""Save layout and onboarding step progress, return super() result"""
res = super(BaseDocumentLayout, self).document_layout_save()
for wizard in self:
wizard.company_id.action_save_onboarding_invoice_layout()
if step := self.env.ref('account.onboarding_onboarding_step_base_document_layout', raise_if_not_found=False):
for company_id in self.company_id:
step.with_company(company_id).action_set_just_done()
# When we finish the configuration of the layout, we want the dialog size to be reset to large
# which is the default behaviour.
if res.get('context'):
res['context']['dialog_size'] = 'large'
return res
def _get_preview_template(self):
if (
self.env.context.get('active_model') == 'account.move'
and self.env.context.get('active_id')
):
return 'account.report_invoice_wizard_iframe'
return super()._get_preview_template()
def _get_render_information(self, styles):
res = super()._get_render_information(styles)
if (
self.env.context.get('active_model') == 'account.move'
and (active_id := self.env.context.get('active_id'))
):
res['o'] = self.env['account.move'].browse(active_id)
if self._get_preview_template() in [
'web.report_invoice_wizard_preview',
'account.report_invoice_wizard_iframe'
]:
res.update({
'qr_code': self.qr_code,
'account_number': self.account_number,
})
return res
@api.depends('partner_id', 'account_number')
def _compute_account_number(self):
for record in self:
if record.partner_id.bank_ids:
record.account_number = record.partner_id.bank_ids[0].acc_number or ''
else:
record.account_number = ''
@api.depends('qr_code', 'account_number')
def _compute_preview(self):
# EXTENDS 'web' to add dependencies
super()._compute_preview()
def _inverse_account_number(self):
for record in self:
if record.partner_id.bank_ids and record.account_number:
bank = record.partner_id.bank_ids[0]
if bank.acc_number != record.account_number:
bank.allow_out_payment = False
bank.acc_number = record.account_number
bank.allow_out_payment = True
elif record.account_number:
record.partner_id.bank_ids += self.env['res.partner.bank']._find_or_create_bank_account(
account_number=record.account_number,
partner=record.partner_id, allow_company_account_creation=True,
company=record.company_id,
)