[IMP][account_financial_report] Improved SQL query
parent
244f96ef8d
commit
7beb35cd8d
|
@ -206,14 +206,16 @@ class account_balance(report_sxw.rml_parse):
|
||||||
THEN aml.partner_id
|
THEN aml.partner_id
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END AS p_idx,
|
END AS p_idx,
|
||||||
SUM(aml.debit) AS debit,
|
%s,
|
||||||
SUM(aml.credit) AS credit
|
%s,
|
||||||
|
%s,
|
||||||
|
%s
|
||||||
FROM account_move_line AS aml
|
FROM account_move_line AS aml
|
||||||
INNER JOIN account_account aa ON aa.id = aml.account_id
|
INNER JOIN account_account aa ON aa.id = aml.account_id
|
||||||
INNER JOIN account_move am ON am.id = aml.move_id
|
INNER JOIN account_move am ON am.id = aml.move_id
|
||||||
%s
|
%s
|
||||||
GROUP BY p_idx, partner_name
|
GROUP BY p_idx, partner_name
|
||||||
ORDER BY partner_name"""
|
"""
|
||||||
|
|
||||||
WHERE_POSTED = ''
|
WHERE_POSTED = ''
|
||||||
if ctx.get('state','posted')=='posted':
|
if ctx.get('state','posted')=='posted':
|
||||||
|
@ -227,7 +229,11 @@ class account_balance(report_sxw.rml_parse):
|
||||||
AND aa.id = %s
|
AND aa.id = %s
|
||||||
AND aml.state <> 'draft'
|
AND aml.state <> 'draft'
|
||||||
""" % (init_periods, account['id'])
|
""" % (init_periods, account['id'])
|
||||||
query_init = sql_query%(WHERE+WHERE_POSTED)
|
query_init = sql_query%('SUM(aml.debit) AS init_dr',
|
||||||
|
'SUM(aml.credit) AS init_cr',
|
||||||
|
'0.0 AS bal_dr',
|
||||||
|
'0.0 AS bal_cr',
|
||||||
|
WHERE+WHERE_POSTED)
|
||||||
|
|
||||||
WHERE = """
|
WHERE = """
|
||||||
WHERE aml.period_id IN (%s)
|
WHERE aml.period_id IN (%s)
|
||||||
|
@ -235,32 +241,40 @@ class account_balance(report_sxw.rml_parse):
|
||||||
AND aml.state <> 'draft'
|
AND aml.state <> 'draft'
|
||||||
""" % (cur_periods, account['id'])
|
""" % (cur_periods, account['id'])
|
||||||
|
|
||||||
query_bal = sql_query%(WHERE+WHERE_POSTED)
|
query_bal = sql_query%('0.0 AS init_dr',
|
||||||
|
'0.0 AS init_cr',
|
||||||
|
'SUM(aml.debit) AS bal_dr',
|
||||||
|
'SUM(aml.credit) AS bal_cr',
|
||||||
|
WHERE+WHERE_POSTED)
|
||||||
|
|
||||||
query = '''
|
query = '''
|
||||||
SELECT
|
SELECT
|
||||||
vinit.partner_name,
|
partner_name,
|
||||||
(vinit.debit - vinit.credit) AS balanceinit,
|
p_idx,
|
||||||
vbal.debit,
|
SUM(init_dr)-SUM(init_cr) AS balanceinit,
|
||||||
vbal.credit,
|
SUM(bal_dr) AS debit,
|
||||||
(vinit.debit - vinit.credit + vbal.debit - vbal.credit) AS balance
|
SUM(bal_cr) AS credit,
|
||||||
|
SUM(init_dr) - SUM(init_cr) + SUM(bal_dr) - SUM(bal_cr) AS balance
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
*
|
||||||
FROM (%s) vinit
|
FROM (%s) vinit
|
||||||
JOIN (%s) vbal ON vinit.p_idx = vbal.p_idx
|
UNION ALL (%s)
|
||||||
|
) v
|
||||||
|
GROUP BY p_idx, partner_name
|
||||||
|
ORDER BY partner_name
|
||||||
'''%(query_init,query_bal)
|
'''%(query_init,query_bal)
|
||||||
|
|
||||||
# import pdb
|
|
||||||
# pdb.set_trace()
|
|
||||||
|
|
||||||
self.cr.execute(query)
|
self.cr.execute(query)
|
||||||
res_dict = self.cr.dictfetchall()
|
res_dict = self.cr.dictfetchall()
|
||||||
balance = account['balanceinit']
|
|
||||||
for det in res_dict:
|
for det in res_dict:
|
||||||
res.append({
|
i,d,c,b = det['balanceinit'], det['debit'], det['credit'], det['balance'],
|
||||||
|
any([bool(i),bool(d),bool(c),bool(b)]) and res.append({
|
||||||
'partner_name': det['partner_name'],
|
'partner_name': det['partner_name'],
|
||||||
'balanceinit': det['balanceinit'],
|
'balanceinit': i,
|
||||||
'debit': det['debit'],
|
'debit': d,
|
||||||
'credit': det['credit'],
|
'credit': c,
|
||||||
'balance': det['balance'],
|
'balance': b,
|
||||||
})
|
})
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue