Files
dumas_gestion/mondumas/views/stats.py
2021-06-15 10:30:48 +02:00

208 lines
7.9 KiB
Python

# -*- coding: utf8 -*-
from pyramid.response import Response
from pyramid.renderers import render, get_renderer
from pyramid.view import (
view_config,
forbidden_view_config,
)
from pyramid.httpexceptions import (
HTTPFound,
HTTPNotFound,
HTTPForbidden,
)
from datetime import *
from dateutil.relativedelta import *
import json
from ..models.default import *
from ..models.agenda import *
from ..models.stats import *
@view_config(route_name='stats', renderer='../templates/stats/stats.pt', permission='view')
def stats(request):
logged_in = request.authenticated_userid.upper()
# lire la fiche de l'utilisateur
member = get_member_by_id(request, logged_in)
access = member.access
return {
'page_title': "Statistiques",
'logged_in': logged_in,
'access': access,
}
@view_config(route_name='stats_dossiers', renderer='../templates/stats/stats_dossiers.pt', permission='view')
def stats_dossiers(request):
societe = request.matchdict['societe']
url = request.route_url('stats_dossiers', societe=societe)
message = ''
societes = ['PE','ME','PL','PO','CD']
# prendre en compte les paramètres de saisie
if 'societe' in request.params:
societe = request.params["societe"]
url = request.route_url('stats_dossiers', societe=societe)
# lire les stats globales des demandes de devis
stats_dossiers = get_stats_dd(request, societe)
liste=[]
# construire la liste
for item in stats_dossiers:
total_facture = item.Facture + item.ReglePart + item.Regle
total_devis = item.Devis + item.Commande + total_facture
d = (str(item.Annee), str(item.Total), str(item.A_traiter), str(total_devis), str(item.Devis), str(total_facture), str(item.ReglePart), str(item.Regle))
liste.append(d)
return {
'page_title': "Stats : Dossiers par année",
'url': url,
'message': message,
'dt_data': json.dumps(liste),
'societes': societes,
'societe': societe,
}
@view_config(route_name='stats_delais', renderer='../templates/stats/stats_delais.pt', permission='view')
def stats_delais(request):
societe = request.matchdict['societe']
url = request.route_url('stats_delais', societe = societe)
datefin = date.today()
# debut = aujourd'hui - 11 mois
datedeb = datefin + relativedelta(months=-11)
societes = ['PE','ME','PL']
# si societe a été changé par le user
if 'societe' in request.params:
societe = request.params["societe"]
# lire les groupes
groupes = get_stats_delai_groupe(request, societe, datedeb, datefin)
# mémoriser le 1er de la liste
groupe = groupes[0].group2
# si groupe a été changé par le user
if 'groupe' in request.params:
groupe = request.params["groupe"]
# lire les délais CONTACT du groupe
items = get_stats_delais(request, societe, datedeb, datefin, groupe, 'delai_contact')
barChart_annee1 = []
barChart_annee1.append(('Mois', 'Moy. ' + groupe, {'role': 'annotation'}, { 'type':'string','role': 'tooltip'} , 'Moy. Dumas'))
title1 = '1er CONTACT'
for item in items:
# construire la liste pour donut cible
tooltip = item.group1_lib + '\nMoyennne: -'+str(round(item.moyenne))+' j\nDossiers: '+str(round(item.population))
# ('+str(item.population)+')/n'
d = (item.group1_lib[:3], round(item.moyenne), str(round(item.moyenne))+'j', tooltip, round(item.moy_ref))
barChart_annee1.append(d)
# lire les délais RENDEZ-VOUS du groupe
items = get_stats_delais(request, societe, datedeb, datefin, groupe, 'delai_rdv')
barChart_annee2=[]
barChart_annee2.append(('Mois', 'Moy. ' + groupe, {'role': 'annotation'}, { 'type':'string','role': 'tooltip'} , 'Moy. Dumas'))
title2 = '1er RENDEZ-VOUS'
for item in items:
# construire la liste pour donut cible
tooltip = item.group1_lib + '\nMoyennne: -'+str(round(item.moyenne))+' j\nDossiers: '+str(round(item.population))
# ('+str(item.population)+')/n'
d = (item.group1_lib[:3], round(item.moyenne), str(round(item.moyenne))+'j', tooltip, round(item.moy_ref))
barChart_annee2.append(d)
# lire les délais DEVIS du groupe
items = get_stats_delais(request, societe, datedeb, datefin, groupe, 'delai_devis')
barChart_annee3=[]
barChart_annee3.append(('Mois', 'Moy. ' + groupe, {'role': 'annotation'}, { 'type':'string','role': 'tooltip'} , 'Moy. Dumas'))
title3 = '1er DEVIS'
for item in items:
# construire la liste pour donut cible
tooltip = item.group1_lib + '\nMoyennne: -'+str(round(item.moyenne))+' j\nDossiers: '+str(round(item.population))
# ('+str(item.population)+')/n'
d = (item.group1_lib[:3], round(item.moyenne), str(round(item.moyenne))+'j', tooltip, round(item.moy_ref))
barChart_annee3.append(d)
# lire les délais FACTURE du groupe
items = get_stats_delais(request, societe, datedeb, datefin, groupe, 'delai_facture')
barChart_annee4 = []
barChart_annee4.append(('Mois', 'Moy. ' + groupe, {'role': 'annotation'}, { 'type':'string','role': 'tooltip'} , 'Moy. Dumas'))
title4 = '1ère FACTURE'
for item in items:
# construire la liste pour donut cible
tooltip = item.group1_lib + '\nMoyennne: -'+str(round(item.moyenne))+' j\nDossiers: '+str(round(item.population))
# ('+str(item.population)+')/n'
d = (item.group1_lib[:3], round(item.moyenne), str(round(item.moyenne))+'j', tooltip, round(item.moy_ref))
barChart_annee4.append(d)
return {
'page_title': "Délais / mois",
'url': url,
'barChart_annee1': json.dumps(barChart_annee1),
'barChart_annee2': json.dumps(barChart_annee2),
'barChart_annee3': json.dumps(barChart_annee3),
'barChart_annee4': json.dumps(barChart_annee4),
'title1': title1,
'title2': title2,
'title3': title3,
'title4': title4,
'societes': societes,
'societe': societe,
'groupes': groupes,
'groupe': groupe,
}
@view_config(route_name='ca_groupes_12m', renderer='../templates/stats/ca_groupes_12m.pt', permission='view')
def ca_groupes_12m(request):
societe = request.matchdict['societe']
url = request.route_url('stats_delais', societe = societe)
datefin = date.today()
# debut = aujourd'hui - 11 mois
datedeb = datefin + relativedelta(months=-11)
societes = ['PE','ME','PL']
# si societe a été changé par le user
if 'societe' in request.params:
societe = request.params["societe"]
# lire les groupes
groupes = get_stats_delai_groupe(request, societe, datedeb, datefin)
# mémoriser le 1er de la liste
groupe = groupes[0].group2
# si groupe a été changé par le user
if 'groupe' in request.params:
groupe = request.params["groupe"]
# lire les délais CONTACT du groupe
items = get_ca_groupe_12m(request, societe, datedeb, datefin, groupe, 'delai_contact')
barChart_annee1 = []
# titre des colonnes
barChart_annee1.append(('Mois', 'AXA', {'role': 'annotation'}, { 'type':'string','role': 'tooltip'} , 'Moy. Dumas'))
title1 = '1er CONTACT'
for item in items:
# construire la liste pour donut cible
tooltip = item.group1_lib + '\nMoyennne: -'+str(round(item.moyenne))+' j\nDossiers: '+str(round(item.population))
# ('+str(item.population)+')/n'
d = (item.mois, round(item.moyenne), str(round(item.moyenne))+'j', tooltip, round(item.moy_ref))
barChart_annee1.append(d)
return {
'page_title': "Délais / mois",
'url': url,
'barChart_annee1': json.dumps(barChart_annee1),
'title1': title1,
'societes': societes,
'societe': societe,
'groupes': groupes,
'groupe': groupe,
}