113 lines
3.9 KiB
Python
113 lines
3.9 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 get_users_agenda(request):
|
|
""" lire la liste des users ayant un agenda"""
|
|
query = "SELECT * FROM p_users WHERE cd_uti <> 'N' and agenda <> 0 AND actif <> 0 ORDER BY nom;"
|
|
results = request.dbsession.execute(query).fetchall()
|
|
return results
|
|
|
|
def get_table(code):
|
|
if code == 'DD':
|
|
table = 'dem_devis'
|
|
elif code == 'OS':
|
|
table = 'ordres'
|
|
else:
|
|
table = 'rdvous'
|
|
return table
|
|
|
|
def get_table_details(code):
|
|
if code == 'DD':
|
|
table = 'dem_lig'
|
|
elif code == 'OS':
|
|
table = 'ordres_lig'
|
|
else:
|
|
table = 'rdvous_lig'
|
|
return table
|
|
|
|
|
|
def get_dossier_by_no(request,nodossier):
|
|
societe = nodossier[0:2]
|
|
table = get_table(nodossier[3:5])
|
|
no_id = nodossier[6:]
|
|
query = """
|
|
SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM %s d
|
|
INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli
|
|
INNER JOIN p_cabinet a ON d.cabinet = a.code
|
|
INNER JOIN p_experts e ON d.cabinet = e.code_cab and d.expert = e.code_exp
|
|
where d.societe = '%s' and d.no_id=%s;""" % (table, societe, no_id);
|
|
results = request.dbsession.execute(query).first()
|
|
return results
|
|
|
|
def get_dossier_rdv_by_no(request,nodossier, nolig):
|
|
societe = nodossier[0:2]
|
|
table = get_table_details(nodossier[3:5])
|
|
no_id = nodossier[6:]
|
|
if nolig == '0':
|
|
query = "SELECT * FROM %s where societe = '%s' and no_id=%s;" % (table, societe, no_id)
|
|
results = request.dbsession.execute(query).fetchall()
|
|
else:
|
|
query = "SELECT * FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig)
|
|
results = request.dbsession.execute(query).first()
|
|
return results
|
|
|
|
def get_rendez_vous(request, itc):
|
|
d = datetime.now()
|
|
d = d - dateutil.relativedelta.relativedelta(months=3)
|
|
# début du mois M-2
|
|
datedeb = d.strftime('%Y-%m-01')
|
|
|
|
# lire les rdv de l'ITC
|
|
query = """SELECT CONCAT(l.societe,"-DD-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM dem_lig l
|
|
INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id
|
|
WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi
|
|
"""
|
|
results = request.dbsession.execute(query, {'datedeb': datedeb, 'itc': itc}).fetchall()
|
|
return results
|
|
|
|
def delete_rdv(request, nodossier, nolig):
|
|
societe = nodossier[0:2]
|
|
table = get_table_details(nodossier[3:5])
|
|
no_id = nodossier[6:]
|
|
|
|
query = "DELETE FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig)
|
|
execute_query(request, query, {})
|
|
|
|
def update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv):
|
|
societe = nodossier[0:2]
|
|
table = get_table_details(nodossier[3:5])
|
|
no_id = nodossier[6:]
|
|
|
|
# formater les champs
|
|
ddate = datetime.strptime(date_rdv, '%d-%m-%Y %H:%M')
|
|
datevi = ddate.strftime("%Y-%m-%d")
|
|
heurevi = date_rdv[-5:]
|
|
auj = date.today().strftime("%Y-%m-%d")
|
|
|
|
if nolig == '0':
|
|
query = "INSERT INTO %s SET societe='%s',no_id=%s,date='%s',datevi='%s',heurevi='%s',comment='%s',commentvi='%s'" % (table, societe, no_id,auj,datevi, heurevi, comment, commentvi)
|
|
else:
|
|
query = "UPDATE %s SET datevi='%s', heurevi='%s', comment='%s', commentvi='%s' where societe = '%s' and no_id=%s and nolig=%s;" % (table, datevi, heurevi, comment, commentvi, societe, no_id, nolig)
|
|
|
|
execute_query(request, query, {})
|
|
|