mirror of
https://github.com/bringout/oca-ocb-accounting.git
synced 2026-04-22 15:22:04 +02:00
19.0 vanilla
This commit is contained in:
parent
ba20ce7443
commit
768b70e05e
2357 changed files with 1057103 additions and 712486 deletions
39
odoo-bringout-oca-ocb-account/account/models/account_root.py
Normal file
39
odoo-bringout-oca-ocb-account/account/models/account_root.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
from itertools import accumulate
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools import Query
|
||||
|
||||
|
||||
class AccountRoot(models.Model):
|
||||
_name = 'account.root'
|
||||
_description = 'Account codes first 2 digits'
|
||||
_auto = False
|
||||
_table_query = '0'
|
||||
|
||||
name = fields.Char(compute='_compute_root')
|
||||
parent_id = fields.Many2one('account.root', compute='_compute_root')
|
||||
|
||||
@api.private
|
||||
def browse(self, ids=()):
|
||||
if isinstance(ids, str):
|
||||
ids = (ids,)
|
||||
return super().browse(ids)
|
||||
|
||||
def _search(self, domain, offset=0, limit=None, order=None, **kw) -> Query:
|
||||
match list(domain):
|
||||
case [('id', 'in', ids)]:
|
||||
return self.browse(sorted(ids))._as_query()
|
||||
case [('id', 'parent_of', ids)]:
|
||||
return self.browse(sorted({s for _id in ids for s in accumulate(_id)}))._as_query()
|
||||
raise UserError(self.env._("Filter on the Account or its Display Name instead"))
|
||||
|
||||
@api.model
|
||||
def _from_account_code(self, code):
|
||||
return self.browse(code and code[:2])
|
||||
|
||||
def _compute_root(self):
|
||||
for root in self:
|
||||
root.name = root.id
|
||||
root.parent_id = self.browse(root.id[:-1] if len(root.id) > 1 else False)
|
||||
Loading…
Add table
Add a link
Reference in a new issue