def __init__(self, parent, dictOptions={}, tracks=[]):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX)
        self.parent = parent   
        self.tracks = tracks

        # Bandeau
        titre = _(u"Impression d'un récapitulatif des factures")
        intro = _(u"Vous pouvez ici modifier les paramètres d'impression du document. Cliquez sur le bouton 'Mémoriser les paramètres' pour réutiliser les mêmes paramètres pour les impressions suivantes.")
        self.SetTitle(titre)
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Imprimante.png")

        # Récupération des questionnaires
        self.Questionnaires = UTILS_Questionnaires.ChampsEtReponses(type="famille")

        # Récupération des infos de base familles
        # self.infosIndividus = UTILS_Infos_individus.Informations()
        # self.dictInfosFamilles = self.infosIndividus.GetDictValeurs(mode="famille", ID=None, formatChamp=True)

        # Paramètres
        self.ctrl_parametres = CTRL(self, dictOptions=dictOptions)
                
        # Boutons
        self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Aperçu"), cheminImage="Images/32x32/Apercu.png")
        self.bouton_annuler = CTRL_Bouton_image.CTRL(self, texte=_(u"Fermer"), cheminImage="Images/32x32/Annuler.png")

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler)
        
        self.bouton_ok.SetFocus() 
Ejemplo n.º 2
0
 def GetQuestionnaires(self):
     """ Recherche les questions des questionnaires """
     Questionnaires = UTILS_Questionnaires.Questionnaires() 
     listeQuestions = []
     for dictQuestion in Questionnaires.GetQuestions(None) :
         listeQuestions.append(dictQuestion)
     return listeQuestions
Ejemplo n.º 3
0
    def InitObjectListView(self):
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        liste_Colonnes = [
            ColumnDefn(u"", "left", 0, "IDcategorie", typeDonnee="entier"),
            ColumnDefn(_(u"Nom"), 'left', 200, "nom", typeDonnee="texte"),
            ColumnDefn(_(u"Notes"),
                       "left",
                       200,
                       "observations",
                       typeDonnee="texte"),
        ]

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        self.SetColumns(liste_Colonnes)
        if self.selection_multiple == True:
            self.CreateCheckStateColumn(0)

        self.SetEmptyListMsg(_(u"Aucune catégorie de produits"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetSortColumn(self.columns[1])
        self.SetObjects(self.donnees)
Ejemplo n.º 4
0
    def InitObjectListView(self):
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        liste_Colonnes = [
            ColumnDefn(u"", "left", 0, "IDfamille", typeDonnee="entier"),
            ColumnDefn(_(u"Nom"),
                       'left',
                       270,
                       "nomTitulaires",
                       typeDonnee="texte"),
            ColumnDefn(_(u"Rue"), 'left', 200, "rue", typeDonnee="texte"),
            ColumnDefn(_(u"C.P."), 'left', 70, "cp", typeDonnee="texte"),
            ColumnDefn(_(u"Ville"), 'left', 150, "ville", typeDonnee="texte"),
        ]

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        self.SetColumns(liste_Colonnes)
        self.SetEmptyListMsg(_(u"Aucune famille"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetSortColumn(self.columns[1])
        self.SetObjects(self.donnees)
Ejemplo n.º 5
0
    def __init__(self, parent):
        wx.Choice.__init__(self, parent, -1)
        self.parent = parent
        self.listeDonnees = [
            {"label": _(u"Jour"), "code": "jour"},
            {"label": _(u"Mois"), "code": "mois"},
            {"label": _(u"Année"), "code": "annee"},
            {"label": _(u"Activité"), "code": "activite"},
            {"label": _(u"Catégorie de tarif"), "code": "categorie_tarif"},
            {"label": _(u"Ville de résidence"), "code": "ville_residence"},
            {"label": _(u"Secteur géographique"), "code": "secteur"},
            {"label": _(u"Age"), "code": "age"},
            {"label": _(u"Ville de naissance"), "code": "ville_naissance"},
            {"label": _(u"Ecole"), "code": "nom_ecole"},
            {"label": _(u"Classe"), "code": "nom_classe"},
            {"label": _(u"Niveau scolaire"), "code": "nom_niveau_scolaire"},
            {"label": _(u"Régime social"), "code": "regime"},
            {"label": _(u"Caisse d'allocations"), "code": "caisse"},
            {"label": _(u"Quotient familial - Tranches tarifs"), "code": "qf_tarifs"},
            {"label": _(u"Quotient familial - Tranches de 100"), "code": "qf_100"},
        ]

        # Intégration des questionnaires
        q = UTILS_Questionnaires.Questionnaires()
        for public in ("famille", "individu"):
            for dictTemp in q.GetQuestions(public):
                label = _(u"Question %s. : %s") % (public[:3], dictTemp["label"])
                code = "question_%s_%d" % (public, dictTemp["IDquestion"])
                self.listeDonnees.append({"label": label, "code": code})

        self.MAJ()
Ejemplo n.º 6
0
 def GetQuestionnaire(self,
                      IDquestion=None,
                      IDfamille=None,
                      IDindividu=None):
     if IDquestion in (None, "", 0):
         return None
     q = UTILS_Questionnaires.Questionnaires()
     reponse = q.GetReponse(IDquestion, IDfamille, IDindividu)
     return reponse
Ejemplo n.º 7
0
    def InitModel(self):
        # Initialisation des questionnaires
        categorie = "location"
        self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
        self.liste_questions = self.UtilsQuestionnaires.GetQuestions(type=categorie)
        self.dict_questionnaires = self.UtilsQuestionnaires.GetReponses(type=categorie)

        # MAJ du listview
        self.donnees = self.GetTracks()
Ejemplo n.º 8
0
    def __init__(self, parent):
        wx.Choice.__init__(self, parent, -1)
        self.parent = parent
        self.listeDonnees = [
            {
                "label": _(u"Jour"),
                "code": "jour"
            },
            {
                "label": _(u"Mois"),
                "code": "mois"
            },
            {
                "label": _(u"Année"),
                "code": "annee"
            },
            {
                "label": _(u"Catégorie"),
                "code": "categorie"
            },
            {
                "label": _(u"Ville de résidence"),
                "code": "ville_residence"
            },
            {
                "label": _(u"Secteur géographique"),
                "code": "secteur"
            },
            {
                "label": _(u"Famille"),
                "code": "famille"
            },
            {
                "label": _(u"Régime social"),
                "code": "regime"
            },
            {
                "label": _(u"Caisse d'allocations"),
                "code": "caisse"
            },
            {
                "label": _(u"Quotient familial"),
                "code": "qf"
            },
        ]

        # Intégration des questionnaires
        q = UTILS_Questionnaires.Questionnaires()
        for public in ("famille", ):
            for dictTemp in q.GetQuestions(public):
                label = _(u"Question %s. : %s") % (public[:3],
                                                   dictTemp["label"])
                code = "question_%s_%d" % (public, dictTemp["IDquestion"])
                self.listeDonnees.append({"label": label, "code": code})

        self.MAJ()
Ejemplo n.º 9
0
    def GetTracks(self):
        """ Récupération des données """
        listeID = None

        # Importation des titulaires
        if self.afficher_locations == True :
            self.dict_titulaires = UTILS_Titulaires.GetTitulaires()

        # Initialisation des questionnaires
        categorie = "produit"
        self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
        self.liste_questions = self.UtilsQuestionnaires.GetQuestions(type=categorie)
        self.dict_questionnaires = self.UtilsQuestionnaires.GetReponses(type=categorie)

        DB = GestionDB.DB()

        # Importation des locations en cours
        self.dictLocations = UTILS_Locations.GetProduitsLoues(DB=DB)

        # Importation des produits
        if self.filtreListeID == None :
            condition = ""
        else :
            if len(self.filtreListeID) == 0: condition = "WHERE produits.IDproduit IN ()"
            elif len(self.filtreListeID) == 1: condition = "WHERE produits.IDproduit IN (%d)" % self.filtreListeID[0]
            else: condition = "WHERE produits.IDproduit IN %s" % str(tuple(self.filtreListeID))

        req = """SELECT IDproduit, produits.nom, produits.observations, produits_categories.nom, quantite
        FROM produits
        LEFT JOIN produits_categories ON produits_categories.IDcategorie = produits.IDcategorie
        %s;""" % condition
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close()
        listeListeView = []
        for item in listeDonnees :
            track = Track(parent=self, donnees=item)

            valide = True
            if listeID != None :
                if item[0] not in listeID :
                    valide = False

            # Mémorisation position
            if self.dictPositions != None and track.IDproduit in self.dictPositions:
                track.position = self.dictPositions[track.IDproduit]

            # Coche afficher uniquement les disponibles
            if self.coche_uniquement_disponibles == True and track.disponible == 0 :
                valide = False

            if valide == True :
                listeListeView.append(track)
                if self.selectionID == item[0] :
                    self.selectionTrack = track
        return listeListeView
Ejemplo n.º 10
0
    def __init__(self):
        """ Récupération de toutes les données de base """

        DB = GestionDB.DB()

        # Récupération des infos sur l'organisme
        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()
        self.dictOrganisme = {}
        for nom, rue, cp, ville, tel, fax, mail, site, num_agrement, num_siret, code_ape in listeDonnees:
            self.dictOrganisme["nom"] = nom
            self.dictOrganisme["rue"] = rue
            self.dictOrganisme["cp"] = cp
            if ville != None: ville = ville.capitalize()
            self.dictOrganisme["ville"] = ville
            self.dictOrganisme["tel"] = tel
            self.dictOrganisme["fax"] = fax
            self.dictOrganisme["mail"] = mail
            self.dictOrganisme["site"] = site
            self.dictOrganisme["num_agrement"] = num_agrement
            self.dictOrganisme["num_siret"] = num_siret
            self.dictOrganisme["code_ape"] = code_ape

        DB.Close()

        # Get noms Titulaires et individus
        self.dictTitulaires = UTILS_Titulaires.GetTitulaires()
        self.dictIndividus = UTILS_Titulaires.GetIndividus()

        # Récupération des infos de base individus et familles
        self.infosIndividus = UTILS_Infos_individus.Informations()

        # Récupération des questionnaires
        self.Questionnaires_familles = UTILS_Questionnaires.ChampsEtReponses(
            type="famille")
        self.Questionnaires_locations = UTILS_Questionnaires.ChampsEtReponses(
            type="location")
        self.Questionnaires_produits = UTILS_Questionnaires.ChampsEtReponses(
            type="produit")
Ejemplo n.º 11
0
 def SetListe(self):
     # Initialisation des questionnaires
     self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
     self.liste_questions = self.UtilsQuestionnaires.GetQuestions(type="location", avec_filtre=False)
     self.Clear()
     self.dictDonnees = {}
     index = 0
     for dictQuestion in self.liste_questions:
         if dictQuestion["controle"] == "documents" :
             self.Append(dictQuestion["label"])
             self.dictDonnees[index] = dictQuestion["IDquestion"]
             index += 1
     self.SetSelection(0)
Ejemplo n.º 12
0
    def MAJ(self):
        liste_champs = []

        # Recherche adresse du loueur
        if "IDfamille" in self.dictParametres and self.dictParametres["IDfamille"] != None :
            IDfamille = self.dictParametres["IDfamille"]
            dict_titulaires = UTILS_Titulaires.GetTitulaires([IDfamille,])
            rue = dict_titulaires[IDfamille]["adresse"]["rue"]
            cp = dict_titulaires[IDfamille]["adresse"]["cp"]
            ville = dict_titulaires[IDfamille]["adresse"]["ville"]
            liste_champs.append({"code" : "adresse_famille", "label" : _(u"Lieu de résidence du loueur"), "adresse" : "%s %s %s" % (rue, cp, ville)})

        # Questionnaire produits
        if "IDproduit" in self.dictParametres and self.dictParametres["IDproduit"] != None :
            IDproduit = self.dictParametres["IDproduit"]
            questionnaires = UTILS_Questionnaires.ChampsEtReponses(type="produit")
            for dictQuestion in questionnaires.GetDonnees(ID=IDproduit):
                liste_champs.append({"code" : dictQuestion["champ"], "label" : _(u"%s (produit)") % dictQuestion["label"], "adresse" : dictQuestion["reponse"]})

        # Questionnaire catégories de produits
        if "IDcategorie" in self.dictParametres and self.dictParametres["IDcategorie"] != None:
            IDcategorie = self.dictParametres["IDcategorie"]
            questionnaires = UTILS_Questionnaires.ChampsEtReponses(type="categorie_produit")
            for dictQuestion in questionnaires.GetDonnees(ID=IDcategorie):
                liste_champs.append({"code": dictQuestion["champ"], "label": _(u"%s (catégorie de produits)") % dictQuestion["label"], "adresse": dictQuestion["reponse"]})

        # Remplissage du ctrl
        listeItems = []
        self.dictDonnees = {}
        index = 0
        for dictValeurs in liste_champs :
            self.dictDonnees[index] = dictValeurs
            listeItems.append(dictValeurs["label"])
            index += 1

        if len(listeItems) == 0 :
            self.Enable(False)
        self.SetItems(listeItems)
Ejemplo n.º 13
0
 def __init__(self, *args, **kwds):
     # Récupération des paramètres perso
     self.categorie = kwds.pop("categorie", "individus")
     self.IDindividu = kwds.pop("IDindividu", None)
     self.IDfamille = kwds.pop("IDfamille", None)
     self.listeActivites = None
     self.presents = None
     # Infos organisme
     self.dictOrganisme = GetInfosOrganisme()
     self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
     # Initialisation du listCtrl
     FastObjectListView.__init__(self, *args, **kwds)
     # Binds perso
     self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
 def __init__(self, *args, **kwds):
     # Récupération des paramètres perso
     self.categorie = kwds.pop("categorie", "individu")
     self.afficher_colonne_numero = False
     self.dictNumeros = {"famille": {}, "individu": {}}
     self.donnees = []
     # Infos organisme
     self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
     # Initialisation du listCtrl
     self.nom_fichier_liste = __file__
     FastObjectListView.__init__(self, *args, **kwds)
     # Binds perso
     self.Bind(wx.EVT_CONTEXT_MENU, self.OnContextMenu)
     self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
Ejemplo n.º 15
0
    def InitModel(self):
        # Initialisation des questionnaires
        categorie = "location_demande"
        self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
        self.liste_questions = self.UtilsQuestionnaires.GetQuestions(type=categorie)
        self.dict_questionnaires = self.UtilsQuestionnaires.GetReponses(type=categorie)

        # Importation des titulaires de dossier
        if self.IDfamille == None:
            self.dict_titulaires = UTILS_Titulaires.GetTitulaires()

        # Importation des propositions de locations
        self.dictPropositions = UTILS_Locations.GetPropositionsLocations()

        # MAJ du listview
        self.donnees = self.GetTracks()
Ejemplo n.º 16
0
    def Importation(self):
        """ Importation des données """
        DB = GestionDB.DB()
        req = """SELECT produits.nom, produits.observations, produits.image, produits.IDcategorie, produits.quantite,
        produits_categories.nom
        FROM produits 
        LEFT JOIN produits_categories ON produits_categories.IDcategorie = produits.IDcategorie
        WHERE IDproduit=%d;""" % self.IDproduit
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close()
        if len(listeDonnees) == 0: return
        nomProduit, observations, image, IDcategorie, quantite, nomCategorie = listeDonnees[
            0]

        if len(observations) > 0:
            texte_observations = _(u"<BR>Notes : %s") % observations
        else:
            texte_observations = ""

        if quantite == None:
            quantite = 1

        # Questionnaire
        questionnaires = UTILS_Questionnaires.ChampsEtReponses(type="produit")
        liste_questions_temp = []
        for dictQuestion in questionnaires.GetDonnees(ID=self.IDproduit):
            liste_questions_temp.append(
                u"%s : %s" % (dictQuestion["label"], dictQuestion["reponse"]))

        # Caractéristiques
        texte = _(u"""
        <FONT SIZE=5><B>%s</B><BR></FONT>
        <BR>
        Catégorie : %s <BR>
        Stock initial : %d <BR>
        %s
        %s
        """) % (nomProduit, nomCategorie, quantite, texte_observations,
                "<BR>".join(liste_questions_temp))
        self.ctrl_produit.SetPage(texte)

        # Logo
        if image != None:
            self.ctrl_logo.ChargeFromBuffer(image)
Ejemplo n.º 17
0
    def MAJ(self):
        import GestionDB
        from Utils import UTILS_Questionnaires
        from Utils import UTILS_Locations
        from Utils import UTILS_Titulaires

        # Importation des titulaires
        self.dict_titulaires = UTILS_Titulaires.GetTitulaires()

        # Initialisation des questionnaires
        self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
        self.liste_questions = self.UtilsQuestionnaires.GetQuestions(
            type="produit")
        self.dict_questionnaires = self.UtilsQuestionnaires.GetReponses(
            type="produit")

        DB = GestionDB.DB()

        # Importation des locations en cours
        self.dictLocations = UTILS_Locations.GetProduitsLoues(DB=DB)

        # Importation des caractéristiques du modèle
        req = """SELECT categorie, IDdonnee
        FROM documents_modeles
        WHERE IDmodele=%d;""" % self.IDmodele
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        self.categorie, self.IDdonnee = listeDonnees[0]

        # Importation des produits
        req = """SELECT IDproduit, produits.nom, produits.observations, produits_categories.nom, produits.quantite
        FROM produits
        LEFT JOIN produits_categories ON produits_categories.IDcategorie = produits.IDcategorie
        WHERE produits.IDcategorie=%d;""" % self.IDdonnee
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close()
        self.dictTracks = {}
        for item in listeDonnees:
            track = Track(parent=self, donnees=item)
            self.dictTracks[track.IDproduit] = track

        return self.dictTracks
Ejemplo n.º 18
0
    def __init__(self, parent):
        wx.Choice.__init__(self, parent, -1) 
        self.parent = parent
        self.listeDonnees = [
            {"label" : _(u"Jour"), "code" : "jour"},
            {"label" : _(u"Mois"), "code" : "mois"},
            {"label" : _(u"Année"), "code" : "annee"},
            {"label" : _(u"Activité"), "code" : "activite"},
            {"label" : _(u"Groupe"), "code" : "groupe"},
            {"label" : _(u"Evènement"), "code": "evenement"},
            {"label" : _(u"Evènement (avec date)"), "code": "evenement_date"},
            {"label" : _(u"Etiquette"), "code": "etiquette"},
            {"label" : _(u"Catégorie de tarif"), "code" : "categorie_tarif"},
            {"label" : _(u"Ville de résidence"), "code" : "ville_residence"},
            {"label" : _(u"Secteur géographique"), "code" : "secteur"},
            {"label" : _(u"Genre (M/F)"), "code" : "genre"},
            {"label" : _(u"Age"), "code" : "age"},
            {"label" : _(u"Ville de naissance"), "code" : "ville_naissance"},
            {"label" : _(u"Ecole"), "code" : "nom_ecole"},
            {"label" : _(u"Classe"), "code" : "nom_classe"},
            {"label" : _(u"Niveau scolaire"), "code" : "nom_niveau_scolaire"},
            {"label" : _(u"Famille"), "code" : "famille"},
            {"label" : _(u"Individu"), "code" : "individu"},
            {"label" : _(u"Régime social"), "code" : "regime"},
            {"label" : _(u"Caisse d'allocations"), "code" : "caisse"},
            {"label" : _(u"Quotient familial"), "code" : "qf"},
            {"label" : _(u"Catégorie de travail"), "code" : "categorie_travail"},
            {"label" : _(u"Catégorie de travail du père"), "code" : "categorie_travail_pere"},
            {"label" : _(u"Catégorie de travail de la mère"), "code" : "categorie_travail_mere"},
            ]
        
        # Intégration des questionnaires
        q = UTILS_Questionnaires.Questionnaires() 
        for public in ("famille", "individu") :
            for dictTemp in q.GetQuestions(public) :
                label = _(u"Question %s. : %s") % (public[:3], dictTemp["label"])
                code = "question_%s_%d" % (public, dictTemp["IDquestion"])
                self.listeDonnees.append({"label" : label, "code" : code})

        self.MAJ() 
Ejemplo n.º 19
0
    def InitModel(self):
        # Initialisation des questionnaires
        categorie = "inscription"
        self.UtilsQuestionnaires = UTILS_Questionnaires.Questionnaires()
        self.liste_questions = self.UtilsQuestionnaires.GetQuestions(
            type=categorie)
        self.dict_questionnaires = self.UtilsQuestionnaires.GetReponses(
            type=categorie)

        # Importation des données
        self.donnees = self.GetTracks()

        # Infos individus
        self.infosIndividus = UTILS_Infos_individus.Informations()
        for track in self.donnees:
            self.infosIndividus.SetAsAttributs(parent=track,
                                               mode="individu",
                                               ID=track.IDindividu)
        for track in self.donnees:
            self.infosIndividus.SetAsAttributs(parent=track,
                                               mode="famille",
                                               ID=track.IDfamille)
Ejemplo n.º 20
0
    def CreationPDF(self,
                    nomDoc=FonctionsPerso.GenerationNomDoc(
                        "RECU_REGLEMENT", "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_edition = dictDonnees["date"]
        try:
            date_editionDD = DateEngEnDateDD(DateFrEng(date_edition))
        except:
            date_editionDD = ""

        # Insertion des données de base dans le dictValeurs
        IDfamille = self.IDfamille
        dictValeurs = {
            "IDfamille": self.IDfamille,
            "{IDFAMILLE}": str(self.IDfamille),
            "num_recu": dictDonnees["numero"],
            "{DATE_EDITION}": dictDonnees["date"],
            "{LIEU_EDITION}": dictDonnees["lieu"],
            "{DESTINATAIRE_NOM}": dictDonnees["nom"],
            "{DESTINATAIRE_RUE}": dictDonnees["rue"],
            "{DESTINATAIRE_VILLE}": dictDonnees["ville"],
            "{NUM_RECU}": dictDonnees["numero"],
            "{DATE_EDITION}": date_edition,
            "{DATE_EDITION_LONG}": DateComplete(date_editionDD),
            "{DATE_EDITION_COURT}": date_edition,
            "{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"],
        }

        # 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))

        # 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("{GENRE}", genreSignataire)
            textIntro = textIntro.replace("{NOM}", nomSignataire)
            textIntro = textIntro.replace("{FONCTION}", fonctionSignataire)
            textIntro = textIntro.replace("{FAMILLE}", dictDonnees["nom"])
            textIntro = textIntro.replace(
                "{MONTANT}",
                u"<b>%.2f %s</b>" % (self.dictReglement["montant"], SYMBOLE))
            dictValeurs["intro"] = textIntro
        else:
            dictValeurs["intro"] = None

        # Envoi des informations sur le règlement
        for key, valeur in self.dictReglement.iteritems():
            dictValeurs[key] = valeur

        dictValeurs["{IDREGLEMENT}"] = str(dictValeurs["IDreglement"])
        dictValeurs["{DATE_REGLEMENT}"] = DateEngFr(
            dictValeurs["dateReglement"])
        dictValeurs["{MODE_REGLEMENT}"] = dictValeurs["nomMode"]
        if dictValeurs["nomEmetteur"] != None:
            dictValeurs["{NOM_EMETTEUR}"] = dictValeurs["nomEmetteur"]
        else:
            dictValeurs["{NOM_EMETTEUR}"] = ""
        dictValeurs["{NUM_PIECE}"] = dictValeurs["numPiece"]
        dictValeurs["{MONTANT_REGLEMENT}"] = u"%.2f %s" % (
            dictValeurs["montant"], SYMBOLE)
        dictValeurs["{NOM_PAYEUR}"] = dictValeurs["nomPayeur"]
        dictValeurs["{NUM_QUITTANCIER}"] = str(dictValeurs["numQuittancier"])
        dictValeurs["{DATE_SAISIE}"] = DateEngFr(dictValeurs["date_saisie"])
        dictValeurs["{OBSERVATIONS}"] = u"%s" % dictValeurs["observations"]

        # Récupération liste des prestations
        if self.ctrl_prestations.GetValue() == True:
            dictValeurs["prestations"] = self.GetPrestations()
        else:
            dictValeurs["prestations"] = []

        # Préparation des données pour une sauvegarde de l'attestation
        self.dictSave = {}
        self.dictSave["numero"] = dictDonnees["numero"]
        self.dictSave["IDfamille"] = self.IDfamille
        self.dictSave["date_edition"] = DateFrEng(dictDonnees["date"])
        self.dictSave["IDutilisateur"] = UTILS_Identification.GetIDutilisateur(
        )
        self.dictSave["IDreglement"] = self.IDreglement

        # 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

        dictChampsFusion["{DATE_EDITION_RECU}"] = DateFrEng(
            dictDonnees["date"])
        dictChampsFusion["{NUMERO_RECU}"] = dictDonnees["numero"]
        dictChampsFusion["{ID_REGLEMENT}"] = str(dictValeurs["{IDREGLEMENT}"])
        dictChampsFusion["{DATE_REGLEMENT}"] = dictValeurs["{DATE_REGLEMENT}"]
        dictChampsFusion["{MODE_REGLEMENT}"] = dictValeurs["{MODE_REGLEMENT}"]
        dictChampsFusion["{NOM_EMETTEUR}"] = dictValeurs["{NOM_EMETTEUR}"]
        dictChampsFusion["{NUM_PIECE}"] = dictValeurs["{NUM_PIECE}"]
        dictChampsFusion["{MONTANT_REGLEMENT}"] = dictValeurs[
            "{MONTANT_REGLEMENT}"]
        dictChampsFusion["{NOM_PAYEUR}"] = dictValeurs["{NOM_PAYEUR}"]
        dictChampsFusion["{NUM_QUITTANCIER}"] = dictValeurs[
            "{NUM_QUITTANCIER}"]
        dictChampsFusion["{DATE_SAISIE}"] = dictValeurs["{DATE_SAISIE}"]

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

        return dictChampsFusion
Ejemplo n.º 21
0
    def InitObjectListView(self):
        def FormateDate(dateStr):
            if dateStr == "" or dateStr == None: return ""
            date = str(
                datetime.date(year=int(dateStr[:4]),
                              month=int(dateStr[5:7]),
                              day=int(dateStr[8:10])))
            text = str(date[8:10]) + "/" + str(date[5:7]) + "/" + str(date[:4])
            return text

        def FormateAge(age):
            if age == None: return ""
            return _(u"%d ans") % age

        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        if self.categorie == "individu":
            # INDIVIDUS
            liste_Colonnes = [
                ColumnDefn(u"ID", "left", 0, "IDindividu",
                           typeDonnee="entier"),
                ColumnDefn(_(u"Nom"), 'left', 100, "nom", typeDonnee="texte"),
                ColumnDefn(_(u"Prénom"),
                           "left",
                           100,
                           "prenom",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Date naiss."),
                           "left",
                           72,
                           "date_naiss",
                           typeDonnee="date",
                           stringConverter=FormateDate),
                ColumnDefn(_(u"Age"),
                           "left",
                           50,
                           "age",
                           typeDonnee="entier",
                           stringConverter=FormateAge),
                ColumnDefn(_(u"Famille"),
                           'left',
                           200,
                           "nomTitulaires",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Rue"),
                           "left",
                           150,
                           "rue_resid",
                           typeDonnee="texte"),
                ColumnDefn(_(u"C.P."),
                           "left",
                           50,
                           "cp_resid",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Ville"),
                           "left",
                           120,
                           "ville_resid",
                           typeDonnee="texte"),
            ]

        else:
            # FAMILLES
            liste_Colonnes = [
                ColumnDefn(_(u"ID"),
                           "left",
                           0,
                           "IDfamille",
                           typeDonnee="entier"),
                ColumnDefn(_(u"Famille"),
                           'left',
                           200,
                           "nomTitulaires",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Rue"), "left", 160, "rue", typeDonnee="texte"),
                ColumnDefn(_(u"C.P."), "left", 45, "cp", typeDonnee="texte"),
                ColumnDefn(_(u"Ville"),
                           "left",
                           120,
                           "ville",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Email"),
                           "left",
                           100,
                           "mail",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Régime"),
                           "left",
                           130,
                           "regime",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Caisse"),
                           "left",
                           130,
                           "caisse",
                           typeDonnee="texte"),
                ColumnDefn(_(u"Numéro Alloc."),
                           "left",
                           120,
                           "numAlloc",
                           typeDonnee="texte"),
            ]

        if self.afficher_colonne_numero == True:
            liste_Colonnes.insert(
                1,
                ColumnDefn(_(u"Numéro"),
                           "left",
                           90,
                           "numero",
                           typeDonnee="texte"))

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.LISTE_QUESTIONS))

        self.SetColumns(liste_Colonnes)
        self.CreateCheckStateColumn(0)

        if self.categorie == "individu":
            self.SetEmptyListMsg(_(u"Aucun individu"))
        else:
            self.SetEmptyListMsg(_(u"Aucune famille"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        if self.afficher_colonne_numero == True:
            self.SetSortColumn(self.columns[3])
        else:
            self.SetSortColumn(self.columns[2])
        self.SetObjects(self.donnees)
Ejemplo n.º 22
0
    def InitObjectListView(self):
        # Création du imageList
        for categorie, civilites in Civilites.LISTE_CIVILITES:
            for IDcivilite, CiviliteLong, CiviliteAbrege, nomImage, genre in civilites:
                indexImg = self.AddNamedImages(
                    nomImage,
                    wx.Bitmap(
                        Chemins.GetStaticPath("Images/16x16/%s" % nomImage),
                        wx.BITMAP_TYPE_PNG))

        self.imgVert = self.AddNamedImages(
            "vert",
            wx.Bitmap(
                Chemins.GetStaticPath("Images/16x16/Ventilation_vert.png"),
                wx.BITMAP_TYPE_PNG))
        self.imgRouge = self.AddNamedImages(
            "rouge",
            wx.Bitmap(
                Chemins.GetStaticPath("Images/16x16/Ventilation_rouge.png"),
                wx.BITMAP_TYPE_PNG))
        self.imgOrange = self.AddNamedImages(
            "orange",
            wx.Bitmap(
                Chemins.GetStaticPath("Images/16x16/Ventilation_orange.png"),
                wx.BITMAP_TYPE_PNG))

        def GetImageCivilite(track):
            return track.nomImage

        def GetImageVentilation(track):
            if track.totalFacture == track.totalRegle:
                return self.imgVert
            if track.totalRegle == FloatToDecimal(
                    0.0) or track.totalRegle == None:
                return self.imgRouge
            if track.totalRegle < track.totalFacture:
                return self.imgOrange
            return self.imgRouge

        def FormateDate(dateDD):
            if dateDD == None: return ""
            return UTILS_Dates.DateEngFr(str(dateDD))

        def FormateMontant(montant):
            if montant == None or montant == "": return ""
            return u"%.2f %s" % (montant, SYMBOLE)

        def FormateSolde(montant):
            if montant == None: FloatToDecimal(0.0)
            if montant == FloatToDecimal(0.0):
                return u"%.2f %s" % (montant, SYMBOLE)
            elif montant > FloatToDecimal(0.0):
                return u"- %.2f %s" % (montant, SYMBOLE)
            else:
                return u"+ %.2f %s" % (montant, SYMBOLE)

        def FormateAge(age):
            if age == None: return ""
            return _(u"%d ans") % age

        def rowFormatter(listItem, track):
            if track.valide == False:
                listItem.SetTextColour(wx.Colour(150, 150, 150))

        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = "#FFFFFF"  # Vert

        # Création des colonnes
        listeColonnes = []
        for dictChamp in LISTE_CHAMPS:
            if dictChamp["afficher"] == True:
                # stringConverter
                if "stringConverter" in dictChamp:
                    stringConverter = dictChamp["stringConverter"]
                    if stringConverter == "date": stringConverter = FormateDate
                    elif stringConverter == "age": stringConverter = FormateAge
                    elif stringConverter == "montant":
                        stringConverter = FormateMontant
                    elif stringConverter == "solde":
                        stringConverter = FormateSolde
                    else:
                        stringConverter = None
                else:
                    stringConverter = None
                # Image Getter
                if "imageGetter" in dictChamp:
                    imageGetter = dictChamp["imageGetter"]
                    if imageGetter == "civilite":
                        imageGetter = GetImageCivilite
                    elif imageGetter == "ventilation":
                        imageGetter = GetImageVentilation
                    else:
                        imageGetter = None
                else:
                    imageGetter = None
                # Création de la colonne
                colonne = ColumnDefn(dictChamp["label"],
                                     dictChamp["align"],
                                     dictChamp["largeur"],
                                     dictChamp["code"],
                                     typeDonnee=dictChamp["typeDonnee"],
                                     stringConverter=stringConverter,
                                     imageGetter=imageGetter)
                listeColonnes.append(colonne)

        # Ajout des questions des questionnaires
        listeColonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        # Ajout des infos individus
        listeChamps = UTILS_Infos_individus.GetNomsChampsPossibles(
            mode="individu+famille")
        for titre, exemple, code in listeChamps:
            if u"n°" not in titre and "_x_" not in code:
                typeDonnee = UTILS_Infos_individus.GetTypeChamp(code)
                code = code.replace("{", "").replace("}", "")
                listeColonnes.append(
                    ColumnDefn(titre,
                               "left",
                               100,
                               code,
                               typeDonnee=typeDonnee,
                               visible=False))

        #self.SetColumns(listeColonnes)
        self.SetColumns2(colonnes=listeColonnes,
                         nomListe="OL_Liste_inscriptions")

        # Regroupement
        if self.regroupement != None:
            #self.SetColonneTri(self.regroupement)
            self.SetAlwaysGroupByColumn(self.regroupement)
            self.SetShowGroups(True)
            self.useExpansionColumn = False
        else:
            self.SetShowGroups(False)
            self.useExpansionColumn = False

        # Case à cocher
        if self.checkColonne == True:
            self.CreateCheckStateColumn(0)
            if len(self.columns) > 0:
                self.SetSortColumn(self.columns[1])
        else:
            if len(self.columns) > 0:
                self.SetSortColumn(self.columns[0])

        self.SetShowItemCounts(True)
        self.SetEmptyListMsg(_(u"Aucune inscription"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetObjects(self.donnees)
Ejemplo n.º 23
0
    def Remplissage(self):
        # Regroupement
        self.Append(wxpg.PropertyCategory(_(u"Regroupement")))

        # Regroupement principal
        liste_regroupements = [
            ("aucun", _(u"Aucun")),
            ("jour", _(u"Jour")),
            ("mois", _(u"Mois")),
            ("annee", _(u"Année")),
            ("activite", _(u"Activité")),
            ("groupe", _(u"Groupe")),
            ("evenement", _(u"Evènement")),
            ("evenement_date", _(u"Evènement (avec date)")),
            ("etiquette", _(u"Etiquette")),
            ("unite_conso", _(u"Unité de consommation")),
            ("categorie_tarif", _(u"Catégorie de tarif")),
            ("ville_residence", _(u"Ville de résidence")),
            ("secteur", _(u"Secteur géographique")),
            ("genre", _(u"Genre (M/F)")),
            ("age", _(u"Age")),
            ("ville_naissance", _(u"Ville de naissance")),
            ("nom_ecole", _(u"Ecole")),
            ("nom_classe", _(u"Classe")),
            ("nom_niveau_scolaire", _(u"Niveau scolaire")),
            ("individu", _(u"Individu")),
            ("famille", _(u"Famille")),
            ("regime", _(u"Régime social")),
            ("caisse", _(u"Caisse d'allocations")),
            ("qf_perso", _(u"Quotient familial (tranches personnalisées)")),
            ("qf_tarifs", _(u"Quotient familial (tranches paramétrées)")),
            ("qf_100", _(u"Quotient familial (tranches de 100)")),
            ("categorie_travail", _(u"Catégorie de travail")),
            ("categorie_travail_pere", _(u"Catégorie de travail du père")),
            ("categorie_travail_mere",
             _(u"Catégorie de travail de la mère")),
        ]

        # Intégration des questionnaires
        q = UTILS_Questionnaires.Questionnaires()
        for public in ("famille", "individu"):
            for dictTemp in q.GetQuestions(public):
                label = _(u"Question %s. : %s") % (public[:3],
                                                   dictTemp["label"])
                code = "question_%s_%d" % (public, dictTemp["IDquestion"])
                liste_regroupements.append((code, label))

        propriete = CTRL_Propertygrid.Propriete_choix(
            label=_(u"Regroupement principal"),
            name="regroupement_principal",
            liste_choix=liste_regroupements,
            valeur="aucun")
        propriete.SetEditor("EditeurChoix")
        propriete.SetHelpString(
            _(u"Sélectionnez un niveau de regroupement principal"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Tranches d'âge
        propriete = CTRL_Propertygrid.Propriete_liste(
            label=_(u"Regroupement par tranches d'âge"),
            name="regroupement_age",
            liste_selections=[])
        propriete.SetHelpString(
            _(u"Saisissez les tranches d'âge souhaitées séparées par des virgules. Exemple : '3, 6, 12'"
              ))
        propriete.SetAttribute("obligatoire", False)
        self.Append(propriete)

        # Tranches de QF perso
        propriete = CTRL_Propertygrid.Propriete_liste(
            label=_(u"Regroupement par tranches de QF"),
            name="tranches_qf_perso",
            liste_selections=[])
        propriete.SetHelpString(
            _(u"Attention, à utiliser avec le regroupement principal 'Quotient familial (tranches personnalisées)'. Saisissez les tranches de QF souhaitées séparées par des virgules. Exemple : '650, 800, 1200'"
              ))
        propriete.SetAttribute("obligatoire", False)
        self.Append(propriete)

        # Afficher les périodes détaillées
        propriete = wxpg.BoolProperty(
            label=_(u"Regroupement par périodes détaillées"),
            name="periodes_detaillees",
            value=False)
        propriete.SetHelpString(
            _(u"Cochez cette case pour afficher les périodes détaillées"))
        propriete.SetAttribute("UseCheckbox", True)
        self.Append(propriete)

        # Données
        self.Append(wxpg.PropertyCategory(_(u"Données")))

        propriete = CTRL_Propertygrid.Propriete_choix(
            label=_(u"Format des données"),
            name="format_donnees",
            liste_choix=[("horaire", _(u"Horaire")),
                         ("decimal", _(u"Décimal"))],
            valeur="horaire")
        propriete.SetEditor("EditeurChoix")
        propriete.SetHelpString(
            _(u"Sélectionnez le format d'affichage des données"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Afficher l'avertissement 'familles sans régime'
        propriete = wxpg.BoolProperty(
            label=_(u"Avertissement si régime famille inconnu"),
            name="afficher_regime_inconnu",
            value=True)
        propriete.SetHelpString(
            _(u"Cochez cette case pour afficher un avertissement si le régime d'une ou plusieurs familles est inconnu"
              ))
        propriete.SetAttribute("UseCheckbox", True)
        self.Append(propriete)

        # Associer régime inconnu
        DB = GestionDB.DB()
        req = """SELECT IDregime, nom FROM regimes ORDER BY nom;"""
        DB.ExecuterReq(req)
        liste_regimes = DB.ResultatReq()
        DB.Close()
        liste_regimes.insert(0, ("non", _(u"Non")))
        propriete = CTRL_Propertygrid.Propriete_choix(
            label=_(u"Associer régime inconnu à un régime"),
            name="associer_regime_inconnu",
            liste_choix=liste_regimes,
            valeur="non")
        propriete.SetEditor("EditeurChoix")
        propriete.SetHelpString(
            _(u"Sélectionnez le régime dans lequel vous souhaitez inclure les familles au régime inconnu"
              ))
        propriete.SetAttribute("obligatoire", False)
        self.Append(propriete)

        # Plafond journalier par individu
        propriete = wxpg.IntProperty(
            label=_(u"Plafond journalier par individu (en minutes)"),
            name="plafond_journalier_individu",
            value=0)
        propriete.SetHelpString(
            _(u"Saisissez un plafond journalier (en minutes) par individu, toutes activités confondues (0 = désactivé). Exemple : une valeur de 120 (minutes) plafonnera le temps retenu pour chaque individu à hauteur de 2 heures."
              ))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Filtres
        self.Append(wxpg.PropertyCategory(_(u"Filtres")))

        # Jours hors vacances
        liste_jours = [(0, _(u"Lundi")), (1, _(u"Mardi")), (2, _(u"Mercredi")),
                       (3, _(u"Jeudi")), (4, _(u"Vendredi")),
                       (5, _(u"Samedi")), (6, _(u"Dimanche"))]
        propriete = CTRL_Propertygrid.Propriete_multichoix(
            label=_(u"Jours hors vacances"),
            name="jours_hors_vacances",
            liste_choix=liste_jours,
            liste_selections=[0, 1, 2, 3, 4, 5, 6])
        propriete.SetHelpString(
            _(u"Sélectionnez les jours hors vacances à inclure dans les calculs. Cliquez sur le bouton à droite du champ de saisie pour accéder à la fenêtre de sélection."
              ))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Jours de vacances
        propriete = CTRL_Propertygrid.Propriete_multichoix(
            label=_(u"Jours de vacances"),
            name="jours_vacances",
            liste_choix=liste_jours,
            liste_selections=[0, 1, 2, 3, 4, 5, 6])
        propriete.SetHelpString(
            _(u"Sélectionnez les jours de vacances à inclure dans les calculs. Cliquez sur le bouton à droite du champ de saisie pour accéder à la fenêtre de sélection."
              ))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Etat des consommations
        self.liste_codes_etats = [
            "reservation", "present", "absentj", "absenti"
        ]
        liste_etats = [(0, _(u"Pointage en attente")), (1, _(u"Présent")),
                       (2, _(u"Absence justifiée")),
                       (3, _(u"Absence injustifiée"))]
        propriete = CTRL_Propertygrid.Propriete_multichoix(
            label=_(u"Etat des consommations"),
            name="etat_consommations",
            liste_choix=liste_etats,
            liste_selections=[0, 1, 2, 3])
        propriete.SetHelpString(
            _(u"Sélectionnez les états de consommations à inclure dans les calculs. Cliquez sur le bouton à droite du champ de saisie pour accéder à la fenêtre de sélection."
              ))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Affichage
        self.Append(wxpg.PropertyCategory(_(u"Affichage")))

        # Orientation page
        propriete = CTRL_Propertygrid.Propriete_choix(
            label=_(u"Orientation de la page"),
            name="orientation",
            liste_choix=[("portrait", _(u"Portrait")),
                         ("paysage", _(u"Paysage"))],
            valeur="portrait")
        propriete.SetEditor("EditeurChoix")
        propriete.SetHelpString(_(u"Sélectionnez l'orientation de la page"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Couleur Ligne tranche d'âge
        propriete = wxpg.ColourProperty(
            label=_(u"Couleur de la ligne tranche d'âge"),
            name="couleur_ligne_age",
            value=wx.Colour(192, 192, 192))
        propriete.SetHelpString(
            _(u"Sélectionnez la couleur de la ligne tranche d'âge"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Couleur Ligne total
        propriete = wxpg.ColourProperty(label=_(u"Couleur de la ligne total"),
                                        name="couleur_ligne_total",
                                        value=wx.Colour(234, 234, 234))
        propriete.SetHelpString(
            _(u"Sélectionnez la couleur de la ligne total"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Couleur case regroupement principal
        propriete = wxpg.ColourProperty(
            label=_(u"Couleur de la case regroupement principal"),
            name="couleur_case_regroupement",
            value=wx.Colour(0, 0, 0))
        propriete.SetHelpString(
            _(u"Sélectionnez la couleur de la case regroupement principal"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)

        # Couleur texte regroupement principal
        propriete = wxpg.ColourProperty(
            label=_(u"Couleur du texte regroupement principal"),
            name="couleur_texte_regroupement",
            value=wx.Colour(255, 255, 255))
        propriete.SetHelpString(
            _(u"Sélectionnez la couleur du texte regroupement principal"))
        propriete.SetAttribute("obligatoire", True)
        self.Append(propriete)
Ejemplo n.º 24
0
    def InitObjectListView(self):
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        # Préparation de la listeImages
        self.AddNamedImages(
            "indisponible",
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Interdit.png"),
                      wx.BITMAP_TYPE_PNG))
        self.AddNamedImages(
            "disponible",
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ok4.png"),
                      wx.BITMAP_TYPE_PNG))

        def GetImageDisponible(track):
            if track.disponible > 0:
                return "disponible"
            else:
                return "indisponible"

        def FormateDate(date):
            if date == None:
                return _(u"")
            else:
                return datetime.datetime.strftime(date, "%d/%m/%Y - %Hh%M")

        def FormatePosition(position):
            if position == None:
                return _(u"")
            elif position == 1:
                return _(u"1er")
            else:
                return _(u"%dème") % position

        def FormateDisponible(disponible):
            if disponible == 1:
                return _(u"1 disponible")
            if disponible > 1:
                return _(u"%d disponibles") % disponible
            return _("Non")

        dict_colonnes = {
            "IDproduit":
            ColumnDefn(u"", "left", 0, "IDproduit", typeDonnee="entier"),
            "nom":
            ColumnDefn(_(u"Nom"), 'left', 170, "nom", typeDonnee="texte"),
            "nomCategorie":
            ColumnDefn(_(u"Catégorie"),
                       'left',
                       170,
                       "nomCategorie",
                       typeDonnee="texte"),
            "quantite":
            ColumnDefn(_(u"Stock initial"),
                       "left",
                       70,
                       "quantite",
                       typeDonnee="entier"),
            "disponible":
            ColumnDefn(_(u"Disponibilité"),
                       "left",
                       110,
                       "disponible",
                       typeDonnee="texte",
                       stringConverter=FormateDisponible,
                       imageGetter=GetImageDisponible),
            "nomTitulaires":
            ColumnDefn(_(u"Loueur"),
                       "left",
                       200,
                       "nomTitulaires",
                       typeDonnee="texte"),
            "date_debut":
            ColumnDefn(_(u"Début"),
                       "left",
                       120,
                       "date_debut",
                       typeDonnee="texte",
                       stringConverter=FormateDate),
            "date_fin":
            ColumnDefn(_(u"Fin"),
                       "left",
                       120,
                       "date_fin",
                       typeDonnee="texte",
                       stringConverter=FormateDate),
            "position":
            ColumnDefn(u"Position",
                       "left",
                       80,
                       "position",
                       typeDonnee="entier",
                       stringConverter=FormatePosition),
        }

        if self.afficher_locations == True:
            if self.afficher_detail_location == True:
                liste_temp = [
                    "IDproduit", "nom", "nomCategorie", "quantite",
                    "disponible", "nomTitulaires", "date_debut", "date_fin"
                ]
            else:
                liste_temp = [
                    "IDproduit", "nom", "nomCategorie", "quantite",
                    "disponible"
                ]
        else:
            liste_temp = ["IDproduit", "nom", "nomCategorie", "quantite"]

        if self.dictPositions != None:
            liste_temp.append("position")

        liste_Colonnes = []
        for code in liste_temp:
            liste_Colonnes.append(dict_colonnes[code])

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        self.SetColumns(liste_Colonnes)
        if self.selection_multiple == True:
            self.CreateCheckStateColumn(0)

        self.SetEmptyListMsg(_(u"Aucun produit"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetSortColumn(self.columns[1])
        self.SetObjects(self.donnees)
Ejemplo n.º 25
0
    def InitObjectListView(self):
        # Création du imageList
        for categorie, civilites in Civilites.LISTE_CIVILITES :
            for IDcivilite, CiviliteLong, CiviliteAbrege, nomImage, genre in civilites :
                indexImg = self.AddNamedImages(nomImage, wx.Bitmap(Chemins.GetStaticPath("Images/16x16/%s" % nomImage), wx.BITMAP_TYPE_PNG))
        
        def GetImageCivilite(track):
            return track.nomImage

        def FormateDate(dateStr):
            if dateStr == "" or dateStr == None : return ""
            date = str(datetime.date(year=int(dateStr[:4]), month=int(dateStr[5:7]), day=int(dateStr[8:10])))
            text = str(date[8:10]) + "/" + str(date[5:7]) + "/" + str(date[:4])
            return text
        
        def FormateAge(age):
            if age == None : return ""
            return _(u"%d ans") % age
        
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur("couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True
                
        if self.categorie == "individus" :
            # INDIVIDUS
            liste_Colonnes = [
                ColumnDefn(u"", "left", 22, "IDindividu", typeDonnee="entier", imageGetter=GetImageCivilite),
                ColumnDefn(_(u"Nom"), 'left', 100, "nom", typeDonnee="texte"),
                ColumnDefn(_(u"Prénom"), "left", 100, "prenom", typeDonnee="texte"),
                ColumnDefn(_(u"Date naiss."), "left", 72, "date_naiss", typeDonnee="date", stringConverter=FormateDate),
                ColumnDefn(_(u"Age"), "left", 50, "age", typeDonnee="entier", stringConverter=FormateAge),
                ColumnDefn(_(u"Rue"), "left", 150, "rue_resid", typeDonnee="texte"),
                ColumnDefn(_(u"C.P."), "left", 50, "cp_resid", typeDonnee="texte"),
                ColumnDefn(_(u"Ville"), "left", 120, "ville_resid", typeDonnee="texte"),
                ColumnDefn(_(u"Secteur"), "left", 120, "secteur", typeDonnee="texte"),
##                ColumnDefn(_(u"Tél. domicile"), "left", 100, "tel_domicile"),
##                ColumnDefn(_(u"Tél. mobile"), "left", 100, "tel_mobile"),
                ColumnDefn(_(u"Email"), "left", 150, "mail", typeDonnee="texte"),
##                ColumnDefn(_(u"Profession"), "left", 150, "profession"),
##                ColumnDefn(_(u"Employeur"), "left", 150, "employeur"),
##                ColumnDefn(_(u"Tél pro."), "left", 100, "travail_tel"),
##                ColumnDefn(_(u"Email pro."), "left", 150, "travail_mail"),
                ]
        
        else:
            # FAMILLES
            liste_Colonnes = [
                ColumnDefn(_(u"ID"), "left", 0, "IDfamille", typeDonnee="entier"),
                ColumnDefn(_(u"Famille"), 'left', 200, "nomTitulaires", typeDonnee="texte"),
                ColumnDefn(_(u"Rue"), "left", 160, "rue", typeDonnee="texte"),
                ColumnDefn(_(u"C.P."), "left", 45, "cp", typeDonnee="texte"),
                ColumnDefn(_(u"Ville"), "left", 120, "ville", typeDonnee="texte"),
                ColumnDefn(_(u"Secteur"), "left", 120, "secteur", typeDonnee="texte"),
                ColumnDefn(_(u"Email"), "left", 100, "mail", typeDonnee="texte"),
                ColumnDefn(_(u"Régime"), "left", 130, "regime", typeDonnee="texte"),
                ColumnDefn(_(u"Caisse"), "left", 130, "caisse", typeDonnee="texte"),
                ColumnDefn(_(u"Numéro Alloc."), "left", 120, "numAlloc", typeDonnee="texte"),
                ]        
        
        # Ajout des questions des questionnaires
        liste_Colonnes.extend(UTILS_Questionnaires.GetColonnesForOL(self.LISTE_QUESTIONS))

        self.SetColumns(liste_Colonnes)
        self.CreateCheckStateColumn(0)
        
        if self.categorie == "individus" :
            self.SetEmptyListMsg(_(u"Aucun individu"))
        else:
            self.SetEmptyListMsg(_(u"Aucune famille"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetSortColumn(self.columns[2])
        self.SetObjects(self.donnees)
Ejemplo n.º 26
0
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX)
        self.parent = parent

        # Généralités
        self.staticbox_generalites_staticbox = wx.StaticBox(self, -1, _(u"Généralités"))

        self.label_nom = wx.StaticText(self, -1, _(u"Nom :"))
        self.ctrl_nom = wx.TextCtrl(self, -1, "")

        self.label_donnee = wx.StaticText(self, -1, _(u"Donnée :"))
        liste_choix = [
            ("aucun", _(u"Aucune")),
            ("genre", _(u"Genre (M/F)")),
            ("date_naiss", _(u"Date de naissance")),
            ("ville_naissance", _(u"Ville de naissance")),
            ("medecin_nom", _(u"Nom du médecin")),
            ("tel_mobile", _(u"Tél. mobile")),
            ("tel_domicile", _(u"Tél. domicile")),
            ("mail", _(u"Email")),
            ("ville_residence", _(u"Ville de résidence")),
            ("secteur", _(u"Secteur géographique")),
            ("nom_ecole", _(u"Ecole")),
            ("nom_classe", _(u"Classe")),
            ("nom_niveau_scolaire", _(u"Niveau scolaire")),
            ("famille", _(u"Famille")),
            ("regime", _(u"Régime social")),
            ("caisse", _(u"Caisse d'allocations")),
            ]

        # Intégration des questionnaires
        q = UTILS_Questionnaires.Questionnaires()
        for public in ("famille", "individu") :
            for dictTemp in q.GetQuestions(public) :
                label = _(u"Question %s. : %s") % (public[:3], dictTemp["label"])
                code = "question_%s_%d" % (public, dictTemp["IDquestion"])
                liste_choix.append((code, label))

        self.ctrl_donnee = CTRL_Choix(self, liste_choix)

        # Options
        self.staticbox_options_staticbox = wx.StaticBox(self, -1, _(u"Options"))
        self.label_largeur = wx.StaticText(self, -1, _(u"Largeur :"))
        liste_choix = [("automatique", _(u"Automatique")),]
        for x in range(5, 205, 5):
            liste_choix.append((str(x), "%d pixels" % x))
        self.ctrl_largeur = CTRL_Choix(self, liste_choix)

        # Boutons
        self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png")
        self.bouton_annuler = CTRL_Bouton_image.CTRL(self, id=wx.ID_CANCEL, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png")

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)

        # Init
        self.SetTitle(_(u"Saisie d'une colonne"))
Ejemplo n.º 27
0
    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
Ejemplo n.º 28
0
    def InitObjectListView(self):
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        def FormateDate(date):
            if date == None:
                return _(u"Non définie")
            else:
                return datetime.datetime.strftime(date, "%d/%m/%Y - %Hh%M")

        dict_colonnes = {
            "IDlocation":
            ColumnDefn(u"", "left", 0, "IDlocation", typeDonnee="entier"),
            "date_debut":
            ColumnDefn(_(u"Début"),
                       "left",
                       130,
                       "date_debut",
                       typeDonnee="date",
                       stringConverter=FormateDate),
            "date_fin":
            ColumnDefn(_(u"Fin"),
                       "left",
                       130,
                       "date_fin",
                       typeDonnee="date",
                       stringConverter=FormateDate),
            "nomProduit":
            ColumnDefn(_(u"Nom du produit"),
                       'left',
                       200,
                       "nomProduit",
                       typeDonnee="texte"),
            "nomCategorie":
            ColumnDefn(_(u"Catégorie du produit"),
                       'left',
                       200,
                       "nomCategorie",
                       typeDonnee="texte"),
            "quantite":
            ColumnDefn(u"Qté", "left", 60, "quantite", typeDonnee="entier"),
            "nomTitulaires":
            ColumnDefn(_(u"Nom"),
                       'left',
                       270,
                       "nomTitulaires",
                       typeDonnee="texte"),
            "rue":
            ColumnDefn(_(u"Rue"), 'left', 200, "rue", typeDonnee="texte"),
            "cp":
            ColumnDefn(_(u"C.P."), 'left', 70, "cp", typeDonnee="texte"),
            "ville":
            ColumnDefn(_(u"Ville"), 'left', 150, "ville", typeDonnee="texte"),
        }

        liste_temp = [
            "IDlocation", "date_debut", "date_fin", "nomProduit",
            "nomCategorie", "quantite", "nomTitulaires", "rue", "cp", "ville"
        ]

        if self.IDfamille != None:
            liste_temp = [
                "IDlocation", "date_debut", "date_fin", "nomProduit",
                "nomCategorie", "quantite"
            ]

        if self.IDproduit != None:
            liste_temp = [
                "IDlocation", "date_debut", "date_fin", "quantite",
                "nomTitulaires", "rue", "cp", "ville"
            ]

        liste_Colonnes = []
        for code in liste_temp:
            liste_Colonnes.append(dict_colonnes[code])

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        self.SetColumns(liste_Colonnes)
        if self.checkColonne == True:
            self.CreateCheckStateColumn(1)
            self.SetSortColumn(self.columns[2])
        else:
            self.SetSortColumn(self.columns[1])

        self.SetEmptyListMsg(_(u"Aucune location"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))

        self.SetObjects(self.donnees)
Ejemplo n.º 29
0
    def InitObjectListView(self):
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur(
            "couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        self.AddNamedImages(
            "attention",
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Reservation.png"),
                      wx.BITMAP_TYPE_PNG))
        self.AddNamedImages(
            "pasok",
            wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Refus.png"),
                      wx.BITMAP_TYPE_PNG))

        def FormateDate(date):
            if date == None:
                return _(u"Non définie")
            else:
                return datetime.datetime.strftime(date, "%d/%m/%Y - %Hh%M")

        def FormateJoursRestants(temps_restant):
            if temps_restant == None:
                return ""
            else:
                return int(temps_restant)

        def GetImageReste(track):
            if track.temps_restant != None:
                if track.temps_restant < 0:
                    return "pasok"
                elif track.temps_restant < track.duree * 10 // 100:
                    return "attention"
            return None

        dict_colonnes = {
            "IDlocation":
            ColumnDefn(u"", "left", 0, "IDlocation", typeDonnee="entier"),
            "date_debut":
            ColumnDefn(_(u"Début"),
                       "left",
                       130,
                       "date_debut",
                       typeDonnee="date",
                       stringConverter=FormateDate),
            "date_fin":
            ColumnDefn(_(u"Fin"),
                       "left",
                       130,
                       "date_fin",
                       typeDonnee="date",
                       stringConverter=FormateDate),
            "nomProduit":
            ColumnDefn(_(u"Nom du produit"),
                       'left',
                       200,
                       "nomProduit",
                       typeDonnee="texte"),
            "nomCategorie":
            ColumnDefn(_(u"Catégorie du produit"),
                       'left',
                       200,
                       "nomCategorie",
                       typeDonnee="texte"),
            "quantite":
            ColumnDefn(u"Qté", "left", 60, "quantite", typeDonnee="entier"),
            "nomTitulaires":
            ColumnDefn(_(u"Loueur"),
                       'left',
                       270,
                       "nomTitulaires",
                       typeDonnee="texte"),
            "rue":
            ColumnDefn(_(u"Rue"), 'left', 200, "rue", typeDonnee="texte"),
            "cp":
            ColumnDefn(_(u"C.P."), 'left', 70, "cp", typeDonnee="texte"),
            "ville":
            ColumnDefn(_(u"Ville"), 'left', 150, "ville", typeDonnee="texte"),
            "nbre_jours_restants":
            ColumnDefn(u"Jours restants",
                       "left",
                       60,
                       "temps_restant",
                       typeDonnee="entier",
                       imageGetter=GetImageReste,
                       stringConverter=FormateJoursRestants),
        }

        liste_temp = [
            "IDlocation", "date_debut", "date_fin", "nomProduit",
            "nomCategorie", "quantite", "nomTitulaires", "rue", "cp", "ville",
            "nbre_jours_restants"
        ]

        if self.IDfamille != None:
            liste_temp = [
                "IDlocation", "date_debut", "date_fin", "nomProduit",
                "nomCategorie", "quantite", "nbre_jours_restants"
            ]

        if self.IDproduit != None:
            liste_temp = [
                "IDlocation", "date_debut", "date_fin", "quantite",
                "nomTitulaires", "rue", "cp", "ville", "nbre_jours_restants"
            ]

        liste_Colonnes = []
        for code in liste_temp:
            liste_Colonnes.append(dict_colonnes[code])

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(
            UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        # self.SetColumns(liste_Colonnes)
        self.SetColumns2(colonnes=liste_Colonnes, nomListe="OL_Locations")

        if self.checkColonne == True:
            self.CreateCheckStateColumn(1)
            self.SetSortColumn(self.columns[2])
        else:
            self.SetSortColumn(self.columns[1])

        self.SetEmptyListMsg(_(u"Aucune location"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))

        self.SetObjects(self.donnees)
Ejemplo n.º 30
0
    def InitObjectListView(self):            
        # Couleur en alternance des lignes
        self.oddRowsBackColor = UTILS_Interface.GetValeur("couleur_tres_claire", wx.Colour(240, 251, 237))
        self.evenRowsBackColor = wx.Colour(255, 255, 255)
        self.useExpansionColumn = True

        # Préparation de la listeImages
        self.AddNamedImages("attente", wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Interdit.png"), wx.BITMAP_TYPE_PNG))
        self.AddNamedImages("refusee", wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Supprimer_2.png"), wx.BITMAP_TYPE_PNG))
        self.AddNamedImages("attribuee", wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ok4.png"), wx.BITMAP_TYPE_PNG))
        self.AddNamedImages("disponibilite", wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Ok4_orange.png"), wx.BITMAP_TYPE_PNG))

        def GetImageStatut(track):
            if track.statut == "attente" :
                return "attente"
            elif track.statut == "refusee" :
                return "refusee"
            elif track.statut == "attribuee" :
                return "attribuee"
            elif track.statut == "disponibilite" :
                return "disponibilite"
            else :
                return None

        def FormateDate(date):
            if date == None :
                return _(u"Non définie")
            else :
                return datetime.datetime.strftime(date, "%d/%m/%Y - %Hh%M")

        def FormatePosition(position):
            if position == None :
                return _(u"")
            elif position == 1 :
                return _(u"1er")
            else :
                return _(u"%dème") % position

        liste_Colonnes = [
            ColumnDefn(u"", "left", 0, "IDdemande", typeDonnee="entier"),
            ColumnDefn(_(u"Date"), "left", 130, "date", typeDonnee="date", stringConverter=FormateDate),
            ]

        if self.IDfamille == None :
            liste_Colonnes.extend([
                ColumnDefn(_(u"Nom du demandeur"), 'left', 210, "nomTitulaires", typeDonnee="texte"),
                # ColumnDefn(_(u"Rue"), 'left', 200, "rue", typeDonnee="texte"),
                # ColumnDefn(_(u"C.P."), 'left', 70, "cp", typeDonnee="texte"),
                # ColumnDefn(_(u"Ville"), 'left', 150, "ville", typeDonnee="texte"),
                ])

        liste_Colonnes.extend([
            ColumnDefn(_(u"Statut de la demande"), 'left', 170, "texte_statut", typeDonnee="texte", imageGetter=GetImageStatut),
            ColumnDefn(_(u"Position"), 'left', 80, "position", typeDonnee="entier", stringConverter=FormatePosition),
            ColumnDefn(_(u"Catégories demandées"), 'left', 200, "texte_categories", typeDonnee="texte"),
            ColumnDefn(_(u"Produits demandés"), 'left', 200, "texte_produits", typeDonnee="texte"),
            ColumnDefn(_(u"Notes"), 'left', 200, "observations", typeDonnee="texte"),
            ])

        # Ajout des questions des questionnaires
        liste_Colonnes.extend(UTILS_Questionnaires.GetColonnesForOL(self.liste_questions))

        self.SetColumns(liste_Colonnes)

        if self.checkColonne == True :
            self.CreateCheckStateColumn(1)
            self.SetSortColumn(self.columns[2])
        else :
            self.SetSortColumn(self.columns[1])

        # Regroupement
        # if hasattr(self, "ctrl_regroupement") :
        #     self.ctrl_regroupement.MAJ(listview=self)
        # if self.regroupement != None:
        #     self.SetAlwaysGroupByColumn(self.regroupement)
        #     self.SetShowGroups(True)
        #     self.useExpansionColumn = False
        #     self.SetShowItemCounts(True)
        # else:
        #     self.SetShowGroups(False)
        #     self.useExpansionColumn = False

        self.SetEmptyListMsg(_(u"Aucune demande de location"))
        self.SetEmptyListMsgFont(wx.FFont(11, wx.DEFAULT, False, "Tekton"))
        self.SetSortColumn(self.columns[1])
        self.SetObjects(self.donnees)