Odoo18-Base/addons/account/wizard/base_document_layout.py
2025-01-06 10:57:38 +07:00

63 lines
2.6 KiB
Python

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()
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 self.env.context.get('active_id')
):
res.update({
'o': self.env['account.move'].browse(self.env.context.get('active_id')),
'qr_code': self.qr_code,
})
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 = ''
def _inverse_account_number(self):
for record in self:
if record.partner_id.bank_ids and record.account_number:
record.partner_id.bank_ids[0].acc_number = record.account_number
elif record.account_number:
record.partner_id.bank_ids = [
Command.create({
'acc_number': record.account_number,
'partner_id': record.partner_id.id,
})
]