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.
270 lines
8.8 KiB
270 lines
8.8 KiB
# -*- coding: utf-8 -*-
|
|
#############################################################################
|
|
#
|
|
# Cybrosys Technologies Pvt. Ltd.
|
|
#
|
|
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
|
# Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
|
|
#
|
|
# You can modify it under the terms of the GNU LESSER
|
|
# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
|
|
#
|
|
# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
|
|
# (LGPL v3) along with this program.
|
|
# If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
#############################################################################
|
|
|
|
from odoo import models, api
|
|
import calendar
|
|
|
|
|
|
class HelpDeskTicket(models.Model):
|
|
_inherit = 'help.ticket'
|
|
|
|
@api.model
|
|
def check_user_group(self):
|
|
"""Checking user group"""
|
|
user = self.env.user
|
|
if user.has_group('base.group_user'):
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
@api.model
|
|
def get_tickets_count(self):
|
|
tickets_new_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', 'in', ['Inbox', 'Draft'])])
|
|
tickets_in_progress_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', '=', 'In Progress')])
|
|
tickets_closed_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', '=', 'Done')])
|
|
teams_count = self.env['help.team'].search_count([])
|
|
|
|
tickets = self.env['help.ticket'].search(
|
|
[('stage_id.name', 'in', ['Inbox', 'Draft'])])
|
|
p_tickets = []
|
|
for ticket in tickets:
|
|
p_tickets.append(ticket.name)
|
|
|
|
values = {
|
|
'inbox_count': tickets_new_count,
|
|
'progress_count': tickets_in_progress_count,
|
|
'done_count': tickets_closed_count,
|
|
'team_count': teams_count,
|
|
'p_tickets': p_tickets
|
|
}
|
|
return values
|
|
|
|
@api.model
|
|
def get_tickets_view(self):
|
|
tickets_new_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', 'in', ['Inbox', 'Draft'])])
|
|
tickets_in_progress_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', '=', 'In Progress')])
|
|
tickets_closed_count = self.env['help.ticket'].search_count(
|
|
[('stage_id.name', '=', 'Done')])
|
|
teams_count = self.env['help.team'].search_count([])
|
|
|
|
tickets_new = self.env['help.ticket'].search(
|
|
[('stage_id.name', 'in', ['Inbox', 'Draft'])])
|
|
tickets_in_progress = self.env['help.ticket'].search(
|
|
[('stage_id.name', '=', 'In Progress')])
|
|
tickets_closed = self.env['help.ticket'].search(
|
|
[('stage_id.name', '=', 'Done')])
|
|
teams = self.env['help.team'].search([])
|
|
|
|
new_list = []
|
|
progress_list = []
|
|
done_list = []
|
|
teams_list = []
|
|
|
|
for new in tickets_new:
|
|
new_list.append(str(new.name) + ' : ' + str(new.subject))
|
|
for progress in tickets_in_progress:
|
|
progress_list.append(
|
|
str(progress.name) + ' : ' + str(progress.subject))
|
|
for done in tickets_closed:
|
|
done_list.append(str(done.name) + ' : ' + str(done.subject))
|
|
for team in teams:
|
|
teams_list.append(team.name)
|
|
|
|
tickets = self.env['help.ticket'].search(
|
|
[('stage_id.name', 'in', ['Inbox', 'Draft'])])
|
|
p_tickets = []
|
|
for ticket in tickets:
|
|
p_tickets.append(ticket.name)
|
|
|
|
values = {
|
|
'inbox_count': tickets_new_count,
|
|
'progress_count': tickets_in_progress_count,
|
|
'done_count': tickets_closed_count,
|
|
'team_count': teams_count,
|
|
|
|
'new_tkts': new_list,
|
|
'progress': progress_list,
|
|
'done': done_list,
|
|
'teams': teams_list,
|
|
'p_tickets': p_tickets
|
|
}
|
|
return values
|
|
|
|
@api.model
|
|
def get_ticket_month_pie(self):
|
|
"""pie chart"""
|
|
month_count = []
|
|
month_value = []
|
|
tickets = self.env['help.ticket'].search([])
|
|
for rec in tickets:
|
|
month = rec.create_date.month
|
|
if month not in month_value:
|
|
month_value.append(month)
|
|
month_count.append(month)
|
|
|
|
month_val = []
|
|
for index in range(len(month_value)):
|
|
value = month_count.count(month_value[index])
|
|
month_name = calendar.month_name[month_value[index]]
|
|
month_val.append({'label': month_name, 'value': value})
|
|
|
|
name = []
|
|
for record in month_val:
|
|
name.append(record.get('label'))
|
|
|
|
count = []
|
|
for record in month_val:
|
|
count.append(record.get('value'))
|
|
|
|
month = [count, name]
|
|
return month
|
|
|
|
@api.model
|
|
def get_team_ticket_count_pie(self):
|
|
"""bar chart"""
|
|
ticket_count = []
|
|
team_list = []
|
|
tickets = self.env['help.ticket'].search([])
|
|
|
|
for rec in tickets:
|
|
if rec.team_id:
|
|
team = rec.team_id.name
|
|
if team not in team_list:
|
|
team_list.append(team)
|
|
ticket_count.append(team)
|
|
|
|
team_val = []
|
|
for index in range(len(team_list)):
|
|
value = ticket_count.count(team_list[index])
|
|
team_name = team_list[index]
|
|
team_val.append({'label': team_name, 'value': value})
|
|
name = []
|
|
for record in team_val:
|
|
name.append(record.get('label'))
|
|
#
|
|
count = []
|
|
for record in team_val:
|
|
count.append(record.get('value'))
|
|
#
|
|
team = [count, name]
|
|
return team
|
|
|
|
@api.model
|
|
def get_project_ticket_count(self):
|
|
"""bar chart"""
|
|
ticket_count = []
|
|
project_list = []
|
|
tickets = self.env['help.ticket'].search([])
|
|
|
|
for rec in tickets:
|
|
if rec.project_id:
|
|
project = rec.project_id.name
|
|
if project not in project_list:
|
|
project_list.append(project)
|
|
ticket_count.append(project)
|
|
|
|
project_val = []
|
|
for index in range(len(project_list)):
|
|
value = ticket_count.count(project_list[index])
|
|
project_name = project_list[index]
|
|
project_val.append({'label': project_name, 'value': value})
|
|
name = []
|
|
for record in project_val:
|
|
name.append(record.get('label'))
|
|
#
|
|
count = []
|
|
for record in project_val:
|
|
count.append(record.get('value'))
|
|
#
|
|
project = [count, name]
|
|
return project
|
|
|
|
@api.model
|
|
def get_billed_task_team_chart(self):
|
|
"""polarArea chart"""
|
|
ticket_count = []
|
|
team_list = []
|
|
tasks=[]
|
|
project_task = self.env['project.task'].search([('ticket_billed', '=', True)])
|
|
for rec in project_task:
|
|
tasks.append(rec.ticket_id.id)
|
|
tickets = self.env['help.ticket'].search([('id', 'in', tasks)])
|
|
|
|
|
|
for rec in tickets:
|
|
# if rec.id in teams.ids:
|
|
team = rec.team_id.name
|
|
if team not in team_list:
|
|
team_list.append(team)
|
|
ticket_count.append(team)
|
|
|
|
team_val = []
|
|
for index in range(len(team_list)):
|
|
value = ticket_count.count(team_list[index])
|
|
team_name = team_list[index]
|
|
team_val.append({'label': team_name, 'value': value})
|
|
name = []
|
|
for record in team_val:
|
|
name.append(record.get('label'))
|
|
#
|
|
count = []
|
|
for record in team_val:
|
|
count.append(record.get('value'))
|
|
#
|
|
team = [count, name]
|
|
return team
|
|
|
|
@api.model
|
|
def get_team_ticket_done_pie(self):
|
|
"""bar chart"""
|
|
ticket_count = []
|
|
team_list = []
|
|
tickets = self.env['help.ticket'].search(
|
|
[('stage_id.name', '=', 'Done')])
|
|
|
|
for rec in tickets:
|
|
if rec.team_id:
|
|
team = rec.team_id.name
|
|
if team not in team_list:
|
|
team_list.append(team)
|
|
ticket_count.append(team)
|
|
|
|
team_val = []
|
|
for index in range(len(team_list)):
|
|
value = ticket_count.count(team_list[index])
|
|
team_name = team_list[index]
|
|
team_val.append({'label': team_name, 'value': value})
|
|
name = []
|
|
for record in team_val:
|
|
name.append(record.get('label'))
|
|
#
|
|
count = []
|
|
for record in team_val:
|
|
count.append(record.get('value'))
|
|
#
|
|
team = [count, name]
|
|
return team
|
|
|