You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.5 KiB
38 lines
1.5 KiB
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).-
|
|
from odoo import api, models
|
|
|
|
|
|
class AccountMoveLine(models.Model):
|
|
_inherit = 'account.move.line'
|
|
|
|
@api.model_cr
|
|
def init(self):
|
|
"""
|
|
The join between accounts_partners subquery and account_move_line
|
|
can be heavy to compute on big databases.
|
|
Join sample:
|
|
JOIN
|
|
account_move_line ml
|
|
ON ap.account_id = ml.account_id
|
|
AND ml.date < '2018-12-30'
|
|
AND ap.partner_id = ml.partner_id
|
|
AND ap.include_initial_balance = TRUE
|
|
By adding the following index, performances are strongly increased.
|
|
:return:
|
|
"""
|
|
self._cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = '
|
|
'%s',
|
|
('account_move_line_account_id_partner_id_index',))
|
|
if not self._cr.fetchone():
|
|
self._cr.execute("""
|
|
CREATE INDEX account_move_line_account_id_partner_id_index
|
|
ON account_move_line (account_id, partner_id)""")
|
|
|
|
@api.model
|
|
def search_count(self, args):
|
|
# In Big DataBase every time you change the domain widget this method
|
|
# takes a lot of time. This improves performance
|
|
if self.env.context.get("skip_search_count"):
|
|
return 0
|
|
return super(AccountMoveLine, self).search_count(args)
|