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.
		
		
		
		
		
			
		
			
				
					
					
						
							1618 lines
						
					
					
						
							80 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							1618 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.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.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.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.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.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.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
 | |
| 
 |