initial upload

This commit is contained in:
2023-06-22 10:34:18 +02:00
parent 6df897b44d
commit 5c621cf669
1030 changed files with 355394 additions and 49 deletions

View File

@@ -0,0 +1,655 @@
# -*- coding: utf8 -*-
from datetime import *
from dateutil.relativedelta import *
from .default import (
execute_query,
update_eleve_solde,
)
def get_rendez_vous_moniteur(request, agence, cd_mon, datedeb, datefin):
# lire les rdv de l'ITC
query = """
SELECT c.DATE, c.noplan, c.qte, c.nom, c.cd_cli, c.no_ligne, c.date_valeur, c.ref, c.statut, c.comment, c.lieu_rdv, c.circuit, c.fin_reservation, e.NOM_ENTREPRISE
FROM eleves_cpt c INNER JOIN eleves e ON c.cd_cli = e.cd_cli
WHERE c.agence=:agence AND c.date >= :datedeb AND c.date <= :datefin AND c.cd_mon=:cd_mon AND c.noplan AND c.qte
ORDER BY c.agence, c.date, c.noplan;"""
results = request.dbsession.execute(
query, {'agence': agence, 'datedeb': datedeb, 'datefin': datefin, 'cd_mon': cd_mon}).fetchall()
return results
def get_rendez_vous_annules(request, agence, cd_mon, datedeb, datefin):
# lire les rdv annulés
query = """
SELECT c.DATE, c.noplan, c.qte, c.nom, c.cd_cli, c.no_ligne, c.ref, c.statut, c.comment, c.cd_uti, c.circuit, c.intitule, e.NOM_ENTREPRISE
FROM eleves_cpt c INNER JOIN eleves e ON c.cd_cli = e.cd_cli
WHERE c.agence=:agence AND c.date >= :datedeb AND c.date <= :datefin AND c.cd_cli > 100000 AND c.cd_mon=:cd_mon AND c.intitule LIKE "%h annulé%" AND c.qte=0
ORDER BY c.agence, c.date;"""
results = request.dbsession.execute(
query, {'agence': agence, 'datedeb': datedeb, 'datefin': datefin, 'cd_mon': cd_mon}).fetchall()
return results
def get_rendezvous_by_noligne(request, no_ligne):
# lire le rdv B
query = """
SELECT c.*, e.TYPE_ENTREPRISE, e.NOM_ENTREPRISE
FROM eleves_cpt c INNER JOIN eleves e ON c.cd_cli = e.cd_cli
WHERE c.no_ligne = :no_ligne;"""
results = request.dbsession.execute(query, {'no_ligne': no_ligne}).first()
return results
def get_statuts_lecon(request):
query = "CALL spGet_P_TABLES_byCODE('P_STATUTS_LECON', 0);"
results = request.dbsession.execute(query).fetchall()
return results
def update_rdvb(request, no_ligne, old_cd_cli, cd_cli, date, heure, qte, ref, cd_mon, agence, comment, statut, typeHeure, nDelai, cd_cli_old, cd_uti):
query = "CALL spUpd_PLANNING_B(:no_ligne,:old_cd_cli,:cd_cli,:date,:heure,:qte,:ref,:cd_mon,:agence,0,:comment,:statut,:typeHeure,:nDelai,:cd_cli_old,:cd_uti);"
execute_query(request, query, {'no_ligne': no_ligne, 'old_cd_cli': old_cd_cli, 'cd_cli': cd_cli, 'date': date, 'heure': heure, 'qte': qte, 'ref': ref,
'cd_mon': cd_mon, 'agence': agence, 'comment': comment, 'statut': statut, 'typeHeure': typeHeure,
'nDelai': nDelai, 'cd_cli_old': cd_cli_old, 'cd_uti': cd_uti})
query = "CALL spUpd_PLANNING_B_VALORISER(:cd_cli);"
execute_query(request, query, {'cd_cli': cd_cli})
update_eleve_solde(request, cd_cli)
def delete_eleve_cpt(request, no_ligne, cd_cli, noplan, statut, cd_uti):
query = "UPDATE eleves_cpt SET ref=NULL,debit=0,mtval=0,qte=0,noplan=0,fin_reservation=NULL,intitule='RDV de :noplan h annulé (:statut)', cd_uti=:cd_uti WHERE no_ligne=:no_ligne;"
execute_query(request, query, {
'no_ligne': no_ligne, 'noplan': noplan, 'statut': statut, 'cd_uti': cd_uti})
query = "CALL spUpd_PLANNING_B_VALORISER(:cd_cli);"
execute_query(request, query, {'cd_cli': cd_cli})
update_eleve_solde(request, cd_cli)
def validate_rdvb(request, no_ligne):
query = """ UPDATE eleves_cpt SET DATE_VALEUR=CURRENT_DATE() WHERE no_ligne=:no_ligne """
execute_query(request, query, {'no_ligne': no_ligne})
def get_pla_stage_by_semaine(request, type_stage, semaine, groupe):
query = "SELECT * FROM pla_stage WHERE TYPE=:type AND SEMAINE=:semaine AND GROUPE=:groupe;"
results = request.dbsession.execute(
query, {"semaine": semaine, 'groupe': groupe, 'type': type_stage}).first()
return results
def get_pla_moto_by_date(request, type_stage, groupe, date):
query = "SELECT * FROM pla_moto WHERE TYPE=:type AND DATE=:date AND GROUPE=:groupe;"
results = request.dbsession.execute(
query, {"date": date, 'groupe': groupe, 'type': type_stage}).first()
return results
def get_pla_moto_ligne_by_date(request, type_stage, groupe, date, cd_cli):
query = "SELECT * FROM pla_moto_lignes WHERE TYPE=:type AND DATE=:date AND GROUPE=:groupe AND CD_CLI=:cd_cli;"
results = request.dbsession.execute(
query, {"date": date, 'groupe': groupe, 'type': type_stage, 'cd_cli': cd_cli}).first()
return results
def insert_pla_stage(request, new_values):
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
query = "INSERT pla_stage SET %s ;" % s
execute_query(request, query, new_values)
def insert_pla_moto(request, new_values):
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
query = "INSERT pla_moto SET %s ;" % s
execute_query(request, query, new_values)
def duplicate_pla_moto_by_semaine(request, type_stage, start, dest, cd_uti):
query = "CALL spDUPP_PLA_MOTO_byWEEK(:type,:start,:dest,:cd_uti);"
execute_query(request, query, {
'type': type_stage, 'start': start, 'dest': dest, 'cd_uti': cd_uti})
def update_pla_stage(request, new_values, type_stage, semaine, groupe):
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
new_values['TYPE'] = type_stage
new_values['SEMAINE'] = semaine
new_values['GROUPE'] = groupe
query = "UPDATE pla_stage SET %s WHERE SEMAINE=:SEMAINE AND TYPE=:TYPE AND GROUPE=:GROUPE;" % s
execute_query(request, query, new_values)
def update_pla_motos(request, type_stage, date, groupe, new_values):
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
new_values['TYPE'] = type_stage
new_values['DATE'] = date
new_values['GROUPE'] = groupe
query = "UPDATE pla_moto SET %s WHERE DATE=:DATE AND TYPE=:TYPE AND GROUPE=:GROUPE;" % s
execute_query(request, query, new_values)
# results = request.dbsession.execute(query,new_values)
# return results
def update_motos_lig(request, no_ligne, new_values):
s = ''
for param in new_values.keys():
if param == "STATUT":
new_values['STATUT'] = int(new_values['STATUT'])
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
new_values['no_ligne'] = no_ligne
query = "UPDATE pla_moto_lignes SET %s WHERE no_ligne=:no_ligne" % s
execute_query(request, query, new_values)
def update_motos_lig_avec_control(request, params):
query1 = "CALL spUpd_PLA_MOTO_LIG(:TYPE, :DATE, :GROUPE,:OLD_CD_CLI, :CD_CLI, :STATUT, :LIEU,:COMMENT, :QTE, :REF, :Route ,:AGENCE, :SOLDE, :LIGNE_CPT, :CD_UTI)"
execute_query(request, query1, params)
if params['TYPE'] == "E":
query_val = "CALL spUpd_PLANNING_B_VALORISER(:CD_CLI)"
else:
query_val = "CALL spUpd_PLANNING_A_VALORISER(:CD_CLI, :REF);"
execute_query(request, query_val, params)
def insert_motos_lig(request, new_values):
s = ''
for param in new_values.keys():
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
query = "INSERT INTO pla_moto_lignes SET %s ;" % s
execute_query(request, query, new_values)
def update_motos_lig_circuit(request, type, date, cd_cli, cd_circuit):
# maj le code moniteur circuit
query = "UPDATE pla_moto_lignes SET cd_circuit = :cd_circuit WHERE type = :type and date = :date and cd_cli = :cd_cli AND valide = 'N';"
execute_query(request, query, {
'type': type, 'date': date, 'cd_cli': cd_cli, 'cd_circuit': cd_circuit})
def update_motos_lig_cd_mon(request, type, date, cd_cli, cd_mon):
# maj le code moniteur
query = "UPDATE pla_moto_lignes SET cd_mon = :cd_mon WHERE type = :type and date = :date and cd_cli = :cd_cli AND valide = 'N';"
execute_query(request, query, {
'type': type, 'date': date, 'cd_cli': cd_cli, 'cd_mon': cd_mon})
def update_stages_lig(request, no_ligne, new_values, isInsert=False):
type = no_ligne[0:1]
semaine = no_ligne[1:7]
groupe = no_ligne[7:8]
cd_cli = no_ligne[8:14]
s = ''
for param in new_values.keys():
if param == "STATUT":
new_values['STATUT'] = int(new_values['STATUT'])
if s:
s += ",%s=:%s" % (param, param)
else:
s = "%s=:%s" % (param, param)
new_values['TYPE'] = type
new_values['SEMAINE'] = semaine
new_values['GROUPE'] = groupe
if isInsert:
# query = "INSERT INTO pla_stage_lignes SET %s ,TYPE=:TYPE,SEMAINE=:SEMAINE,GROUPE=:GROUPE;"% s
query = "CALL spUpd_PLA_STAGE_LIG(:TYPE, :SEMAINE, :GROUPE, 0, :CD_CLI, :NOM, '', :REF, :STATUT, :AGENCE, 0, 0, :CD_UTI)"
else:
new_values['CD_CLI_OLD'] = cd_cli
# query = "UPDATE pla_stage_lignes SET %s WHERE TYPE=:TYPE and SEMAINE=:SEMAINE and GROUPE=:GROUPE and CD_CLI=:CD_CLI_OLD" % s
query = "CALL spUpd_PLA_STAGE_LIG(:TYPE, :SEMAINE, :GROUPE, :CD_CLI_OLD, :CD_CLI, :NOM, '', :REF, :STATUT, :AGENCE, 0, :LIGNE_CPT, :CD_UTI)"
execute_query(request, query, new_values)
def get_stage_lig_by_date(request, type_stage, date_stage, groupe):
# lire toutes les lignes stage
if type_stage == 'M':
query = """
SELECT l.*, s.debut, s.fin, e.credit-e.debit as solde, e.cree_le, e.h1plateau_le, e.permis_demande, e.formule, e.dossier_date,
CONCAT(e.heures_prises,'/',e.hroute_prises,' h') as heures, e.TR_P_NB, e.TR_R_NB, e.TR_P_DATE, e.TR_R_DATE, e.perime_le FROM pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type_stage AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.groupe=:groupe ORDER BY l.cd_cli;"""
results = request.dbsession.execute(
query, {'type_stage': type_stage, 'date_stage': date_stage, 'groupe': groupe}).fetchall()
elif type_stage == 'B':
# stage B
if groupe == 'A' or groupe == 'B':
query = """
SELECT l.*, s.debut, s.fin, e.credit-e.debit as solde, e.dossier_date, e.niveau, e.formule, e.filiere, e.nom_entreprise, e.cd_mon AS CD_REF,
CONCAT(e.heures_prises,'/',e.heures_prevues,' h') as heures, e.perime_le FROM pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type_stage AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.groupe IN ('A','B') ORDER BY l.cd_cli;"""
else:
query = """
SELECT l.*, s.debut, s.fin, e.credit-e.debit as solde, e.dossier_date, e.niveau, e.formule, e.filiere, e.nom_entreprise, e.cd_mon AS CD_REF,
CONCAT(e.heures_prises,'/',e.heures_prevues,' h') as heures, e.perime_le FROM pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type_stage AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.groupe=:groupe ORDER BY l.cd_cli;"""
results = request.dbsession.execute(
query, {'type_stage': type_stage, 'date_stage': date_stage, 'groupe': groupe}).fetchall()
else:
query = """
SELECT l.*, s.debut, s.fin, e.credit-e.debit as solde, e.cree_le, e.permis_demande, e.formule, e.dossier_date,
CONCAT(e.heures_prises,'/',e.hroute_prises,' h') as heures, e.TR_P_DATE, e.TR_R_DATE, e.perime_le FROM pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type_stage AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.groupe=:groupe ORDER BY l.cd_cli;"""
results = request.dbsession.execute(
query, {'type_stage': type_stage, 'date_stage': date_stage, 'groupe': groupe}).fetchall()
return results
def get_motos_lig_by_date(request, type, date_stage, groupe):
# lire les planning motos
if groupe == '':
query = """
SELECT l.*, e.credit-e.debit as solde, e.dossier_date, e.niveau, e.formule, e.filiere, e.nom_entreprise, e.cd_mon,
CONCAT(e.heures_prises,'/',e.hroute_prises,' h') as heures, e.perime_le, e.tr_p_ok FROM pla_moto_lignes l
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type AND l.date = :date_stage ORDER BY l.cd_cli;"""
else:
query = """
SELECT l.*, e.credit-e.debit as solde, e.cree_le, e.h1plateau_le, e.permis_demande, e.formule, e.dossier_date, e.nom_entreprise, e.niveau, e.filiere, e.cd_mon,
CONCAT(e.heures_prises,'h - ',e.hroute_prises,'h') as heures, e.TR_P_NB, e.TR_R_NB, e.TR_P_DATE, e.TR_R_DATE, e.perime_le, e.tr_p_ok FROM pla_moto_lignes l
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type AND l.date = :date_stage AND l.groupe=:groupe ORDER BY l.cd_cli;"""
results = request.dbsession.execute(
query, {'type': type, 'date_stage': date_stage, 'groupe': groupe}).fetchall()
return results
def get_motos_lig_by_noligne(request, no_ligne):
# lire les stage B
query = """
SELECT l.*, e.TYPE_ENTREPRISE, e.NOM_ENTREPRISE FROM pla_moto_lignes l
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.no_ligne = :no_ligne;"""
results = request.dbsession.execute(query, {'no_ligne': no_ligne}).first()
return results
def get_lieux_by_type(request, type_groupe):
query = """ SELECT * from p_lieux WHERE TYPE=:type_groupe;"""
results = request.dbsession.execute(
query, {'type_groupe': type_groupe}).fetchall()
return results
def get_stages_lig_by_noligne(request, no_ligne):
# lire les stage B
type = no_ligne[0:1]
semaine = no_ligne[1:7]
groupe = no_ligne[7:8]
cd_cli = no_ligne[8:14]
query = """
SELECT l.*, e.TYPE_ENTREPRISE, e.NOM_ENTREPRISE FROM pla_stage_lignes l
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type and l.semaine = :semaine and l.groupe = :groupe and l.cd_cli = :cd_cli;"""
results = request.dbsession.execute(
query, {'type': type, 'semaine': semaine, 'groupe': groupe, 'cd_cli': cd_cli}).first()
return results
def get_stage_lig_by_groupe(request, type, semaine, groupe):
# lire les stage B
query = """
SELECT l.*, s.debut, s.fin, e.credit-e.debit as solde, e.dossier_date, e.niveau, e.formule, e.filiere,
CONCAT(e.heures_prises,'/',e.heures_prevues) as heures, e.perime_le FROM pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
INNER JOIN eleves e ON l.cd_cli = e.cd_cli
WHERE l.type = :type and l.semaine = :semaine and l.groupe = :groupe;"""
results = request.dbsession.execute(
query, {'type': type, 'semaine': semaine, 'groupe': groupe}).fetchall()
return results
def get_stage_lig_by_cd_cli(request, type, cd_cli):
# lire les stage B
query = """
SELECT l.* FROM pla_stage_lignes l WHERE l.type = :type and l.cd_cli = :cd_cli;"""
results = request.dbsession.execute(
query, {'type': type, 'cd_cli': cd_cli}).first()
return results
def stage_lig_by_eleve(request, cd_cli, type_stage, semaine, groupe):
query = """ SELECT * FROM pla_stage_lignes WHERE type = :type and cd_cli = :cd_cli and groupe=:groupe and semaine=:semaine; """
results = request.dbsession.execute(
query, {'type': type_stage, 'cd_cli': cd_cli, 'semaine': semaine, 'groupe': groupe}).fetchall()
return results
def motos_lig_by_eleve(request, cd_cli, type_stage, date, groupe):
query = """ SELECT * FROM pla_moto_lignes WHERE type = :type and cd_cli = :cd_cli and groupe=:groupe and date=:date; """
results = request.dbsession.execute(
query, {'type': type_stage, 'cd_cli': cd_cli, 'date': date, 'groupe': groupe}).fetchall()
return results
def get_stages(request, type_stage):
TODAY = date.today()
# début = aujourd'hui - 1 semaines
d = TODAY + relativedelta(weeks=-6)
datedeb = d.strftime('%Y-%m-01')
# fin = aujourd'hui + 2 mois
d = TODAY + relativedelta(months=+6)
datefin = d.strftime('%Y-%m-01')
# lire les stages
query = "SELECT * FROM pla_stage WHERE type = :type_stage AND debut >= :datedeb AND debut <= :datefin ORDER BY debut"
results = request.dbsession.execute(
query, {'type_stage': type_stage, 'datedeb': datedeb, 'datefin': datefin}).fetchall()
return results
def get_moniteurs_by_aff(request, agence, date_deb, date_fin, planning='ALL'):
query = "CALL spGet_MONITEURS_AFF_byAGENCE(:agence, :date_deb, :date_fin, :planning)"
results = request.dbsession.execute(
query, {'agence': agence, 'date_deb': date_deb, 'date_fin': date_fin, 'planning': planning}).fetchall()
return results
def get_moniteurs_by_activite(request, date_deb, date_fin, act1, act2):
# moniteurs ayant une activite en cours + dans le futur dans lagence
query = """
SELECT moniteurs.* FROM eleves_cpt
INNER JOIN moniteurs ON moniteurs.cd_mon = eleves_cpt.cd_mon
WHERE (eleves_cpt.cd_cli=:act1 OR eleves_cpt.cd_cli=:act2) AND eleves_cpt.date >= :date_deb AND eleves_cpt.date <=:date_fin AND qte
GROUP BY cd_mon ORDER BY nom;"""
results = request.dbsession.execute(
query, {'act1': act1, 'act2': act2, 'date_deb': date_deb, 'date_fin': date_fin}).fetchall()
return results
def get_motos(request, type):
TODAY = date.today()
# début = aujourd'hui - 1 semaines
d = TODAY + relativedelta(weeks=-4)
datedeb = d.strftime('%Y-%m-01')
# fin = aujourd'hui + 2 mois
d = TODAY + relativedelta(months=+6)
datefin = d.strftime('%Y-%m-01')
# lire les plannings de type motos
query = "SELECT * FROM pla_moto WHERE type=:type AND date >= :datedeb AND date <= :datefin ORDER BY date"
results = request.dbsession.execute(
query, {'type': type, 'datedeb': datedeb, 'datefin': datefin}).fetchall()
return results
def get_motos_byId(request, type, date, groupe):
# lire le planning MOTO par son ID : type - date - groupe
query = "SELECT * FROM pla_moto WHERE type=:type AND date = :date AND groupe = :groupe;"
results = request.dbsession.execute(
query, {'type': type, 'date': date, 'groupe': groupe}).first()
return results
def update_stageb_lig_moniteur(request, date_stage, cd_cli, cd_stage):
# maj les stages B
query = """
UPDATE pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
SET l.cd_mon = :cd_stage
WHERE l.type = 'B' AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.cd_cli = :cd_cli AND l.valide = 'N';"""
execute_query(request, query, {
'date_stage': date_stage, 'cd_cli': cd_cli, 'cd_stage': cd_stage})
def update_stageb_lig_circuit(request, date_stage, cd_cli, cd_circuit):
# maj les stages B
query = """
UPDATE pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
SET l.cd_circuit = :cd_circuit
WHERE l.type = 'B' AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.cd_cli = :cd_cli AND l.valide = 'N';"""
execute_query(request, query, {
'date_stage': date_stage, 'cd_cli': cd_cli, 'cd_circuit': cd_circuit})
def update_stageb_lig_seance(request, date_stage, cd_cli, seance):
# maj les stages B
query = """
UPDATE pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
SET l.seance = :seance
WHERE l.type = 'B' AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.cd_cli = :cd_cli AND l.valide = 'N';"""
execute_query(request, query, {
'date_stage': date_stage, 'cd_cli': cd_cli, 'seance': seance})
def update_stage_lig_statut(request, type, date_stage, cd_cli):
# maj les stages B
query = """
UPDATE pla_stage_lignes l
INNER JOIN pla_stage s ON s.type = l.type AND s.semaine = l.semaine AND s.groupe = l.groupe
SET l.statut = 1
WHERE l.type = :type AND date(s.debut) <= :date_stage AND s.fin >= :date_stage AND l.cd_cli = :cd_cli AND l.statut = 0 ;"""
execute_query(request, query, {'type': type,
'date_stage': date_stage, 'cd_cli': cd_cli})
def update_stage_lig_by_cd_cli(request, type_stage, semaine, groupe, cd_cli, statut, valide, agence, ligne_cpt, libelle, date_valeur):
query = """ UPDATE pla_stage_lignes SET statut=:statut, valide=:valide, agence=:agence WHERE type=:type AND semaine=:semaine AND groupe=:groupe AND cd_cli=:cd_cli; """
execute_query(request, query, {'type': type_stage, 'semaine': semaine, 'groupe': groupe,
'cd_cli': cd_cli, 'statut': statut, 'valide': valide, 'agence': agence})
query2 = """ CALL spUPD_ELEVES_VALO_STAGE(:ligne_cpt, :statut, :agence)"""
execute_query(request, query2, {
'statut': statut, 'ligne_cpt': ligne_cpt, 'agence': agence})
# update eleve_cpt
query3 = """ UPDATE eleves_cpt SET INTITULE=:libelle,AGENCE=:agence,STATUT=:statut,DATE_VALEUR=:date_valeur WHERE no_ligne=:ligne_cpt ;"""
execute_query(request, query3, {'libelle': libelle, 'statut': statut,
'ligne_cpt': ligne_cpt, 'agence': agence, 'date_valeur': date_valeur})
def update_motos_lig_by_cd_cli(request, type_planning, date, groupe, cd_cli, statut, valide, agence, ligne_cpt, ref, cd_mon):
query = """ UPDATE pla_moto_lignes SET statut=:statut, valide=:valide, agence=:agence WHERE type=:type AND date=:date AND groupe=:groupe AND cd_cli=:cd_cli; """
execute_query(request, query, {'type': type_planning, 'date': date, 'groupe': groupe,
'cd_cli': cd_cli, 'statut': statut, 'valide': valide, 'agence': agence})
if type_planning == "E":
query2 = """ CALL spUpd_PLANNING_B_VALORISER(:cd_cli,)"""
execute_query(request, query2, {'cd_cli': cd_cli})
else:
query2 = """ CALL spUpd_PLANNING_A_VALORISER(:cd_cli, :ref)"""
execute_query(request, query2, {'cd_cli': cd_cli, 'ref': ref, })
# update eleve_cpt
query3 = """ UPDATE eleves_cpt SET fin_reservation=NULL,STATUT=:statut,DATE_VALEUR=CURRENT_DATE() WHERE no_ligne=:ligne_cpt ;"""
execute_query(request, query3, {'statut': statut, 'ligne_cpt': ligne_cpt})
# post validate
if type_planning == "A":
query4 = """ CALL spUpd_ATTENTES('2R', :cd_cli, 1, True, :cd_mon,'AEM') ;"""
execute_query(request, query4, {'cd_cli': cd_cli, 'cd_mon': cd_mon})
elif type_planning == "D":
query4 = """ CALL spUpd_ATTENTES(ETG, :cd_cli, 1, True, :cd_mon,'AEM') """
execute_query(request, query4, {'cd_cli': cd_cli, 'cd_mon': cd_mon})
elif type_planning == "E":
query4 = """ CALL spUpd_ATTENTES(B, :cd_cli, 1, True, :cd_mon,'AEM') """
execute_query(request, query4, {'cd_cli': cd_cli, 'cd_mon': cd_mon})
def update_pla_stage_by_semaine(request, type_stage, semaine, groupe, agence, valide, cd_uti):
query = "UPDATE pla_stage SET AGENCE=:agence, VALIDE=:valide, CD_UTI=:cd_uti WHERE TYPE=:type AND SEMAINE=:semaine AND GROUPE=:groupe;"
execute_query(request, query, {"semaine": semaine, 'groupe': groupe,
'type': type_stage, 'agence': agence, 'valide': valide, 'cd_uti': cd_uti})
def update_pla_moto_by_date(request, type_stage, date, groupe, agence, valide, cd_uti):
query = "UPDATE pla_moto SET AGENCE=:agence, VALIDE=:valide, CD_UTI=:cd_uti WHERE TYPE=:type AND DATE=:date AND GROUPE=:groupe;"
execute_query(request, query, {"date": date, 'groupe': groupe,
'type': type_stage, 'agence': agence, 'valide': valide, 'cd_uti': cd_uti})
def delete_pla_stage_by_semaine(request, type_stage, semaine, groupe):
query = "DELETE FROM pla_stage WHERE TYPE=:type AND SEMAINE=:semaine AND GROUPE=:groupe;"
execute_query(request, query, {
"semaine": semaine, 'groupe': groupe, 'type': type_stage})
def delete_pla_moto_by_date(request, type_stage, date, groupe):
query = "DELETE FROM pla_moto WHERE TYPE=:type AND DATE=:date AND GROUPE=:groupe;"
execute_query(request, query, {"date": date,
'groupe': groupe, 'type': type_stage})
def controleSoldeResa(request, cd_cli, ref):
if cd_cli > 100000:
# Controler le solde de l'élève
query = "CALL spCTL_SOLDE_RESA(:cd_cli, :ref)"
results = request.dbsession.execute(query, {'cd_cli': cd_cli, 'ref': ref}).first()
return results.resultat
else:
return 0
def controleDateExport(request, dateRdv, agence):
date = datetime.strptime(dateRdv, '%Y-%m-%d').date()
# lire la date dernière export en compta
query = "SELECT * FROM p_agences WHERE code = 6;"
result = request.dbsession.execute(query).first()
if date <= result.DERN_EXPORT:
return False
else:
query = "SELECT * FROM p_agences WHERE code = :agence;"
result = request.dbsession.execute(query, {'agence': agence}).first()
if date <= result.DERN_VALIDATION:
return False
else:
return True
def controlAffectationEtAgece(request, cd_mon, dateRDV, heureRDV, agence):
query = """SELECT * FROM moniteurs_aff WHERE cd_mon = :cd_mon AND agence=:agence order by DATEF ASC"""
results = request.dbsession.execute(
query, {'cd_mon': cd_mon, 'agence': agence})
dateRDV = datetime.strptime(dateRDV, '%Y-%m-%d').date()
lastdate = None
for result in results:
lastdate = result
dateFin = result['DATEF']
dateDebut = result['DATED']
if dateDebut <= dateRDV <= dateFin:
isMatin = time(int(result['DMATIN']), 0) <= time(
int(heureRDV), 0) <= time(int(result['FMATIN']), 0)
isSoir = time(int(result['DSOIR']), 0) <= time(
int(heureRDV), 0) <= time(int(result['FSOIR']), 0)
if (isMatin or isSoir):
return True, result
else:
lastdate = None
return False, lastdate
def PlanningHasPending(request, type, date, groupe):
# y a-t-il des élèves provisoires dans le stage ?
query = "CALL spGet_PLA_MOTO_LIGNES(:type, :date, :groupe, -1)"
results = request.dbsession.execute(
query, {'type': type, 'date': date, 'groupe': groupe}).fetchall()
if len(results) > 0:
return True
else:
return False
def StageHasPending(request, type, semaine, groupe):
# y a-t-il des élèves provisoires dans le stage ?
query = "CALL spGet_PLA_STAGE_PROVISOIRES(:type, :semaine, :groupe)"
results = request.dbsession.execute(
query, {'type': type, 'semaine': semaine, 'groupe': groupe}).fetchall()
if len(results) > 0:
return True
else:
return False
def planningHasPending(request, type_stage, date, groupe):
query = "SELECT s.* FROM pla_moto_lignes s INNER JOIN eleves e ON s.cd_cli = e.cd_cli WHERE s.type=:type AND s.date=:date AND s.groupe=:groupe AND e.agence = 0 ORDER BY s.cd_cli;"
results = request.dbsession.execute(
query, {'type': type, 'date': date, 'groupe': groupe}).fetchall()
if len(results) > 0:
return True
else:
return False
def get_examens_prevu(request, cd_cli):
# lire l'examen prévu de l'élève
query = "SELECT * FROM examens_aff WHERE cd_cli = :cd_cli AND date > CURRENT_DATE();"
results = request.dbsession.execute(query, {'cd_cli': cd_cli}).first()
return results
def get_ref_by_stage_type(request, type_stage):
query = """ SELECT DISTINCT REF FROM pla_stage_lignes WHERE TYPE=:type AND REF IS NOT NULL AND REF != ""; """
results = request.dbsession.execute(query, {'type': type_stage}).fetchall()
return results
def get_ref_by_motos_type(request, type_stage):
query = """ SELECT DISTINCT REF FROM pla_moto_lignes WHERE TYPE=:type AND REF IS NOT NULL AND REF != ""; """
results = request.dbsession.execute(query, {'type': type_stage}).fetchall()
return results
def get_p_semaines(request, type_planning):
query = "CALL spGet_P_SEMAINES(:type_planning);"
results = request.dbsession.execute(query, {'type_planning': type_planning}).fetchall()
return results
def insert_semaine_type(request, cd_mon, noSemaine, dateDepart, nbSemaine, increment, agence, logged_in):
# insérer la semaine-type noSemaine par QTE fois à partir de la date dateDepart
n = 1
for i in range(nbSemaine):
# lire la semaine type
query = "SELECT * FROM p_semaine_type WHERE code_sem = :noSemaine;"
semaines = request.dbsession.execute(query, {'noSemaine': noSemaine}).fetchall()
for semaine in semaines:
dateType = semaine.dh_debut
dateHeure = dateDepart + relativedelta(days=dateType.weekday() - 1)
# l'heure existe déjà dans le planning ?
query = "SELECT DATE FROM eleves_cpt WHERE agence=:agence AND date=:date AND noplan=:noplan AND cd_mon=:cd_mon;"
item = request.dbsession.execute(query, {'agence': agence, "date": dateHeure.strftime('%Y-%m-%d'),
'noplan': dateType.hour, 'cd_mon': cd_mon}).fetchall()
if len(item) == 0:
# non, créer l'heure
query = """REPLACE INTO eleves_cpt (date, noplan, cd_cli, intitule, nom, qte, ref, cd_mon, agence, cd_uti) VALUES
(:date, :noplan, :cd_cli, :intitule, :intitule, :qte, :cd_cli, :cd_mon, :agence, :logged_in);"""
execute_query(request, query, {"date": dateHeure.strftime('%Y-%m-%d'),'noplan': dateType.hour,
'cd_cli': semaine.ACTIVITE, 'intitule': semaine.INTITULE, 'qte': semaine.qte,
'cd_mon': cd_mon, 'agence': agence, 'logged_in': logged_in} )
# changer de semaine
n = n + increment
dateDepart = dateDepart + relativedelta(days=7 * increment)
def delete_pla_moto_by_cd_cli(request, type_stage, groupe, date, cd_cli):
query = "DELETE FROM pla_moto_lignes WHERE TYPE=:type AND DATE=:date AND GROUPE=:groupe AND CD_CLI=:cd_cli; "
execute_query(request, query, {
"date": date, 'groupe': groupe, 'type': type_stage, 'cd_cli': cd_cli})
def valoriser_heure(request, cd_cli):
query = "CALL spUpd_PLANNING_B_VALORISER(:cd_cli);"
execute_query(request, query, {'cd_cli': cd_cli})
def validate_heure_rdvb(request, no_ligne, date, qte, statut, cd_cli, cd_mon, agence):
query = """ UPDATE eleves_cpt SET DATE_VALEUR=:date, fin_reservation=NULL, QTE=:qte, STATUT=:statut WHERE no_ligne=:no_ligne """
execute_query(request, query, {
'no_ligne': no_ligne, 'date': date, 'qte': qte, 'statut': statut})
if str(statut) == '8':
query2 = """ &quot;CALL spUpd_ATTENTES('B',:cd_cli, 1, True ,:cd_mon,'AEM') """
execute_query(request, query2, {'cd_cli': cd_cli, 'cd_mon': cd_mon})
query3 = """ CALL spUPD_LAST_VALIDATION(:agence,:date) """
execute_query(request, query3, {'agence': agence, 'date': date})
def get_eleve_cpt(request, date, agence):
query = """ SELECT * FROM eleves_cpt WHERE DATE=:date AND AGENCE=:agence AND NOPLAN <> 0 AND DATE_VALEUR is NULL"""
results = request.dbsession.execute(
query, {"date": date, 'agence': agence}).fetchall()
return results
def get_rendez_vous_b_debut_apres_now(request, agence, date):
datetimenow = datetime.now()
query = """ SELECT e.* FROM eleves_cpt e WHERE e.NoPlan <>0 AND e.REF IN ('HCB', 'HCB78') AND CONVERT(concat(CONVERT(e.DATE,DATE),' ',CONVERT(concat(e.NoPlan,':00:00'), TIME)), DATETIME) >= :datetime AND e.AGENCE = :agence AND e.DATE=:date;"""
results = request.dbsession.execute(
query, {'agence': agence, 'date': date, 'datetime': datetimenow}).fetchall()
return results