[FIX] account, l10n_fr: avoid exceptions when processing parameters
This commit is contained in:
parent
df91cb5a9a
commit
789a86901a
|
@ -372,9 +372,15 @@ class account_move_line(osv.osv):
|
||||||
context = {}
|
context = {}
|
||||||
if not args:
|
if not args:
|
||||||
return []
|
return []
|
||||||
where = ' AND '.join(map(lambda x: '(abs(sum(debit-credit))'+x[1]+str(x[2])+')',args))
|
|
||||||
|
where = ' AND '.join(
|
||||||
|
'(abs(sum(debit-credit)) %s %%s)' % operator
|
||||||
|
for field, operator, value in args
|
||||||
|
)
|
||||||
|
params = tuple(value for field, operator, value in args)
|
||||||
|
|
||||||
cursor.execute('SELECT id, SUM(debit-credit) FROM account_move_line \
|
cursor.execute('SELECT id, SUM(debit-credit) FROM account_move_line \
|
||||||
GROUP BY id, debit, credit having '+where)
|
GROUP BY id, debit, credit having '+where, params)
|
||||||
res = cursor.fetchall()
|
res = cursor.fetchall()
|
||||||
if not res:
|
if not res:
|
||||||
return [('id', '=', '0')]
|
return [('id', '=', '0')]
|
||||||
|
|
|
@ -159,6 +159,14 @@ class journal_print(report_sxw.rml_parse, common_report_header):
|
||||||
if self.target_move == 'posted':
|
if self.target_move == 'posted':
|
||||||
move_state = ['posted']
|
move_state = ['posted']
|
||||||
|
|
||||||
|
fg = self.pool.get('account.print.journal').fields_get(
|
||||||
|
self.cr, self.uid, ['sort_selection'])
|
||||||
|
allowed = [v for v, l in fg['sort_selection']['selection']]
|
||||||
|
|
||||||
|
assert self.sort_selection in allowed, \
|
||||||
|
"unknown sorting directive %s expected one of %s" % (
|
||||||
|
self.sort_selection, allowed)
|
||||||
|
|
||||||
self.cr.execute('SELECT l.id FROM account_move_line l, account_move am WHERE l.move_id=am.id AND am.state IN %s AND l.period_id=%s AND l.journal_id IN %s ' + self.query_get_clause + ' ORDER BY '+ self.sort_selection + ', l.move_id',(tuple(move_state), period_id, tuple(journal_id) ))
|
self.cr.execute('SELECT l.id FROM account_move_line l, account_move am WHERE l.move_id=am.id AND am.state IN %s AND l.period_id=%s AND l.journal_id IN %s ' + self.query_get_clause + ' ORDER BY '+ self.sort_selection + ', l.move_id',(tuple(move_state), period_id, tuple(journal_id) ))
|
||||||
ids = map(lambda x: x[0], self.cr.fetchall())
|
ids = map(lambda x: x[0], self.cr.fetchall())
|
||||||
return obj_mline.browse(self.cr, self.uid, ids)
|
return obj_mline.browse(self.cr, self.uid, ids)
|
||||||
|
|
|
@ -70,14 +70,25 @@ class crossovered_analytic(report_sxw.rml_parse):
|
||||||
line_pool = self.pool.get('account.analytic.line')
|
line_pool = self.pool.get('account.analytic.line')
|
||||||
|
|
||||||
self.dict_acc_ref = {}
|
self.dict_acc_ref = {}
|
||||||
|
filters = [
|
||||||
|
'date >= %(date1)s',
|
||||||
|
'date <= %(date2)s',
|
||||||
|
]
|
||||||
|
params = {
|
||||||
|
'date1': form['date1'],
|
||||||
|
'date2': form['date2']
|
||||||
|
}
|
||||||
if form['journal_ids']:
|
if form['journal_ids']:
|
||||||
journal = " in (" + ','.join(map(lambda x: str(x), form['journal_ids'])) + ")"
|
filters.append('journal_id IN %(journal_ids)s')
|
||||||
|
params['journal_ids'] = tuple(form['journal_ids'])
|
||||||
else:
|
else:
|
||||||
journal = 'is not null'
|
filters.append('journal_id IS NOT NULL')
|
||||||
|
|
||||||
query_general = "SELECT id FROM account_analytic_line WHERE (journal_id " + journal +") AND date>='"+ str(form['date1']) +"'"" AND date<='" + str(form['date2']) + "'"
|
self.cr.execute(
|
||||||
|
"SELECT id FROM account_analytic_line WHERE " + ' AND '.join(filters),
|
||||||
|
params
|
||||||
|
)
|
||||||
|
|
||||||
self.cr.execute(query_general)
|
|
||||||
l_ids = self.cr.fetchall()
|
l_ids = self.cr.fetchall()
|
||||||
line_ids = [x[0] for x in l_ids]
|
line_ids = [x[0] for x in l_ids]
|
||||||
|
|
||||||
|
@ -102,10 +113,24 @@ class crossovered_analytic(report_sxw.rml_parse):
|
||||||
self.base_amount = 0.0
|
self.base_amount = 0.0
|
||||||
|
|
||||||
if selected_ids:
|
if selected_ids:
|
||||||
query = "SELECT SUM(aal.amount) AS amt, SUM(aal.unit_amount) AS qty FROM account_analytic_line AS aal, account_analytic_account AS aaa \
|
params['selected_ids'] = tuple(selected_ids)
|
||||||
WHERE aal.account_id = aaa.id AND aal.id IN ("+','.join(map(str,selected_ids))+") AND (aal.journal_id " + journal +") AND aal.date>='"+ str(form['date1']) +"'"" AND aal.date<='" + str(form['date2']) + "'"
|
filters = [
|
||||||
|
'aal.account_id = aaa.id',
|
||||||
|
'aal.id IN %(selected_ids)s',
|
||||||
|
'aal.date >= %(date1)s',
|
||||||
|
'aal.date <= %(date2)s',
|
||||||
|
]
|
||||||
|
if form['journal_ids']:
|
||||||
|
filters.append('aal.journal_id in %(journal_ids)s')
|
||||||
|
else:
|
||||||
|
filters.append('aal.journal_id IS NOT NULL')
|
||||||
|
|
||||||
self.cr.execute(query)
|
self.cr.execute(
|
||||||
|
"SELECT SUM(aal.amount) AS amt, SUM(aal.unit_amount) AS qty"
|
||||||
|
" FROM account_analytic_line AS aal, account_analytic_account AS aaa"
|
||||||
|
" WHERE " + ' AND '.join(filters),
|
||||||
|
params
|
||||||
|
)
|
||||||
info=self.cr.dictfetchall()
|
info=self.cr.dictfetchall()
|
||||||
res['ref_qty'] = info[0]['qty']
|
res['ref_qty'] = info[0]['qty']
|
||||||
res['ref_amt'] = info[0]['amt']
|
res['ref_amt'] = info[0]['amt']
|
||||||
|
@ -119,10 +144,20 @@ class crossovered_analytic(report_sxw.rml_parse):
|
||||||
if not ids:
|
if not ids:
|
||||||
ids = self.ids
|
ids = self.ids
|
||||||
|
|
||||||
|
filters = [
|
||||||
|
'aal.account_id = aaa.id',
|
||||||
|
'aal.date >= %(date1)s',
|
||||||
|
'aal.date <= %(date2)s',
|
||||||
|
]
|
||||||
|
params = {
|
||||||
|
'date1': form['date1'],
|
||||||
|
'date2': form['date2'],
|
||||||
|
}
|
||||||
if form['journal_ids']:
|
if form['journal_ids']:
|
||||||
journal=" in (" + ','.join(map(lambda x: str(x), form['journal_ids'])) + ")"
|
filters.append('aal.journal_id IN %(journal_ids)s')
|
||||||
|
params['journal_ids'] = tuple(form['journal_ids'])
|
||||||
else:
|
else:
|
||||||
journal= 'is not null'
|
filters.append('aal.journal_id IS NOT NULL')
|
||||||
|
|
||||||
acc_pool = self.pool.get('account.analytic.account')
|
acc_pool = self.pool.get('account.analytic.account')
|
||||||
line_pool = self.pool.get('account.analytic.line')
|
line_pool = self.pool.get('account.analytic.line')
|
||||||
|
@ -135,10 +170,15 @@ class crossovered_analytic(report_sxw.rml_parse):
|
||||||
for acc_id in self.final_list:
|
for acc_id in self.final_list:
|
||||||
selected_ids = line_pool.search(self.cr, self.uid, [('account_id','=',acc_id), ('move_id', 'in', self.dict_acc_ref[form['ref']])])
|
selected_ids = line_pool.search(self.cr, self.uid, [('account_id','=',acc_id), ('move_id', 'in', self.dict_acc_ref[form['ref']])])
|
||||||
if selected_ids:
|
if selected_ids:
|
||||||
query="SELECT aaa.code AS code, SUM(aal.amount) AS amt, SUM(aal.unit_amount) AS qty, aaa.name AS acc_name, aal.account_id AS id FROM account_analytic_line AS aal, account_analytic_account AS aaa \
|
filters.append('aal.id IN %(selected_ids)s')
|
||||||
WHERE aal.account_id=aaa.id AND aal.id IN ("+','.join(map(str,selected_ids))+") AND (aal.journal_id " + journal +") AND aal.date>='"+ str(form['date1']) +"'"" AND aal.date<='" + str(form['date2']) + "'"" GROUP BY aal.account_id,aaa.name,aaa.code ORDER BY aal.account_id"
|
params['selected_ids'] = tuple(selected_ids)
|
||||||
|
|
||||||
self.cr.execute(query)
|
self.cr.execute(
|
||||||
|
"SELECT aaa.code AS code, SUM(aal.amount) AS amt, SUM(aal.unit_amount) AS qty, aaa.name AS acc_name, aal.account_id AS id"
|
||||||
|
" FROM account_analytic_line AS aal, account_analytic_account AS aaa"
|
||||||
|
" WHERE " + ' AND '.join(filters)
|
||||||
|
+ " GROUP BY aal.account_id,aaa.name,aaa.code ORDER BY aal.account_id"
|
||||||
|
)
|
||||||
res = self.cr.dictfetchall()
|
res = self.cr.dictfetchall()
|
||||||
if res:
|
if res:
|
||||||
for element in res:
|
for element in res:
|
||||||
|
|
|
@ -73,30 +73,31 @@ class base_report(report_sxw.rml_parse):
|
||||||
accounts[p[1]] = [p[0],p[2]]
|
accounts[p[1]] = [p[0],p[2]]
|
||||||
sum = 0.0
|
sum = 0.0
|
||||||
if fiscalyear.state != 'done' or not code.startswith('bpcheck'):
|
if fiscalyear.state != 'done' or not code.startswith('bpcheck'):
|
||||||
query_params = []
|
conditions = ['(' + ' OR '.join(
|
||||||
query_cond = "("
|
'aa.code LIKE %s' for _ in accounts
|
||||||
for account in accounts:
|
) + ')']
|
||||||
query_cond += "aa.code LIKE '" + account + "%%' OR "
|
params = [account + '%' for account in accounts]
|
||||||
query_cond = query_cond[:-4]+")"
|
|
||||||
|
|
||||||
if len(definition['except']) > 0:
|
for account in definition['except']:
|
||||||
query_cond = query_cond+" and ("
|
conditions.append('aa.code NOT LIKE %s')
|
||||||
for account in definition['except']:
|
params.append(account + '%')
|
||||||
query_cond += "aa.code NOT LIKE '"+account+"%%' AND "
|
|
||||||
query_cond = query_cond[:-5]+")"
|
|
||||||
|
|
||||||
closed_cond = ""
|
|
||||||
if fiscalyear.state == 'done':
|
if fiscalyear.state == 'done':
|
||||||
closed_cond=" AND (aml.move_id NOT IN (SELECT account_move.id as move_id FROM account_move WHERE period_id = ANY(%s) AND journal_id=(SELECT res_id FROM ir_model_data WHERE name='closing_journal' AND module='l10n_fr')) OR (aa.type != 'income' AND aa.type !='expense'))"
|
conditions.append("(aml.move_id NOT IN (SELECT account_move.id as move_id FROM account_move WHERE period_id IN %s AND journal_id=(SELECT res_id FROM ir_model_data WHERE name='closing_journal' AND module='l10n_fr')) OR (aa.type != 'income' AND aa.type !='expense'))")
|
||||||
query_params.append(list(period_ids))
|
params.append(tuple(period_ids))
|
||||||
|
|
||||||
|
conditions.append('aml.state = %s')
|
||||||
|
params.append('valid')
|
||||||
|
|
||||||
|
conditions.append('aml.period_id IN %s')
|
||||||
|
params.append(tuple(period_ids))
|
||||||
|
|
||||||
query = "SELECT aa.code AS code, SUM(debit) as debit, SUM(credit) as credit " \
|
query = "SELECT aa.code AS code, SUM(debit) as debit, SUM(credit) as credit " \
|
||||||
" FROM account_move_line aml LEFT JOIN account_account aa ON aa.id=aml.account_id "\
|
" FROM account_move_line aml LEFT JOIN account_account aa ON aa.id=aml.account_id "\
|
||||||
" WHERE "+query_cond+closed_cond+" AND aml.state='valid' AND aml.period_id = ANY(%s) GROUP BY code"
|
" WHERE "+ ' AND '.join(conditions) + " GROUP BY code"
|
||||||
query_params.append(list(period_ids))
|
self.cr.execute(query, params)
|
||||||
self.cr.execute(query, query_params)
|
|
||||||
|
|
||||||
lines =self.cr.dictfetchall()
|
lines = self.cr.dictfetchall()
|
||||||
for line in lines:
|
for line in lines:
|
||||||
for account in accounts:
|
for account in accounts:
|
||||||
if(line["code"].startswith(account)):
|
if(line["code"].startswith(account)):
|
||||||
|
|
Loading…
Reference in New Issue