45 lines
1.9 KiB
Python
45 lines
1.9 KiB
Python
from odoo import fields, models
|
|
|
|
|
|
class ResCompany(models.Model):
|
|
_inherit = 'res.company'
|
|
|
|
l10n_tr_nilvera_api_key = fields.Char(string="Nilvera API key", groups='base.group_system')
|
|
l10n_tr_nilvera_environment = fields.Selection(
|
|
string="Nilvera Environment",
|
|
selection=[
|
|
('sandbox', "Test"),
|
|
('production', "Production"),
|
|
],
|
|
required=True,
|
|
default='sandbox',
|
|
)
|
|
l10n_tr_nilvera_purchase_journal_id = fields.Many2one(
|
|
comodel_name='account.journal',
|
|
string="Nilvera Purchase Journal",
|
|
domain=[('type', '=', 'purchase')],
|
|
store=True,
|
|
compute='_compute_l10n_tr_nilvera_purchase_journal_id',
|
|
inverse='_inverse_l10n_tr_nilvera_purchase_journal_id',
|
|
)
|
|
|
|
def _compute_l10n_tr_nilvera_purchase_journal_id(self):
|
|
purchase_journals = self.env['account.journal'].search([('type', '=', 'purchase')])
|
|
for company in self:
|
|
if not company.l10n_tr_nilvera_purchase_journal_id:
|
|
company.l10n_tr_nilvera_purchase_journal_id = purchase_journals.filtered_domain(self.env['account.journal']._check_company_domain(company))[:1]
|
|
company.l10n_tr_nilvera_purchase_journal_id.is_nilvera_journal = True
|
|
|
|
def _inverse_l10n_tr_nilvera_purchase_journal_id(self):
|
|
# dict(company: journals)
|
|
journals_to_reset_grouped = self.env['account.journal'].search([
|
|
('company_id', 'in', self.ids),
|
|
('is_nilvera_journal', '=', True),
|
|
]).grouped('company_id')
|
|
for company in self:
|
|
# This avoids having 2 or more journals from the same company with
|
|
# `is_nilvera_journal` set to True (which could occur after changes).
|
|
if journals_to_reset := journals_to_reset_grouped.get(company):
|
|
journals_to_reset.is_nilvera_journal = False
|
|
company.l10n_tr_nilvera_purchase_journal_id.is_nilvera_journal = True
|