# -*- coding: utf8 -*- from sqlalchemy import text from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import ( scoped_session, sessionmaker, ) from zope.sqlalchemy import ( ZopeTransactionExtension, mark_changed ) from datetime import * import dateutil.relativedelta import transaction def execute_query(request, query, params): """Execute query and mark session as changed""" request.dbsession.execute(query, params) mark_changed(request.dbsession) transaction.commit() def get_stats_dd(request, societe): query = """SELECT societe, year(date) as Annee, COUNT(*) as Total, SUM(IF(status = '', 1, 0)) AS A_traiter, SUM(IF(status = 'Devis', 1, 0)) AS Devis, SUM(IF(status = 'Commandé', 1, 0)) AS Commande, SUM(IF(status = 'Facturé', 1, 0)) AS Facture, SUM(IF(status = 'Régl part.', 1, 0)) AS ReglePart, SUM(IF(status = 'Réglée', 1, 0)) AS Regle FROM dem_devis where societe=:societe group by societe, year(date) order by year(date) desc;""" results = request.dbsession.execute(query, {'societe': societe}).fetchall() return results def get_stats_delais(request, societe, datedeb, datefin, groupe, id_chart): # lire les examens sur 12 mois glissants par moniteur query = """SELECT * FROM stats_delais WHERE societe=:societe AND id=:id_chart AND group1 >= :datedeb AND group1 <= :datefin AND group2=:groupe order by group1;""" results = request.dbsession.execute(query, {'societe': societe, 'id_chart': id_chart, 'datedeb': datedeb.strftime("%Y%m"), 'datefin': datefin.strftime("%Y%m"), 'groupe': groupe}) return results.fetchall() def get_stats_delai_groupe(request, societe, datedeb, datefin): query = """SELECT group2, group2_lib FROM stats_delais WHERE societe=:societe AND group1 >= :datedeb AND group1 <= :datefin GROUP BY group2 ORDER BY group2_lib;""" results = request.dbsession.execute(query, {'societe': societe, 'datedeb': datedeb.strftime("%Y%m"), 'datefin': datefin.strftime("%Y%m")}) return results.fetchall() def get_ca_groupe_12m(request, societe): query = """SELECT DATE_FORMAT(date, "%Y%m") as yymm, DATE_FORMAT(date, "%M") as mois, SUM(IF(groupe = 'AXA', totalht, 0)) AS AXA_ca, sum(IF(groupe = 'AXA', 1, 0)) AS AXA_nb, SUM(IF(groupe = 'MAIF', totalht, 0)) AS MAIF FROM bddevfac.facture WHERE societe='PE' and date >= "2020/07/01" and date <= "2021/06/30" GROUP BY yymm;""" results = request.dbsession.execute(query, {'societe': societe}).fetchall() return results