From c74f60de09d0e06ac06cbea6f6a2a42038d83d3e Mon Sep 17 00:00:00 2001 From: cthienan Date: Fri, 13 Aug 2021 10:15:43 +0200 Subject: [PATCH] correction stats devis --- mondumas/models/stats.py | 28 ++++-- mondumas/templates/stats/pourcentage_devis.pt | 68 +++++++++++--- mondumas/views/stats.py | 92 +++++++++++++------ 3 files changed, 134 insertions(+), 54 deletions(-) diff --git a/mondumas/models/stats.py b/mondumas/models/stats.py index 19b6c27..51dbf30 100644 --- a/mondumas/models/stats.py +++ b/mondumas/models/stats.py @@ -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() diff --git a/mondumas/templates/stats/pourcentage_devis.pt b/mondumas/templates/stats/pourcentage_devis.pt index 9550805..fed5367 100644 --- a/mondumas/templates/stats/pourcentage_devis.pt +++ b/mondumas/templates/stats/pourcentage_devis.pt @@ -19,12 +19,16 @@
-
+
+
+
-
+
+
+
@@ -32,28 +36,64 @@ diff --git a/mondumas/views/stats.py b/mondumas/views/stats.py index 37224be..8f05b13 100644 --- a/mondumas/views/stats.py +++ b/mondumas/views/stats.py @@ -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, }