89 lines
3.2 KiB
Python
89 lines
3.2 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_types_rdv(request):
|
|
""" lire la liste des types de rendez-vous"""
|
|
query = "SELECT * FROM p_types_rdv ORDER BY LIB;"
|
|
results = request.dbsession.execute(query).fetchall()
|
|
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,"-",l.no_id) as nodossier, l.nolig, l.rdv_debut, l.rdv_fin, e.c_qualite, e.c_nom, e.c_ville 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]
|
|
no_id = nodossier[3:]
|
|
|
|
query = "DELETE FROM dem_lig where societe = '%s' and no_id=%s and nolig=%s;" % (societe, no_id, nolig)
|
|
execute_query(request, query, {})
|
|
|
|
def update_rdv(request, nodossier, nolig, new_values):
|
|
societe = nodossier[0:2]
|
|
no_id = nodossier[3:]
|
|
|
|
# formater date et heure de visite
|
|
if new_values['rdv_debut']:
|
|
ddate = datetime.strptime(new_values['rdv_debut'], '%d-%m-%Y %H:%M')
|
|
new_values['DATEVI'] = ddate.strftime("%Y-%m-%d")
|
|
new_values['HEUREVI'] = ddate.strftime("%H:%M")
|
|
|
|
del new_values['rdv_debut']
|
|
s = ''
|
|
for param in new_values.keys():
|
|
if s:
|
|
s += ",%s=:%s" % (param, param)
|
|
else:
|
|
s = "%s=:%s" % (param, param)
|
|
|
|
new_values['societe'] = societe
|
|
new_values['no_id'] = no_id
|
|
new_values['nolig'] = nolig
|
|
query = "UPDATE dem_lig SET %s WHERE societe = :societe AND NO_ID = :no_id AND NOLIG = :nolig ;" % s
|
|
execute_query(request, query, new_values)
|
|
|
|
def create_rdv(request, nodossier, dateRDV, heureRDV, type_rdv, agenda, logged_in):
|
|
societe = nodossier[0:2]
|
|
no_id = nodossier[3:]
|
|
|
|
query = """
|
|
INSERT INTO dem_lig (societe, NO_ID, DATE, COMMENT, DATEVI, HEUREVI, LISTE, USERMAJ) VALUES
|
|
(:societe, :no_id, CURRENT_DATE, :type_rdv, :dateRDV, :heureRDV, :agenda, :logged_in) ;"""
|
|
execute_query(request, query, {'societe': societe, 'no_id' :no_id, 'dateRDV': dateRDV, 'heureRDV': heureRDV, 'type_rdv': type_rdv, 'agenda': agenda, 'logged_in':logged_in})
|
|
|