# -*- 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, }