def GetTracks(self):
        """ Récupération des données """
        # Critères
        listeID = None
        self.criteres = ""
        db = GestionDB.DB()
        req = """SELECT IDindividu, IDcivilite, nom, prenom, date_naiss 
        FROM individus ORDER BY nom, prenom;"""
        db.ExecuterReq(req)
        listeDonnees = db.ResultatReq()
        db.Close()
        # Récupération du dictionnaire des civilités
        dictCivilites = Civilites.GetDictCivilites()
        listeListeView = []
        for IDindividu, IDcivilite, nom, prenom, date_naiss in listeDonnees:
            dictTemp = {}
            dictTemp["IDindividu"] = IDindividu
            dictTemp["IDcivilite"] = IDcivilite
            dictTemp["nom"] = nom
            dictTemp["prenom"] = prenom
            dictTemp["date_naiss"] = date_naiss
            # Infos sur la civilité
            IDcivilite = dictTemp["IDcivilite"]
            if IDcivilite == None: IDcivilite = 1
            genre = dictCivilites[IDcivilite]["sexe"]
            categorieCivilite = dictCivilites[IDcivilite]["categorie"]
            civiliteLong = dictCivilites[IDcivilite]["civiliteLong"]
            civiliteAbrege = dictCivilites[IDcivilite]["civiliteAbrege"]
            nomImage = dictCivilites[IDcivilite]["nomImage"]
            dictTemp["genre"] = genre
            dictTemp["categorieCivilite"] = categorieCivilite
            dictTemp["civiliteLong"] = civiliteLong
            dictTemp["civiliteAbrege"] = civiliteAbrege
            dictTemp["nomImage"] = nomImage

            if dictTemp["date_naiss"] == None:
                dictTemp["age"] = None
            else:
                datenaissDD = datetime.date(
                    year=int(dictTemp["date_naiss"][:4]),
                    month=int(dictTemp["date_naiss"][5:7]),
                    day=int(dictTemp["date_naiss"][8:10]))
                datedujour = datetime.date.today()
                age = (datedujour.year - datenaissDD.year) - int(
                    (datedujour.month, datedujour.day) <
                    (datenaissDD.month, datenaissDD.day))
                dictTemp["age"] = age

            # Formatage sous forme de TRACK
            track = Track(dictTemp)
            listeListeView.append(track)

        return listeListeView
import Chemins
from Utils import UTILS_Adaptations
from Utils.UTILS_Traduction import _
import wx
from Ctrl import CTRL_Bouton_image
import sys
import FonctionsPerso
import wx.lib.agw.hypertreelist as HTL
import datetime
import GestionDB

from Utils import UTILS_Transports
from Utils import UTILS_Organisateur
from Utils import UTILS_Utilisateurs
from Data import DATA_Civilites
DICT_CIVILITES = DATA_Civilites.GetDictCivilites() 
from Data.DATA_Tables import DB_DATA as DICT_TABLES
from Ctrl.CTRL_Saisie_transport import DICT_CATEGORIES

COULEUR_FOND_REGROUPEMENT = (220, 220, 220)

            
def DateEngFr(textDate):
    text = str(textDate[8:10]) + "/" + str(textDate[5:7]) + "/" + str(textDate[:4])
    return text

def DateComplete(dateDD):
    """ Transforme une date DD en date complète : Ex : lundi 15 janvier 2008 """
    listeJours = (_(u"Lundi"), _(u"Mardi"), _(u"Mercredi"), _(u"Jeudi"), _(u"Vendredi"), _(u"Samedi"), _(u"Dimanche"))
    listeMois = (_(u"janvier"), _(u"février"), _(u"mars"), _(u"avril"), _(u"mai"), _(u"juin"), _(u"juillet"), _(u"août"), _(u"septembre"), _(u"octobre"), _(u"novembre"), _(u"décembre"))
    dateComplete = listeJours[dateDD.weekday()] + " " + str(dateDD.day) + " " + listeMois[dateDD.month-1] + " " + str(dateDD.year)
import traceback
import wx.lib.agw.pybusyinfo as PBI

import GestionDB
from Utils import UTILS_Dates
import FonctionsPerso
from Utils import UTILS_Impression_facture
from Dlg import DLG_Apercu_facture
from Utils import UTILS_Facturation
from Utils import UTILS_Titulaires

from Utils import UTILS_Config
SYMBOLE = UTILS_Config.GetParametre("monnaie_symbole", u"¤")

from Data import DATA_Civilites as Civilites
DICT_CIVILITES = Civilites.GetDictCivilites()

from Utils import UTILS_Interface
from ObjectListView import FastObjectListView, ColumnDefn, Filter, CTRL_Outils, PanelAvecFooter


class Track(object):
    def __init__(self, IDcompte_payeur, dictCompte):
        self.IDcompte_payeur = IDcompte_payeur
        self.dictCompte = dictCompte
        self.IDfamille = dictCompte["IDfamille"]
        self.total = dictCompte["total"]
        self.ventilation = dictCompte["ventilation"]
        self.du_periode = self.total - self.ventilation
        self.total_reports = dictCompte["total_reports"]
        self.du_total = self.total - self.ventilation + self.total_reports
    def CreationPDF(self,
                    nomDoc=FonctionsPerso.GenerationNomDoc(
                        "INSCRIPTION", "pdf"),
                    afficherDoc=True):
        dictChampsFusion = {}

        # Récupération des valeurs de base
        dictDonnees = DICT_DONNEES

        # Récupération des infos sur l'organisme
        DB = GestionDB.DB()
        req = """SELECT nom, rue, cp, ville, tel, fax, mail, site, num_agrement, num_siret, code_ape
        FROM organisateur
        WHERE IDorganisateur=1;"""
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        dictOrganisme = {}
        for nom, rue, cp, ville, tel, fax, mail, site, num_agrement, num_siret, code_ape in listeDonnees:
            dictOrganisme["nom"] = nom
            dictOrganisme["rue"] = rue
            dictOrganisme["cp"] = cp
            if ville != None: ville = ville.capitalize()
            dictOrganisme["ville"] = ville
            dictOrganisme["tel"] = tel
            dictOrganisme["fax"] = fax
            dictOrganisme["mail"] = mail
            dictOrganisme["site"] = site
            dictOrganisme["num_agrement"] = num_agrement
            dictOrganisme["num_siret"] = num_siret
            dictOrganisme["code_ape"] = code_ape
        DB.Close()

        date_editionDD = datetime.date.today()

        # Adresse
        self.IDindividu = self.dictInscription["IDINDIVIDU"]
        individus = UTILS_Titulaires.GetIndividus()
        self.dictInscription["INDIVIDU_RUE"] = individus[
            self.IDindividu]["rue"]
        self.dictInscription["INDIVIDU_CP"] = individus[self.IDindividu]["cp"]
        self.dictInscription["INDIVIDU_VILLE"] = individus[
            self.IDindividu]["ville"]

        # Nom Titulaires
        dictTitulaires = UTILS_Titulaires.GetTitulaires(listeIDfamille=[
            self.IDfamille,
        ])
        self.dictInscription["FAMILLE_NOM"] = dictTitulaires[
            self.IDfamille]["titulairesSansCivilite"]

        # Civilité
        dictCivilites = Civilites.GetDictCivilites()
        if self.dictInscription["IDCIVILITE"] == None or self.dictInscription[
                "IDCIVILITE"] == "":
            IDcivilite = 1
        else:
            IDcivilite = self.dictInscription["IDCIVILITE"]
        self.dictInscription["INDIVIDU_GENRE"] = dictCivilites[IDcivilite][
            "sexe"]
        self.dictInscription["INDIVIDU_CIVILITE_LONG"] = dictCivilites[
            IDcivilite]["civiliteLong"]
        self.dictInscription["INDIVIDU_CIVILITE_COURT"] = dictCivilites[
            IDcivilite]["civiliteAbrege"]

        # Date de naissance
        if self.dictInscription["INDIVIDU_DATE_NAISS"] == None:
            self.dictInscription["INDIVIDU_AGE"] = None
        else:
            datenaissDD = datetime.date(
                year=int(self.dictInscription["INDIVIDU_DATE_NAISS"][:4]),
                month=int(self.dictInscription["INDIVIDU_DATE_NAISS"][5:7]),
                day=int(self.dictInscription["INDIVIDU_DATE_NAISS"][8:10]))
            datedujour = datetime.date.today()
            age = (datedujour.year - datenaissDD.year) - int(
                (datedujour.month, datedujour.day) <
                (datenaissDD.month, datenaissDD.day))
            self.dictInscription["INDIVIDU_AGE"] = age

        # Insertion des données de base dans le dictValeurs
        IDfamille = self.IDfamille
        dictValeurs = {
            "IDfamille":
            self.IDfamille,
            "{IDFAMILLE}":
            str(self.IDfamille),
            "{DATE_EDITION}":
            DateEngFr(str(date_editionDD)),
            "{DATE_EDITION_LONG}":
            DateComplete(date_editionDD),
            "{DATE_EDITION_COURT}":
            DateEngFr(str(date_editionDD)),
            "{ORGANISATEUR_NOM}":
            dictOrganisme["nom"],
            "{ORGANISATEUR_RUE}":
            dictOrganisme["rue"],
            "{ORGANISATEUR_CP}":
            dictOrganisme["cp"],
            "{ORGANISATEUR_VILLE}":
            dictOrganisme["ville"],
            "{ORGANISATEUR_TEL}":
            dictOrganisme["tel"],
            "{ORGANISATEUR_FAX}":
            dictOrganisme["fax"],
            "{ORGANISATEUR_MAIL}":
            dictOrganisme["mail"],
            "{ORGANISATEUR_SITE}":
            dictOrganisme["site"],
            "{ORGANISATEUR_AGREMENT}":
            dictOrganisme["num_agrement"],
            "{ORGANISATEUR_SIRET}":
            dictOrganisme["num_siret"],
            "{ORGANISATEUR_APE}":
            dictOrganisme["code_ape"],
            "{IDINSCRIPTION}":
            FormateStr(self.dictInscription["IDINSCRIPTION"]),
            "{DATE_INSCRIPTION}":
            FormateDate(self.dictInscription["DATE_INSCRIPTION"]),
            "{EST_PARTI}":
            FormateBool(self.dictInscription["EST_PARTI"]),
            "{IDACTIVITE}":
            FormateStr(self.dictInscription["IDACTIVITE"]),
            "{ACTIVITE_NOM_LONG}":
            FormateStr(self.dictInscription["ACTIVITE_NOM_LONG"]),
            "{ACTIVITE_NOM_COURT}":
            FormateStr(self.dictInscription["ACTIVITE_NOM_COURT"]),
            "{IDGROUPE}":
            FormateStr(self.dictInscription["IDGROUPE"]),
            "{GROUPE_NOM_LONG}":
            FormateStr(self.dictInscription["GROUPE_NOM_LONG"]),
            "{GROUPE_NOM_COURT}":
            FormateStr(self.dictInscription["GROUPE_NOM_COURT"]),
            "{IDCATEGORIETARIF}":
            FormateStr(self.dictInscription["IDCATEGORIETARIF"]),
            "{NOM_CATEGORIE_TARIF}":
            FormateStr(self.dictInscription["NOM_CATEGORIE_TARIF"]),
            "{IDINDIVIDU}":
            FormateStr(self.dictInscription["IDINDIVIDU"]),
            "{INDIVIDU_CIVILITE_LONG}":
            FormateStr(self.dictInscription["INDIVIDU_CIVILITE_LONG"]),
            "{INDIVIDU_CIVILITE_COURT}":
            FormateStr(self.dictInscription["INDIVIDU_CIVILITE_COURT"]),
            "{INDIVIDU_GENRE}":
            FormateStr(self.dictInscription["INDIVIDU_GENRE"]),
            "{INDIVIDU_NOM}":
            FormateStr(self.dictInscription["INDIVIDU_NOM"]),
            "{INDIVIDU_PRENOM}":
            FormateStr(self.dictInscription["INDIVIDU_PRENOM"]),
            "{INDIVIDU_DATE_NAISS}":
            FormateDate(self.dictInscription["INDIVIDU_DATE_NAISS"]),
            "{INDIVIDU_AGE}":
            FormateStr(self.dictInscription["INDIVIDU_AGE"]),
            "{INDIVIDU_CP_NAISS}":
            FormateStr(self.dictInscription["INDIVIDU_CP_NAISS"]),
            "{INDIVIDU_VILLE_NAISS}":
            FormateStr(self.dictInscription["INDIVIDU_VILLE_NAISS"]),
            "{INDIVIDU_RUE}":
            FormateStr(self.dictInscription["INDIVIDU_RUE"]),
            "{INDIVIDU_CP}":
            FormateStr(self.dictInscription["INDIVIDU_CP"]),
            "{INDIVIDU_VILLE}":
            FormateStr(self.dictInscription["INDIVIDU_VILLE"]),
            "{INDIVIDU_PROFESSION}":
            FormateStr(self.dictInscription["INDIVIDU_PROFESSION"]),
            "{INDIVIDU_EMPLOYEUR}":
            FormateStr(self.dictInscription["INDIVIDU_EMPLOYEUR"]),
            "{INDIVIDU_TEL_DOMICILE}":
            FormateStr(self.dictInscription["INDIVIDU_TEL_DOMICILE"]),
            "{INDIVIDU_TEL_MOBILE}":
            FormateStr(self.dictInscription["INDIVIDU_TEL_MOBILE"]),
            "{INDIVIDU_FAX}":
            FormateStr(self.dictInscription["INDIVIDU_FAX"]),
            "{INDIVIDU_EMAIL}":
            FormateStr(self.dictInscription["INDIVIDU_EMAIL"]),
            "{INDIVIDU_TEL_PRO}":
            FormateStr(self.dictInscription["INDIVIDU_TEL_PRO"]),
            "{INDIVIDU_FAX_PRO}":
            FormateStr(self.dictInscription["INDIVIDU_FAX_PRO"]),
            "{INDIVIDU_EMAIL_PRO}":
            FormateStr(self.dictInscription["INDIVIDU_EMAIL_PRO"]),
            "{FAMILLE_NOM}":
            FormateStr(self.dictInscription["FAMILLE_NOM"]),
            "{FAMILLE_CAISSE}":
            FormateStr(self.dictInscription["FAMILLE_CAISSE"]),
            "{FAMILLE_REGIME}":
            FormateStr(self.dictInscription["FAMILLE_REGIME"]),
            "{FAMILLE_NUMALLOC}":
            FormateStr(self.dictInscription["FAMILLE_NUMALLOC"]),
        }

        # Récupération des infos de base individus et familles
        self.infosIndividus = UTILS_Infos_individus.Informations()
        dictValeurs.update(
            self.infosIndividus.GetDictValeurs(mode="famille",
                                               ID=IDfamille,
                                               formatChamp=True))
        dictValeurs.update(
            self.infosIndividus.GetDictValeurs(
                mode="individu",
                ID=self.dictInscription["IDINDIVIDU"],
                formatChamp=True))

        # Récupération des questionnaires
        Questionnaires = UTILS_Questionnaires.ChampsEtReponses(type="famille")
        for dictReponse in Questionnaires.GetDonnees(IDfamille):
            dictValeurs[dictReponse["champ"]] = dictReponse["reponse"]
            if dictReponse["controle"] == "codebarres":
                dictValeurs["{CODEBARRES_QUESTION_%d}" %
                            dictReponse["IDquestion"]] = dictReponse["reponse"]

        # Récupération du signataire
        infosSignataire = self.ctrl_signataire.GetInfos()
        if infosSignataire == None:
            dlg = wx.MessageDialog(
                self, _(u"Vous n'avez sélectionné aucun signataire !"),
                _(u"Annulation"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return False

        nomSignataire = infosSignataire["nom"]
        fonctionSignataire = infosSignataire["fonction"]
        sexeSignataire = infosSignataire["sexe"]
        if sexeSignataire == "H":
            genreSignataire = u""
        else:
            genreSignataire = u"e"

        # Récupération et transformation du texte d'intro
        if self.ctrl_intro.GetValue() == True:
            textIntro = self.ctrl_texte_intro.GetValue()
            textIntro = textIntro.replace("{SIGNATAIRE_GENRE}",
                                          genreSignataire)
            textIntro = textIntro.replace("{SIGNATAIRE_NOM}", nomSignataire)
            textIntro = textIntro.replace("{SIGNATAIRE_FONCTION}",
                                          fonctionSignataire)
            for key, valeur in dictValeurs.items():
                if key.startswith("{"):
                    if valeur == None: valeur = ""
                    if type(valeur) == int: valeur = str(valeur)
                    textIntro = textIntro.replace(key, valeur)
            dictValeurs["intro"] = textIntro
        else:
            dictValeurs["intro"] = None

        # Tableau
        dictValeurs["tableau"] = self.ctrl_tableau.GetValue()

        for key, valeur in dictValeurs.items():
            if valeur == None: valeur = ""
            dictChampsFusion[key] = valeur

        # Préparation des données pour une sauvegarde dans l'historique
        self.dictSave = {}
        self.dictSave["activite"] = self.dictInscription["ACTIVITE_NOM_LONG"]
        self.dictSave["groupe"] = self.dictInscription["GROUPE_NOM_LONG"]

        # Récupération du modèle
        IDmodele = self.ctrl_modele.GetID()
        if IDmodele == None:
            dlg = wx.MessageDialog(
                self,
                _(u"Vous devez obligatoirement sélectionner un modèle !"),
                _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Fabrication du PDF
        from Utils import UTILS_Impression_inscription
        UTILS_Impression_inscription.Impression(dictValeurs,
                                                IDmodele=IDmodele,
                                                nomDoc=nomDoc,
                                                afficherDoc=afficherDoc)

        return dictChampsFusion
Esempio n. 5
0
    def GetTracks(self):
        """ Récupération des données """
        # Récupération des données dans la base
        listeChamps = ("individus.IDindividu", "IDcivilite", "nom", "prenom",
                       "num_secu", "IDnationalite", "date_naiss",
                       "IDpays_naiss", "cp_naiss", "ville_naiss",
                       "adresse_auto", "rue_resid", "cp_resid", "ville_resid",
                       "IDcategorie_travail", "profession", "employeur",
                       "travail_tel", "travail_fax", "travail_mail",
                       "tel_domicile", "tel_mobile", "tel_fax", "mail", "etat")

        conditions = "etat IS NULL"
        if "archives" in self.dictParametres and self.dictParametres[
                "archives"] == True:
            conditions += " OR etat='archive'"
        if "effaces" in self.dictParametres and self.dictParametres[
                "effaces"] == True:
            conditions += " OR etat='efface'"

        db = GestionDB.DB()
        req = """SELECT %s FROM individus WHERE %s;""" % (
            ",".join(listeChamps), conditions)
        db.ExecuterReq(req)
        listeDonnees = db.ResultatReq()
        db.Close()

        # Récupération du dictionnaire des civilités
        dictCivilites = Civilites.GetDictCivilites()

        # Création du dictionnaire des données
        dictIndividus = {}
        for valeurs in listeDonnees:
            IDindividu = valeurs[0]
            dictTemp = {}
            # Infos de la table Individus
            for index in range(0, len(listeChamps)):
                nomChamp = listeChamps[index]
                dictTemp[nomChamp] = valeurs[index]
            # Infos sur la civilité
            if dictTemp["IDcivilite"] != None and dictTemp["IDcivilite"] != "":
                dictTemp["genre"] = dictCivilites[
                    dictTemp["IDcivilite"]]["sexe"]
                dictTemp["categorieCivilite"] = dictCivilites[
                    dictTemp["IDcivilite"]]["categorie"]
                dictTemp["civiliteLong"] = dictCivilites[
                    dictTemp["IDcivilite"]]["civiliteLong"]
                dictTemp["civiliteAbrege"] = dictCivilites[
                    dictTemp["IDcivilite"]]["civiliteAbrege"]
                dictTemp["nomImage"] = dictCivilites[
                    dictTemp["IDcivilite"]]["nomImage"]
            else:
                dictTemp["genre"] = ""
                dictTemp["categorieCivilite"] = ""
                dictTemp["civiliteLong"] = ""
                dictTemp["civiliteAbrege"] = ""
                dictTemp["nomImage"] = None

            if dictTemp["date_naiss"] == None:
                dictTemp["age"] = None
            else:
                try:
                    datenaissDD = UTILS_Dates.DateEngEnDateDD(
                        dictTemp["date_naiss"])
                    datedujour = datetime.date.today()
                    age = (datedujour.year - datenaissDD.year) - int(
                        (datedujour.month, datedujour.day) <
                        (datenaissDD.month, datenaissDD.day))
                    dictTemp["age"] = age
                    dictTemp["date_naiss"] = datenaissDD
                except:
                    dictTemp["age"] = None

            dictIndividus[IDindividu] = dictTemp

        # Vérifie si le dictIndividus est différent du précédent pour empêcher l'actualisation de la liste
        if dictIndividus == self.dictIndividus and self.forceActualisation == False:
            return None
        else:
            self.dictIndividus = dictIndividus

        filtre = None

        # Si filtre activités
        if len(self.dictParametres["activites"]) > 0:
            conditionActivites = GestionDB.ConvertConditionChaine(
                self.dictParametres["activites"])
            db = GestionDB.DB()
            req = """SELECT individus.IDindividu, nom
            FROM individus
            LEFT JOIN inscriptions ON inscriptions.IDindividu = individus.IDindividu
            WHERE inscriptions.statut='ok' AND inscriptions.IDactivite IN %s
            ;""" % conditionActivites
            db.ExecuterReq(req)
            listeDonnees = db.ResultatReq()
            db.Close()
            filtre = []
            for ID, nom in listeDonnees:
                filtre.append(ID)

        # Si filtre Groupes d'activités
        if len(self.dictParametres["groupes_activites"]) > 0:
            conditionGroupesActivites = GestionDB.ConvertConditionChaine(
                self.dictParametres["groupes_activites"])
            db = GestionDB.DB()
            req = """SELECT individus.IDindividu, nom
            FROM individus
            LEFT JOIN inscriptions ON inscriptions.IDindividu = individus.IDindividu
            LEFT JOIN groupes_activites ON groupes_activites.IDactivite = inscriptions.IDactivite
            WHERE inscriptions.statut='ok' AND groupes_activites.IDtype_groupe_activite IN %s
            ;""" % conditionGroupesActivites
            db.ExecuterReq(req)
            listeDonnees = db.ResultatReq()
            db.Close()
            filtre = []
            for ID, nom in listeDonnees:
                filtre.append(ID)

        # Création des Tracks
        listeListeView = []
        self.dictTracks = {}
        for IDindividu, dictTemp in dictIndividus.items():
            if filtre == None or IDindividu in filtre:
                track = Track(dictTemp, dictIndividus)
                listeListeView.append(track)
                self.dictTracks[IDindividu] = track

        return listeListeView
def GetDictIndividus():
    """ Récupération des infos sur les individus """
    # Récupération des adresses
    DB = GestionDB.DB()
    req = """SELECT IDindividu, individus.nom, prenom, rue_resid, cp_resid, ville_resid, secteurs.nom 
    FROM individus
    LEFT JOIN secteurs ON secteurs.IDsecteur = individus.IDsecteur
    ;"""
    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()
    dictAdresses = {}
    for IDindividu, nom, prenom, rue_resid, cp_resid, ville_resid, secteur in listeDonnees :
        if secteur == None : secteur = ""
        dictAdresses[IDindividu] = { "nom" : nom, "prenom" : prenom, "rue_resid" : rue_resid, "cp_resid" : cp_resid, "ville_resid" : ville_resid, "secteur" : secteur}
    
    # Récupération des individus
    listeChamps = (
        "IDindividu", "IDcivilite", "nom", "prenom", "num_secu","IDnationalite", 
        "date_naiss", "IDpays_naiss", "cp_naiss", "ville_naiss",
        "adresse_auto", "rue_resid", "cp_resid", "ville_resid", 
        "IDcategorie_travail", "profession", "employeur", "travail_tel", "travail_fax", "travail_mail", 
        "tel_domicile", "tel_mobile", "tel_fax", "mail"
        )
    req = """
    SELECT %s FROM individus;""" % ",".join(listeChamps)
    DB.ExecuterReq(req)
    listeIndividus= DB.ResultatReq()
    DB.Close() 
    
    # Récupération des civilités
    dictCivilites = Civilites.GetDictCivilites()
        
    dictResultats = {}
    for valeurs in listeIndividus :
        dictTemp = {}
        
        IDindividu = valeurs[0]
        dictTemp["IDindividu"] = IDindividu
        
        # Infos de la table Individus
        for index in range(0, len(listeChamps)) :
            nomChamp = listeChamps[index]
            dictTemp[nomChamp] = valeurs[index]
            
        # Infos sur la civilité
        dictTemp["genre"] = dictCivilites[dictTemp["IDcivilite"]]["sexe"]
        dictTemp["categorieCivilite"] = dictCivilites[dictTemp["IDcivilite"]]["categorie"]
        dictTemp["civiliteLong"]  = dictCivilites[dictTemp["IDcivilite"]]["civiliteLong"]
        dictTemp["civiliteAbrege"] = dictCivilites[dictTemp["IDcivilite"]]["civiliteAbrege"] 
        dictTemp["nomImage"] = dictCivilites[dictTemp["IDcivilite"]]["nomImage"] 
        
        # Age
        if dictTemp["date_naiss"] == None :
            dictTemp["age"] = None
        else:
            datenaissDD = datetime.date(year=int(dictTemp["date_naiss"][:4]), month=int(dictTemp["date_naiss"][5:7]), day=int(dictTemp["date_naiss"][8:10]))
            datedujour = datetime.date.today()
            age = (datedujour.year - datenaissDD.year) - int((datedujour.month, datedujour.day) < (datenaissDD.month, datenaissDD.day))
            dictTemp["date_naiss"] = datenaissDD
            dictTemp["age"] = age

        # Secteur
        dictTemp["secteur"] = dictAdresses[IDindividu]["secteur"]

        # Adresse auto ou manuelle
        if dictTemp["adresse_auto"] != None and dictAdresses.has_key(dictTemp["adresse_auto"]) :
            dictTemp["rue_resid"] = dictAdresses[dictTemp["adresse_auto"]]["rue_resid"]
            dictTemp["cp_resid"] = dictAdresses[dictTemp["adresse_auto"]]["cp_resid"]
            dictTemp["ville_resid"] = dictAdresses[dictTemp["adresse_auto"]]["ville_resid"]
            dictTemp["secteur"] = dictAdresses[dictTemp["adresse_auto"]]["secteur"]
        
        
        dictResultats[dictTemp["IDindividu"]] = dictTemp
        
    return dictResultats
Esempio n. 7
0
def GetListeIndividus(listview=None,
                      listeActivites=None,
                      presents=None,
                      IDindividu=None,
                      infosIndividus=None):
    # Conditions Activites
    if listeActivites == None or listeActivites == []:
        conditionActivites = ""
    else:
        if len(listeActivites) == 1:
            conditionActivites = " AND inscriptions.IDactivite=%d" % listeActivites[
                0]
        else:
            conditionActivites = " AND inscriptions.IDactivite IN %s" % str(
                tuple(listeActivites))

    # Conditions Présents
    conditionPresents = ""
    jointurePresents = ""
    if presents != None:
        conditionPresents = " AND (consommations.date>='%s' AND consommations.date<='%s')" % (
            str(presents[0]), str(presents[1]))
        jointurePresents = "LEFT JOIN consommations ON consommations.IDindividu = individus.IDindividu"

    # Condition Individu donné
    conditionIndividus = ""
    if IDindividu != None:
        conditionIndividus = " AND individus.IDindividu=%d" % IDindividu

    # Récupération des individus
    listeChamps = ("individus.IDindividu", "IDcivilite", "nom", "prenom",
                   "num_secu", "IDnationalite", "date_naiss", "IDpays_naiss",
                   "cp_naiss", "ville_naiss", "adresse_auto", "rue_resid",
                   "cp_resid", "ville_resid", "IDcategorie_travail",
                   "profession", "employeur", "travail_tel", "travail_fax",
                   "travail_mail", "tel_domicile", "tel_mobile", "tel_fax",
                   "mail")
    DB = GestionDB.DB()
    req = """
    SELECT %s
    FROM individus 
    LEFT JOIN inscriptions ON inscriptions.IDindividu = individus.IDindividu
    %s
    WHERE (inscriptions.parti=0 OR inscriptions.parti IS NULL) %s %s %s
    GROUP BY individus.IDindividu
    ;""" % (",".join(listeChamps), jointurePresents, conditionActivites,
            conditionPresents, conditionIndividus)

    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()
    DB.Close()

    # Récupération des civilités
    dictCivilites = Civilites.GetDictCivilites()

    # Récupération des adresses auto
    GetDictInfosIndividus()

    listeListeView = []
    for valeurs in listeDonnees:
        dictTemp = {}
        dictTemp["IDindividu"] = valeurs[0]
        # Infos de la table Individus
        for index in range(0, len(listeChamps)):
            nomChamp = listeChamps[index]
            dictTemp[nomChamp] = valeurs[index]
        # Infos sur la civilité
        if dictTemp["IDcivilite"] == None or dictTemp["IDcivilite"] == "":
            IDcivilite = 1
        else:
            IDcivilite = dictTemp["IDcivilite"]
        dictTemp["genre"] = dictCivilites[IDcivilite]["sexe"]
        dictTemp["categorieCivilite"] = dictCivilites[IDcivilite]["categorie"]
        dictTemp["civiliteLong"] = dictCivilites[IDcivilite]["civiliteLong"]
        dictTemp["civiliteAbrege"] = dictCivilites[IDcivilite][
            "civiliteAbrege"]
        dictTemp["nomImage"] = dictCivilites[IDcivilite]["nomImage"]

        if dictTemp["date_naiss"] == None:
            dictTemp["age"] = None
        else:
            datenaissDD = datetime.date(year=int(dictTemp["date_naiss"][:4]),
                                        month=int(dictTemp["date_naiss"][5:7]),
                                        day=int(dictTemp["date_naiss"][8:10]))
            datedujour = datetime.date.today()
            age = (datedujour.year - datenaissDD.year) - int(
                (datedujour.month, datedujour.day) <
                (datenaissDD.month, datenaissDD.day))
            dictTemp["age"] = age

        # Formatage sous forme de TRACK
        track = TrackIndividu(listview, dictTemp, infosIndividus)
        listeListeView.append(track)

    return listeListeView
Esempio n. 8
0
def GetListe(listeActivites=None, presents=None):
    if listeActivites == None: return []

    # Conditions Activites
    if listeActivites == None or listeActivites == []:
        conditionActivites = ""
    else:
        if len(listeActivites) == 1:
            conditionActivites = " AND inscriptions.IDactivite=%d" % listeActivites[
                0]
        else:
            conditionActivites = " AND inscriptions.IDactivite IN %s" % str(
                tuple(listeActivites))

    # Conditions Présents
##    if presents == None :
##        conditionPresents = ""
##        jointurePresents = ""
##    else:
##        conditionPresents = " AND consommations.date>='%s' AND consommations.date<='%s' AND consommations.etat IN ('reservation', 'present')" % (str(presents[0]), str(presents[1]))
##        jointurePresents = "LEFT JOIN consommations ON consommations.IDindividu = individus.IDindividu"

    DB = GestionDB.DB()

    # Récupération des présents
    listePresents = []
    if presents != None:
        req = """SELECT IDindividu, IDinscription
        FROM consommations
        WHERE date>='%s' AND date<='%s' %s
        GROUP BY IDindividu
        ;""" % (str(presents[0]), str(presents[1]),
                conditionActivites.replace("inscriptions", "consommations"))
        DB.ExecuterReq(req)
        listeIndividusPresents = DB.ResultatReq()
        for IDindividu, IDinscription in listeIndividusPresents:
            listePresents.append(IDindividu)

    # Récupération des individus
    listeChamps = ("individus.IDindividu", "IDcivilite", "nom", "prenom",
                   "num_secu", "IDnationalite", "date_naiss", "IDpays_naiss",
                   "cp_naiss", "ville_naiss", "adresse_auto", "rue_resid",
                   "cp_resid", "ville_resid", "IDcategorie_travail",
                   "profession", "employeur", "travail_tel", "travail_fax",
                   "travail_mail", "tel_domicile", "tel_mobile", "tel_fax",
                   "mail")

    req = """
    SELECT %s
    FROM inscriptions 
    LEFT JOIN individus ON individus.IDindividu = inscriptions.IDindividu
    WHERE inscriptions.parti=0 %s
    GROUP BY individus.IDindividu
    ;""" % (",".join(listeChamps), conditionActivites)
    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()
    DB.Close()

    # Récupération des civilités
    dictCivilites = Civilites.GetDictCivilites()

    # Récupération des adresses auto
    GetDictInfosIndividus()

    listeListeView = []
    for valeurs in listeDonnees:
        IDindividu = valeurs[0]

        if presents == None or (presents != None
                                and IDindividu in listePresents):

            dictTemp = {}
            dictTemp["IDindividu"] = valeurs[0]
            # Infos de la table Individus
            for index in range(0, len(listeChamps)):
                nomChamp = listeChamps[index]
                dictTemp[nomChamp] = valeurs[index]
            # Infos sur la civilité
            if dictTemp["IDcivilite"] != None and dictTemp["IDcivilite"] != "":
                IDcivilite = dictTemp["IDcivilite"]
            else:
                IDcivilite = 1
            dictTemp["genre"] = dictCivilites[IDcivilite]["sexe"]
            dictTemp["categorieCivilite"] = dictCivilites[IDcivilite][
                "categorie"]
            dictTemp["civiliteLong"] = dictCivilites[IDcivilite][
                "civiliteLong"]
            dictTemp["civiliteAbrege"] = dictCivilites[IDcivilite][
                "civiliteAbrege"]
            dictTemp["nomImage"] = dictCivilites[IDcivilite]["nomImage"]

            if dictTemp["date_naiss"] == None:
                dictTemp["age"] = None
            else:
                datenaissDD = datetime.date(
                    year=int(dictTemp["date_naiss"][:4]),
                    month=int(dictTemp["date_naiss"][5:7]),
                    day=int(dictTemp["date_naiss"][8:10]))
                datedujour = datetime.date.today()
                age = (datedujour.year - datenaissDD.year) - int(
                    (datedujour.month, datedujour.day) <
                    (datenaissDD.month, datenaissDD.day))
                dictTemp["age"] = age

            # Formatage sous forme de TRACK
            track = Track(dictTemp)
            listeListeView.append(track)

    return listeListeView
def GetListeIndividus(listview=None, infosIndividus=None):
    # Récupération des individus
    listeChamps = (
        "rattachements.IDindividu",
        "IDcivilite",
        "nom",
        "prenom",
        "num_secu",
        "IDnationalite",
        "date_naiss",
        "IDpays_naiss",
        "cp_naiss",
        "ville_naiss",
        "adresse_auto",
        "rue_resid",
        "cp_resid",
        "ville_resid",
        "rattachements.IDfamille",
        "IDcompte_payeur",
    )
    DB = GestionDB.DB()
    req = """SELECT %s
    FROM rattachements
    LEFT JOIN individus ON individus.IDindividu = rattachements.IDindividu
    LEFT JOIN comptes_payeurs ON comptes_payeurs.IDfamille = rattachements.IDfamille
    WHERE IDcategorie IN (1, 2)
    ;""" % ",".join(listeChamps)
    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()

    filtre_IDindividu = []
    if listview.masquer == True and listview.IDunite != None:
        req = """SELECT IDindividu, IDcotisation FROM cotisations WHERE IDunite_cotisation=%d;""" % listview.IDunite
        DB.ExecuterReq(req)
        listeCotisations = DB.ResultatReq()
        filtre_IDindividu = [
            IDindividu for IDindividu, IDcotisation in listeCotisations
        ]

    DB.Close()

    # Récupération des civilités
    dictCivilites = Civilites.GetDictCivilites()

    # Récupération des adresses auto
    GetDictInfosIndividus()

    listeListeView = []
    titulaires = UTILS_Titulaires.GetTitulaires()
    for valeurs in listeDonnees:
        dictTemp = {}
        dictTemp["IDindividu"] = valeurs[0]
        # Infos de la table Individus
        for index in range(0, len(listeChamps)):
            nomChamp = listeChamps[index]
            dictTemp[nomChamp] = valeurs[index]
        # Infos sur la civilité
        if dictTemp["IDcivilite"] == None or dictTemp["IDcivilite"] == "":
            IDcivilite = 1
        else:
            IDcivilite = dictTemp["IDcivilite"]
        dictTemp["genre"] = dictCivilites[IDcivilite]["sexe"]
        dictTemp["categorieCivilite"] = dictCivilites[IDcivilite]["categorie"]
        dictTemp["civiliteLong"] = dictCivilites[IDcivilite]["civiliteLong"]
        dictTemp["civiliteAbrege"] = dictCivilites[IDcivilite][
            "civiliteAbrege"]
        dictTemp["nomImage"] = dictCivilites[IDcivilite]["nomImage"]

        if dictTemp["date_naiss"] == None:
            dictTemp["age"] = None
        else:
            datenaissDD = datetime.date(year=int(dictTemp["date_naiss"][:4]),
                                        month=int(dictTemp["date_naiss"][5:7]),
                                        day=int(dictTemp["date_naiss"][8:10]))
            datedujour = datetime.date.today()
            age = (datedujour.year - datenaissDD.year) - int(
                (datedujour.month, datedujour.day) <
                (datenaissDD.month, datenaissDD.day))
            dictTemp["age"] = age

        IDfamille = dictTemp["rattachements.IDfamille"]
        if IDfamille != None and IDfamille in titulaires:
            nomTitulaires = titulaires[IDfamille]["titulairesSansCivilite"]
        else:
            nomTitulaires = _(u"Aucun titulaire")
        dictTemp["nomTitulaires"] = nomTitulaires

        # Formatage sous forme de TRACK
        if dictTemp["IDindividu"] not in filtre_IDindividu:
            track = TrackIndividu(listview, dictTemp, infosIndividus)
            listeListeView.append(track)

    return listeListeView
Esempio n. 10
0
    def GetTracks(self):
        """ Récupération des données """
        # Conditions
        conditions = []
        if self.IDecole != None :
            conditions.append("scolarite.IDecole=%d " % self.IDecole)
        if self.IDclasse != None :
            conditions.append("scolarite.IDclasse=%d " % self.IDclasse)
        if self.IDniveau != None :
            conditions.append("scolarite.IDniveau=%d " % self.IDniveau)
        if len(conditions) > 0 :
            txtConditions = "WHERE %s" % " AND ".join(conditions)
        else :
            txtConditions = ""
        
        # Récupération des individus
        DB = GestionDB.DB()
        req = """
        SELECT individus.IDindividu, individus.IDcivilite, individus.nom, individus.prenom, individus.date_naiss,
        IDscolarite, MIN(date_debut), MAX(date_fin), scolarite.IDniveau, niveaux_scolaires.abrege
        FROM individus 
        LEFT JOIN scolarite ON scolarite.IDindividu = individus.IDindividu
        LEFT JOIN niveaux_scolaires ON niveaux_scolaires.IDniveau = scolarite.IDniveau
        %s
        GROUP BY individus.IDindividu
        ORDER BY individus.nom, individus.prenom, scolarite.IDniveau
        ;""" % txtConditions

        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close() 
        
        # Récupération des civilités
        dictCivilites = Civilites.GetDictCivilites()
        
        listeListeView = []
        for valeurs in listeDonnees :
            dictTemp = {}
            dictTemp["IDindividu"] = valeurs[0]
            dictTemp["IDcivilite"] = valeurs[1]
            dictTemp["nomIndividu"] = valeurs[2]
            dictTemp["prenomIndividu"] = valeurs[3]
            dictTemp["date_naiss"] = valeurs[4]
            dictTemp["IDscolarite"] = valeurs[5]
            dictTemp["date_debut"] = valeurs[6]
            dictTemp["date_fin"] = valeurs[7]
            dictTemp["IDniveau"] = valeurs[8]
            dictTemp["abregeNiveau"] = valeurs[9]
            
            # Infos sur la civilité
            dictTemp["genre"] = dictCivilites[dictTemp["IDcivilite"]]["sexe"]
            dictTemp["categorieCivilite"] = dictCivilites[dictTemp["IDcivilite"]]["categorie"]
            dictTemp["civiliteLong"]  = dictCivilites[dictTemp["IDcivilite"]]["civiliteLong"]
            dictTemp["civiliteAbrege"] = dictCivilites[dictTemp["IDcivilite"]]["civiliteAbrege"] 
            dictTemp["nomImage"] = dictCivilites[dictTemp["IDcivilite"]]["nomImage"] 
            
            if dictTemp["date_naiss"] == None :
                dictTemp["age"] = None
            else:
                datenaissDD = datetime.date(year=int(dictTemp["date_naiss"][:4]), month=int(dictTemp["date_naiss"][5:7]), day=int(dictTemp["date_naiss"][8:10]))
                datedujour = datetime.date.today()
                age = (datedujour.year - datenaissDD.year) - int((datedujour.month, datedujour.day) < (datenaissDD.month, datenaissDD.day))
                dictTemp["age"] = age
            
            # Spécial
            if self.IDclasse == None :
                dictTemp["IDniveau"] = None
                dictTemp["abregeNiveau"] = u""
                
            # Formatage sous forme de TRACK
            track = Track(dictTemp)
            listeListeView.append(track)
            
        return listeListeView
Esempio n. 11
0
def GetListe(IDclasse=None, IDindividu=None):
    if IDclasse == None and IDindividu == None: 
        return []
    
    # Conditions
    if IDindividu == None :
        condition = "scolarite.IDclasse=%d" % IDclasse
    else:
        condition = "scolarite.IDindividu=%d" % IDindividu
        
    # Récupération des individus
    DB = GestionDB.DB()
    req = """
    SELECT IDscolarite, scolarite.date_debut, scolarite.date_fin, scolarite.IDindividu, scolarite.IDniveau,
    individus.IDcivilite, individus.nom, individus.prenom, individus.date_naiss,
    niveaux_scolaires.abrege, scolarite.IDecole, ecoles.nom, scolarite.IDclasse, classes.nom
    FROM scolarite 
    LEFT JOIN individus ON individus.IDindividu = scolarite.IDindividu
    LEFT JOIN ecoles ON ecoles.IDecole = scolarite.IDecole
    LEFT JOIN classes ON classes.IDclasse = scolarite.IDclasse
    LEFT JOIN niveaux_scolaires ON niveaux_scolaires.IDniveau = scolarite.IDniveau
    WHERE %s
    ORDER BY individus.nom, individus.prenom
    ;""" % condition
    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()
    DB.Close() 
    
    # Récupération des civilités
    dictCivilites = Civilites.GetDictCivilites()
    
    listeListeView = []
    for valeurs in listeDonnees :
        dictTemp = {}
        dictTemp["IDscolarite"] = valeurs[0]
        dictTemp["date_debut"] = valeurs[1]
        dictTemp["date_fin"] = valeurs[2]
        dictTemp["IDindividu"] = valeurs[3]
        dictTemp["IDniveau"] = valeurs[4]
        dictTemp["IDcivilite"] = valeurs[5]
        dictTemp["nomIndividu"] = valeurs[6]
        dictTemp["prenomIndividu"] = valeurs[7]
        dictTemp["date_naiss"] = valeurs[8]
        dictTemp["abregeNiveau"] = valeurs[9]
        dictTemp["IDecole"] = valeurs[10]
        dictTemp["nomEcole"] = valeurs[11]
        dictTemp["IDclasse"] = valeurs[12]
        dictTemp["nomClasse"] = valeurs[13]
        
        # Infos sur la civilité
        dictTemp["genre"] = dictCivilites[dictTemp["IDcivilite"]]["sexe"]
        dictTemp["categorieCivilite"] = dictCivilites[dictTemp["IDcivilite"]]["categorie"]
        dictTemp["civiliteLong"]  = dictCivilites[dictTemp["IDcivilite"]]["civiliteLong"]
        dictTemp["civiliteAbrege"] = dictCivilites[dictTemp["IDcivilite"]]["civiliteAbrege"] 
        dictTemp["nomImage"] = dictCivilites[dictTemp["IDcivilite"]]["nomImage"] 
        
        if dictTemp["date_naiss"] == None :
            dictTemp["age"] = None
        else:
            datenaissDD = datetime.date(year=int(dictTemp["date_naiss"][:4]), month=int(dictTemp["date_naiss"][5:7]), day=int(dictTemp["date_naiss"][8:10]))
            datedujour = datetime.date.today()
            age = (datedujour.year - datenaissDD.year) - int((datedujour.month, datedujour.day) < (datenaissDD.month, datenaissDD.day))
            dictTemp["age"] = age
                    
        # Formatage sous forme de TRACK
        track = Track(dictTemp)
        listeListeView.append(track)
        
    return listeListeView