Example #1
0
    def __init__(self, parent, listeChamps=[], IDchamp=None, code="", nom="", formule="", titre=u""):
        """ listeChamps = [(code, label), ...] """
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME)
        self.parent = parent
        self.listeChamps = listeChamps
        self.IDchamp = IDchamp
        
        self.label_code = wx.StaticText(self, -1, _(u"Code :"))
        self.ctrl_code = wx.TextCtrl(self, -1, code, size=(160, -1))
        self.label_code_info = wx.StaticText(self, -1, _(u"(En majuscules et sans espaces)"))
        
        self.label_nom = wx.StaticText(self, -1, _(u"Description :"))
        self.ctrl_nom = wx.TextCtrl(self, -1, nom)

        self.label_titre = wx.StaticText(self, -1, _(u"Titre de colonne :"))
        self.ctrl_titre = wx.TextCtrl(self, -1, titre)

        self.label_formule = wx.StaticText(self, -1, _(u"Formule :"))
        self.ctrl_formule = wx.TextCtrl(self, -1, formule, style=wx.TE_MULTILINE)
        self.hyper_formule = Hyperlien(self, label=_(u"Insérer un champ"), infobulle=_(u"Cliquez ici pour insérer un champ"), URL="")

        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, texte=_(u"Annuler"), 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)
Example #2
0
    def MAJ(self, date_debut=None, date_fin=None, IDactivite=None, listeGroupes=[], detail_groupes=False, affichage_donnees="quantite", 
                        affichage_regroupement="jour", affichage_mode="reservation", affichage_etat=["reservation", "present"], labelParametres=u""):     

        # Chargement des informations individuelles
        if self.date_debut != date_debut :
            self.infosIndividus = UTILS_Infos_individus.Informations(date_reference=date_debut, qf=True, inscriptions=True, messages=False, infosMedicales=False, cotisationsManquantes=False, piecesManquantes=False, questionnaires=True, scolarite=True)
            self.dictInfosIndividus = self.infosIndividus.GetDictValeurs(mode="individu", ID=None, formatChamp=False)
            self.dictInfosFamilles = self.infosIndividus.GetDictValeurs(mode="famille", ID=None, formatChamp=False)

        # Mémorisation des paramètres
        self.date_debut = date_debut
        self.date_fin = date_fin
        self.IDactivite = IDactivite
        self.listeGroupes = listeGroupes
        self.detail_groupes = detail_groupes
        self.affichage_donnees = affichage_donnees
        self.affichage_regroupement = affichage_regroupement
        self.affichage_mode = affichage_mode
        self.affichage_etat = affichage_etat
        self.labelParametres = labelParametres
        
        # init grid
        try :
            dlgAttente = PBI.PyBusyInfo(_(u"Veuillez patienter durant la recherche des données..."), parent=None, title=_(u"Calcul en cours"), icon=wx.Bitmap("Images/16x16/Logo.png", wx.BITMAP_TYPE_ANY))
            wx.Yield() 
            self.InitGrid() 
            del dlgAttente
        except Exception, err:
            del dlgAttente
            traceback.print_exc(file=sys.stdout)
            dlg = wx.MessageDialog(self, _(u"Désolé, le problème suivant a été rencontré dans la recherche des données de la synthèse des consommations : \n\n%s") % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR)
            dlg.ShowModal()
            dlg.Destroy()
            return False
Example #3
0
 def __do_layout(self):
     grid_sizer_base = wx.FlexGridSizer(rows=5, cols=2, vgap=5, hgap=5)
     
     # Port
     grid_sizer_base.Add(self.label_port, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 0)
     grid_sizer_base.Add(self.ctrl_port, 0, wx.ALL, 0)
     
     # Hote
     grid_sizer_base.Add(self.label_hote, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 0)
     grid_sizer_base.Add(self.ctrl_hote, 1, wx.EXPAND | wx.ALL, 0)
     
     # User
     grid_sizer_base.Add(self.label_user, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 0)
     grid_sizer_base.Add(self.ctrl_user, 1, wx.EXPAND | wx.ALL, 0)
     
     # Mot de passe
     grid_sizer_base.Add(self.label_mdp, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ALIGN_RIGHT, 0)
     grid_sizer_base.Add(self.ctrl_mdp, 1, wx.EXPAND | wx.ALL, 0)
             
     grid_sizer_base.AddGrowableCol(1)
     self.SetSizer(grid_sizer_base)
     grid_sizer_base.Fit(self)
     self.Layout()
     
     self.ctrl_port.SetToolTipString(_(u"Le numéro de port est 3306 par défaut."))
     self.ctrl_hote.SetToolTipString(_(u"Indiquez ici le nom du serveur hôte."))
     self.ctrl_user.SetToolTipString(_(u"Indiquez ici le nom de l'utilisateur. Ce nom doit avoir été validé par le créateur du fichier."))
     self.ctrl_mdp.SetToolTipString(_(u"Indiquez ici le mot de passe nécessaire à la connexion à MySQL"))
    def __init__(self, parent): 
        HTL.HyperTreeList.__init__(self, parent, -1)
        self.parent = parent
        self.typeListe = "journ" # ou "period"
        self.listeActivites = []
        
        # Importation des données
        self.dictTracks, self.dictActivites, self.dictInitial = self.Importation() 
                
        # Création des colonnes
        listeColonnes = [
            ( _(u"Activité / Unité"), 160, wx.ALIGN_LEFT),
            ( _(u"Abrégé"), 50, wx.ALIGN_LEFT),
            ( _(u"Type"), 90, wx.ALIGN_LEFT),
            ( _(u"Affichage"), LARGEUR_COLONNE_AFFICHAGE, wx.ALIGN_LEFT),
##            ( _(u"Ordre"), 40, wx.ALIGN_CENTER),
            ]
        numColonne = 0
        for label, largeur, alignement in listeColonnes :
            self.AddColumn(label)
            self.SetColumnWidth(numColonne, largeur)
            self.SetColumnAlignment(numColonne, alignement)
            numColonne += 1

        self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnContextMenu)
        
        self.SetBackgroundColour(wx.WHITE)
        self.SetAGWWindowStyleFlag(wx.TR_ROW_LINES |  wx.TR_COLUMN_LINES |wx.TR_HIDE_ROOT | wx.TR_HAS_BUTTONS | wx.TR_HAS_VARIABLE_ROW_HEIGHT | wx.TR_FULL_ROW_HIGHLIGHT ) # HTL.TR_NO_HEADER
        self.EnableSelectionVista(True)
    def OnContextMenu(self, event):
        """Ouverture du menu contextuel """
        item = self.GetSelection()
        dictItem = self.GetMainWindow().GetItemPyData(item)
        
        # Création du menu contextuel
        menuPop = wx.Menu()

        # Item Monter
        item = wx.MenuItem(menuPop, 10, _(u"Monter"))
        bmp = wx.Bitmap("Images/16x16/Fleche_haut.png", wx.BITMAP_TYPE_PNG)
        item.SetBitmap(bmp)
        menuPop.AppendItem(item)
        self.Bind(wx.EVT_MENU, self.Monter, id=10)
        
        # Item Descendre
        item = wx.MenuItem(menuPop, 20, _(u"Descendre"))
        bmp = wx.Bitmap("Images/16x16/Fleche_bas.png", wx.BITMAP_TYPE_PNG)
        item.SetBitmap(bmp)
        menuPop.AppendItem(item)
        self.Bind(wx.EVT_MENU, self.Descendre, id=20) 
        
        menuPop.AppendSeparator()
        
        # Item Descendre
        item = wx.MenuItem(menuPop, 30, _(u"Réinitialiser"))
        bmp = wx.Bitmap("Images/16x16/Actualiser.png", wx.BITMAP_TYPE_PNG)
        item.SetBitmap(bmp)
        menuPop.AppendItem(item)
        self.Bind(wx.EVT_MENU, self.Reinit, id=30)            

        # Finalisation du menu
        self.PopupMenu(menuPop)
        menuPop.Destroy()
    def OnBoutonActualiser(self, event): 
        IDactivite = self.ctrl_activite.GetID()
        if IDactivite == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner une activité !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_activite.SetFocus() 
            return False

        date_debut = self.ctrl_date_debut.GetDate()
        if date_debut == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement saisir une date de début !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_date_debut.SetFocus() 
            return False

        date_fin = self.ctrl_date_fin.GetDate()
        if date_fin == None :
            dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement saisir une date de fin !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_date_fin.SetFocus() 
            return False
        
        self.ctrl_individus.SetPeriode(date_debut, date_fin)
        self.ctrl_individus.SetActivite(IDactivite)
        self.ctrl_individus.MAJ() 
Example #7
0
 def __init__(self, parent):
     wx.Dialog.__init__(self, parent, -1, name="DLG_Console_python", style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME)
     self.parent = parent
     
     # Bandeau
     intro = _(u"Cette console Python intégrée à Noethys peut être utilisée à des fins de débogage.")
     titre = _(u"Console Python")
     self.SetTitle(titre)
     self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Python.png")
     
     # Contenu
     self.ctrl = py.crust.Crust(self, intro=u"")
     self.shell = self.ctrl.shell
     
     # Commandes
     self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
     self.bouton_fermer = CTRL_Bouton_image.CTRL(self, id=wx.ID_CANCEL, texte=_(u"Fermer"), cheminImage="Images/32x32/Fermer.png")
         
     self.__set_properties()
     self.__do_layout()
     
     self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
             
     # Initialisation
     wx.CallAfter(self.Initialisation)
 def GetPresents(self):
     if self.radio_inscrits.GetValue() == True :
         # Tous les inscrits
         return None
     else:
         # Uniquement les présents
         date_debut = self.ctrl_date_debut.GetDate()
         if self.ctrl_date_debut.FonctionValiderDate() == False or date_debut == None :
             dlg = wx.MessageDialog(self, _(u"La date de début ne semble pas valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
             dlg.ShowModal()
             dlg.Destroy()
             self.ctrl_date_debut.SetFocus()
             return False
         
         date_fin = self.ctrl_date_fin.GetDate()
         if self.ctrl_date_fin.FonctionValiderDate() == False or date_fin == None :
             dlg = wx.MessageDialog(self, _(u"La date de fin ne semble pas valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
             dlg.ShowModal()
             dlg.Destroy()
             self.ctrl_date_fin.SetFocus()
             return False
         
         if date_debut > date_fin :
             dlg = wx.MessageDialog(self, _(u"La date de début est supérieure à la date de fin !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
             dlg.ShowModal()
             dlg.Destroy()
             self.ctrl_date_fin.SetFocus()
             return False
         
         return (date_debut, date_fin)
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=-1, name="panel_parametres", style=wx.TAB_TRAVERSAL)
        self.parent = parent
        
        # Activités
        self.staticbox_activites_staticbox = wx.StaticBox(self, -1, _(u"Activités"))
        self.ctrl_activites = CTRL_Selection_activites.CTRL(self)
        self.ctrl_activites.SetMinSize((-1, 90))
        
        # Inscrits / Présents
        self.staticbox_presents_staticbox = wx.StaticBox(self, -1, _(u"Options"))
        self.ctrl_options = Options(self)

        # Villes
        self.staticbox_villes_staticbox = wx.StaticBox(self, -1, _(u"Filtre Villes"))
        self.ctrl_villes = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE)
        
        # Boutons afficher
        self.bouton_afficher = CTRL_Bouton_image.CTRL(self, texte=_(u"Rafraîchir la liste"), cheminImage="Images/32x32/Actualiser.png")
        self.bouton_afficher.SetMinSize((-1, 50)) 

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAfficher, self.bouton_afficher)
    def __init__(self, parent):
        wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME)
        self.parent = parent
        
        intro = _(u"Vous pouvez ici consulter et imprimer la liste des prestations par ville. Sélectionnez un ou plusieurs groupes d'activités ou certaines activités en particulier, puis saisissez une liste de villes à sélectionner, avant de cliquer sur le bouton 'Rafraîchir la liste' pour afficher les résultats.")
        titre = _(u"Liste des prestations par famille")
        self.SetTitle(titre)
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Euro.png")
        
        self.ctrl_parametres = Parametres(self)
        self.ctrl_prestations = CTRL_Prestations_villes.CTRL(self)
        
        self.bouton_ouvrir_fiche = wx.BitmapButton(self, -1, wx.Bitmap("Images/16x16/Famille.png", wx.BITMAP_TYPE_ANY))
        self.bouton_apercu = wx.BitmapButton(self, -1, wx.Bitmap("Images/16x16/Apercu.png", wx.BITMAP_TYPE_ANY))
        
        self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_fermer = CTRL_Bouton_image.CTRL(self, id=wx.ID_CANCEL, texte=_(u"Fermer"), cheminImage="Images/32x32/Fermer.png")

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OuvrirFiche, self.bouton_ouvrir_fiche)
        self.Bind(wx.EVT_BUTTON, self.Apercu, self.bouton_apercu)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        
        self.MAJ() 
Example #11
0
 def OnLeftLink(self, event):
     """ Sélectionner les données à importer """
     # Préparation de la liste des données
     listeDonnees = []
     listePreSelections = []
     index = 0
     for nomCategorie, tables, selection in self.listeTablesImportation :
         listeDonnees.append(nomCategorie)
         if selection == True :
             listePreSelections.append(index)
         index += 1
                                       
     # Boîte de dialogue sélections multiples
     titre = _(u"Importation des données")
     message = _(u"Sélectionnez les données que vous souhaitez importer :")
     dlg = wx.MultiChoiceDialog(self, message, titre, listeDonnees, wx.CHOICEDLG_STYLE)
     # Coche ceux qui doivent être déjà sélectionnés dans la liste
     dlg.SetSelections(listePreSelections)
     
     # Résultats
     if dlg.ShowModal() == wx.ID_OK:
         listeSelections = dlg.GetSelections()
         index = 0
         for categorie in self.listeTablesImportation :
             if index in listeSelections :
                 self.listeTablesImportation[index][2] = True
             else:
                 self.listeTablesImportation[index][2] = False
             index += 1
         
         if len(listeSelections) == 0 :
             self.checkbox_details.SetValue(False)
         dlg.Destroy()
     else:
         dlg.Destroy()
    def Importation(self):
        """ Importation des données """
        if self.track == None :
            return
        
        self.ctrl_famille.SetIDfamille(self.track.IDfamille)

        if self.track.prelevement_iban != None : self.ctrl_iban.SetValue(self.track.prelevement_iban)
        if self.track.prelevement_bic != None : self.ctrl_bic.SetValue(self.track.prelevement_bic)
##        if self.track.prelevement_banque != None : self.ctrl_banque.SetID(self.track.prelevement_banque)
        
        self.ctrl_titulaire.SetValue(self.track.titulaire)
        
        if self.track.type == "manuel" : labelType = _(u"Saisie manuelle")
        elif self.track.type == "facture" : labelType = _(u"Facture")
        else : labelType = u""
        self.ctrl_type.SetLabel(labelType)
        
        self.ctrl_libelle.SetValue(self.track.libelle) 
        self.ctrl_montant.SetMontant(self.track.montant)
        
        if self.track.reglement == True :
            self.ctrl_reglement.SetLabel(_(u"Oui"))
        else :
            self.ctrl_reglement.SetLabel(_(u"Non"))
        
        if self.track.statut == "valide" : self.radio_etat_valide.SetValue(True)
        elif self.track.statut == "refus" : self.radio_etat_refus.SetValue(True)
        else : self.radio_etat_attente.SetValue(True)
        
        self.ctrl_sequence.SetCode(self.track.sequence) 
    def __init__(self, parent, IDactivite=None, IDtarif=None, nouveauTarif=True):
        wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
        self.parent = parent
        self.IDactivite = IDactivite
        self.IDtarif = IDtarif
        self.nouveauTarif = nouveauTarif
        
        self.label_combinaisons = wx.StaticText(self, -1, _(u"Saisissez les combinaisons conditionnelles :"))
        self.ctrl_combinaisons = ListBoxCombinaisons(self, IDactivite=IDactivite, IDtarif=IDtarif)
        self.bouton_ajouter_combi = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Ajouter.png", wx.BITMAP_TYPE_ANY))
        self.bouton_modifier_combi = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Modifier.png", wx.BITMAP_TYPE_ANY))
        self.bouton_supprimer_combi = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Supprimer.png", wx.BITMAP_TYPE_ANY))

        # Etats
        self.label_etats = wx.StaticText(self, -1, _(u"Cochez les états conditionnels :"))
        self.ctrl_etats = CTRL_Etats(self, IDactivite)
        self.ctrl_etats.SetIDcoches(("reservation", "present", "absenti"))
        self.ctrl_etats.SetMinSize((150, 120))

        self.__set_properties()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnAjouterCombi, self.bouton_ajouter_combi)
        self.Bind(wx.EVT_BUTTON, self.OnModifierCombi, self.bouton_modifier_combi)
        self.Bind(wx.EVT_BUTTON, self.OnSupprimerCombi, self.bouton_supprimer_combi)
        
        if self.IDtarif != None :
            self.Importation() 
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
        self.parent = parent
        
        self.label_modele = wx.StaticText(self, -1, _(u"Modèle :"))
        self.ctrl_modele = CTRL_Choix_modele.CTRL_Choice(self, categorie="cotisation")
        self.bouton_modele = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Mecanisme.png", wx.BITMAP_TYPE_ANY))
        
##        self.checkbox_coupon = wx.CheckBox(self, -1, _(u"Insérer le coupon-réponse"))

        self.label_repertoire = wx.StaticText(self, -1, _(u"Copie :"))
        self.checkbox_repertoire = wx.CheckBox(self, -1, _(u"Enregistrer une copie unique dans le répertoire :"))
        self.ctrl_repertoire = wx.TextCtrl(self, -1, u"")
        self.ctrl_repertoire.SetMinSize((270, -1))
        self.bouton_repertoire = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Repertoire.png", wx.BITMAP_TYPE_ANY))

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OnBoutonModele, self.bouton_modele)
        self.Bind(wx.EVT_CHECKBOX, self.OnCheckRepertoire, self.checkbox_repertoire)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonRepertoire, self.bouton_repertoire)
        
        # Récupération des paramètres dans le CONFIG
##        self.checkbox_coupon.SetValue(UTILS_Config.GetParametre("impression_rappels_coupon", defaut=1))
        param = UTILS_Config.GetParametre("impression_cotisations_repertoire", defaut="")
        if param != "" :
            self.checkbox_repertoire.SetValue(True)
            self.ctrl_repertoire.SetValue(param)

        # Init contrôles
        self.OnCheckRepertoire(None)
 def __set_properties(self):
     self.SetTitle(_(u"Saisie d'une action"))
     self.bouton_aide.SetToolTipString(_(u"Cliquez ici pour obtenir de l'aide"))
     self.bouton_ok.SetToolTipString(_(u"Cliquez ici pour valider"))
     self.bouton_annuler.SetToolTipString(_(u"Cliquez ici pour annuler"))
     self.ctrl_conditions.SetMinSize((400, -1))
     self.SetMinSize((-1, 580))
Example #16
0
 def CreationIDindividu(self):
     nom = self.ctrl_nom.GetValue()
     if nom  == "" :
         dlg = wx.MessageDialog(self, _(u"Vous devez saisir le nom du nouvel individu à créer !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         self.ctrl_nom.SetFocus()
         return
     
     prenom = self.ctrl_prenom.GetValue()
     if prenom == "" :
         dlg = wx.MessageDialog(self, _(u"Vous devez saisir le prénom du nouvel individu à créer !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         self.ctrl_prenom.SetFocus()
         return
     
     # Vérifie que l'individu n'existe pas déjà dans la liste
     for individu in self.ctrl_propositions.donnees :
         if Formate(individu.nom) == Formate(nom) and Formate(individu.prenom) == Formate(prenom) :
             dlg = wx.MessageDialog(self, _(u"Un individu portant ce nom existe déjà dans la liste ! \n\nSi vous souhaitez quand même créer un nouvel individu avec ce nom, cliquez sur OUI."), _(u"Confirmation"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION)
             reponse = dlg.ShowModal()
             dlg.Destroy()
             if reponse !=  wx.ID_YES :
                 return
     
     self.mode = "creation"
     self.EndModal(wx.ID_OK) 
Example #17
0
    def OnBoutonOk(self, event): 
        # Vérification de la saisie
        date_debut = self.GetDateDebut() 
        date_fin = self.GetDateFin() 
        
        if date_debut == None or self.ctrl_date_debut.Validation() == False :
            dlg = wx.MessageDialog(self, _(u"Vous devez saisir une date de début valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_date_debut.SetFocus()
            return

        if date_fin == None or self.ctrl_date_fin.Validation() == False :
            dlg = wx.MessageDialog(self, _(u"Vous devez saisir une date de fin valide !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_date_fin.SetFocus()
            return

        if date_debut > date_fin :
            dlg = wx.MessageDialog(self, _(u"La date de début ne peut pas être supérieure à la date de fin !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_date_debut.SetFocus()
            return

        # Valide la saisie
        self.EndModal(wx.ID_OK)
 def __set_properties(self):
     self.SetTitle(_(u"Saisie d'un forfait crédit"))
     self.ctrl_forfaits.SetToolTipString(_(u"Sélectionnez un forfait à créer"))
     self.bouton_aide.SetToolTipString(_(u"Cliquez ici obtenir de l'aide"))
     self.bouton_ok.SetToolTipString(_(u"Cliquez ici pour valider"))
     self.bouton_annuler.SetToolTipString(_(u"Cliquez ici pour annuler"))
     self.SetMinSize((-1, 640))
 def Validation(self):
     """ Vérification des donnéees """
     if self.dictDonnees.has_key(self.code) == False : 
         dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner une méthode de calcul !"), "Erreur", wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return False
     for numLigne, dictColonnes in self.dictDonnees[self.code].iteritems() :
         numColonne = 0
         for indexChamp in self.listeColonnes :
             codeChamp = LISTE_COLONNES[indexChamp]["code"]
             label = LISTE_COLONNES[indexChamp]["label"]
             if codeChamp in self.champs_obligatoires :
                 # Vérifie la valeur
                 if dictColonnes.has_key(numColonne) == False :
                     dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement renseigner la colonne '%s' de la ligne %d !") % (label, numLigne+1), "Erreur", wx.OK | wx.ICON_EXCLAMATION)
                     dlg.ShowModal()
                     dlg.Destroy()
                     return False
                 else:
                     valeur = dictColonnes[numColonne]
                     # ICI, PEUT-ETRE PROGRAMMER UNE VERIF DE LA VALEUR PLUS PRECISE...
             numColonne += 1
             
     return True
Example #20
0
 def __set_properties(self):
     self.bouton_ajouter.SetToolTipString(_(u"Cliquez ici pour ajouter un modèle"))
     self.bouton_modifier.SetToolTipString(_(u"Cliquez ici pour modifier le modèle sélectionné dans la liste"))
     self.bouton_supprimer.SetToolTipString(_(u"Cliquez ici pour supprimer le modèle sélectionné dans la iste"))
     self.bouton_aide.SetToolTipString(_(u"Cliquez ici pour obtenir de l'aide"))
     self.bouton_fermer.SetToolTipString(_(u"Cliquez ici pour fermer"))
     self.SetMinSize((750, 600))
Example #21
0
    def __init__(self, parent, listeChoix=[]):
        wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
        self.parent = parent
        self.listeChoix = listeChoix
        self.listeChoix.append(("date:", _(u"La date suivante")))

        self.label_date = wx.StaticText(self, -1, _(u"Date de facturation :"))
        choices = []
        for code, label in self.listeChoix:
            choices.append(label)
        self.ctrl_choix = wx.Choice(self, -1, choices=choices)
        self.ctrl_choix.SetToolTipString(_(u"Sélectionnez la date de facturation de la prestation"))
        self.ctrl_date = CTRL_Saisie_date.Date2(self)

        grid_sizer_base = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5)
        grid_sizer_base.Add(self.label_date, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0)
        grid_sizer_base.Add(self.ctrl_choix, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL | wx.EXPAND, 0)
        grid_sizer_base.Add(self.ctrl_date, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 0)
        grid_sizer_base.AddGrowableCol(1)
        self.SetSizer(grid_sizer_base)
        grid_sizer_base.Fit(self)
        self.Layout()

        self.Bind(wx.EVT_CHOICE, self.OnChoix, self.ctrl_choix)

        self.OnChoix()
Example #22
0
    def __init__(self, parent, IDactivite=None, IDtarif=None, nouveauTarif=False):
        wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
        self.parent = parent

        self.liste_pages = [
            ("SIMPLE", _(u"Prestation simple"), Panel_type_sans_parametres(self, nouveauTarif)),
            (
                "JOURN",
                _(u"Prestation journalière"),
                CTRL_Tarification_journ.Panel(self, IDactivite, IDtarif, nouveauTarif),
            ),
            ("FORFAIT", _(u"Forfait daté"), CTRL_Tarification_forfait.Panel(self, IDactivite, IDtarif, nouveauTarif)),
            ("CREDIT", _(u"Forfait crédit"), CTRL_Tarification_credit.Panel(self, IDactivite, IDtarif, nouveauTarif)),
        ]

        # Création des pages
        self.grid_sizer_pages = wx.FlexGridSizer(len(self.liste_pages), 1, 10, 10)
        self.dictPages = {}
        index = 0
        for code, label, ctrl in self.liste_pages:
            self.grid_sizer_pages.Add(ctrl, 1, wx.EXPAND, 0)
            self.grid_sizer_pages.AddGrowableRow(index)
            ctrl.Show(False)
            self.dictPages[code] = {"index": index, "ctrl": ctrl}
            index += 1

        # Layout
        self.grid_sizer_pages.AddGrowableCol(0)
        self.SetSizer(self.grid_sizer_pages)
Example #23
0
 def Menu_Supprimer(self, event):
     """ Suppression de la photo """
     txtMessage = _(u"Souhaitez-vous vraiment supprimer cette photo ?")
     dlgConfirm = wx.MessageDialog(self, txtMessage, _(u"Confirmation de suppression"), wx.YES_NO|wx.NO_DEFAULT|wx.ICON_QUESTION)
     reponse = dlgConfirm.ShowModal()
     dlgConfirm.Destroy()
     if reponse == wx.ID_NO:
         return
     # Suppression de la photo 
     DB = GestionDB.DB(suffixe="PHOTOS")
     DB.ReqDEL("photos", "IDindividu", self.IDindividu)
     DB.Close()
     # Recherche la civilité de l'individu
     DB = GestionDB.DB()
     req = "SELECT IDcivilite FROM individus WHERE IDindividu=%d;" % self.IDindividu 
     DB.ExecuterReq(req)
     IDcivilite = DB.ResultatReq()[0][0]
     if IDcivilite == None : return
     DB.Close()
     import DATA_Civilites as Civilites
     listeCivilites = Civilites.LISTE_CIVILITES
     for rubrique, civilites in listeCivilites :
         for civilite in civilites :
             if civilite[0] == IDcivilite :
                 nomFichier = civilite[3]
                 break
     nomFichier=u"Images/128x128/%s" % nomFichier
     # Applique l'image par défaut
     self.SetPhoto(self.IDindividu, nomFichier)
Example #24
0
 def Supprimer(self, event):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("parametrage_vaccins", "supprimer") == False : return
     if len(self.Selection()) == 0 :
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucun vaccin dans la liste"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     IDtype_vaccin = self.Selection()[0].IDtype_vaccin
     
     # Vérifie que ce type de vaccin n'a pas déjà été attribué à un individu
     DB = GestionDB.DB()
     req = """SELECT COUNT(IDvaccin)
     FROM vaccins 
     WHERE IDtype_vaccin=%d
     ;""" % IDtype_vaccin
     DB.ExecuterReq(req)
     nbreVaccins = int(DB.ResultatReq()[0][0])
     DB.Close()
     if nbreVaccins > 0 :
         dlg = wx.MessageDialog(self, _(u"Ce vaccin a déjà été attribué %d fois.\n\nVous ne pouvez donc pas le supprimer !") % nbreVaccins, _(u"Suppression impossible"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     
     # Confirmation de suppression
     dlg = wx.MessageDialog(self, _(u"Souhaitez-vous vraiment supprimer ce vaccin ?"), _(u"Suppression"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_INFORMATION)
     if dlg.ShowModal() == wx.ID_YES :
         DB = GestionDB.DB()
         DB.ReqDEL("types_vaccins", "IDtype_vaccin", IDtype_vaccin)
         DB.ReqDEL("vaccins_maladies", "IDtype_vaccin", IDtype_vaccin)
         DB.Close() 
         self.MAJ()
     dlg.Destroy()
Example #25
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=-1, name="panel_parametres", style=wx.TAB_TRAVERSAL)
        self.parent = parent
        
##        # Période
##        self.staticbox_periode_staticbox = wx.StaticBox(self, -1, _(u"Date de référence"))
##        self.ctrl_date = CTRL_Saisie_date.Date(self)
##        self.ctrl_date.SetDate(datetime.date.today())
##        self.bouton_date = wx.BitmapButton(self, -1, wx.Bitmap(u"Images/16x16/Calendrier.png", wx.BITMAP_TYPE_ANY))
        
        # Activités
        self.staticbox_activites_staticbox = wx.StaticBox(self, -1, _(u"Activités"))
        self.ctrl_activites = CTRL_Selection_activites.CTRL(self)
        self.ctrl_activites.SetMinSize((-1, 90))
        
        # Inscrits / Présents
        self.staticbox_presents_staticbox = wx.StaticBox(self, -1, _(u"Options"))
        self.ctrl_options = Options(self)
        
        # Boutons afficher
        self.bouton_afficher = CTRL_Bouton_image.CTRL(self, texte=_(u"Rafraîchir la liste"), cheminImage="Images/32x32/Actualiser.png")
        self.bouton_afficher.SetMinSize((-1, 50)) 

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAfficher, self.bouton_afficher)
Example #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|wx.THICK_FRAME)
        self.parent = parent
        
        intro = _(u"Vous pouvez ici consulter et imprimer la liste des régimes, caisses et numéros d'allocataire de chaque famille. Sélectionnez un ou plusieurs groupes d'activités ou certaines activités en particulier avant de cliquer sur le bouton 'Rafraîchir la liste' pour afficher les résultats.")
        titre = _(u"Liste des régimes et caisses")
        self.ctrl_bandeau = CTRL_Bandeau.Bandeau(self, titre=titre, texte=intro, hauteurHtml=30, nomImage="Images/32x32/Configuration2.png")
        
        self.ctrl_parametres = Parametres(self)
        self.ctrl_listview = OL_Liste_regimes.ListView(self, id=-1, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES)
        self.ctrl_recherche = OL_Liste_regimes.CTRL_Outils(self, listview=self.ctrl_listview)
        
        self.bouton_ouvrir_fiche = wx.BitmapButton(self, -1, wx.Bitmap("Images/16x16/Famille.png", wx.BITMAP_TYPE_ANY))
        self.bouton_apercu = wx.BitmapButton(self, -1, wx.Bitmap("Images/16x16/Apercu.png", wx.BITMAP_TYPE_ANY))
        self.bouton_imprimer = wx.BitmapButton(self, -1, wx.Bitmap("Images/16x16/Imprimante.png", wx.BITMAP_TYPE_ANY))
        
        self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png")
        self.bouton_fermer = CTRL_Bouton_image.CTRL(self, id=wx.ID_CANCEL, texte=_(u"Fermer"), cheminImage="Images/32x32/Fermer.png")

        self.__set_properties()
        self.__do_layout()
        
        self.Bind(wx.EVT_BUTTON, self.OuvrirFiche, self.bouton_ouvrir_fiche)
        self.Bind(wx.EVT_BUTTON, self.Apercu, self.bouton_apercu)
        self.Bind(wx.EVT_BUTTON, self.Imprimer, self.bouton_imprimer)
        self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide)
        
        self.MAJ(None)
Example #27
0
 def __init__(self, donnees, dictTitulaires):
     self.IDpiece = donnees[0]
     self.date_debut = UTILS_Dates.DateEngEnDateDD(donnees[1])
     self.date_fin = UTILS_Dates.DateEngEnDateDD(donnees[2])
     self.public = donnees[3]
     self.nomPiece = donnees[4]
     self.IDindividu = donnees[5]
     self.IDfamille = donnees[6]
     self.individu_nom = donnees[7]
     self.individu_prenom = donnees[8]
     
     # Nom Individu si pièce individuelle
     if self.individu_prenom == None :
         self.individu_nom_complet = self.individu_nom
     else :
         self.individu_nom_complet = u"%s %s" % (self.individu_nom, self.individu_prenom)
     
     # Nom Famille si pièce familiale
     if self.IDfamille != None :
         self.nom_titulaires = dictTitulaires[self.IDfamille]["titulairesSansCivilite"]
     else :
         self.nom_titulaires = ""
         
     # Type de pièce        
     if self.public == "famille" : 
         self.nomPublic = _(u"Familiale")
     else :
         self.nomPublic = _(u"Individuelle")
Example #28
0
    def __init__(self, *args, **kwds):
        wx.Frame.__init__(self, *args, **kwds)
        panel = wx.Panel(self, -1, name="test1")
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_1.Add(panel, 1, wx.ALL|wx.EXPAND)
        self.SetSizer(sizer_1)

        donnees = [
            {"image" : wx.Bitmap("Images/16x16/Loupe.png", wx.BITMAP_TYPE_ANY), "label" : _(u"Item 1"), "description" : _(u"Ceci est la description de l'item 1 qui est vraiment un texte très long qui devrait normalement dépasser.")} ,
            {"image" : wx.Bitmap("Images/16x16/Loupe.png", wx.BITMAP_TYPE_ANY), "label" : _(u"Item 2"), "description" : _(u"Ceci est la description de l'item 2")} ,
            {"image" : None, "label" : _(u"Item 3"), "description" : _(u"Ceci est la description de l'item 3")} ,
            {"label" : _(u"Item 4"), "description" : _(u"Ceci est la description de l'item 4")} ,
            ]
        self.ctrl1 = CTRL(panel, donnees=donnees, nbreLignesDescription=1)
        self.ctrl1.Select(0)
        
        donnees = []
        for x in range(1, 100) :
            donnees.append({"image" : wx.Bitmap("Images/32x32/Loupe.png", wx.BITMAP_TYPE_ANY), "label" : _(u"Item %d") % x, "description" : _(u"Ceci est la description de l'item %d") % x})
        self.ctrl2 = CTRL(panel, donnees=donnees)
##        self.ctrl2.Select(0)

        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        sizer_2.Add(self.ctrl1, 0, wx.ALL | wx.EXPAND, 10)
        sizer_2.Add(self.ctrl2, 0, wx.ALL | wx.EXPAND, 10)
        panel.SetSizer(sizer_2)
        self.Layout()
        
        self.Bind(wx.EVT_COMBOBOX, self.OnSelection2, self.ctrl2)
Example #29
0
    def __init__(self, parent, IDactivite=None, IDtarif=None, nouveauTarif=False):
        wx.Panel.__init__(self, parent, id=-1, style=wx.TAB_TRAVERSAL)
        self.parent = parent

        self.label_parametres = wx.StaticText(self, -1, _(u"Paramètres :"))
        self.ctrl_parametres = CTRL_Parametres(self, IDactivite=IDactivite, IDtarif=IDtarif, nouveauTarif=nouveauTarif)

        self.label_type = wx.StaticText(self, -1, _(u"Type de tarif :"))
        self.ctrl_type = Choix_type(self, liste_pages=self.ctrl_parametres.liste_pages)

        sizer_base = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_base = wx.FlexGridSizer(rows=2, cols=2, vgap=10, hgap=10)
        grid_sizer_base.Add(self.label_type, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_base.Add(self.ctrl_type, 1, wx.EXPAND, 0)
        grid_sizer_base.Add(self.label_parametres, 0, wx.ALIGN_RIGHT, 0)
        grid_sizer_base.Add(self.ctrl_parametres, 1, wx.EXPAND, 0)
        grid_sizer_base.AddGrowableRow(1)
        grid_sizer_base.AddGrowableCol(1)
        sizer_base.Add(grid_sizer_base, 1, wx.EXPAND | wx.ALL, 10)
        self.SetSizer(sizer_base)
        sizer_base.Fit(self)

        # Binds
        self.Bind(wx.EVT_CHOICE, self.OnChoixType, self.ctrl_type)

        # Init contrôles
        self.SetType(code="SIMPLE")
Example #30
0
 def __set_properties(self):
     self.ctrl_date_debut.SetToolTipString(_(u"Saisissez la date de début"))
     self.ctrl_date_fin.SetToolTipString(_(u"Saisissez la date de fin"))
     self.bouton_aide.SetToolTipString(_(u"Cliquez ici pour obtenir de l'aide"))
     self.bouton_ok.SetToolTipString(_(u"Cliquez ici pour valider"))
     self.bouton_annuler.SetToolTipString(_(u"Cliquez ici pour annuler"))
     self.SetMinSize((500, 200))
Example #31
0
 def label(self, time, major=False):
     if major:
         # Example: Week 23 (1-7 Jan 2009)
         first_weekday = self.start(time)
         next_first_weekday = self.increment(first_weekday)
         last_weekday = next_first_weekday - timedelta(days=1)
         range_string = self._time_range_string(first_weekday, last_weekday)
         return (_(u"Semaine %s (%s)")) % (time.isocalendar()[1], range_string)
     # This strip should never be used as minor
     return ""
Example #32
0
def GetDictCaisses(DB, dictParametres):
    # Vérifie si les données n'existent pas déj�
    global DICT_CAISSES
    if DICT_CAISSES["dictParametres"] == dictParametres:
        return DICT_CAISSES["dictResultats"]

    # Recherche des paramètres
    date_debut, date_fin = MODELES.GetDatesPeriode(dictParametres)
    conditionsActivites = MODELES.GetConditionActivites(dictParametres)

    req = """SELECT IDcaisse, nom FROM caisses;"""
    DB.ExecuterReq(req)
    listeCaisses = DB.ResultatReq()
    dictCaisses = {}
    for IDcaisse, nom in listeCaisses:
        dictCaisses[IDcaisse] = nom

    if dictParametres["mode"] == "presents":
        req = """SELECT IDcaisse, COUNT(familles.IDfamille)
        FROM familles
        LEFT JOIN comptes_payeurs ON comptes_payeurs.IDfamille = familles.IDfamille
        LEFT JOIN consommations ON consommations.IDcompte_payeur = comptes_payeurs.IDcompte_payeur
        WHERE date>='%s' AND date<='%s' 
        AND consommations.etat IN ('reservation', 'present')
        AND IDactivite IN %s
        GROUP BY IDcaisse, familles.IDfamille
        ;""" % (date_debut, date_fin, conditionsActivites)
    else:
        req = """SELECT IDcaisse, COUNT(familles.IDfamille)
        FROM familles
        LEFT JOIN comptes_payeurs ON comptes_payeurs.IDfamille = familles.IDfamille
        LEFT JOIN inscriptions ON inscriptions.IDcompte_payeur = comptes_payeurs.IDcompte_payeur
        WHERE inscriptions.statut='ok' AND IDactivite IN %s
        GROUP BY IDcaisse, familles.IDfamille
        ;""" % conditionsActivites

    DB.ExecuterReq(req)
    listeDonnees = DB.ResultatReq()
    if len(listeDonnees) == 0:
        return {}

    dictResultats = {}
    for IDcaisse, IDfamille in listeDonnees:
        if dictResultats.has_key(IDcaisse) == False:
            if dictCaisses.has_key(IDcaisse):
                nom = dictCaisses[IDcaisse]
            else:
                nom = _(u"Caisse inconnue")
            dictResultats[IDcaisse] = {"nom": nom, "nbreFamilles": 0}
        dictResultats[IDcaisse]["nbreFamilles"] += 1

    # Mémorisation des résultats
    DICT_CAISSES["dictParametres"] = dictParametres
    DICT_CAISSES["dictResultats"] = dictResultats
    return dictResultats
Example #33
0
    def Archiver_familles(self, etat="archiver"):
        if etat == "archiver":
            valeur = "archive"
            label = _(u"archiver")
        elif etat == "desarchiver":
            valeur = None
            label = _(u"désarchiver")

        # Sélection des individus
        liste_individus = self.SelectionIndividus(
            intro=_(u"Cochez les individus à %s :") % label)
        if liste_individus == False:
            return False

        # Demande de confirmation
        dlg = wx.MessageDialog(
            None,
            _(u"Souhaitez-vous vraiment %s %d fiches familles et %d fiches individuelles ?"
              ) % (label, len(self.liste_familles), len(liste_individus)),
            _(u"Confirmation"),
            wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES:
            return False

        listeModifications = []
        for IDfamille in self.liste_familles:
            listeModifications.append((valeur, IDfamille))
        self.DB.Executermany("UPDATE familles SET etat=? WHERE IDfamille=?",
                             listeModifications,
                             commit=False)

        listeModifications = []
        for IDindividu in liste_individus:
            listeModifications.append((valeur, IDindividu))
        self.DB.Executermany("UPDATE individus SET etat=? WHERE IDindividu=?",
                             listeModifications,
                             commit=False)

        self.DB.Commit()
        return True
Example #34
0
 def CreationPDFunique(repertoireCible=""):
     dictPieces = {}
     dlgAttente = wx.BusyInfo(
         _(u"Génération des lettres de rappel à l'unité au format PDF..."
           ), None)
     wx.Yield()
     try:
         index = 0
         for IDrappel, dictRappel in dictRappels.iteritems():
             if dictRappel["select"] == True:
                 num_rappel = dictRappel["num_rappel"]
                 nomTitulaires = self.Supprime_accent(
                     dictRappel["nomSansCivilite"])
                 nomFichier = _(u"Lettre de rappel %d - %s") % (
                     num_rappel, nomTitulaires)
                 cheminFichier = u"%s/%s.pdf" % (repertoireCible,
                                                 nomFichier)
                 dictComptesTemp = {IDrappel: dictRappel}
                 self.EcritStatusbar(
                     _(u"Edition de la lettre de rappel %d/%d : %s") %
                     (index, len(dictRappel), nomFichier))
                 UTILS_Impression_rappel.Impression(
                     dictComptesTemp,
                     dictOptions,
                     IDmodele=dictOptions["IDmodele"],
                     ouverture=False,
                     nomFichier=cheminFichier)
                 dictPieces[IDrappel] = cheminFichier
                 index += 1
         self.EcritStatusbar("")
         del dlgAttente
         return dictPieces
     except Exception, err:
         del dlgAttente
         traceback.print_exc(file=sys.stdout)
         dlg = wx.MessageDialog(
             None,
             _(u"Désolé, le problème suivant a été rencontré dans l'édition des lettres de rappel : \n\n%s"
               ) % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR)
         dlg.ShowModal()
         dlg.Destroy()
         return False
Example #35
0
def A9080():
    """ Création de la table DOCUMENTS """
    from Data import DATA_Tables as Tables
    DB = GestionDB.DB(suffixe="DOCUMENTS", modeCreation=True)
    if DB.echec == 1:
        dlg = wx.MessageDialog(None, _(u"Erreur dans la création du fichier de documents.\n\nErreur : %s") % DB.erreur, _(u"Erreur de création de fichier"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return False
    DB.CreationTables(Tables.DB_DOCUMENTS)
    DB.Close()
Example #36
0
 def InscriptionsSansIndividus(self):
     labelProbleme = _(u"Inscriptions sans individus associés")
     labelCorrection = _(u"Supprimer l'inscription")
     req = """SELECT IDinscription, inscriptions.IDactivite, activites.nom, inscriptions.date_inscription, inscriptions.IDindividu 
     FROM inscriptions 
     LEFT JOIN individus ON individus.IDindividu = inscriptions.IDindividu 
     LEFT JOIN activites ON activites.IDactivite = inscriptions.IDactivite
     WHERE individus.IDindividu IS NULL;"""
     self.DB.ExecuterReq(req)
     listePrestations = self.DB.ResultatReq()
     listeTemp = []
     for IDinscription, IDactivite, nomActivite, dateInscription, IDindividu in listePrestations:
         label = _(u"Individu ID%d inscrit le %s à l'activité %s") % (
             IDindividu, UTILS_Dates.DateEngFr(dateInscription),
             nomActivite)
         listeTemp.append(
             InscriptionsSansIndividus(label=label,
                                       IDinscription=IDinscription,
                                       IDindividu=IDindividu))
     self.listeResultats.append((labelProbleme, labelCorrection, listeTemp))
Example #37
0
 def LiensErrones(self):
     labelProbleme = _(u"Liens de parenté erronés")
     labelCorrection = _(u"Supprimer les liens erronés")
     req = """SELECT IDlien, IDfamille, IDindividu_sujet, IDtype_lien, IDindividu_objet, responsable, IDautorisation
     FROM liens
     ORDER BY IDlien;"""
     self.DB.ExecuterReq(req)
     listeDonnees = self.DB.ResultatReq()
     # Lecture des liens
     dictLiens = {}
     for IDlien, IDfamille, IDindividu_sujet, IDtype_lien, IDindividu_objet, responsable, IDautorisation in listeDonnees:
         key = (IDindividu_sujet, IDindividu_objet)
         if dictLiens.has_key(IDfamille) == False:
             dictLiens[IDfamille] = {}
         if dictLiens[IDfamille].has_key(key) == False:
             dictLiens[IDfamille][key] = []
         dictLiens[IDfamille][key].append(IDlien)
         dictLiens[IDfamille][key].sort()
     # Analyse
     dictLiensASupprimer = {}
     for IDfamille, dictKeys in dictLiens.iteritems():
         for key, listeIDlien in dictKeys.iteritems():
             if len(listeIDlien) > 1:
                 if dictLiensASupprimer.has_key(IDfamille) == False:
                     dictLiensASupprimer[IDfamille] = []
                 # Suppression des liens obsolètes
                 for IDlien in listeIDlien[1:]:
                     dictLiensASupprimer[IDfamille].append(IDlien)
     # Mémorisation
     listeIDfamille = dictLiensASupprimer.keys()
     listeIDfamille.sort()
     listeTemp = []
     for IDfamille in listeIDfamille:
         listeIDlien = dictLiensASupprimer[IDfamille]
         label = _(u"Famille ID%d : %d liens erronés") % (IDfamille,
                                                           len(listeIDlien))
         listeTemp.append(
             LiensErrones(label=label,
                          IDfamille=IDfamille,
                          listeIDlien=listeIDlien))
     self.listeResultats.append((labelProbleme, labelCorrection, listeTemp))
Example #38
0
 def CreationPDFunique(repertoireCible=""):
     dictPieces = {}
     dlgAttente = wx.BusyInfo(
         _(u"Génération des PDF à l'unité en cours..."), None)
     try:
         index = 0
         for IDinscription, dictInscription in dictInscriptions.iteritems(
         ):
             if dictInscription["select"] == True:
                 nomTitulaires = self.Supprime_accent(
                     dictInscription["{FAMILLE_NOM}"])
                 nomFichier = _(u"Inscription %d - %s") % (
                     IDinscription, nomTitulaires)
                 cheminFichier = u"%s/%s.pdf" % (repertoireCible,
                                                 nomFichier)
                 dictComptesTemp = {IDinscription: dictInscription}
                 self.EcritStatusbar(
                     _(u"Edition de l'inscription %d/%d : %s") %
                     (index, len(dictInscription), nomFichier))
                 UTILS_Impression_inscription.Impression(
                     dictComptesTemp,
                     dictOptions,
                     IDmodele=dictOptions["IDmodele"],
                     ouverture=False,
                     nomFichier=cheminFichier)
                 dictPieces[IDinscription] = cheminFichier
                 index += 1
         self.EcritStatusbar("")
         del dlgAttente
         return dictPieces
     except Exception, err:
         del dlgAttente
         traceback.print_exc(file=sys.stdout)
         dlg = wx.MessageDialog(
             None,
             _(u"Désolé, le problème suivant a été rencontré dans l'édition des inscriptions : \n\n%s"
               ) % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR)
         dlg.ShowModal()
         dlg.Destroy()
         return False
Example #39
0
def Procedure(code=""):
    # Recherche si procédure existe
    if DICT_PROCEDURES.has_key(code) == False:
        dlg = wx.MessageDialog(
            None, _(u"Désolé, cette procédure n'existe pas..."),
            _(u"Erreur"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return
    titre = DICT_PROCEDURES[code]
    # Demande de confirmation de lancement
    dlg = wx.MessageDialog(
        None,
        _(u"Souhaitez-vous vraiment lancer la procédure suivante ?\n\n   -> %s   "
          ) % titre, _(u"Lancement de la procédure"),
        wx.YES_NO | wx.YES_DEFAULT | wx.CANCEL | wx.ICON_EXCLAMATION)
    reponse = dlg.ShowModal()
    dlg.Destroy()
    if reponse != wx.ID_YES:
        return
    # Lancement
    print "Lancement de la procedure '%s'..." % code
    try:
        exec("%s()" % code)
    except Exception, err:
        dlg = wx.MessageDialog(
            None,
            _(u"Désolé, une erreur a été rencontrée :\n\n-> %s  ") % err,
            _(u"Erreur"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return
Example #40
0
    def RechercheDonnees(self):
        self.listeResultats = []
        EcritStatusbar(
            _(u"Recherche d'anomalies en cours...   Veuillez patientez..."))
        try:
            dlgAttente = PBI.PyBusyInfo(
                _(u"Recherche d'anomalies en cours..."),
                parent=self.parent,
                title=_(u"Merci de patienter"),
                icon=wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Logo.png"),
                               wx.BITMAP_TYPE_ANY))
            wx.Yield()
        except:
            dlgAttente = None

        # Init DB
        self.DB = GestionDB.DB()
        # Recherches
        self.InscriptionsSansIndividus()
        self.CotisationsSansIndividus()
        self.CotisationsSansFamilles()
        self.PrestationsSansFamilles()
        self.VentilationsSansPrestations()
        self.VentilationsSansReglements()
        self.IndividusIncomplets()
        self.FamillesIncompletes()
        self.InscriptionsIncompletes()
        self.ConsommationsIncompletes()
        self.FacturesErronees()
        self.ConsommationsErronees()
        self.LiensTronques()
        self.RattachementsTronques()
        self.LiensErrones()
        self.VentilationExcessive()

        # Fermeture DB
        self.DB.Close()

        del dlgAttente
        EcritStatusbar("")
Example #41
0
 def VentilationsSansReglements(self):
     labelProbleme = _(u"Ventilations sans règlements associés")
     labelCorrection = _(u"Supprimer la ventilation")
     req = """SELECT IDventilation, IDprestation, ventilation.IDreglement, comptes_payeurs.IDfamille
     FROM ventilation
     LEFT JOIN reglements ON reglements.IDreglement = ventilation.IDreglement
     LEFT JOIN comptes_payeurs ON comptes_payeurs.IDcompte_payeur = ventilation.IDcompte_payeur
     WHERE reglements.IDreglement IS NULL;"""
     self.DB.ExecuterReq(req)
     listeDonnees = self.DB.ResultatReq()
     listeTemp = []
     for IDventilation, IDprestation, IDreglement, IDfamille in listeDonnees:
         label = _(
             u"Ventilation ID%d pour la prestation ID%d et le règlement ID%d pour la famille ID%d"
         ) % (IDventilation, IDprestation, IDreglement, IDfamille)
         listeTemp.append(
             VentilationsSansReglements(label=label,
                                        IDventilation=IDventilation,
                                        IDprestation=IDprestation,
                                        IDreglement=IDreglement,
                                        IDfamille=IDfamille))
     self.listeResultats.append((labelProbleme, labelCorrection, listeTemp))
Example #42
0
 def EnvoyerVersFTP(self, nomFichier=""):
     # Récupération des paramètres
     hote = UTILS_Config.GetParametre("synchro_ftp_hote", defaut="")
     identifiant = UTILS_Config.GetParametre("synchro_ftp_identifiant", defaut="")
     mdp = base64.b64decode(UTILS_Config.GetParametre("synchro_ftp_mdp", defaut=""))
     repertoire = UTILS_Config.GetParametre("synchro_ftp_repertoire", defaut="")
     
     # Envoyer le fichier
     dlgAttente = wx.BusyInfo(_(u"Envoi du fichier de données vers un répertoire FTP..."), None)
     try :
         ftp = ftplib.FTP(hote, identifiant, mdp)
         ftp.cwd(repertoire)
         fichier = open(nomFichier, "rb")
         ftp.storbinary("STOR %s" % os.path.basename(nomFichier), fichier)
         fichier.close()
         ftp.quit()
     except Exception, err :
         del dlgAttente
         dlg = wx.MessageDialog(None, _(u"Le fichier n'a pas pu être envoyé !\n\nVérifiez les paramètres de connexion FTP dans les paramètres de synchronisation."), "Erreur ", wx.OK | wx.ICON_ERROR)
         dlg.ShowModal()
         dlg.Destroy()
         return False
Example #43
0
    def Preview(self):
        if self.InitParametres() == False :
            return
        printPreview = self.printer.printout.GetPrintPreview()
##        preview_window = PreviewFrame(printPreview, None, self.titre, self.orientation)
        printPreview.SetZoom(100)
        frame = wx.GetApp().GetTopWindow() 
        preview_window = wx.PreviewFrame(printPreview, None, _(u"Aperçu avant impression"))
        preview_window.Initialize()
        preview_window.MakeModal(False)
        preview_window.SetPosition(frame.GetPosition())
        preview_window.SetSize(frame.GetSize())
        preview_window.Show(True)
Example #44
0
def Extensions(ext="py"):
    """ Chargement d'une extension """
    # Recherche d'extensions dans le répertoire
    chemin = os.curdir
    fichiers = os.listdir(chemin)
    fichiers.sort()
    listeExtensions = []
    for fichier in fichiers:
        if fichier.endswith(ext):
            nomFichier = os.path.split(fichier)[1]
            titre = nomFichier[:-(len(ext) + 1)]
            listeExtensions.append(titre)

    if len(listeExtensions) == 0:
        dlg = wx.MessageDialog(None, _(u"Aucune extension n'est installée !"),
                               _(u"Extensions"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return False

    # Demande l'extension à charger
    dlg = wx.SingleChoiceDialog(
        None, _(u"Sélectionnez une extension dans la liste proposée :"),
        "Chargement d'une extension", listeExtensions)
    dlg.SetSize((500, 400))
    dlg.CenterOnScreen()
    nomExtension = None
    if dlg.ShowModal() == wx.ID_OK:
        nomExtension = dlg.GetStringSelection()
    dlg.Destroy()

    if nomExtension == None:
        return False

    # Exécution de l'extension
    sys.path.append(chemin)
    module = importlib.import_module(nomExtension)
    module.Extension()
Example #45
0
    def RechercheDonnees(self):
        self.listeResultats = []
        EcritStatusbar(
            _(u"Recherche d'anomalies en cours...   Veuillez patienter..."))
        try:
            dlgAttente = wx.BusyInfo(
                _(u"Recherche d'anomalies en cours. Veuillez patienter..."),
                self.parent)
            wx.Yield()
        except:
            dlgAttente = None

        # Init DB
        self.DB = GestionDB.DB()
        # Recherches
        self.InscriptionsSansIndividus()
        self.CotisationsSansIndividus()
        self.CotisationsSansFamilles()
        self.PrestationsSansFamilles()
        self.VentilationsSansPrestations()
        self.VentilationsSansReglements()
        self.IndividusIncomplets()
        self.FamillesIncompletes()
        self.InscriptionsIncompletes()
        self.ConsommationsIncompletes()
        self.FacturesErronees()
        self.ConsommationsErronees()
        self.LiensTronques()
        self.RattachementsTronques()
        self.LiensErrones()
        self.VentilationExcessive()
        self.PrestationsFantomes()

        # Fermeture DB
        self.DB.Close()

        del dlgAttente
        EcritStatusbar("")
Example #46
0
 def GetTexte(self):
     self.RechercheDonnees() 
     texte = u""
     for labelProbleme, labelCorrection, listeDonnees in self.listeResultats :
         texte += u"<P><B>%s (%d) :</B><FONT SIZE=2><BR>" % (labelProbleme, len(listeDonnees))
         
         if len(listeDonnees) > 0 :
             for anomalie in listeDonnees :
                 texteCorrection = _(u"<A HREF='http://www.noethys.com'>Correction proposée : %s</A>") % labelCorrection
                 texte += u"&nbsp;&nbsp;&nbsp;<IMG SRC='Static/Images/16x16/Interdit2.png'>&nbsp;%s. %s<BR>" % (anomalie.label, texteCorrection)
         else :
                 texte += u"&nbsp;&nbsp;&nbsp;<IMG SRC='Static/Images/16x16/Ok4.png'>&nbsp;Aucune anomalie détectée...<BR>"
         texte += u"</FONT></P>"
     return texte
    def MAJ(self, DB=None, dictParametres={}):
        self.dictParametres = dictParametres
        self.colonnes = []
        self.lignes = []
        self.totaux = []
        
        # Recherche des paramètres
        date_debut, date_fin = MODELES.GetDatesPeriode(dictParametres)
        conditionsActivites = MODELES.GetConditionActivites(dictParametres)
        dictResultats = GetDictMembres(DB, dictParametres) 
        
        if dictParametres["mode"] == "presents" :
            self.nom = _(u"Nombre de membres présents")
        else:
            self.nom = _(u"Nombre de membres inscrits")

        # Création du tableau
        self.largeur = "400"
        self.colonnes = [ (_(u"Nombre de membres"), "250"), (_(u"Nombre de familles"), "150") ]
        self.lignes = []
        for nbreMembres, nbreFamilles in dictResultats.iteritems() :
            self.lignes.append((nbreMembres, nbreFamilles))
        self.lignes.sort() 
 def MAJ(self, DB=None, dictParametres={}):
     self.dictParametres = dictParametres
     self.colonnes = []
     self.lignes = []
     self.totaux = []
     
     dictCaisses = GetDictCaisses(DB, dictParametres)
     
     # Création du tableau
     self.largeur = "400"
     self.colonnes = [ (_(u"Caisse"), "250"), (_(u"Nombre de familles"), "150") ]
     self.lignes = []
     
     # Tri par nbre de familles
     listeCaisses = []
     for IDcaisse, valeurs in dictCaisses.iteritems() :
         nbreFamilles = valeurs["nbreFamilles"]
         nomCaisse = valeurs["nom"]
         listeCaisses.append((nbreFamilles, nomCaisse))
     listeCaisses.sort(reverse=True)
     
     for nbreFamilles, nomCaisse in listeCaisses :
         self.lignes.append((nomCaisse, nbreFamilles))
Example #49
0
 def CotisationsSansFamilles(self):
     labelProbleme = _(u"Cotisations sans familles associées")
     labelCorrection = _(u"Supprimer la cotisation")
     req = """SELECT IDcotisation, types_cotisations.nom, unites_cotisations.nom, cotisations.date_saisie, cotisations.IDfamille, cotisations.IDprestation
     FROM cotisations 
     LEFT JOIN familles ON familles.IDfamille = cotisations.IDfamille
     LEFT JOIN types_cotisations ON types_cotisations.IDtype_cotisation = cotisations.IDtype_cotisation
     LEFT JOIN unites_cotisations ON unites_cotisations.IDunite_cotisation = cotisations.IDunite_cotisation
     WHERE familles.IDfamille IS NULL AND cotisations.IDfamille IS NOT NULL;"""
     self.DB.ExecuterReq(req)
     listeDonnees = self.DB.ResultatReq()
     listeTemp = []
     for IDcotisation, nomType, nomUnite, dateSaisie, IDfamille, IDprestation in listeDonnees:
         label = _(
             u"Cotisation ID%d de type '%s - %s' saisie le %s pour la famille ID%d"
         ) % (IDcotisation, nomType, nomUnite,
              UTILS_Dates.DateEngFr(dateSaisie), IDfamille)
         listeTemp.append(
             CotisationsSansFamilles(label=label,
                                     IDcotisation=IDcotisation,
                                     IDfamille=IDfamille,
                                     IDprestation=IDprestation))
     self.listeResultats.append((labelProbleme, labelCorrection, listeTemp))
Example #50
0
 def Ajouter(self, index=0, nbre=0):
     dlgAttente = PBI.PyBusyInfo(
         _(u"Merci de patienter durant l'opération...  (%d/%d)") %
         (index + 1, nbre),
         parent=None,
         title=_(u"Patientez..."),
         icon=wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Logo.png"),
                        wx.BITMAP_TYPE_ANY))
     wx.Yield()
     # Importation
     self.dictID = {}
     self.DB = GestionDB.DB()
     importation = self.contenu[index]
     nom = importation["nom"]
     listeTables = importation["tables"]
     if importation.has_key("correspondances_speciales"):
         correspondances_speciales = importation[
             "correspondances_speciales"]
     else:
         correspondances_speciales = []
     self.Importer(listeTables, correspondances_speciales)
     self.DB.Close()
     del dlgAttente
 def __set_properties(self):
     self.SetTitle(_(u"Envoyer le rapport à l'auteur"))
     self.label_ligne_1.SetFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
     self.ctrl_commentaires.SetToolTip(wx.ToolTip(_(u"Vous pouvez saisir des commentaires ici")))
     self.check_journal.SetToolTip(wx.ToolTip(_(u"Pour faciliter la résolution du bug, vous pouvez joindre votre rapport d'erreurs")))
     self.bouton_apercu.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour visualiser le contenu du message qui sera envoyé à l'auteur")))
     self.bouton_envoyer.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour envoyer le rapport et les commentaires à l'auteur")))
     self.bouton_annuler.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour annuler")))
     self.SetMinSize((550, 350))
Example #52
0
    def MAJ(self, DB=None, dictParametres={}):
        self.dictParametres = dictParametres

        date_debut, date_fin = MODELES.GetDatesPeriode(dictParametres)
        conditionsActivites = MODELES.GetConditionActivites(dictParametres)

        # Recherche du nombre d'individus présents
        if dictParametres["mode"] == "presents":
            req = """SELECT COUNT(IDfamille)
            FROM consommations 
            LEFT JOIN comptes_payeurs ON comptes_payeurs.IDcompte_payeur = consommations.IDcompte_payeur
            WHERE date>='%s' AND date<='%s' 
            AND consommations.etat IN ('reservation', 'present')
            AND IDactivite IN %s
            GROUP BY comptes_payeurs.IDfamille
            ;""" % (date_debut, date_fin, conditionsActivites)
        else:
            req = """SELECT COUNT(comptes_payeurs.IDfamille)
            FROM inscriptions 
            LEFT JOIN comptes_payeurs ON comptes_payeurs.IDcompte_payeur = inscriptions.IDcompte_payeur
            WHERE inscriptions.statut='ok' AND IDactivite IN %s
            GROUP BY comptes_payeurs.IDfamille
            ;""" % conditionsActivites

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

        if dictParametres["mode"] == "presents":
            mot = _(u"présent")
        else:
            mot = _(u"inscrit")

        if len(listeDonnees) == 0 or listeDonnees[0][0] == 0:
            self.texte = _(u"Aucune famille dont les membres sont %ss.") % mot
        else:
            self.texte = _(u"%d familles dont les membres sont %ss.") % (
                len(listeDonnees), mot)
def ConversionReseauLocal(parent, nomFichier=""):
    # Demande le nom du nouveau fichier local
    from Dlg import DLG_Nouveau_fichier
    dlg = DLG_Nouveau_fichier.MyDialog(parent)
    dlg.SetTitle(_(u"Conversion d'un fichier réseau en fichier local"))
    dlg.radio_local.SetValue(True)
    dlg.OnRadioLocal(None)
    dlg.radio_local.Enable(False)
    dlg.radio_reseau.Enable(False)
    dlg.radio_internet.Enable(False)
    dlg.checkbox_details.Show(False)
    dlg.hyperlink_details.Show(False)
    dlg.DesactiveIdentite() 
    dlg.CentreOnScreen()
    if dlg.ShowModal() == wx.ID_OK:
        nouveauFichier = dlg.GetNomFichier()
        dlg.Destroy()
    else:
        dlg.Destroy()
        return False
    
    # Vérifie que le fichier n'est pas déjà utilisé
    if os.path.isfile(UTILS_Fichiers.GetRepData(u"%s_DATA.dat" % nomFichier))  == True :
        dlg = wx.MessageDialog(parent, _(u"Le fichier existe déjà."), _(u"Erreur de création de fichier"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return False

    nomFichierReseauFormate = nomFichier[nomFichier.index("[RESEAU]"):].replace("[RESEAU]", "")
    
    # Demande une confirmation pour la conversion
    message = _(u"Confirmez-vous la conversion du fichier réseau '%s' en fichier local portant le nom '%s' ? \n\nCette opération va durer quelques instants...\n\n(Notez que le fichier original sera toujours conservé)") % (nomFichierReseauFormate, nouveauFichier)
    dlg = wx.MessageDialog(parent, message, _(u"Confirmation de la conversion"), wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION)
    if dlg.ShowModal() == wx.ID_YES :
        dlg.Destroy()
    else:
        dlg.Destroy()
        return False
    
    # Lance la conversion
    parent.SetStatusText(_(u"Conversion du fichier en cours... Veuillez patienter..."))
    conversion = GestionDB.ConversionReseauLocal(nomFichier, nouveauFichier, parent)
    parent.SetStatusText(_(u"La conversion s'est terminée avec succès."))
    dlg = wx.MessageDialog(None, _(u"La conversion s'est terminée avec succès. Le nouveau fichier a été créé."), "Information", wx.OK | wx.ICON_INFORMATION)
    dlg.ShowModal()
    dlg.Destroy()
    return True
Example #54
0
    def Correction(self, DB=None):
        IDconso = self.kwds["IDconso"]
        heure_debut = self.kwds["heure_debut"]
        heure_fin = self.kwds["heure_fin"]
        date = self.kwds["date"]
        individu = self.kwds["individu"]

        if heure_debut != None:
            dlg = wx.TextEntryDialog(
                None,
                _(u"Corrigez l'heure de début de la consommation du %s de %s :\n\n(Obligatoirement au format HH:MM)"
                  ) % (date.strftime("%d/%m/%Y"), individu),
                _(u"Correction d'une heure"), heure_debut)
            if dlg.ShowModal() == wx.ID_OK:
                DB.ReqMAJ("consommations", [
                    ("heure_debut", dlg.GetValue()),
                ], "IDconso", IDconso)
                self.corrige = True
            else:
                self.corrige = False
            dlg.Destroy()

        if heure_fin != None:
            dlg = wx.TextEntryDialog(
                None,
                _(u"Corrigez l'heure de fin de la consommation du %s de %s :\n\n(Obligatoirement au format HH:MM)"
                  ) % (date.strftime("%d/%m/%Y"), individu),
                _(u"Correction d'une heure"), heure_fin)
            if dlg.ShowModal() == wx.ID_OK:
                DB.ReqMAJ("consommations", [
                    ("heure_fin", dlg.GetValue()),
                ], "IDconso", IDconso)
                self.corrige = True
            else:
                self.corrige = False
            dlg.Destroy()
Example #55
0
    def __init__(self,
                 parent,
                 intro=_(u"Cochez les individus à effacer :"),
                 liste_familles=None,
                 liste_individus=None):
        wx.Dialog.__init__(self,
                           parent,
                           -1,
                           style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER
                           | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX)
        self.parent = parent
        self.liste_familles = liste_familles
        self.liste_individus = liste_individus

        self.label_intro = wx.StaticText(self, -1, intro)
        self.ctrl_selection = CTRL_Selection(self,
                                             liste_familles=liste_familles,
                                             liste_individus=liste_individus)
        self.ctrl_selection.SetMinSize((700, 450))

        # 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)
Example #56
0
    def __init__(self, preview, parent, title=_(u"Aperçu avant impression"), orientation=wx.PORTRAIT):
        wx.PyPreviewFrame.__init__(self, preview, parent, title)
        self.preview = preview
        self.orientation = orientation

        self.SetMinSize((650, 500))
        
        self.controlBar = PreviewControlBar(self.preview, wx.PREVIEW_DEFAULT, self)
        self.SetControlBar(self.controlBar)
        
        previewCanvas = wx.PreviewCanvas(self.preview, self, style=wx.SUNKEN_BORDER)
        self.SetPreviewCanvas(previewCanvas)
                
        self.SetSize((900, 700))
        self.CenterOnScreen() 
Example #57
0
def A8574():
    """ Mise à niveau de la base de données """
    import FonctionsPerso
    versionApplication = FonctionsPerso.GetVersionLogiciel()
    dlg = wx.TextEntryDialog(
        None,
        _(u"Saisissez le numéro de version à partir duquel vous souhaitez \neffectuer la mise à niveau ('x.x.x.x'):"
          ), _(u"Mise à niveau de la base de données"), versionApplication)
    reponse = dlg.ShowModal()
    version = dlg.GetValue()
    dlg.Destroy()
    if reponse != wx.ID_OK:
        return

    valide = True
    try:
        version = tuple([int(x) for x in version.split(".")])
    except:
        valide = False
    if len(version) != 4:
        valide = False

    if valide == False:
        dlg = wx.MessageDialog(
            None,
            _(u"Impossible d'effectuer la procédure !\n\nLe numéro de version que vous avez saisi semble erroné. Vérifiez qu'il est formaté de la façon suivante : 'x.x.x.x'"
              ), _(u"Erreur"), wx.OK | wx.ICON_ERROR)
        dlg.ShowModal()
        dlg.Destroy()
        return False

    print "Procedure manuelle de mise a niveau de la base de donnee depuis la version : ", version
    DB = GestionDB.DB()
    resultat = DB.ConversionDB(version)
    DB.Close()
    print resultat
Example #58
0
    def LiensTronques(self):
        labelProbleme = _(u"Liens sans individus associés")
        labelCorrection = _(u"Supprimer le lien dans la base")

        req = """SELECT IDlien, IDindividu_sujet
        FROM liens 
        LEFT JOIN individus ON individus.IDindividu = liens.IDindividu_sujet
        WHERE individus.IDindividu IS NULL ;"""
        self.DB.ExecuterReq(req)
        listeSujets = self.DB.ResultatReq()
        
        req = """SELECT IDlien, IDindividu_objet
        FROM liens 
        LEFT JOIN individus ON individus.IDindividu = liens.IDindividu_objet
        WHERE individus.IDindividu IS NULL ;"""
        self.DB.ExecuterReq(req)
        listeObjets = self.DB.ResultatReq()

        listeTemp = []
        for liste in (listeSujets, listeObjets) :
            for IDlien, IDindividu in liste :
                label = _(u"Lien ID%d (Individu ID%d)") % (IDlien, IDindividu)
                listeTemp.append(LiensTronques(label=label, IDlien=IDlien, IDindividu=IDindividu))
        self.listeResultats.append((labelProbleme, labelCorrection, listeTemp))
def A5200():
    """ Arrondi de toutes les prestations et ventilations de la base de données !!! """
    import wx.lib.agw.pybusyinfo as PBI
    from UTILS_Decimal import FloatToDecimal as FloatToDecimal
    DB = GestionDB.DB() 

    dlgAttente = PBI.PyBusyInfo(_(u"Veuillez patienter durant la procédure... Celle-ci peut nécessiter quelques minutes..."), parent=None, title=_(u"Veuillez patienter..."), icon=wx.Bitmap(Chemins.GetStaticPath("Images/16x16/Logo.png"), wx.BITMAP_TYPE_ANY))
    wx.Yield() 

    # Récupère les prestations
    req = """SELECT IDprestation, montant FROM prestations;"""
    DB.ExecuterReq(req)
    listePrestations = DB.ResultatReq() 
    
    # Récupère la ventilation
    req = """SELECT IDventilation, montant FROM ventilation;"""
    DB.ExecuterReq(req)
    listeVentilations = DB.ResultatReq() 

    # Modification des arrondis
    total = len(listePrestations) + len(listeVentilations)
    index = 0
    
    for IDprestation, montant in listePrestations :
        EcritStatusbar(_(u"Correction des arrondis... Merci de patienter...             -> %d %% effectués") % (index * 100 / total))
        DB.ReqMAJ("prestations", [("montant", FloatToDecimal(montant, plusProche=True)),], "IDprestation", IDprestation)
        index += 1
    
    for IDventilation, montant in listeVentilations :
        EcritStatusbar(_(u"Correction des arrondis... Merci de patienter...             - > %d %% effectués") % (index * 100 / total))
        DB.ReqMAJ("ventilation", [("montant", FloatToDecimal(montant, plusProche=True)),], "IDventilation", IDventilation)
        index += 1
        
    DB.Close()
    EcritStatusbar(u"")
    del dlgAttente
Example #60
0
    def MAJ(self, figure=None, DB=None, dictParametres={}):
        self.dictParametres = dictParametres
        # Création du graph
        ax = figure.add_subplot(111)

        dictCaisses = GetDictCaisses(DB, dictParametres)

        listeValeurs = []
        listeLabels = []
        listeCouleurs = []

        # Tri par nbre de familles
        listeCaisses = []
        nbreTotalFamilles = 0
        for IDcaisse, valeurs in dictCaisses.iteritems():
            nbreFamilles = valeurs["nbreFamilles"]
            nomCaisse = valeurs["nom"]
            listeCaisses.append((nbreFamilles, nomCaisse))
            nbreTotalFamilles += nbreFamilles
        listeCaisses.sort(reverse=True)

        index = 1
        for nbreFamilles, nomCaisse in listeCaisses:
            listeValeurs.append(nbreFamilles)
            listeLabels.append(nomCaisse)

            couleur = 1.0 * nbreFamilles / nbreTotalFamilles
            couleur = matplotlib.cm.hsv(index * 0.1)
            listeCouleurs.append(couleur)

            index += 1

        cam = ax.pie(listeValeurs,
                     labels=listeLabels,
                     colors=listeCouleurs,
                     autopct='%1.1f%%',
                     shadow=False)
        title = ax.set_title(
            _(u"Répartition par caisse"),
            weight="bold",
            horizontalalignment='center')  #, position=(0.5, 0.97))
        matplotlib.pyplot.setp(title, rotation=0, fontsize=9)
        ax.set_aspect(1)
        labels, labelsPourcent = cam[1], cam[2]
        matplotlib.pyplot.setp(labels, rotation=0, fontsize=9)
        matplotlib.pyplot.setp(labelsPourcent, rotation=0, fontsize=9)

        return figure