95 lines
4.8 KiB
Python
95 lines
4.8 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
|
|
import transaction
|
|
|
|
from dateutil.relativedelta import relativedelta
|
|
from .default import (
|
|
execute_query,
|
|
get_eleves_by_code,
|
|
)
|
|
from ..views.default import (
|
|
envoyerMail,
|
|
)
|
|
|
|
def get_tarifs(request, permis):
|
|
"""Lire les tarifs selon le permis"""
|
|
if permis == "B":
|
|
query = "SELECT REF, LIB, PUTTC FROM tarifs WHERE ref IN ('HCB','INTERNET','ECHECT','EXAM_CODE','RVP','CIRCUIT') order by fam, lib;"
|
|
elif permis == "B78":
|
|
query = "SELECT REF, LIB, PUTTC FROM tarifs WHERE ref IN ('HCB78','INTERNET','ECHECT','EXAM_CODE','RVP','CIRCUIT') order by fam, lib;"
|
|
else:
|
|
query = "SELECT REF, LIB, PUTTC FROM tarifs WHERE ref IN ('HCA3','TA','INTERNET','ECHECT','EXAM_CODE') order by fam, lib;"
|
|
results = request.dbsession.execute(query, {})
|
|
return results.fetchall()
|
|
|
|
def ins_tickets(request, cd_cli, date_ope, reference, montant, autorisation, erreur, prochain_montant, reconduction):
|
|
|
|
# ajout d'une ligne dans la table tickets_cb
|
|
query = """INSERT INTO tickets_cb (date, cd_cli, ref_commande, montant, prochain_montant, autorisation, erreur)
|
|
VALUES (:date_ope, :cd_cli, :reference, :montant, :prochain_montant, :autorisation, :erreur);"""
|
|
execute_query(request, query, {'cd_cli':cd_cli, 'date_ope': date_ope.strftime('%Y-%m-%d %H:%M'), 'reference':reference,
|
|
'montant': montant, 'autorisation':autorisation, 'erreur':erreur, 'prochain_montant': prochain_montant})
|
|
|
|
#2e ou 3e réglement d'un abonnement ? oui, on ne créé pas d'écriture
|
|
if reconduction == '' and erreur == '00000':
|
|
# non, Créer une écriture de crédit dans le compte du client si OK
|
|
query = "CALL spINS_ELEVES_CREDIT_WEB(:cd_cli, :date_ope, :montant, :reference);"
|
|
execute_query(request, query, {'cd_cli':cd_cli, 'date_ope': date_ope.strftime('%Y-%m-%d'), 'montant': montant, 'reference':reference})
|
|
# réglement comptant ?
|
|
if prochain_montant > 0:
|
|
# non, créer 2e écriture de crédit dans le compte du client
|
|
date_suivante = date_ope + relativedelta(months=+1)
|
|
query = "CALL spINS_ELEVES_CREDIT_WEB(:cd_cli, :date_ope, :montant, :reference);"
|
|
execute_query(request, query, {'cd_cli':cd_cli, 'date_ope': date_suivante.strftime('%Y-%m-%d'), 'montant': prochain_montant, 'reference':reference})
|
|
# 3ème écriture
|
|
date_suivante = date_ope + relativedelta(months=+2)
|
|
query = "CALL spINS_ELEVES_CREDIT_WEB(:cd_cli, :date_ope, :montant, :reference);"
|
|
execute_query(request, query, {'cd_cli':cd_cli, 'date_ope': date_suivante.strftime('%Y-%m-%d'), 'montant': prochain_montant, 'reference':reference})
|
|
|
|
return None
|
|
|
|
def confirmerPass(request, cd_cli):
|
|
|
|
# controler la disponibilité des PASS
|
|
query = "SELECT * FROM pass_rousseau WHERE cd_cli IS NULL order by no_id;"
|
|
results = request.dbsession.execute(query, {}).first()
|
|
if results :
|
|
# lire le nom & prenom de l'élève
|
|
eleve = get_eleves_by_code(request, cd_cli)
|
|
nompren = "%s %s %s" % (eleve.CIVILITE, eleve.NOM, eleve.PRENOM)
|
|
|
|
# affecter le PASS au client
|
|
query = "UPDATE pass_rousseau SET cd_cli=:cd_cli, nom=:nom, code_postal=:code_postal, vendu_le=CURRENT_DATE() WHERE no_id=:no_id;"
|
|
execute_query(request, query, {'cd_cli':cd_cli, 'nom': eleve.NOMPREN, 'code_postal': eleve.CODEPOST, 'no_id': results.no_id})
|
|
|
|
# confirmer l'inscription du client
|
|
query = "UPDATE eleves_cpt SET fin_reservation = NULL WHERE cd_cli = :cd_cli AND ref = 'PASS_ROUSS';"
|
|
execute_query(request, query, {'cd_cli':cd_cli})
|
|
|
|
# cloturer la fiche du client
|
|
query = "UPDATE eleves SET cloture_le = CURRENT_DATE, statut = 90 WHERE cd_cli = :cd_cli;"
|
|
execute_query(request, query, {'cd_cli':cd_cli})
|
|
|
|
body = getMessageText(request, 'envoiPassRousseau', nompren, '', '', results.identifiant, results.mdp)
|
|
|
|
destinataires=[eleve.email, request.registry.settings['monaem.comm_email'],]
|
|
envoyerMail(request, destinataires, "Votre inscription au code en ligne : vos identifiants", body)
|
|
else:
|
|
# lire le nom & prenom de l'élève
|
|
eleve = get_eleves_by_code(request, cd_cli)
|
|
nompren = "%s %s %s" % (eleve.CIVILITE, eleve.NOM, eleve.PRENOM)
|
|
body = getMessageText(request, 'dispoPassRousseau', nompren, '', '', '', '')
|
|
|
|
destinataires=[eleve.email, request.registry.settings['monaem.comm_email'],]
|
|
envoyerMail(request, destinataires, "Votre inscription au code en ligne EN ATTENTE", body)
|
|
|
|
return None
|
|
|