Skip to content

Commit ece91fc

Browse files
carlosdaudenrjaraspearhead
authored andcommitted
[10.0][IMP] partner_financial_risk: Improve multicompany cron (OCA#530)
* [9.0][IMP] partner_financial_risk: Improve multicompany cron * [9.0][IMP] partner_financial_risk: Exec with sudo (cherry picked from commit 6590bbf)
1 parent 6a0d782 commit ece91fc

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

account_financial_risk/models/res_partner.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# Copyright 2016 Carlos Dauden <[email protected]>
33
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
44

5+
from collections import defaultdict
56
from datetime import datetime
67
from dateutil.relativedelta import relativedelta
78
from odoo import api, fields, models
@@ -256,12 +257,24 @@ def process_unpaid_invoices(self):
256257
ConfigParameter = self.env['ir.config_parameter']
257258
last_check = ConfigParameter.get_param(
258259
'partner_financial_risk.last_check', default='2016-01-01')
259-
move_lines = self.env['account.move.line'].search([
260-
('reconciled', '=', False),
261-
('account_id.internal_type', '=', 'receivable'),
262-
('date_maturity', '>=', last_check),
263-
('date_maturity', '<', max_date)])
264-
move_lines.mapped('partner_id')._compute_risk_account_amount()
260+
groups = self.env['account.move.line'].sudo().read_group(
261+
[('reconciled', '=', False),
262+
('partner_id', '!=', False),
263+
('account_id.internal_type', '=', 'receivable'),
264+
('date_maturity', '>=', last_check),
265+
('date_maturity', '<', max_date)],
266+
['company_id', 'partner_id'],
267+
['company_id', 'partner_id'],
268+
lazy=False,
269+
)
270+
group_dic = defaultdict(list)
271+
for group in groups:
272+
group_dic[group['company_id'][0]].append(group['partner_id'][0])
273+
for company_id, partner_ids in group_dic.iteritems():
274+
partners = self.browse(partner_ids)
275+
partners.with_context(
276+
force_company=company_id,
277+
)._compute_risk_account_amount()
265278
ConfigParameter.set_param(
266279
'partner_financial_risk.last_check', max_date)
267280
return True

0 commit comments

Comments
 (0)