From 1399bf9fb1e430d7434fe0fbfce659222e9c38dc Mon Sep 17 00:00:00 2001 From: Ludovic CHEVALIER Date: Wed, 11 May 2022 13:15:56 +0200 Subject: [PATCH] [PYTHON] +allow to follow non analytic lines --- account_budget.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 account_budget.py diff --git a/account_budget.py b/account_budget.py new file mode 100644 index 0000000..187cf29 --- /dev/null +++ b/account_budget.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 L'Heureux Cyclage +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.osv import osv +from openerp.osv import orm +from openerp.osv import fields + + +class crossovered_budget_lines(orm.Model): + _inherit = 'crossovered.budget.lines' + + def _prac_amt(self, cr, uid, ids, context=None): + """Calculate pratical amount even if there is no analytic account""" + res = {} + result = 0.0 + if context is None: + context = {} + account_obj = self.pool.get('account.account') + + for line in self.browse(cr, uid, ids, context=context): + acc_ids = [x.id for x in line.general_budget_id.account_ids] + if not acc_ids: + raise osv.except_osv(_('Error!'),_("The Budget '%s' has no accounts!") % ustr(line.general_budget_id.name)) + acc_ids = account_obj._get_children_and_consol(cr, uid, acc_ids, context=context) + date_to = line.date_to + date_from = line.date_from + + if line.analytic_account_id.id: + res = super(crossovered_budget_lines, self)._prac_amt(cr, uid, ids, context) + else: + cr.execute("SELECT SUM(credit) - SUM(debit) FROM account_move_line WHERE (date " + "between to_date(%s,'yyyy-mm-dd') AND to_date(%s,'yyyy-mm-dd')) AND " + "account_id=ANY(%s)", (date_from, date_to,acc_ids,)) + result = cr.fetchone()[0] + if result is None: + result = 0.00 + res[line.id] = result + + return res + -- 2.20.1