correction stats devis

This commit is contained in:
cthienan
2021-08-13 10:15:43 +02:00
parent 0e77614b89
commit c74f60de09
3 changed files with 134 additions and 54 deletions

View File

@@ -142,23 +142,31 @@ def get_delais_pourcent(request, societe, groupe, datedeb):
results = request.dbsession.execute(query, {'societe': societe, 'groupe': groupe, 'datedeb': datedeb.strftime("%Y-%m")})
return results.fetchall()
def get_nb_devis_fact(request, societe, datedeb):
def get_nb_devis_fact(request, societe, year):
query = """SELECT
SUM(IF (NOFACT > 0, 1, 0)) AS devis_fact,
SUM(IF (NOFACT <= 0, 1, 0)) AS devis_non_fact
SUM(IF (NOFACT > 0 AND year(date) = :year - 2, 1, 0)) AS devis_fact_y1,
SUM(IF (NOFACT <= 0 AND year(date) = :year - 2, 1, 0)) AS devis_non_fact_y1,
SUM(IF (NOFACT > 0 AND year(date) = :year - 1, 1, 0)) AS devis_fact_y2,
SUM(IF (NOFACT <= 0 AND year(date) = :year - 1, 1, 0)) AS devis_non_fact_y2,
SUM(IF (NOFACT > 0 AND year(date) = :year, 1, 0)) AS devis_fact_y3,
SUM(IF (NOFACT <= 0 AND year(date) = :year, 1, 0)) AS devis_non_fact_y3
FROM bddevfac.devis
WHERE societe = :societe AND date >= :datedeb;"""
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y-%m")})
WHERE societe = :societe;"""
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
return results.fetchall()
def get_nb_fact_with_devis(request, societe, datedeb):
def get_nb_fact_with_devis(request, societe, year):
query = """SELECT
SUM(IF (NODEVIS > 0, 1, 0)) AS fact_w_devis,
SUM(IF (NODEVIS <= 0, 1, 0)) AS fact_wo_devis
SUM(IF (NODEVIS > 0 AND year(date) = :year - 2, 1, 0)) AS fact_w_devis_y1,
SUM(IF (NODEVIS <= 0 AND year(date) = :year - 2, 1, 0)) AS fact_wo_devis_y1,
SUM(IF (NODEVIS > 0 AND year(date) = :year - 1, 1, 0)) AS fact_w_devis_y2,
SUM(IF (NODEVIS <= 0 AND year(date) = :year - 1, 1, 0)) AS fact_wo_devis_y2,
SUM(IF (NODEVIS > 0 AND year(date) = :year, 1, 0)) AS fact_w_devis_y3,
SUM(IF (NODEVIS <= 0 AND year(date) = :year, 1, 0)) AS fact_wo_devis_y3
FROM bddevfac.facture
WHERE societe = :societe AND date >= :datedeb;"""
results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y-%m")})
WHERE societe = :societe;"""
results = request.dbsession.execute(query, {'societe': societe, 'year': year})
return results.fetchall()

View File

@@ -19,12 +19,16 @@
<div class="row">
<!-- CAMENBERT DU NOMBRE DE DEVIS FACTURES -->
<div id="chart_devis_fact" style="width: 100%; height: 500px;"></div>
<div id="chart_devis_y1" style="width: 100%; height: 500px;"></div>
<div id="chart_devis_y2" style="width: 100%; height: 500px;"></div>
<div id="chart_devis_y3" style="width: 100%; height: 500px;"></div>
</div>
<div class="row">
<!-- CAMEMBERT DU NOMBRE DE FACTURES AVEC DEVIS -->
<div id="chart_fact" style="width: 100%; height: 500px;"></div>
<div id="chart_fact_y1" style="width: 100%; height: 500px;"></div>
<div id="chart_fact_y2" style="width: 100%; height: 500px;"></div>
<div id="chart_fact_y3" style="width: 100%; height: 500px;"></div>
</div>
@@ -32,28 +36,64 @@
<script type="text/javascript">
google.charts.load("current", {packages:["corechart"]});
google.charts.setOnLoadCallback(drawChart);
var dataSet_devis_fact = ${chart_devis_fact};
var dataSet_fact = ${chart_fact};
var dataSet_devis_y1 = ${chart_devis_y1};
var dataSet_devis_y2 = ${chart_devis_y2};
var dataSet_devis_y3 = ${chart_devis_y3};
var dataSet_fact_y1 = ${chart_fact_y1};
var dataSet_fact_y2 = ${chart_fact_y2};
var dataSet_fact_y3 = ${chart_fact_y3};
function drawChart() {
var data_devis_fact = google.visualization.arrayToDataTable(dataSet_devis_fact);
var data_fact = google.visualization.arrayToDataTable(dataSet_fact);
var options_devis_fact = {
title: '${title}',
var data_devis_y1 = google.visualization.arrayToDataTable(dataSet_devis_y1);
var data_devis_y2 = google.visualization.arrayToDataTable(dataSet_devis_y2);
var data_devis_y3 = google.visualization.arrayToDataTable(dataSet_devis_y3);
var data_fact_y1 = google.visualization.arrayToDataTable(dataSet_fact_y1);
var data_fact_y2 = google.visualization.arrayToDataTable(dataSet_fact_y2);
var data_fact_y3 = google.visualization.arrayToDataTable(dataSet_fact_y3);
var options_devis_y1 = {
title: '${title_devis1}',
pieHole: 0.4,
};
var options_devis_y2 = {
title: '${title_devis2}',
pieHole: 0.4,
};
var options_devis_y3 = {
title: '${title_devis3}',
pieHole: 0.4,
};
var options_fact = {
title: '${title}',
var options_fact_y1 = {
title: '${title_fact2}',
pieHole: 0.4,
};
var options_fact_y2 = {
title: '${title_fact2}',
pieHole: 0.4,
};
var options_fact_y3 = {
title: '${title_fact3}',
pieHole: 0.4,
};
var chart_devis_fact = new google.visualization.PieChart(document.getElementById('chart_devis_fact'));
chart_devis_fact.draw(data_devis_fact, options_devis_fact);
var chart_devis_y1 = new google.visualization.PieChart(document.getElementById('chart_devis_y1'));
chart_devis_y1.draw(data_devis_y1, options_devis_y1);
var chart_devis_y2 = new google.visualization.PieChart(document.getElementById('chart_devis_y2'));
chart_devis_y2.draw(data_devis_y2, options_devis_y2);
var chart_devis_y3 = new google.visualization.PieChart(document.getElementById('chart_devis_y3'));
chart_devis_y3.draw(data_devis_y3, options_devis_y3);
var chart_fact = new google.visualization.PieChart(document.getElementById('chart_fact'));
chart_fact.draw(data_fact, options_fact);
var chart_fact_y1 = new google.visualization.PieChart(document.getElementById('chart_fact_y1'));
chart_fact_y1.draw(data_fact_y1, options_fact_y1);
var chart_fact_y2 = new google.visualization.PieChart(document.getElementById('chart_fact_y2'));
chart_fact_y2.draw(data_fact_y2, options_fact_y2);
var chart_fact_y3 = new google.visualization.PieChart(document.getElementById('chart_fact_y3'));
chart_fact_y3.draw(data_fact_y3, options_fact_y3);
}
</script>

View File

@@ -413,9 +413,8 @@ def pourcentage_devis(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)
# année aujourd'hui
thisyear = date.today().year
societes = ['PE','ME','PL']
# si societe a été changé par le user
@@ -423,43 +422,76 @@ def pourcentage_devis(request):
societe = request.params["societe"]
# lire le nb de devis facturés
items = get_nb_devis_fact(request, societe, datedeb)
chart_devis_fact = []
items = get_nb_devis_fact(request, societe, thisyear)
chart_devis_y1 = []
chart_devis_y2 = []
chart_devis_y3 = []
# titre des colonnes
chart_devis_fact.append(('Catégorie', 'Delais'))
title = 'POURCENTAGE DU NOMBRE DE DEVIS FACTURÉS'
chart_devis_y1.append(('Catégorie', 'Nb Devis facturés'))
chart_devis_y2.append(('Catégorie', 'Nb Devis facturés'))
chart_devis_y3.append(('Catégorie', 'Nb Devis facturés'))
title_devis1 = 'NB DEVIS ' + str(thisyear - 2)
title_devis2 = 'NB DEVIS ' + str(thisyear - 1)
title_devis3 = 'NB DEVIS ' + str(thisyear)
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 = ('Nb de devis facturés', round(item.devis_fact))
chart_devis_fact.append(d)
d = ('Nb de devis non facturés', round(item.devis_non_fact))
chart_devis_fact.append(d)
d1 = ('Nb de devis facturés', item.devis_fact_y1)
chart_devis_y1.append(d1)
d1 = ('Nb de devis non facturés', item.devis_non_fact_y1)
chart_devis_y1.append(d1)
d2 = ('Nb de devis facturés', item.devis_fact_y2)
chart_devis_y2.append(d2)
d2 = ('Nb de devis non facturés', item.devis_non_fact_y2)
chart_devis_y2.append(d2)
d3 = ('Nb de devis facturés', item.devis_fact_y3),
chart_devis_y3.append(d3)
d3 = ('Nb de devis non facturés', item.devis_non_fact_y3)
chart_devis_y3.append(d3)
# lire le nb de devis facturés
items = get_nb_fact_with_devis(request, societe, datedeb)
chart_fact = []
items = get_nb_fact_with_devis(request, societe, thisyear)
chart_fact_y1 = []
chart_fact_y2 = []
chart_fact_y3 = []
# titre des colonnes
chart_fact.append(('Catégorie', 'Delais'))
title = 'POURCENTAGE DU NOMBRE DE FACTURES AVEC DEVIS'
chart_fact_y1.append(('Catégorie', 'Nb Factures avec devis'))
chart_fact_y2.append(('Catégorie', 'Nb Factures avec devis'))
chart_fact_y3.append(('Catégorie', 'Nb Factures avec devis'))
title_fact1 = 'NB FACTURES ' + str(thisyear - 2)
title_fact2 = 'NB FACTURES ' + str(thisyear - 1)
title_fact3 = 'NB FACTURES ' + str(thisyear)
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 = ('Nb de factures avec devis', round(item.fact_w_devis))
chart_fact.append(d)
d = ('Nb de factures sans devis', round(item.fact_wo_devis))
chart_fact.append(d)
d1 = ("Nb de factures avec devis", item.fact_w_devis_y1)
chart_fact_y1.append(d1)
d1 = ("Nb de factures sans devis", item.fact_wo_devis_y1)
chart_fact_y1.append(d1)
d2 = ("Nb de factures avec devis", item.fact_w_devis_y2)
chart_fact_y2.append(d2)
d2 = ("Nb de factures sans devis", item.fact_wo_devis_y2)
chart_fact_y2.append(d2)
d3 = ("Nb de factures avec devis", item.fact_w_devis_y3)
chart_fact_y3.append(d3)
d3 = ("Nb de factures sans devis", item.fact_wo_devis_y3)
chart_fact_y3.append(d3)
return {
'page_title': "Pourcentage de délais inférieurs à 2 jours",
'url': url,
'chart_devis_fact': json.dumps(chart_devis_fact),
'chart_fact': json.dumps(chart_fact),
'title': title,
'chart_devis_y1': json.dumps(chart_devis_y1),
'chart_devis_y2': json.dumps(chart_devis_y2),
'chart_devis_y3': json.dumps(chart_devis_y3),
'chart_fact_y1': json.dumps(chart_fact_y1),
'chart_fact_y2': json.dumps(chart_fact_y2),
'chart_fact_y3': json.dumps(chart_fact_y3),
'title_devis1': title_devis1,
'title_devis2': title_devis2,
'title_devis3': title_devis3,
'title_fact1': title_fact1,
'title_fact2': title_fact2,
'title_fact3': title_fact3,
'societes': societes,
'societe': societe,
}