@ -366,55 +366,54 @@ class GeneralView(models.TransientModel): 
			
		
	
		
			
				
					            WHERE  =  " WHERE l.account_id IN  %s "  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Get move lines base on sql query and Calculate the total balance of move lines  
			
		
	
		
			
				
					        sql  =  ( ''' SELECT l.account_id AS account_id, a.code AS code,a.id AS id, a.name AS name, ROUND(COALESCE(SUM(l.debit),0),2) AS debit, ROUND(COALESCE(SUM(l.credit),0),2) AS credit, ROUND(COALESCE(SUM(l.balance),0),2) AS balance  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                            FROM  account_move_line  l \ 
			
		
	
		
			
				
					                            JOIN  account_move  m  ON  ( l . move_id = m . id ) \ 
			
		
	
		
			
				
					                            LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id ) \ 
			
		
	
		
			
				
					                            LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id ) \ 
			
		
	
		
			
				
					                            LEFT  JOIN  account_account_tag_account_move_line_rel  acc  ON  ( acc . account_move_line_id = l . id )  
			
		
	
		
			
				
					                            JOIN  account_journal  j  ON  ( l . journal_id = j . id ) \ 
			
		
	
		
			
				
					                            JOIN  account_account  a  ON  ( l . account_id  =  a . id )  '''  
			
		
	
		
			
				
					               +  WHERE  +  new_final_filter  +  '''  GROUP BY l.account_id, a.code, a.name, a.id ''' )  
			
		
	
		
			
				
					        sql  =  ( ''' SELECT l.id AS lid,m.id AS move_id, l.account_id AS account_id,  
			
		
	
		
			
				
					                l . date  AS  ldate ,  j . code  AS  lcode ,  l . currency_id ,  l . amount_currency ,  
			
		
	
		
			
				
					                l . ref  AS  lref ,  l . name  AS  lname ,  COALESCE ( l . debit , 0 )  AS  debit ,   
			
		
	
		
			
				
					                COALESCE ( l . credit , 0 )  AS  credit ,  COALESCE ( SUM ( l . balance ) , 0 )  AS  balance ,  
			
		
	
		
			
				
					                m . name  AS  move_name ,  c . symbol  AS  currency_code ,  p . name  AS  partner_name  
			
		
	
		
			
				
					                    FROM  account_move_line  l  
			
		
	
		
			
				
					                    JOIN  account_move  m  ON  ( l . move_id = m . id )  
			
		
	
		
			
				
					                    LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id )  
			
		
	
		
			
				
					                    LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id )  
			
		
	
		
			
				
					                    JOIN  account_journal  j  ON  ( l . journal_id = j . id )  
			
		
	
		
			
				
					                    JOIN  account_account  a  ON  ( l . account_id  =  a . id )  '''  
			
		
	
		
			
				
					                    +  WHERE  +  new_final_filter  +  '''  GROUP BY l.id, m.id,  l.account_id, l.date, j.code, l.currency_id, l.amount_currency, l.ref, l.name, m.name, c.symbol, c.position, p.name '''  )  
			
		
	
		
			
				
					        if  data . get ( ' accounts ' ) :  
			
		
	
		
			
				
					            params  =  tuple ( where_params )  
			
		
	
		
			
				
					        else :  
			
		
	
		
			
				
					            params  =  ( tuple ( accounts . ids ) , )  +  tuple ( where_params )  
			
		
	
		
			
				
					        cr . execute ( sql ,  params )  
			
		
	
		
			
				
					        account_res  =  cr . dictfetchall ( )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        return  account_res  
			
		
	
		
			
				
					        for  row  in  cr . dictfetchall ( ) :  
			
		
	
		
			
				
					            balance  =  0  
			
		
	
		
			
				
					            for  line  in  move_lines . get ( row [ ' account_id ' ] ) :  
			
		
	
		
			
				
					                balance  + =  round ( line [ ' debit ' ] , 2 )  -  round ( line [ ' credit ' ] , 2 )  
			
		
	
		
			
				
					            row [ ' balance ' ]  + =  round ( balance , 2 )  
			
		
	
		
			
				
					            row [ ' m_id ' ]  =  row [ ' account_id ' ]  
			
		
	
		
			
				
					            move_lines [ row . pop ( ' account_id ' ) ] . append ( row )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # for row in cr.dictfetchall():  
			
		
	
		
			
				
					        #     balance = 0  
			
		
	
		
			
				
					        #     for line in move_lines.get(row['account_id']):  
			
		
	
		
			
				
					        #         balance += round(line['debit'],2) - round(line['credit'],2)  
			
		
	
		
			
				
					        #     row['balance'] += round(balance,2)  
			
		
	
		
			
				
					        #     row['m_id'] = row['account_id']  
			
		
	
		
			
				
					        #     move_lines[row.pop('account_id')].append(row)  
			
		
	
		
			
				
					        #  
			
		
	
		
			
				
					        # # Calculate the debit, credit and balance for Accounts  
			
		
	
		
			
				
					        # account_res = []  
			
		
	
		
			
				
					        # for account in accounts:  
			
		
	
		
			
				
					        #     currency = account.currency_id and account.currency_id or account.company_id.currency_id  
			
		
	
		
			
				
					        #     res = dict((fn, 0.0) for fn in ['credit', 'debit', 'balance'])  
			
		
	
		
			
				
					        #     res['code'] = account.code  
			
		
	
		
			
				
					        #     res['name'] = account.name  
			
		
	
		
			
				
					        #     res['id'] = account.id  
			
		
	
		
			
				
					        #     res['move_lines'] = move_lines[account.id]  
			
		
	
		
			
				
					        #     for line in res.get('move_lines'):  
			
		
	
		
			
				
					        #         res['debit'] += round(line['debit'],2)  
			
		
	
		
			
				
					        #         res['credit'] += round(line['credit'],2)  
			
		
	
		
			
				
					        #         res['balance'] = round(line['balance'],2)  
			
		
	
		
			
				
					        #     if display_account == 'all':  
			
		
	
		
			
				
					        #         account_res.append(res)  
			
		
	
		
			
				
					        #     if display_account == 'movement' and res.get('move_lines'):  
			
		
	
		
			
				
					        #         account_res.append(res)  
			
		
	
		
			
				
					        #     if display_account == 'not_zero' and not currency.is_zero(  
			
		
	
		
			
				
					        #             res['balance']):  
			
		
	
		
			
				
					        #         account_res.append(res)  
			
		
	
		
			
				
					        #  
			
		
	
		
			
				
					        # return account_res  
			
		
	
		
			
				
					        # Calculate the debit, credit and balance for Accounts  
			
		
	
		
			
				
					        account_res  =  [ ]  
			
		
	
		
			
				
					        for  account  in  accounts :  
			
		
	
		
			
				
					            currency  =  account . currency_id  and  account . currency_id  or  account . company_id . currency_id  
			
		
	
		
			
				
					            res  =  dict ( ( fn ,  0.0 )  for  fn  in  [ ' credit ' ,  ' debit ' ,  ' balance ' ] )  
			
		
	
		
			
				
					            res [ ' code ' ]  =  account . code  
			
		
	
		
			
				
					            res [ ' name ' ]  =  account . name  
			
		
	
		
			
				
					            res [ ' id ' ]  =  account . id  
			
		
	
		
			
				
					            res [ ' move_lines ' ]  =  move_lines [ account . id ]  
			
		
	
		
			
				
					            for  line  in  res . get ( ' move_lines ' ) :  
			
		
	
		
			
				
					                res [ ' debit ' ]  + =  round ( line [ ' debit ' ] , 2 )  
			
		
	
		
			
				
					                res [ ' credit ' ]  + =  round ( line [ ' credit ' ] , 2 )  
			
		
	
		
			
				
					                res [ ' balance ' ]  =  round ( line [ ' balance ' ] , 2 )  
			
		
	
		
			
				
					            if  display_account  ==  ' all ' :  
			
		
	
		
			
				
					                account_res . append ( res )  
			
		
	
		
			
				
					            if  display_account  ==  ' movement '  and  res . get ( ' move_lines ' ) :  
			
		
	
		
			
				
					                account_res . append ( res )  
			
		
	
		
			
				
					            if  display_account  ==  ' not_zero '  and  not  currency . is_zero (  
			
		
	
		
			
				
					                    res [ ' balance ' ] ) :  
			
		
	
		
			
				
					                account_res . append ( res )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        return  account_res  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    @api . model  
			
		
	
		
			
				
					    def  _get_currency ( self ) :  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -501,16 +500,16 @@ class GeneralView(models.TransientModel): 
			
		
	
		
			
				
					            # WHERE += ' AND anltag.account_analytic_tag_id IN %s' % str(  
			
		
	
		
			
				
					            #     tuple(self.analytic_tags.ids) + tuple([0]))  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            sql  =  ( """ SELECT 0 AS lid, l.account_id AS account_id,  ' '  AS ldate,  ' '  AS lcode, 0.0 AS amount_currency,  ' '  AS lref,  ' Initial Balance '  AS lname, COALESCE(SUM(l.debit),0.0) AS debit, COALESCE(SUM(l.credit),0.0) AS credit, COALESCE(SUM(l.debit),0) - COALESCE(SUM(l.credit), 0) as balance,  ' '  AS lpartner_id, \  
			
		
	
		
			
				
					                        ' '  AS  move_name ,  ' '  AS  mmove_id ,  ' '  AS  currency_code , \  
			
		
	
		
			
				
					                        NULL  AS  currency_id , \  
			
		
	
		
			
				
					                        ' '  AS  invoice_id ,  ' '  AS  invoice_type ,  ' '  AS  invoice_number , \  
			
		
	
		
			
				
					                        ' '  AS  partner_name \  
			
		
	
		
			
				
					                        FROM  account_move_line  l \  
			
		
	
		
			
				
					                        LEFT  JOIN  account_move  m  ON  ( l . move_id = m . id ) \  
			
		
	
		
			
				
					                        LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id ) \  
			
		
	
		
			
				
					                        LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id ) \  
			
		
	
		
			
				
					                        LEFT  JOIN  account_move  i  ON  ( m . id  = i . id ) \  
			
		
	
		
			
				
					            sql  =  ( """ SELECT 0 AS lid, l.account_id AS account_id,  ' '  AS ldate,  ' '  AS lcode, 0.0 AS amount_currency,  ' '  AS lref,  ' Initial Balance '  AS lname, COALESCE(SUM(l.debit),0.0) AS debit, COALESCE(SUM(l.credit),0.0) AS credit, COALESCE(SUM(l.debit),0) - COALESCE(SUM(l.credit), 0) as balance,  ' '  AS lpartner_id,  
			
		
	
		
			
				
					                        ' '  AS  move_name ,  ' '  AS  mmove_id ,  ' '  AS  currency_code ,  
			
		
	
		
			
				
					                        NULL  AS  currency_id ,  
			
		
	
		
			
				
					                        ' '  AS  invoice_id ,  ' '  AS  invoice_type ,  ' '  AS  invoice_number ,  
			
		
	
		
			
				
					                        ' '  AS  partner_name  
			
		
	
		
			
				
					                        FROM  account_move_line  l  
			
		
	
		
			
				
					                        LEFT  JOIN  account_move  m  ON  ( l . move_id = m . id )  
			
		
	
		
			
				
					                        LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id )  
			
		
	
		
			
				
					                        LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id )  
			
		
	
		
			
				
					                        LEFT  JOIN  account_move  i  ON  ( m . id  = i . id )  
			
		
	
		
			
				
					                        LEFT  JOIN  account_account_tag_account_move_line_rel  acc  ON  ( acc . account_move_line_id = l . id )  
			
		
	
		
			
				
					                        JOIN  account_journal  j  ON  ( l . journal_id = j . id ) """  
			
		
	
		
			
				
					                   +  WHERE  +  new_filter  +  '  GROUP BY l.account_id ' )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -558,16 +557,18 @@ class GeneralView(models.TransientModel): 
			
		
	
		
			
				
					        #         tuple(self.analytic_tags.ids) + tuple([0]))  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        # Get move lines base on sql query and Calculate the total balance of move lines  
			
		
	
		
			
				
					        sql  =  ( ''' SELECT l.id AS lid,m.id AS move_id, l.account_id AS account_id, l.date AS ldate, j.code AS lcode, l.currency_id, l.amount_currency, l.ref AS lref, l.name AS lname, COALESCE(SUM(l.debit),0) AS debit, COALESCE(SUM(l.credit),0) AS credit, COALESCE(SUM(l.balance),0) AS balance, \  
			
		
	
		
			
				
					                    m . name  AS  move_name ,  c . symbol  AS  currency_code ,  p . name  AS  partner_name \ 
			
		
	
		
			
				
					                    FROM  account_move_line  l \ 
			
		
	
		
			
				
					                    JOIN  account_move  m  ON  ( l . move_id = m . id ) \ 
			
		
	
		
			
				
					                    LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id ) \ 
			
		
	
		
			
				
					                    LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id ) \ 
			
		
	
		
			
				
					                    LEFT  JOIN  account_account_tag_account_move_line_rel  acc  ON  ( acc . account_move_line_id = l . id )  
			
		
	
		
			
				
					                    JOIN  account_journal  j  ON  ( l . journal_id = j . id ) \ 
			
		
	
		
			
				
					                    JOIN  account_account  a  ON  ( l . account_id  =  a . id )  '''  
			
		
	
		
			
				
					               +  WHERE  +  new_final_filter  +  '''  GROUP BY l.id, m.id,  l.account_id, l.date, j.code, l.currency_id, l.amount_currency, l.ref, l.name, m.name, c.symbol, c.position, p.name ORDER BY l.date ''' )  
			
		
	
		
			
				
					        sql  =  ( ''' SELECT l.id AS lid,m.id AS move_id, l.account_id AS account_id,  
			
		
	
		
			
				
					                        l . date  AS  ldate ,  j . code  AS  lcode ,  l . currency_id ,  l . amount_currency ,  
			
		
	
		
			
				
					                        l . ref  AS  lref ,  l . name  AS  lname ,  COALESCE ( l . debit , 0 )  AS  debit ,   
			
		
	
		
			
				
					                        COALESCE ( l . credit , 0 )  AS  credit ,  COALESCE ( SUM ( l . balance ) , 0 )  AS  balance ,  
			
		
	
		
			
				
					                        m . name  AS  move_name ,  c . symbol  AS  currency_code ,  p . name  AS  partner_name  
			
		
	
		
			
				
					                            FROM  account_move_line  l  
			
		
	
		
			
				
					                            JOIN  account_move  m  ON  ( l . move_id = m . id )  
			
		
	
		
			
				
					                            LEFT  JOIN  res_currency  c  ON  ( l . currency_id = c . id )  
			
		
	
		
			
				
					                            LEFT  JOIN  res_partner  p  ON  ( l . partner_id = p . id )  
			
		
	
		
			
				
					                            JOIN  account_journal  j  ON  ( l . journal_id = j . id )  
			
		
	
		
			
				
					                            JOIN  account_account  a  ON  ( l . account_id  =  a . id )  '''  
			
		
	
		
			
				
					               +  WHERE  +  new_final_filter  +  '''  GROUP BY l.id, m.id,  l.account_id, l.date, j.code, l.currency_id, l.amount_currency, l.ref, l.name, m.name, c.symbol, c.position, p.name ''' )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        params  =  tuple ( where_params )  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -674,19 +675,19 @@ class GeneralView(models.TransientModel): 
			
		
	
		
			
				
					            sheet . write ( row  +  1 ,  col  +  7 ,  rec_data [ ' debit ' ] ,  txt )  
			
		
	
		
			
				
					            sheet . write ( row  +  1 ,  col  +  8 ,  rec_data [ ' credit ' ] ,  txt )  
			
		
	
		
			
				
					            sheet . write ( row  +  1 ,  col  +  9 ,  rec_data [ ' balance ' ] ,  txt )  
			
		
	
		
			
				
					            # for line_data in rec_data['move_lines'] : 
			
		
	
		
			
				
					            #     row +=  1 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col, '', txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 1, '', txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 2, line_data.get('ldate'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 3, line_data.get('lcode'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 4, line_data.get('partner_name') , 
			
		
	
		
			
				
					            #                 txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 5, line_data.get('move_name'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 6, line_data.get('lname'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 7, line_data.get('debit'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 8, line_data.get('credit'), txt ) 
			
		
	
		
			
				
					            #     sheet.write(row + 1, col + 9, line_data.get('balance'), txt ) 
			
		
	
		
			
				
					            for  line_data  in  rec_data [ ' move_lines ' ] :  
			
		
	
		
			
				
					                row  + =   1  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col ,  ' ' ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  1 ,  ' ' ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  2 ,  line_data . get ( ' ldate ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  3 ,  line_data . get ( ' lcode ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  4 ,  line_data . get ( ' partner_name ' )  ,  
			
		
	
		
			
				
					                            txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  5 ,  line_data . get ( ' move_name ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  6 ,  line_data . get ( ' lname ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  7 ,  line_data . get ( ' debit ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  8 ,  line_data . get ( ' credit ' ) ,  txt  )  
			
		
	
		
			
				
					                sheet . write ( row  +  1 ,  col  +  9 ,  line_data . get ( ' balance ' ) ,  txt  )  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        workbook . close ( )  
			
		
	
		
			
				
					        output . seek ( 0 )