152 lines
5.7 KiB
Python
152 lines
5.7 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 datetime
|
|
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_agendas(request,code):
|
|
if code =='':
|
|
query = "SELECT * FROM p_agenda where actif = 1 order by code;"
|
|
results = request.dbsession.execute(query).fetchall()
|
|
else:
|
|
query = "SELECT * FROM p_agenda where code = :code;"
|
|
results = request.dbsession.execute(query, {'code': code}).first()
|
|
return results
|
|
|
|
def get_rendez_vous(request, itc):
|
|
d = datetime.datetime.today()
|
|
d = d - dateutil.relativedelta.relativedelta(months=2)
|
|
# début du mois M-2
|
|
datedeb = d.strftime('%Y-%m-01')
|
|
|
|
# lire les rdv de l'ITC
|
|
query = """
|
|
(SELECT CONCAT(l.societe,"-OS-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM ordres_lig l
|
|
INNER JOIN ordres 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)
|
|
UNION
|
|
(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)
|
|
UNION
|
|
(SELECT CONCAT(l.societe,"-RD-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM rdvous_lig l
|
|
INNER JOIN rdvous 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_don(request, mbr_id, don_id):
|
|
query = "DELETE FROM mbr_dons WHERE mbr_id = :mbr_id and don_id = :don_id;"
|
|
execute_query(request, query, {'mbr_id': mbr_id, 'don_id': don_id})
|
|
|
|
def update_don(request, mbr_id, don_id, new_values):
|
|
# formater les champs
|
|
s = ''
|
|
for param in new_values.keys():
|
|
if param == 'date':
|
|
ddate = datetime.strptime(new_values['date'], '%d/%m/%Y')
|
|
new_values['date'] = ddate.strftime("%Y/%m/%d")
|
|
if s:
|
|
s += ",%s=:%s" % (param, param)
|
|
else:
|
|
s = "%s=:%s" % (param, param)
|
|
|
|
if don_id == '0':
|
|
new_values['mbr_id'] = mbr_id
|
|
query = "INSERT INTO mbr_dons SET %s" % s
|
|
else:
|
|
new_values['mbr_id'] = mbr_id
|
|
new_values['don_id'] = don_id
|
|
query = "UPDATE mbr_dons SET %s WHERE mbr_id = :mbr_id and don_id = :don_id;" % s
|
|
execute_query(request, query, new_values)
|
|
|
|
def update_journal(request, jnl, no_id, new_values):
|
|
# formater les champs
|
|
s = ''
|
|
for param in new_values.keys():
|
|
if param == 'date':
|
|
ddate = datetime.strptime(new_values['date'], '%d/%m/%Y')
|
|
new_values['date'] = ddate.strftime("%Y/%m/%d")
|
|
if s:
|
|
s += ",%s=:%s" % (param, param)
|
|
else:
|
|
s = "%s=:%s" % (param, param)
|
|
|
|
if no_id == '0':
|
|
if jnl == 'C':
|
|
query = "INSERT INTO jnl_caisse SET %s" % s
|
|
else:
|
|
query = "INSERT INTO jnl_caisse SET %s" % s
|
|
else:
|
|
new_values['no_id'] = no_id
|
|
if jnl == 'C':
|
|
query = "UPDATE jnl_caisse SET %s WHERE no_id = :no_id;" % s
|
|
else:
|
|
query = "UPDATE jnl_banque SET %s WHERE no_id = :no_id;" % s
|
|
|
|
execute_query(request, query, new_values)
|
|
|
|
def delete_membre(request, mbr_id):
|
|
query = "DELETE FROM membres WHERE mbr_id = :mbr_id ;"
|
|
execute_query(request, query, {'mbr_id': mbr_id})
|
|
|
|
def insert_gift_to_account(request, libelle_esp, libelle_chq):
|
|
import pdb;pdb.set_trace()
|
|
# genere une écriture dans le journal de caisse pour les espèces
|
|
query = "SELECT sum(montant) as total FROM mbr_dons where valide_le IS NULL and mode='ESPECE';"
|
|
result = request.dbsession.execute(query).first()
|
|
if result.total > 0:
|
|
query = """INSERT INTO jnl_caisse (date, compte, libelle, recette, valide_le)
|
|
VALUES (CURRENT_DATE, '7540', :libelle_esp, :total_esp, CURRENT_DATE);"""
|
|
execute_query(request, query, {'libelle_esp': libelle_esp, 'total_esp': result.total})
|
|
|
|
# genere une écriture dans le journal de banque pour les chèques
|
|
query = "SELECT sum(montant) as total FROM mbr_dons where valide_le IS NULL and mode='CHEQUE';"
|
|
result = request.dbsession.execute(query).first()
|
|
if result.total > 0:
|
|
query = """INSERT INTO jnl_banque (date, compte, libelle, recette, valide_le)
|
|
VALUES (CURRENT_DATE, '7540', :libelle_chq, :total_chq, CURRENT_DATE);"""
|
|
execute_query(request, query, {'libelle_chq': libelle_chq, 'total_chq': result.total})
|
|
|
|
# valider les dons
|
|
query = "UPDATE mbr_dons SET valide_le = CURRENT_DATE WHERE valide_le IS NULL;"
|
|
execute_query(request, query, {})
|
|
|
|
def update_membre(request, mbr_id, new_values):
|
|
# formater les champs
|
|
s = ''
|
|
for param in new_values.keys():
|
|
if param == 'nom':
|
|
new_values['nom'] = new_values['nom'].upper()
|
|
if param == 'ville':
|
|
new_values['ville'] = new_values['ville'].upper()
|
|
if s:
|
|
s += ",%s=:%s" % (param, param)
|
|
else:
|
|
s = "%s=:%s" % (param, param)
|
|
|
|
if mbr_id == '0':
|
|
query = "INSERT INTO membres SET %s" % s
|
|
else:
|
|
new_values['mbr_id'] = mbr_id
|
|
query = "UPDATE membres SET %s WHERE mbr_id = :mbr_id;" % s
|
|
execute_query(request, query, new_values)
|
|
|