92 lines
3.4 KiB
Python
92 lines
3.4 KiB
Python
# -*- 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 insert_log(request, proc, msg):
|
|
query = "INSERT t_log_nuit (proc,msg) VALUES (:proc,:msg);"
|
|
execute_query(request, query, {'proc': proc, 'msg' :msg})
|
|
|
|
def truncate_log(request):
|
|
query = "TRUNCATE t_log_nuit;"
|
|
execute_query(request, query, {})
|
|
|
|
def get_log(request):
|
|
# lire les rappels non envoyés
|
|
query = "SELECT * FROM t_log_nuit;"
|
|
results = request.dbsession.execute(query, {}).fetchall()
|
|
return results
|
|
|
|
def get_email_rappels(request):
|
|
# lire les rappels non envoyés
|
|
query = """ SELECT r.*, e.c_qualite, e.c_nom, e.c_adr, e.c_adr2, e.c_ville, e.c_email, s.tel, s.nom as nom_societe
|
|
FROM email_rappels r
|
|
INNER JOIN dem_devis e ON r.societe = e.societe AND r.nochantier = e.no_id
|
|
INNER JOIN p_societe s ON r.societe = s.societe
|
|
WHERE ISNULL(envoye_le) ORDER BY no_id;"""
|
|
results = request.dbsession.execute(query, {}).fetchall()
|
|
return results
|
|
|
|
def update_rappels(request):
|
|
query = "CALL spUPD_RAPPELS();"
|
|
execute_query(request, query, {})
|
|
|
|
def update_email_rappels(request, no_id):
|
|
query = "UPDATE email_rappels SET envoye_le = NOW() WHERE no_id = :no_id;"
|
|
execute_query(request, query, {'no_id': no_id})
|
|
|
|
def get_societes(request, societe):
|
|
|
|
if societe == '0':
|
|
query = "SELECT * FROM p_societe;"
|
|
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).fetchall()
|
|
else:
|
|
query = "SELECT * FROM p_societe WHERE societe = :societe;"
|
|
results = request.dbsession.execute(query, {'societe': societe}).first()
|
|
return results
|
|
|
|
def chantierExiste(request,societe, no_id):
|
|
query = "SELECT no_id FROM dem_devis WHERE societe = :societe and no_id = :no_id;"
|
|
results = request.dbsession.execute(query, {'societe': societe, 'no_id': no_id}).first()
|
|
if results:
|
|
return len(results) > 0
|
|
else:
|
|
return False
|
|
|
|
def get_all_chantiers(request,societe):
|
|
query = "SELECT * FROM dem_devis WHERE societe = :societe;"
|
|
results = request.dbsession.execute(query, {'societe': societe}).fetchall()
|
|
return results
|
|
|
|
def get_last_facture(request, societe, nochantier):
|
|
query = "SELECT * FROM facture WHERE societe = :societe AND nochantier = :nochantier order by date DESC LIMIT 1;"
|
|
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
|
return results
|
|
|
|
def get_last_devis(request, societe, nochantier):
|
|
query = "SELECT * FROM devis WHERE societe = :societe AND nochantier = :nochantier order by date DESC LIMIT 1;"
|
|
results = request.dbsession.execute(query, {'societe': societe, 'nochantier': nochantier}).first()
|
|
return results
|
|
|
|
def update_chantier_status(request, societe, no_id, status):
|
|
query = "UPDATE dem_devis SET status = :status, DATEMAJ = DATEMAJ WHERE societe = :societe AND no_id = :no_id AND status <> :status;"
|
|
execute_query(request, query, {'societe': societe, 'no_id': no_id, 'status': status})
|
|
|