Ajout graphes pourcentage délais
This commit is contained in:
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"html.validate.scripts": false
|
"html.validate.scripts": false
|
||||||
|
"editor.minimap.enabled": false
|
||||||
}
|
}
|
||||||
@@ -119,3 +119,13 @@ def get_ca_clients_3y(request, societe, datedeb):
|
|||||||
WHERE societe=:societe GROUP BY typecli;"""
|
WHERE societe=:societe GROUP BY typecli;"""
|
||||||
results = request.dbsession.execute(query, {'societe': societe, 'date_n': date3.strftime("%Y"), 'date_n-1': date2.strftime("%Y"), 'date_n': datedeb.strftime("%Y")})
|
results = request.dbsession.execute(query, {'societe': societe, 'date_n': date3.strftime("%Y"), 'date_n-1': date2.strftime("%Y"), 'date_n': datedeb.strftime("%Y")})
|
||||||
return results.fetchall()
|
return results.fetchall()
|
||||||
|
|
||||||
|
def get_delais_pourcent(request, societe, groupe, datedeb):
|
||||||
|
|
||||||
|
query = """SELECT
|
||||||
|
SUM(IF (delai_contact <= 2, 1, 0)) AS delais_inf,
|
||||||
|
SUM(IF (delai_contact > 2, 1, 0)) AS delais_sup
|
||||||
|
FROM bddevfac.dem_devis
|
||||||
|
WHERE societe = :societe AND GROUPE = :groupe AND date >= :datedeb;"""
|
||||||
|
results = request.dbsession.execute(query, {'societe': societe, 'groupe': groupe, 'datedeb': datedeb.strftime("%Y-%m")})
|
||||||
|
return results.fetchall()
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ def includeme(config):
|
|||||||
config.add_route('stats_delais', '/stats_delais/{societe}')
|
config.add_route('stats_delais', '/stats_delais/{societe}')
|
||||||
config.add_route('ca_groupes', '/ca_groupes/{societe}')
|
config.add_route('ca_groupes', '/ca_groupes/{societe}')
|
||||||
config.add_route('ca_clients', '/ca_clients/{societe}')
|
config.add_route('ca_clients', '/ca_clients/{societe}')
|
||||||
|
config.add_route('delais_pourcentage', '/delais_pourcentage/{societe}')
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
config.add_route('batch_nuit', '/batch_nuit/{param}')
|
config.add_route('batch_nuit', '/batch_nuit/{param}')
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
title: '${title3}',
|
title: '${title3}',
|
||||||
};
|
};
|
||||||
|
|
||||||
var chart_ca_12m = new google.visualization.SteppedAreaChart(document.getElementById('chart_ca_12m'));
|
var chart_ca_12m = new google.visualization.ColumnChart(document.getElementById('chart_ca_12m'));
|
||||||
chart_ca_12m.draw(data_ca_12m, options_ca_12m);
|
chart_ca_12m.draw(data_ca_12m, options_ca_12m);
|
||||||
|
|
||||||
var chart_ca_3y_1 = new google.visualization.PieChart(document.getElementById('chart_ca_3y_1'));
|
var chart_ca_3y_1 = new google.visualization.PieChart(document.getElementById('chart_ca_3y_1'));
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
title: '${title3}',
|
title: '${title3}',
|
||||||
};
|
};
|
||||||
|
|
||||||
var chart_ca_12m = new google.visualization.SteppedAreaChart(document.getElementById('chart_ca_12m'));
|
var chart_ca_12m = new google.visualization.ColumnChart(document.getElementById('chart_ca_12m'));
|
||||||
chart_ca_12m.draw(data_ca_12m, options_ca_12m);
|
chart_ca_12m.draw(data_ca_12m, options_ca_12m);
|
||||||
|
|
||||||
var chart_ca_3y_1 = new google.visualization.PieChart(document.getElementById('chart_ca_3y_1'));
|
var chart_ca_3y_1 = new google.visualization.PieChart(document.getElementById('chart_ca_3y_1'));
|
||||||
|
|||||||
55
mondumas/templates/stats/delais_pourcentage.pt
Normal file
55
mondumas/templates/stats/delais_pourcentage.pt
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<metal:block use-macro="main_template">
|
||||||
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<div class="row">
|
||||||
|
<form method="POST" id="frm" class="form-horizontal">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-sm-2">Societe</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select class="form-control" id="societe" name="societe" onChange="$('#frm').submit()">
|
||||||
|
<tal:block tal:repeat="item societes">
|
||||||
|
<option value="${item}" tal:attributes="selected societe==item and 'selected' or None"> ${item}</option>
|
||||||
|
</tal:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<label class="control-label col-sm-2">Groupe</label>
|
||||||
|
<div class="col-sm-4">
|
||||||
|
<select class="form-control" id="groupe" name="groupe" onChange="$('#frm').submit()">
|
||||||
|
<tal:block tal:repeat="item groupes">
|
||||||
|
<option value="${item.group2}" tal:attributes="selected groupe==item.group2 and 'selected' or None"> ${item.group2}</option>
|
||||||
|
</tal:block>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<!-- Histogramme CA sur 12 mois par groupe -->
|
||||||
|
<div id="chart_delais_p" style="width: 100%; height: 500px;"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
google.charts.load("current", {packages:["corechart"]});
|
||||||
|
google.charts.setOnLoadCallback(drawChart);
|
||||||
|
var dataSet_delais_p = ${chart_delais_p};
|
||||||
|
|
||||||
|
function drawChart() {
|
||||||
|
var data_delais_p = google.visualization.arrayToDataTable(dataSet_delais_p);
|
||||||
|
|
||||||
|
var options_delais_p = {
|
||||||
|
title: '${title}',
|
||||||
|
};
|
||||||
|
|
||||||
|
var chart_delais_p = new google.visualization.PieChart(document.getElementById('chart_delais_p'));
|
||||||
|
chart_delais_p.draw(data_delais_p, options_delais_p);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div><!-- content -->
|
||||||
|
</metal:block>
|
||||||
|
|
||||||
|
|
||||||
@@ -8,6 +8,11 @@
|
|||||||
<span class="glyphicon glyphicon-stats logo-warning"></span>
|
<span class="glyphicon glyphicon-stats logo-warning"></span>
|
||||||
<h4>DELAIS MOYENS</h4></a>
|
<h4>DELAIS MOYENS</h4></a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-3">
|
||||||
|
<a href="${request.application_url}/delais_pourcentage/PE" tal:condition="access > 0">
|
||||||
|
<span class="glyphicon glyphicon-stats logo-warning"></span>
|
||||||
|
<h4>DELAIS POURCENTAGE</h4></a>
|
||||||
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<a href="${request.application_url}/stats_dossiers/PE"><span class="glyphicon glyphicon-wrench logo-primary"></span>
|
<a href="${request.application_url}/stats_dossiers/PE"><span class="glyphicon glyphicon-wrench logo-primary"></span>
|
||||||
<h4>STATS DOSSIERS</h4></a>
|
<h4>STATS DOSSIERS</h4></a>
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ def ca_clients(request):
|
|||||||
chart_ca_3y_3.append(d3)
|
chart_ca_3y_3.append(d3)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': "CA par groupe",
|
'page_title': "CA par clients",
|
||||||
'url': url,
|
'url': url,
|
||||||
'chart_ca_12m': json.dumps(chart_ca_12m),
|
'chart_ca_12m': json.dumps(chart_ca_12m),
|
||||||
'chart_ca_3y_1': json.dumps(chart_ca_3y_1),
|
'chart_ca_3y_1': json.dumps(chart_ca_3y_1),
|
||||||
@@ -312,3 +312,55 @@ def ca_clients(request):
|
|||||||
'societe': societe,
|
'societe': societe,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@view_config(route_name='delais_pourcentage', renderer='../templates/stats/delais_pourcentage.pt', permission='view')
|
||||||
|
def delais_pourcentage(request):
|
||||||
|
|
||||||
|
societe = request.matchdict['societe']
|
||||||
|
url = request.route_url('delais_pourcentage', 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 CA par mois
|
||||||
|
items = get_delais_pourcent(request, societe, groupe, datedeb)
|
||||||
|
chart_delais_p = []
|
||||||
|
|
||||||
|
# titre des colonnes
|
||||||
|
chart_delais_p.append(('Catégorie', 'Delais'))
|
||||||
|
title = 'POURCENTAGE DELAIS'
|
||||||
|
for item in items:
|
||||||
|
# construire la liste pour donut cible
|
||||||
|
#tooltipA = item.date + ' \nCA: '+str(item.A_ca) + ' €\nDossiers: '+str(round(item.A_nb))
|
||||||
|
# ('+str(item.population)+')/n'
|
||||||
|
d = ('1er contact inférieur à 2j', round(item.delais_inf))
|
||||||
|
chart_delais_p.append(d)
|
||||||
|
d = ('1er contact supérieur à 2j', round(item.delais_sup))
|
||||||
|
chart_delais_p.append(d)
|
||||||
|
|
||||||
|
return {
|
||||||
|
'page_title': "Pourcentage de délais inférieurs à 2 jours",
|
||||||
|
'url': url,
|
||||||
|
'chart_delais_p': json.dumps(chart_delais_p),
|
||||||
|
'title': title,
|
||||||
|
'societes': societes,
|
||||||
|
'societe': societe,
|
||||||
|
'groupes': groupes,
|
||||||
|
'groupe': groupe,
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user