You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							1624 lines
						
					
					
						
							80 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							1624 lines
						
					
					
						
							80 KiB
						
					
					
				
								# -*- coding: utf-8 -*-
							 | 
						|
								
							 | 
						|
								import calendar
							 | 
						|
								import datetime
							 | 
						|
								from datetime import datetime
							 | 
						|
								
							 | 
						|
								from dateutil.relativedelta import relativedelta
							 | 
						|
								
							 | 
						|
								from odoo import models, api
							 | 
						|
								from odoo.http import request
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class DashBoard(models.Model):
							 | 
						|
								    _inherit = 'account.move'
							 | 
						|
								
							 | 
						|
								    # function to getting expenses
							 | 
						|
								
							 | 
						|
								    # function to getting income of this year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_income_this_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        month_list = []
							 | 
						|
								        for i in range(11, -1, -1):
							 | 
						|
								            l_month = datetime.now() - relativedelta(months=i)
							 | 
						|
								            text = format(l_month, '%B')
							 | 
						|
								            month_list.append(text)
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as income ,to_char(account_move_line.date, 'Month')  as month ,
							 | 
						|
								                             internal_group from account_move_line ,account_account where 
							 | 
						|
								                             account_move_line.account_id=account_account.id AND internal_group = 'income' 
							 | 
						|
								                             AND to_char(DATE(NOW()), 'YY') = to_char(account_move_line.date, 'YY')
							 | 
						|
								                             AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                             AND %s 
							 | 
						|
								                             group by internal_group,month                  
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as expense ,to_char(account_move_line.date, 'Month')  as month ,
							 | 
						|
								                            internal_group from account_move_line ,account_account where 
							 | 
						|
								                            account_move_line.account_id=account_account.id AND internal_group = 'expense' 
							 | 
						|
								                            AND to_char(DATE(NOW()), 'YY') = to_char(account_move_line.date, 'YY')
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            AND %s 
							 | 
						|
								                            group by internal_group,month                  
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        result = self._cr.dictfetchall()
							 | 
						|
								        records = []
							 | 
						|
								        for month in month_list:
							 | 
						|
								            last_month_inc = list(filter(lambda m: m['month'].strip() == month, record))
							 | 
						|
								            last_month_exp = list(filter(lambda m: m['month'].strip() == month, result))
							 | 
						|
								            if not last_month_inc and not last_month_exp:
							 | 
						|
								                records.append({
							 | 
						|
								                    'month': month,
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'profit': 0.0,
							 | 
						|
								                })
							 | 
						|
								            elif (not last_month_inc) and last_month_exp:
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'profit': last_month_exp[0]['income'] - last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_exp[0])
							 | 
						|
								            elif (not last_month_exp) and last_month_inc:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								            else:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income'],
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								        income = []
							 | 
						|
								        expense = []
							 | 
						|
								        month = []
							 | 
						|
								        profit = []
							 | 
						|
								        for rec in records:
							 | 
						|
								            income.append(rec['income'])
							 | 
						|
								            expense.append(rec['expense'])
							 | 
						|
								            month.append(rec['month'])
							 | 
						|
								            profit.append(rec['profit'])
							 | 
						|
								        return {
							 | 
						|
								            'income': income,
							 | 
						|
								            'expense': expense,
							 | 
						|
								            'month': month,
							 | 
						|
								            'profit': profit,
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								    # function to getting income of last year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_income_last_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        month_list = []
							 | 
						|
								        for i in range(11, -1, -1):
							 | 
						|
								            l_month = datetime.now() - relativedelta(months=i)
							 | 
						|
								            text = format(l_month, '%B')
							 | 
						|
								            month_list.append(text)
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as income ,to_char(account_move_line.date, 'Month')  as month ,
							 | 
						|
								                            internal_group from account_move_line ,account_account
							 | 
						|
								                            where account_move_line.account_id=account_account.id AND internal_group = 'income' 
							 | 
						|
								                            AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) -1 
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            AND %s
							 | 
						|
								                            group by internal_group,month                  
							 | 
						|
								                 ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as expense ,to_char(account_move_line.date, 'Month')  as month ,
							 | 
						|
								                            internal_group from account_move_line , account_account where 
							 | 
						|
								                            account_move_line.account_id=account_account.id AND internal_group = 'expense' 
							 | 
						|
								                            AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) -1 
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            AND %s 
							 | 
						|
								                            group by internal_group,month                  
							 | 
						|
								                         ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        result = self._cr.dictfetchall()
							 | 
						|
								        records = []
							 | 
						|
								        for month in month_list:
							 | 
						|
								            last_month_inc = list(filter(lambda m: m['month'].strip() == month, record))
							 | 
						|
								            last_month_exp = list(filter(lambda m: m['month'].strip() == month, result))
							 | 
						|
								            if not last_month_inc and not last_month_exp:
							 | 
						|
								                records.append({
							 | 
						|
								                    'month': month,
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'profit': 0.0,
							 | 
						|
								                })
							 | 
						|
								            elif (not last_month_inc) and last_month_exp:
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'profit': last_month_exp[0]['income'] - last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_exp[0])
							 | 
						|
								            elif (not last_month_exp) and last_month_inc:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								            else:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income'],
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								        income = []
							 | 
						|
								        expense = []
							 | 
						|
								        month = []
							 | 
						|
								        profit = []
							 | 
						|
								        for rec in records:
							 | 
						|
								            income.append(rec['income'])
							 | 
						|
								            expense.append(rec['expense'])
							 | 
						|
								            month.append(rec['month'])
							 | 
						|
								            profit.append(rec['profit'])
							 | 
						|
								        return {
							 | 
						|
								            'income': income,
							 | 
						|
								            'expense': expense,
							 | 
						|
								            'month': month,
							 | 
						|
								            'profit': profit,
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								    # function to getting income of last month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_income_last_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        day_list = []
							 | 
						|
								        now = datetime.now()
							 | 
						|
								        day = \
							 | 
						|
								            calendar.monthrange(now.year - 1 if now.month == 1 else now.year,
							 | 
						|
								                                now.month - 1 if not now.month == 1 else 12)[
							 | 
						|
								                1]
							 | 
						|
								
							 | 
						|
								        for x in range(1, day + 1):
							 | 
						|
								            day_list.append(x)
							 | 
						|
								
							 | 
						|
								        one_month_ago = (datetime.now() - relativedelta(months=1)).month
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as income ,cast(to_char(account_move_line.date, 'DD')as int)
							 | 
						|
								                            as date , internal_group from account_move_line , account_account where   
							 | 
						|
								                            Extract(month FROM account_move_line.date) in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND account_move_line.account_id=account_account.id AND internal_group='income'   
							 | 
						|
								                            group by internal_group,date                 
							 | 
						|
								                             ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as expense ,cast(to_char(account_move_line.date, 'DD')as int)
							 | 
						|
								                            as date ,internal_group from account_move_line ,account_account where  
							 | 
						|
								                            Extract(month FROM account_move_line.date) in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND account_move_line.account_id=account_account.id AND internal_group='expense'
							 | 
						|
								                            group by internal_group,date                 
							 | 
						|
								                                 ''') % (states_arg))
							 | 
						|
								        result = self._cr.dictfetchall()
							 | 
						|
								        records = []
							 | 
						|
								        for date in day_list:
							 | 
						|
								            last_month_inc = list(filter(lambda m: m['date'] == date, record))
							 | 
						|
								            last_month_exp = list(filter(lambda m: m['date'] == date, result))
							 | 
						|
								            if not last_month_inc and not last_month_exp:
							 | 
						|
								                records.append({
							 | 
						|
								                    'date': date,
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'profit': 0.0
							 | 
						|
								                })
							 | 
						|
								            elif (not last_month_inc) and last_month_exp:
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'profit': last_month_exp[0]['income'] - last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_exp[0])
							 | 
						|
								            elif (not last_month_exp) and last_month_inc:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								            else:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income'],
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								        income = []
							 | 
						|
								        expense = []
							 | 
						|
								        date = []
							 | 
						|
								        profit = []
							 | 
						|
								        for rec in records:
							 | 
						|
								            income.append(rec['income'])
							 | 
						|
								            expense.append(rec['expense'])
							 | 
						|
								            date.append(rec['date'])
							 | 
						|
								            profit.append(rec['profit'])
							 | 
						|
								        return {
							 | 
						|
								            'income': income,
							 | 
						|
								            'expense': expense,
							 | 
						|
								            'date': date,
							 | 
						|
								            'profit': profit
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								    # function to getting income of this month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_income_this_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        day_list = []
							 | 
						|
								        now = datetime.now()
							 | 
						|
								        day = calendar.monthrange(now.year, now.month)[1]
							 | 
						|
								        for x in range(1, day + 1):
							 | 
						|
								            day_list.append(x)
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as income ,cast(to_char(account_move_line.date, 'DD')as int)
							 | 
						|
								                            as date , internal_group from account_move_line , account_account
							 | 
						|
								                            where   Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW()))  
							 | 
						|
								                            AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW()))  
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND account_move_line.account_id=account_account.id AND internal_group='income'
							 | 
						|
								                            group by internal_group,date                 
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit)-sum(credit) as expense ,cast(to_char(account_move_line.date, 'DD')as int)
							 | 
						|
								                            as date , internal_group from account_move_line , account_account where  
							 | 
						|
								                            Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW()))  
							 | 
						|
								                            AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW()))  
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								                            AND account_move_line.account_id=account_account.id AND internal_group='expense'
							 | 
						|
								                            group by internal_group,date                 
							 | 
						|
								                         ''') % (states_arg))
							 | 
						|
								        result = self._cr.dictfetchall()
							 | 
						|
								        records = []
							 | 
						|
								        for date in day_list:
							 | 
						|
								            last_month_inc = list(filter(lambda m: m['date'] == date, record))
							 | 
						|
								            last_month_exp = list(filter(lambda m: m['date'] == date, result))
							 | 
						|
								            if not last_month_inc and not last_month_exp:
							 | 
						|
								                records.append({
							 | 
						|
								                    'date': date,
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'profit': 0.0
							 | 
						|
								                })
							 | 
						|
								            elif (not last_month_inc) and last_month_exp:
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'income': 0.0,
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_exp[0].update({
							 | 
						|
								                    'profit': last_month_exp[0]['income'] - last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_exp[0])
							 | 
						|
								            elif (not last_month_exp) and last_month_inc:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'expense': 0.0,
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								            else:
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'income': -1 * last_month_inc[0]['income'] if last_month_inc[0]['income'] < 1 else
							 | 
						|
								                    last_month_inc[0]['income'],
							 | 
						|
								                    'expense': -1 * last_month_exp[0]['expense'] if last_month_exp[0]['expense'] < 1 else
							 | 
						|
								                    last_month_exp[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                last_month_inc[0].update({
							 | 
						|
								                    'profit': last_month_inc[0]['income'] - last_month_inc[0]['expense']
							 | 
						|
								                })
							 | 
						|
								                records.append(last_month_inc[0])
							 | 
						|
								        income = []
							 | 
						|
								        expense = []
							 | 
						|
								        date = []
							 | 
						|
								        profit = []
							 | 
						|
								        for rec in records:
							 | 
						|
								            income.append(rec['income'])
							 | 
						|
								            expense.append(rec['expense'])
							 | 
						|
								            date.append(rec['date'])
							 | 
						|
								            profit.append(rec['profit'])
							 | 
						|
								        return {
							 | 
						|
								            'income': income,
							 | 
						|
								            'expense': expense,
							 | 
						|
								            'date': date,
							 | 
						|
								            'profit': profit
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								    # function to getting late bills
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_latebills(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''  select res_partner.name as partner, res_partner.commercial_partner_id as res  ,
							 | 
						|
								                            account_move.commercial_partner_id as parent, sum(account_move.amount_total) as amount
							 | 
						|
								                            from account_move,res_partner where 
							 | 
						|
								                            account_move.partner_id=res_partner.id AND account_move.move_type = 'in_invoice' AND
							 | 
						|
								                            payment_state = 'not_paid' AND 
							 | 
						|
								                              account_move.company_id in ''' + str(tuple(company_id)) + ''' AND
							 | 
						|
								                            %s 
							 | 
						|
								                            AND  account_move.commercial_partner_id=res_partner.commercial_partner_id 
							 | 
						|
								                            group by parent,partner,res
							 | 
						|
								                            order by amount desc ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        bill_partner = [item['partner'] for item in record]
							 | 
						|
								
							 | 
						|
								        bill_amount = [item['amount'] for item in record]
							 | 
						|
								
							 | 
						|
								        amounts = sum(bill_amount[9:])
							 | 
						|
								        name = bill_partner[9:]
							 | 
						|
								        results = []
							 | 
						|
								        pre_partner = []
							 | 
						|
								
							 | 
						|
								        bill_amount = bill_amount[:9]
							 | 
						|
								        bill_amount.append(amounts)
							 | 
						|
								        bill_partner = bill_partner[:9]
							 | 
						|
								        bill_partner.append("Others")
							 | 
						|
								        records = {
							 | 
						|
								            'bill_partner': bill_partner,
							 | 
						|
								            'bill_amount': bill_amount,
							 | 
						|
								            'result': results,
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        return records
							 | 
						|
								
							 | 
						|
								        # return record
							 | 
						|
								
							 | 
						|
								    # function to getting over dues
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_overdues(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select res_partner.name as partner, res_partner.commercial_partner_id as res,
							 | 
						|
								                             account_move.commercial_partner_id as parent, sum(account_move.amount_total) as amount
							 | 
						|
								                            from account_move, account_move_line, res_partner, account_account where 
							 | 
						|
								                            account_move.partner_id=res_partner.id AND account_move.move_type = 'out_invoice' 
							 | 
						|
								                            AND payment_state = 'not_paid' 
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            AND account_account.account_type = 'payable'
							 | 
						|
								                            AND account_move.commercial_partner_id=res_partner.commercial_partner_id 
							 | 
						|
								                            group by parent,partner,res
							 | 
						|
								                            order by amount desc
							 | 
						|
								                            ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        due_partner = [item['partner'] for item in record]
							 | 
						|
								        due_amount = [item['amount'] for item in record]
							 | 
						|
								
							 | 
						|
								        amounts = sum(due_amount[9:])
							 | 
						|
								        name = due_partner[9:]
							 | 
						|
								        result = []
							 | 
						|
								        pre_partner = []
							 | 
						|
								
							 | 
						|
								        due_amount = due_amount[:9]
							 | 
						|
								        due_amount.append(amounts)
							 | 
						|
								        due_partner = due_partner[:9]
							 | 
						|
								        due_partner.append("Others")
							 | 
						|
								        records = {
							 | 
						|
								            'due_partner': due_partner,
							 | 
						|
								            'due_amount': due_amount,
							 | 
						|
								            'result': result,
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        return records
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_overdues_this_month_and_year(self, *post):
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post[0] != 'posted':
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        if post[1] == 'this_month':
							 | 
						|
								            self._cr.execute((''' 
							 | 
						|
								                               select to_char(account_move.date, 'Month') as month, res_partner.name as due_partner, account_move.partner_id as parent,
							 | 
						|
								                               sum(account_move.amount_total) as amount from account_move, res_partner where account_move.partner_id = res_partner.id
							 | 
						|
								                               AND account_move.move_type = 'out_invoice'
							 | 
						|
								                               AND payment_state = 'not_paid'
							 | 
						|
								                               AND %s 
							 | 
						|
								                               AND Extract(month FROM account_move.invoice_date_due) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                               AND Extract(YEAR FROM account_move.invoice_date_due) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                               AND account_move.partner_id = res_partner.commercial_partner_id
							 | 
						|
								                               AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                               group by parent, due_partner, month
							 | 
						|
								                               order by amount desc ''') % (states_arg))
							 | 
						|
								        else:
							 | 
						|
								            self._cr.execute((''' select  res_partner.name as due_partner, account_move.partner_id as parent,
							 | 
						|
								                                            sum(account_move.amount_total) as amount from account_move, res_partner where account_move.partner_id = res_partner.id
							 | 
						|
								                                            AND account_move.move_type = 'out_invoice'
							 | 
						|
								                                            AND payment_state = 'not_paid'
							 | 
						|
								                                            AND %s
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.invoice_date_due) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND account_move.partner_id = res_partner.commercial_partner_id
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								    
							 | 
						|
								                                            group by parent, due_partner
							 | 
						|
								                                            order by amount desc ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        due_partner = [item['due_partner'] for item in record]
							 | 
						|
								        due_amount = [item['amount'] for item in record]
							 | 
						|
								
							 | 
						|
								        amounts = sum(due_amount[9:])
							 | 
						|
								        name = due_partner[9:]
							 | 
						|
								        result = []
							 | 
						|
								        pre_partner = []
							 | 
						|
								
							 | 
						|
								        due_amount = due_amount[:9]
							 | 
						|
								        due_amount.append(amounts)
							 | 
						|
								        due_partner = due_partner[:9]
							 | 
						|
								        due_partner.append("Others")
							 | 
						|
								        records = {
							 | 
						|
								            'due_partner': due_partner,
							 | 
						|
								            'due_amount': due_amount,
							 | 
						|
								            'result': result,
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        return records
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_latebillss(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        partners = self.env['res.partner'].search([('active', '=', True)])
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post[0] != 'posted':
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        if post[1] == 'this_month':
							 | 
						|
								            self._cr.execute((''' 
							 | 
						|
								                                select to_char(account_move.date, 'Month') as month, res_partner.name as bill_partner, account_move.partner_id as parent,
							 | 
						|
								                                sum(account_move.amount_total) as amount from account_move, res_partner where account_move.partner_id = res_partner.id
							 | 
						|
								                                AND account_move.move_type = 'in_invoice'
							 | 
						|
								                                AND payment_state = 'not_paid'
							 | 
						|
								                                AND %s 
							 | 
						|
								                                AND Extract(month FROM account_move.invoice_date_due) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                AND Extract(YEAR FROM account_move.invoice_date_due) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                AND account_move.partner_id = res_partner.commercial_partner_id
							 | 
						|
								                                group by parent, bill_partner, month
							 | 
						|
								                                order by amount desc ''') % (states_arg))
							 | 
						|
								        else:
							 | 
						|
								            self._cr.execute((''' select res_partner.name as bill_partner, account_move.partner_id as parent,
							 | 
						|
								                                            sum(account_move.amount_total) as amount from account_move, res_partner where account_move.partner_id = res_partner.id
							 | 
						|
								                                            AND account_move.move_type = 'in_invoice'
							 | 
						|
								                                            AND payment_state = 'not_paid'
							 | 
						|
								                                            AND %s
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.invoice_date_due) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND account_move.partner_id = res_partner.commercial_partner_id
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                            group by parent, bill_partner
							 | 
						|
								                                            order by amount desc ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        result = self._cr.dictfetchall()
							 | 
						|
								        bill_partner = [item['bill_partner'] for item in result]
							 | 
						|
								
							 | 
						|
								        bill_amount = [item['amount'] for item in result]
							 | 
						|
								
							 | 
						|
								        amounts = sum(bill_amount[9:])
							 | 
						|
								        name = bill_partner[9:]
							 | 
						|
								        results = []
							 | 
						|
								        pre_partner = []
							 | 
						|
								
							 | 
						|
								        bill_amount = bill_amount[:9]
							 | 
						|
								        bill_amount.append(amounts)
							 | 
						|
								        bill_partner = bill_partner[:9]
							 | 
						|
								        bill_partner.append("Others")
							 | 
						|
								        records = {
							 | 
						|
								            'bill_partner': bill_partner,
							 | 
						|
								            'bill_amount': bill_amount,
							 | 
						|
								            'result': results,
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        return records
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_top_10_customers_month(self, *post):
							 | 
						|
								        record_invoice = {}
							 | 
						|
								        record_refund = {}
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post[0] != 'posted':
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        if post[1] == 'this_month':
							 | 
						|
								            self._cr.execute((''' select res_partner.name as customers, account_move.commercial_partner_id as parent, 
							 | 
						|
								                                    sum(account_move.amount_total) as amount from account_move, res_partner
							 | 
						|
								                                    where account_move.commercial_partner_id = res_partner.id
							 | 
						|
								                                    AND account_move.company_id in %s 
							 | 
						|
								                                    AND account_move.move_type = 'out_invoice' 
							 | 
						|
								                                    AND %s   
							 | 
						|
								                                    AND Extract(month FROM account_move.invoice_date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.invoice_date) = Extract(YEAR FROM DATE(NOW()))                      
							 | 
						|
								                                    group by parent, customers
							 | 
						|
								                                    order by amount desc 
							 | 
						|
								                                    limit 10
							 | 
						|
								                                    ''') % (tuple(company_id), states_arg))
							 | 
						|
								            record_invoice = self._cr.dictfetchall()
							 | 
						|
								            self._cr.execute((''' select res_partner.name as customers, account_move.commercial_partner_id as parent, 
							 | 
						|
								                                    sum(account_move.amount_total) as amount from account_move, res_partner
							 | 
						|
								                                    where account_move.commercial_partner_id = res_partner.id
							 | 
						|
								                                    AND account_move.company_id in %s
							 | 
						|
								                                    AND account_move.move_type = 'out_refund' 
							 | 
						|
								                                    AND %s      
							 | 
						|
								                                    AND Extract(month FROM account_move.invoice_date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.invoice_date) = Extract(YEAR FROM DATE(NOW()))                   
							 | 
						|
								                                    group by parent, customers
							 | 
						|
								                                    order by amount desc 
							 | 
						|
								                                    limit 10
							 | 
						|
								                                    ''') % (tuple(company_id), states_arg))
							 | 
						|
								            record_refund = self._cr.dictfetchall()
							 | 
						|
								        else:
							 | 
						|
								            one_month_ago = (datetime.now() - relativedelta(months=1)).month
							 | 
						|
								            self._cr.execute((''' select res_partner.name as customers, account_move.commercial_partner_id as parent, 
							 | 
						|
								                                            sum(account_move.amount_total) as amount from account_move, res_partner
							 | 
						|
								                                            where account_move.commercial_partner_id = res_partner.id
							 | 
						|
								                                            AND account_move.company_id in %s
							 | 
						|
								                                            AND account_move.move_type = 'out_invoice' 
							 | 
						|
								                                            AND %s            
							 | 
						|
								                                            AND Extract(month FROM account_move.invoice_date) = ''' + str(
							 | 
						|
								                one_month_ago) + '''
							 | 
						|
								                                            group by parent, customers
							 | 
						|
								                                            order by amount desc 
							 | 
						|
								                                            limit 10
							 | 
						|
								                                            ''') % (tuple(company_id), states_arg))
							 | 
						|
								            record_invoice = self._cr.dictfetchall()
							 | 
						|
								            self._cr.execute((''' select res_partner.name as customers, account_move.commercial_partner_id as parent, 
							 | 
						|
								                                            sum(account_move.amount_total) as amount from account_move, res_partner
							 | 
						|
								                                            where account_move.commercial_partner_id = res_partner.id
							 | 
						|
								                                            AND account_move.company_id in %s 
							 | 
						|
								                                            AND account_move.move_type = 'out_refund' 
							 | 
						|
								                                            AND %s       
							 | 
						|
								                                            AND Extract(month FROM account_move.invoice_date) = ''' + str(
							 | 
						|
								                one_month_ago) + '''                  
							 | 
						|
								                                            group by parent, customers
							 | 
						|
								                                            order by amount desc 
							 | 
						|
								                                            limit 10
							 | 
						|
								                                            ''') % (tuple(company_id), states_arg))
							 | 
						|
								            record_refund = self._cr.dictfetchall()
							 | 
						|
								        summed = []
							 | 
						|
								        for out_sum in record_invoice:
							 | 
						|
								            parent = out_sum['parent']
							 | 
						|
								            su = out_sum['amount'] - \
							 | 
						|
								                 (list(filter(lambda refund: refund['parent'] == out_sum['parent'], record_refund))[0][
							 | 
						|
								                      'amount'] if len(
							 | 
						|
								                     list(filter(lambda refund: refund['parent'] == out_sum['parent'], record_refund))) > 0 else 0.0)
							 | 
						|
								            summed.append({
							 | 
						|
								                'customers': out_sum['customers'],
							 | 
						|
								                'amount': su,
							 | 
						|
								                'parent': parent
							 | 
						|
								            })
							 | 
						|
								        return summed
							 | 
						|
								
							 | 
						|
								    # function to get total invoice
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total) as customer_invoice from account_move where move_type ='out_invoice'
							 | 
						|
								                            AND  %s  AND account_move.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record_customer = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total) as supplier_invoice from account_move where move_type ='in_invoice' 
							 | 
						|
								                          AND  %s  AND account_move.company_id in ''' + str(tuple(company_id)) + '''      
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record_supplier = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total) as credit_note from account_move where move_type ='out_refund'
							 | 
						|
								                          AND  %s  AND account_move.company_id in ''' + str(tuple(company_id)) + '''      
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        result_credit_note = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total) as refund from account_move where move_type ='in_refund'
							 | 
						|
								                          AND  %s  AND account_move.company_id in ''' + str(tuple(company_id)) + '''   
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        result_refund = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        customer_invoice = [item['customer_invoice'] for item in record_customer]
							 | 
						|
								        supplier_invoice = [item['supplier_invoice'] for item in record_supplier]
							 | 
						|
								        credit_note = [item['credit_note'] for item in result_credit_note]
							 | 
						|
								        refund = [item['refund'] for item in result_refund]
							 | 
						|
								
							 | 
						|
								        return customer_invoice, credit_note, supplier_invoice, refund
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_current_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total_signed) as customer_invoice from account_move where move_type ='out_invoice'
							 | 
						|
								                            AND   %s                               
							 | 
						|
								                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record_customer_current_year = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(-(amount_total_signed)) as supplier_invoice from account_move where move_type ='in_invoice'
							 | 
						|
								                            AND  %s                              
							 | 
						|
								                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''      
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record_supplier_current_year = self._cr.dictfetchall()
							 | 
						|
								        result_credit_note_current_year = [{'credit_note': 0.0}]
							 | 
						|
								        result_refund_current_year = [{'refund': 0.0}]
							 | 
						|
								        self._cr.execute(('''select sum(amount_total_signed) - sum(amount_residual_signed)  as customer_invoice_paid from account_move where move_type ='out_invoice'
							 | 
						|
								                                    AND   %s
							 | 
						|
								                                    AND payment_state = 'paid'
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                    AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        record_paid_customer_invoice_current_year = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(-(amount_total_signed)) - sum(-(amount_residual_signed))  as supplier_invoice_paid from account_move where move_type ='in_invoice'
							 | 
						|
								                                    AND   %s
							 | 
						|
								                                    AND  payment_state = 'paid'
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                    AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        result_paid_supplier_invoice_current_year = self._cr.dictfetchall()
							 | 
						|
								        record_paid_customer_credit_current_year = [{'customer_credit_paid': 0.0}]
							 | 
						|
								        result_paid_supplier_refund_current_year = [{'supplier_refund_paid': 0.0}]
							 | 
						|
								        customer_invoice_current_year = [item['customer_invoice'] for item in record_customer_current_year]
							 | 
						|
								        supplier_invoice_current_year = [item['supplier_invoice'] for item in record_supplier_current_year]
							 | 
						|
								
							 | 
						|
								        credit_note_current_year = [item['credit_note'] for item in result_credit_note_current_year]
							 | 
						|
								        refund_current_year = [item['refund'] for item in result_refund_current_year]
							 | 
						|
								
							 | 
						|
								        paid_customer_invoice_current_year = [item['customer_invoice_paid'] for item in
							 | 
						|
								                                              record_paid_customer_invoice_current_year]
							 | 
						|
								        paid_supplier_invoice_current_year = [item['supplier_invoice_paid'] for item in
							 | 
						|
								                                              result_paid_supplier_invoice_current_year]
							 | 
						|
								
							 | 
						|
								        paid_customer_credit_current_year = [item['customer_credit_paid'] for item in
							 | 
						|
								                                             record_paid_customer_credit_current_year]
							 | 
						|
								        paid_supplier_refund_current_year = [item['supplier_refund_paid'] for item in
							 | 
						|
								                                             result_paid_supplier_refund_current_year]
							 | 
						|
								
							 | 
						|
								        return customer_invoice_current_year, credit_note_current_year, supplier_invoice_current_year, refund_current_year, paid_customer_invoice_current_year, paid_supplier_invoice_current_year, paid_customer_credit_current_year, paid_supplier_refund_current_year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_current_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total_signed) as customer_invoice from account_move where move_type ='out_invoice'
							 | 
						|
								                                    AND   %s                               
							 | 
						|
								                                    AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                                    AND account_move.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        record_customer_current_month = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(-(amount_total_signed)) as supplier_invoice from account_move where move_type ='in_invoice'
							 | 
						|
								                                    AND  %s                              
							 | 
						|
								                                    AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                                    AND account_move.company_id in ''' + str(tuple(company_id)) + '''      
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        record_supplier_current_month = self._cr.dictfetchall()
							 | 
						|
								        result_credit_note_current_month = [{'credit_note': 0.0}]
							 | 
						|
								        result_refund_current_month = [{'refund': 0.0}]
							 | 
						|
								        self._cr.execute(('''select sum(amount_total_signed) - sum(amount_residual_signed)  as customer_invoice_paid from account_move where move_type ='out_invoice'
							 | 
						|
								                                            AND   %s
							 | 
						|
								                                            AND payment_state = 'paid'
							 | 
						|
								                                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        record_paid_customer_invoice_current_month = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(-(amount_total_signed)) - sum(-(amount_residual_signed))  as supplier_invoice_paid from account_move where move_type ='in_invoice'
							 | 
						|
								                                            AND   %s
							 | 
						|
								                                            AND payment_state = 'paid'
							 | 
						|
								                                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        result_paid_supplier_invoice_current_month = self._cr.dictfetchall()
							 | 
						|
								        record_paid_customer_credit_current_month = [{'customer_credit_paid': 0.0}]
							 | 
						|
								        result_paid_supplier_refund_current_month = [{'supplier_refund_paid': 0.0}]
							 | 
						|
								
							 | 
						|
								        customer_invoice_current_month = [item['customer_invoice'] for item in record_customer_current_month]
							 | 
						|
								        supplier_invoice_current_month = [item['supplier_invoice'] for item in record_supplier_current_month]
							 | 
						|
								        credit_note_current_month = [item['credit_note'] for item in result_credit_note_current_month]
							 | 
						|
								        refund_current_month = [item['refund'] for item in result_refund_current_month]
							 | 
						|
								        paid_customer_invoice_current_month = [item['customer_invoice_paid'] for item in
							 | 
						|
								                                               record_paid_customer_invoice_current_month]
							 | 
						|
								        paid_supplier_invoice_current_month = [item['supplier_invoice_paid'] for item in
							 | 
						|
								                                               result_paid_supplier_invoice_current_month]
							 | 
						|
								
							 | 
						|
								        paid_customer_credit_current_month = [item['customer_credit_paid'] for item in
							 | 
						|
								                                              record_paid_customer_credit_current_month]
							 | 
						|
								        paid_supplier_refund_current_month = [item['supplier_refund_paid'] for item in
							 | 
						|
								                                              result_paid_supplier_refund_current_month]
							 | 
						|
								
							 | 
						|
								        currency = self.get_currency()
							 | 
						|
								        return customer_invoice_current_month, credit_note_current_month, supplier_invoice_current_month, refund_current_month, paid_customer_invoice_current_month, paid_supplier_invoice_current_month, paid_customer_credit_current_month, paid_supplier_refund_current_month, currency
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_this_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(amount_total) from account_move where move_type = 'out_invoice' 
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))      
							 | 
						|
								                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))   
							 | 
						|
								                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total invoice last month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_last_month(self):
							 | 
						|
								
							 | 
						|
								        one_month_ago = (datetime.now() - relativedelta(months=1)).month
							 | 
						|
								
							 | 
						|
								        self._cr.execute('''select sum(amount_total) from account_move where move_type = 'out_invoice' AND
							 | 
						|
								                               account_move.state = 'posted'
							 | 
						|
								                            AND Extract(month FROM account_move.date) = ''' + str(one_month_ago) + ''' 
							 | 
						|
								                            ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total invoice last year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_last_year(self):
							 | 
						|
								
							 | 
						|
								        self._cr.execute(''' select sum(amount_total) from account_move where move_type = 'out_invoice' 
							 | 
						|
								                            AND account_move.state = 'posted'
							 | 
						|
								                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW())) - 1    
							 | 
						|
								                                ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total invoice this year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_total_invoice_this_year(self):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        self._cr.execute(''' select sum(amount_total) from account_move where move_type = 'out_invoice'
							 | 
						|
								                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW())) AND
							 | 
						|
								                               account_move.state = 'posted'   AND
							 | 
						|
								                                account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                    ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get unreconcile items
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def unreconcile_items(self):
							 | 
						|
								        self._cr.execute('''
							 | 
						|
								                            select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                            where L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                            l.balance != 0 AND a.reconcile IS TRUE ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get unreconcile items this month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def unreconcile_items_this_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        qry = ''' select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                              where Extract(month FROM l.date) = Extract(month FROM DATE(NOW())) AND
							 | 
						|
								                              Extract(YEAR FROM l.date) = Extract(YEAR FROM DATE(NOW())) AND
							 | 
						|
								                              L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                              l.product_id IS NULL AND
							 | 
						|
								                              l.balance != 0 AND a.reconcile IS F 
							 | 
						|
								                              AND l.''' + states_arg + '''
							 | 
						|
								                              AND  l.company_id in ''' + str(tuple(company_id)) + '''                              
							 | 
						|
								                               '''
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                              where Extract(month FROM l.date) = Extract(month FROM DATE(NOW())) AND
							 | 
						|
								                              Extract(YEAR FROM l.date) = Extract(YEAR FROM DATE(NOW())) AND
							 | 
						|
								                              L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                              l.product_id IS NULL AND
							 | 
						|
								                              l.balance != 0 AND a.reconcile IS TRUE 
							 | 
						|
								                              AND l.%s
							 | 
						|
								                              AND  l.company_id in ''' + str(tuple(company_id)) + '''                              
							 | 
						|
								                               ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get unreconcile items last month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def unreconcile_items_last_month(self):
							 | 
						|
								
							 | 
						|
								        one_month_ago = (datetime.now() - relativedelta(months=1)).month
							 | 
						|
								
							 | 
						|
								        self._cr.execute('''  select count(*) FROM account_move_line l,account_account a 
							 | 
						|
								                              where Extract(month FROM l.date) = ''' + str(one_month_ago) + ''' AND
							 | 
						|
								                              L.account_id=a.id AND l.full_reconcile_id IS NULL AND l.balance != 0 AND a.reconcile IS TRUE 
							 | 
						|
								                         ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get unreconcile items this year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def unreconcile_items_this_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''  select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                                  where Extract(year FROM l.date) = Extract(year FROM DATE(NOW())) AND
							 | 
						|
								                                  l.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                                  l.product_id IS NULL AND
							 | 
						|
								                                  l.balance != 0 AND a.reconcile IS TRUE  
							 | 
						|
								                                  AND l.%s
							 | 
						|
								                                  AND  l.company_id in ''' + str(tuple(company_id)) + '''       
							 | 
						|
								                                  ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_expense_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								        self._cr.execute((''' select account_move_line.id from  account_account, account_move_line where 
							 | 
						|
								                            account_move_line.account_id = account_account.id AND account_account.internal_group = 'expense' AND  
							 | 
						|
								                            %s                
							 | 
						|
								                            AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                            AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) 
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                 ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_expense_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								        self._cr.execute((''' select account_move_line.id from  account_account, account_move_line where
							 | 
						|
								                                account_move_line.account_id = account_account.id AND account_account.internal_group = 'expense' AND  
							 | 
						|
								                                %s                         
							 | 
						|
								                                AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW())) 
							 | 
						|
								                                AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_total_income_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select account_move_line.id from account_account, account_move_line where
							 | 
						|
								                                account_move_line.account_id = account_account.id AND account_account.internal_group = 'income'
							 | 
						|
								                               AND %s
							 | 
						|
								                               AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW())) 
							 | 
						|
								                               AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) 
							 | 
						|
								                               AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								
							 | 
						|
								                                     ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_total_income_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select account_move_line.id from account_account, account_move_line where                           
							 | 
						|
								                             account_move_line.account_id = account_account.id AND account_account.internal_group = 'income'
							 | 
						|
								                             AND %s
							 | 
						|
								                          AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW())) 
							 | 
						|
								                          AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_profit_income_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select account_move_line.id from  account_account, account_move_line where 
							 | 
						|
								                                       account_move_line.account_id = account_account.id AND
							 | 
						|
								                                       %s AND
							 | 
						|
								                                       (account_account.internal_group = 'income' or    
							 | 
						|
								                                       account_account.internal_group = 'expense' ) 
							 | 
						|
								                                       AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW())) 
							 | 
						|
								                                       AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW()))   
							 | 
						|
								                                       AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''        
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        profit = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return profit
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_profit_income_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select account_move_line.id from  account_account, account_move_line where 
							 | 
						|
								                                            account_move_line.account_id = account_account.id AND
							 | 
						|
								                                            %s AND
							 | 
						|
								                                           (account_account.internal_group = 'income' or    
							 | 
						|
								                                           account_account.internal_group = 'expense' )                                       
							 | 
						|
								                                           AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW()))  
							 | 
						|
								                                           AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                                            ''') % (states_arg))
							 | 
						|
								        profit = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return profit
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_bill_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='in_invoice'
							 | 
						|
								                               AND  %s                              
							 | 
						|
								                               AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                               AND account_move.company_id in ''' + str(tuple(company_id)) + '''      
							 | 
						|
								                           ''') % (states_arg))
							 | 
						|
								        record_supplier_current_year = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record_supplier_current_year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_bill_year_paid(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='in_invoice'
							 | 
						|
								                                       AND   %s
							 | 
						|
								                                       AND  payment_state = 'paid'
							 | 
						|
								                                       AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                       AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                   ''') % (states_arg))
							 | 
						|
								        result_paid_supplier_invoice_current_year = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return result_paid_supplier_invoice_current_year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_invoice_year_paid(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='out_invoice'
							 | 
						|
								                                       AND   %s
							 | 
						|
								                                       AND payment_state = 'paid'
							 | 
						|
								                                       AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                       AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                   ''') % (states_arg))
							 | 
						|
								        record_paid_customer_invoice_current_year = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record_paid_customer_invoice_current_year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_invoice_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id  from account_move where move_type ='out_invoice'
							 | 
						|
								                               AND   %s                               
							 | 
						|
								                               AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                               AND account_move.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                           ''') % (states_arg))
							 | 
						|
								        record_customer_current_year = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record_customer_current_year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_bill_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='in_invoice'
							 | 
						|
								                                            AND   %s
							 | 
						|
								                                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        bill_month = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return bill_month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_bill_month_paid(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='in_invoice'
							 | 
						|
								                                            AND   %s
							 | 
						|
								                                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND payment_state = 'paid'
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        result_paid_supplier_invoice_current_month = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return result_paid_supplier_invoice_current_month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_invoice_month_paid(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='out_invoice'
							 | 
						|
								                                            AND   %s
							 | 
						|
								                                            AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                            AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))
							 | 
						|
								                                            AND payment_state = 'paid'
							 | 
						|
								                                            AND account_move.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                                        ''') % (states_arg))
							 | 
						|
								        record_paid_customer_invoice_current_month = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record_paid_customer_invoice_current_month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_invoice_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ account_move.state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ account_move.state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''select account_move.id from account_move where move_type ='out_invoice'
							 | 
						|
								                                    AND   %s                               
							 | 
						|
								                                    AND Extract(month FROM account_move.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                                    AND Extract(YEAR FROM account_move.date) = Extract(YEAR FROM DATE(NOW()))     
							 | 
						|
								                                    AND account_move.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                                ''') % (states_arg))
							 | 
						|
								        record_customer_current_month = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record_customer_current_month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_unreconcile_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								        qry = ''' select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                              where Extract(month FROM l.date) = Extract(month FROM DATE(NOW())) AND
							 | 
						|
								                              Extract(YEAR FROM l.date) = Extract(YEAR FROM DATE(NOW())) AND
							 | 
						|
								                              L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                              l.product_id IS NULL AND
							 | 
						|
								                              l.balance != 0 AND a.reconcile IS F 
							 | 
						|
								                              AND l.''' + states_arg + '''
							 | 
						|
								                              AND  l.company_id in ''' + str(tuple(company_id)) + '''                              
							 | 
						|
								                               '''
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select l.id FROM account_move_line l,account_account a
							 | 
						|
								                              where Extract(month FROM l.date) = Extract(month FROM DATE(NOW())) AND
							 | 
						|
								                              Extract(YEAR FROM l.date) = Extract(YEAR FROM DATE(NOW())) AND
							 | 
						|
								                              L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                              l.product_id IS NULL AND
							 | 
						|
								                              l.balance != 0 AND a.reconcile IS TRUE 
							 | 
						|
								                              AND l.%s
							 | 
						|
								                              AND  l.company_id in ''' + str(tuple(company_id)) + '''                              
							 | 
						|
								                               ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def click_unreconcile_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								        self._cr.execute(('''  select l.id FROM account_move_line l,account_account a
							 | 
						|
								                                  where Extract(year FROM l.date) = Extract(year FROM DATE(NOW())) AND
							 | 
						|
								                                  L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                                  l.product_id IS NULL AND
							 | 
						|
								                                  l.balance != 0 AND a.reconcile IS TRUE  
							 | 
						|
								                                  AND l.%s
							 | 
						|
								                                  AND  l.company_id in ''' + str(tuple(company_id)) + '''       
							 | 
						|
								                                  ''') % (states_arg))
							 | 
						|
								        record = [row[0] for row in self._cr.fetchall()]
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get unreconcile items last year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def unreconcile_items_last_year(self):
							 | 
						|
								
							 | 
						|
								        self._cr.execute('''  select count(*) FROM account_move_line l,account_account a
							 | 
						|
								                                      where Extract(year FROM l.date) = Extract(year FROM DATE(NOW())) - 1 AND
							 | 
						|
								                                      L.account_id=a.id AND l.full_reconcile_id IS NULL AND 
							 | 
						|
								                                      l.balance != 0 AND a.reconcile IS TRUE
							 | 
						|
								                                      ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total income
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_income(self):
							 | 
						|
								
							 | 
						|
								        self._cr.execute(''' select sum(debit) as debit , sum(credit) as credit  from account_move, account_account,account_move_line
							 | 
						|
								                            where  account_move.move_type = 'entry'  AND account_move.state = 'posted' AND  account_move_line.account_id=account_account.id AND
							 | 
						|
								                             account_account.internal_group='income'
							 | 
						|
								                              AND to_char(DATE(NOW()), 'MM') = to_char(account_move_line.date, 'MM')
							 | 
						|
								                              ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total income this month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_income_this_month(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit) as debit, sum(credit) as credit from account_account, account_move_line where
							 | 
						|
								                            account_move_line.account_id = account_account.id AND account_account.internal_group = 'income'
							 | 
						|
								                           AND %s
							 | 
						|
								                           AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW())) 
							 | 
						|
								                           AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) 
							 | 
						|
								                           AND account_move_line.company_id in ''' + str(tuple(company_id)) + ''' 
							 | 
						|
								
							 | 
						|
								                                 ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def profit_income_this_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit) - sum(credit) as profit, account_account.internal_group from  account_account, account_move_line where 
							 | 
						|
								                                  
							 | 
						|
								                                    account_move_line.account_id = account_account.id AND
							 | 
						|
								                                    %s AND
							 | 
						|
								                                    (account_account.internal_group = 'income' or    
							 | 
						|
								                                    account_account.internal_group = 'expense' ) 
							 | 
						|
								                                    AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW())) 
							 | 
						|
								                                    AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW()))   
							 | 
						|
								                                    AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''        
							 | 
						|
								                                    group by internal_group 
							 | 
						|
								                                     ''') % (states_arg))
							 | 
						|
								        income = self._cr.dictfetchall()
							 | 
						|
								        profit = [item['profit'] for item in income]
							 | 
						|
								        internal_group = [item['internal_group'] for item in income]
							 | 
						|
								        net_profit = True
							 | 
						|
								        loss = True
							 | 
						|
								        if profit and profit == 0:
							 | 
						|
								            if (-profit[1]) > (profit[0]):
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								            elif (profit[1]) > (profit[0]):
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								            else:
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								
							 | 
						|
								        return profit
							 | 
						|
								
							 | 
						|
								    def get_current_company_value(self):
							 | 
						|
								
							 | 
						|
								        cookies_cids = [int(r) for r in request.httprequest.cookies.get('cids').split(",")] \
							 | 
						|
								            if request.httprequest.cookies.get('cids') \
							 | 
						|
								            else [request.env.user.company_id.id]
							 | 
						|
								
							 | 
						|
								        for company_id in cookies_cids:
							 | 
						|
								            if company_id not in self.env.user.company_ids.ids:
							 | 
						|
								                cookies_cids.remove(company_id)
							 | 
						|
								        if not cookies_cids:
							 | 
						|
								            cookies_cids = [self.env.company.id]
							 | 
						|
								        if len(cookies_cids) == 1:
							 | 
						|
								            cookies_cids.append(0)
							 | 
						|
								        return cookies_cids
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def profit_income_this_year(self, *post):
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute(('''select sum(debit) - sum(credit) as profit, account_account.internal_group from  account_account, account_move_line where 
							 | 
						|
								                                        
							 | 
						|
								                                         account_move_line.account_id = account_account.id AND
							 | 
						|
								                                         %s AND
							 | 
						|
								                                        (account_account.internal_group = 'income' or    
							 | 
						|
								                                        account_account.internal_group = 'expense' )                                       
							 | 
						|
								                                        AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW()))  
							 | 
						|
								                                        AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''           
							 | 
						|
								                                        group by internal_group 
							 | 
						|
								                                         ''') % (states_arg))
							 | 
						|
								        income = self._cr.dictfetchall()
							 | 
						|
								        profit = [item['profit'] for item in income]
							 | 
						|
								        internal_group = [item['internal_group'] for item in income]
							 | 
						|
								        net_profit = True
							 | 
						|
								        loss = True
							 | 
						|
								
							 | 
						|
								        if profit and profit == 0:
							 | 
						|
								            if (-profit[1]) > (profit[0]):
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								            elif (profit[1]) > (profit[0]):
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								            else:
							 | 
						|
								                net_profit = -profit[1] - profit[0]
							 | 
						|
								
							 | 
						|
								        return profit
							 | 
						|
								
							 | 
						|
								    # function to get total income last month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_income_last_month(self):
							 | 
						|
								
							 | 
						|
								        one_month_ago = (datetime.now() - relativedelta(months=1)).month
							 | 
						|
								
							 | 
						|
								        self._cr.execute('''
							 | 
						|
								                            select sum(debit) as debit, sum(credit) as credit from  account_account, 
							 | 
						|
								        account_move_line where 
							 | 
						|
								         account_move_line.account_id = account_account.id 
							 | 
						|
								        AND account_account.internal_group = 'income' AND 
							 | 
						|
								        account_move_line.parent_state = 'posted'  
							 | 
						|
								        AND Extract(month FROM account_move_line.date) = ''' + str(one_month_ago) + '''
							 | 
						|
								        ''')
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total income this year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_income_this_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select sum(debit) as debit, sum(credit) as credit from account_account, account_move_line where                           
							 | 
						|
								                             account_move_line.account_id = account_account.id AND account_account.internal_group = 'income'
							 | 
						|
								                             AND %s
							 | 
						|
								                          AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW())) 
							 | 
						|
								                          AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                        ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total income last year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_income_last_year(self):
							 | 
						|
								
							 | 
						|
								        self._cr.execute(''' select sum(debit) as debit, sum(credit) as credit from  account_account, account_move_line where
							 | 
						|
								                            account_move_line.parent_state = 'posted' 
							 | 
						|
								                            AND  account_move_line.account_id = account_account.id AND account_account.internal_group = 'income'
							 | 
						|
								                            AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW())) - 1
							 | 
						|
								                         ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get currency
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def get_currency(self):
							 | 
						|
								        company_ids = self.get_current_company_value()
							 | 
						|
								        if 0 in company_ids:
							 | 
						|
								            company_ids.remove(0)
							 | 
						|
								        current_company_id = company_ids[0]
							 | 
						|
								        current_company = self.env['res.company'].browse(current_company_id)
							 | 
						|
								        default = current_company.currency_id or self.env.ref('base.main_company').currency_id
							 | 
						|
								        lang = self.env.user.lang
							 | 
						|
								        if not lang:
							 | 
						|
								            lang = 'en_US'
							 | 
						|
								        lang = lang.replace("_", '-')
							 | 
						|
								        currency = {'position': default.position, 'symbol': default.symbol, 'language': lang}
							 | 
						|
								        return currency
							 | 
						|
								
							 | 
						|
								    # function to get total expense
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_expense(self):
							 | 
						|
								
							 | 
						|
								        self._cr.execute(''' select sum(debit) as debit , sum(credit) as credit from account_move, account_account,account_move_line
							 | 
						|
								                            where account_move.move_type = 'entry'  AND account_move.state = 'posted' AND   account_move_line.account_id=account_account.id AND
							 | 
						|
								                             account_account.internal_group='expense' 
							 | 
						|
								                             AND to_char(DATE(NOW()), 'MM') = to_char(account_move_line.date, 'MM')
							 | 
						|
								                             ''')
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total expense this month
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_expense_this_month(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select sum(debit) as debit, sum(credit) as credit from  account_account, account_move_line where 
							 | 
						|
								                        
							 | 
						|
								                            account_move_line.account_id = account_account.id AND account_account.internal_group = 'expense' AND  
							 | 
						|
								                            %s                
							 | 
						|
								                            AND Extract(month FROM account_move_line.date) = Extract(month FROM DATE(NOW()))
							 | 
						|
								                            AND Extract(year FROM account_move_line.date) = Extract(year FROM DATE(NOW())) 
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                                 ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    # function to get total expense this year
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def month_expense_this_year(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select sum(debit) as debit, sum(credit) as credit from  account_account, account_move_line where
							 | 
						|
								                        
							 | 
						|
								                            account_move_line.account_id = account_account.id AND account_account.internal_group = 'expense' AND  
							 | 
						|
								                            %s                         
							 | 
						|
								                            AND Extract(YEAR FROM account_move_line.date) = Extract(YEAR FROM DATE(NOW())) 
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								                            ''') % (states_arg))
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        return record
							 | 
						|
								
							 | 
						|
								    @api.model
							 | 
						|
								    def bank_balance(self, *post):
							 | 
						|
								
							 | 
						|
								        company_id = self.get_current_company_value()
							 | 
						|
								
							 | 
						|
								        states_arg = ""
							 | 
						|
								        if post != ('posted',):
							 | 
						|
								            states_arg = """ parent_state = 'posted'"""
							 | 
						|
								        else:
							 | 
						|
								            states_arg = """ parent_state in ('posted', 'draft')"""
							 | 
						|
								
							 | 
						|
								        self._cr.execute((''' select account_account.name as name, sum(balance) as balance,
							 | 
						|
								                            min(account_account.id) as id from account_move_line left join
							 | 
						|
								                            account_account on account_account.id = account_move_line.account_id where
							 | 
						|
								                            account_account.account_type = 'asset_cash'
							 | 
						|
								                            AND %s
							 | 
						|
								                            AND account_move_line.company_id in ''' + str(tuple(company_id)) + '''
							 | 
						|
								                            group by account_account.name
							 | 
						|
								                                                   
							 | 
						|
								                            ''') % (states_arg))
							 | 
						|
								
							 | 
						|
								        record = self._cr.dictfetchall()
							 | 
						|
								        banks = [item['name'] for item in record]
							 | 
						|
								        # bank_name = [rec['en_US'] for rec in banks]
							 | 
						|
								        banking = [item['balance'] for item in record]
							 | 
						|
								
							 | 
						|
								        bank_ids = [item['id'] for item in record]
							 | 
						|
								
							 | 
						|
								        records = {
							 | 
						|
								            'banks': banks,
							 | 
						|
								            'banking': banking,
							 | 
						|
								            'bank_ids': bank_ids
							 | 
						|
								        }
							 | 
						|
								        return records
							 | 
						|
								
							 |