63 lines
2.6 KiB
Python
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,
|
|
})
|
|
]
|