From: Ludovic CHEVALIER Date: Wed, 11 May 2022 11:15:56 +0000 (+0200) Subject: [PYTHON] +allow to follow non analytic lines X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dcompta/comptes/%40%20%27entree_login%27%20=%3E%20%27Your%20login%27%2C%20%27entree_login_connexion_1%27%20=%3E%20%27Connection%20login%27%2C%20%27entree_login_connexion_2%27%20=%3E%20%27%28Sometimes%20matches%20your%20FTP%20account%20login%20and%20sometimes%20left%20empty%29%27%2C-%27entree_login_ldap%27%20=%3E%20%27Initial%20LDAP%20login%27%2C%20%27entree_mot_passe%27%20=%3E%20%27Your%20password%27%2C%20%27entree_mot_passe_1%27%20=%3E%20%27Password%27%2C%20%27entree_mot_passe_2%27%20=%3E%20%27%28Sometimes%20matches%20your%20FTP%20access%20password%20and%20sometimes%20left%20empty%29%27%2C%40%40%20-150%2C7%20%20121%2C7%20%40%40%20Do%20not%20submit%20this%20import%20request.%3Cp%3EFor%20more%20information%2C%20please%20see%20%3Ca%20href=?a=commitdiff_plain;h=1399bf9fb1e430d7434fe0fbfce659222e9c38dc;p=burette%2Faccount_budget_enhancement.git [PYTHON] +allow to follow non analytic lines --- 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 +