[FIX] sale : _invoiced_search returns wrong results for unpaid

lp bug: https://launchpad.net/bugs/661653 fixed

bzr revid: vth@tinyerp.com-20101103123007-uwzt1y1u5epqzubg
This commit is contained in:
vth 2010-11-03 18:00:07 +05:30
parent 28b0d9cc48
commit b648470328
1 changed files with 5 additions and 4 deletions

View File

@ -175,25 +175,26 @@ class sale_order(osv.osv):
return []
clause = ''
no_invoiced = False
sale_clause = ''
for arg in args:
if arg[1] == '=':
if arg[2]:
clause += 'AND inv.state = \'paid\''
else:
clause += 'AND inv.state <> \'paid\''
clause += 'AND inv.state != \'cancel\' AND sale.state != \'cancel\' AND inv.state <> \'paid\' AND rel.order_id = sale.id '
sale_clause = ', sale_order AS sale '
no_invoiced = True
cursor.execute('SELECT rel.order_id ' \
'FROM sale_order_invoice_rel AS rel, account_invoice AS inv ' \
'FROM sale_order_invoice_rel AS rel, account_invoice AS inv '+ sale_clause + \
'WHERE rel.invoice_id = inv.id ' + clause)
res = cursor.fetchall()
if no_invoiced:
cursor.execute('SELECT sale.id ' \
'FROM sale_order AS sale ' \
'WHERE sale.id NOT IN ' \
'(SELECT rel.order_id ' \
'FROM sale_order_invoice_rel AS rel) ')
'FROM sale_order_invoice_rel AS rel) and sale.state != \'cancel\'')
res.extend(cursor.fetchall())
if not res:
return [('id', '=', 0)]