Пример #1
0
 def OuvrirFicheFamille(self, event):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel(
             "familles_fiche", "consulter") == False:
         return
     dictItem = self.GetMainWindow().GetItemPyData(self.GetSelection())
     if dictItem == None:
         dlg = wx.MessageDialog(
             self,
             _(u"Vous n'avez sélectionné aucune famille dans la liste !"),
             _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     type = dictItem["type"]
     if type != "famille":
         dlg = wx.MessageDialog(
             self,
             _(u"Vous n'avez sélectionné aucune famille dans la liste !"),
             _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     IDfamille = dictItem["valeur"]
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, IDfamille=IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
     self.MAJ()
Пример #2
0
 def OuvrirFicheFamille(self, event):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("familles_fiche", "consulter") == False : return
     dictItem = self.GetMainWindow().GetItemPyData(self.GetSelection())
     if dictItem == None :
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucun individu dans la liste !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     type = dictItem["type"]
     if type != "individu" : 
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucun individu dans la liste !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     
     IDindividu = dictItem["IDindividu"]
     IDfamille = dictItem["IDfamille"]
     
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, IDfamille=IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
     
     if self.GetGrandParent().GetName() == "panel_remplissage" :
         panel_remplissage = self.GetGrandParent()
         # Mise à jour des chiffres du remplissage
         panel_remplissage.MAJ() 
         # Récupération des nouveau chiffres
         self.dictEtatPlaces = copy.deepcopy(panel_remplissage.ctrl_remplissage.GetEtatPlaces())
         # MAJ du contrôle liste d'attente
         self.MAJ() 
Пример #3
0
    def OnText(self, evt):
        txtSearch = self.GetValue()

        # Si code-barres individu saisi
        if len(txtSearch) > 6 and txtSearch.startswith("I"):
            txtSearch = txtSearch[1:]
            IDindividu = None
            try:
                IDindividu = int(txtSearch)
            except:
                IDfamille = None
            if IDindividu != None and self.listView.dictTracks.has_key(
                    IDindividu):
                track = self.listView.dictTracks[IDindividu]
                self.listView.SelectObject(track)
                self.listView.OuvrirFicheFamille(track)
                self.OnCancel(None)
                return

        # Si code-barres famille saisi
        if len(txtSearch) > 6 and txtSearch.startswith("A"):
            txtSearch = txtSearch[1:]
            IDfamille = None
            try:
                IDfamille = int(txtSearch)
            except:
                IDfamille = None
            if IDfamille != None:
                DB = GestionDB.DB()
                req = """SELECT IDfamille FROM familles WHERE IDfamille=%d
                ;""" % IDfamille
                DB.ExecuterReq(req)
                listeDonnees = DB.ResultatReq()
                DB.Close()
                if len(listeDonnees) > 0:
                    from Dlg import DLG_Famille
                    dlg = DLG_Famille.Dialog(self, IDfamille)
                    dlg.ShowModal()
                    dlg.Destroy()
                    # MAJ du remplissage
                    if self.GetGrandParent().GetName() == "general":
                        self.GetGrandParent().MAJ()
                    else:
                        self.MAJ()
                    self.OnCancel(None)
                    return

        if self.timer.IsRunning():
            self.timer.Stop()

        if len(self.listView.donnees) < 500:
            duree = 10
        elif len(self.listView.donnees) < 1000:
            duree = 200
        elif len(self.listView.donnees) < 5000:
            duree = 500
        else:
            duree = 1000
        self.timer.Start(duree)
def OuvrirFicheFamille(IDfamille):
    droit = UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel(
        "familles_fiche", "consulter")
    if not droit:
        return
    dlg = DLG_Famille.Dialog(None, IDfamille=IDfamille)
    dlg.ShowModal()
    dlg.Destroy()
 def OuvrirFicheFamille(self, IDfamille=None):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel(
             "familles_fiche", "consulter") == False:
         return
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(None, IDfamille=IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
     self.MAJ()
Пример #6
0
 def OuvrirFicheFamille(self, event):
     if len(self.Selection()) == 0 :
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune fiche famille à ouvrir !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     track = self.Selection()[0]
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, track.IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
Пример #7
0
 def OuvrirFicheFamille(self, event):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("familles_fiche", "consulter") == False : return
     if len(self.Selection()) == 0 :
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune fiche famille à ouvrir !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     IDfamille = self.Selection()[0].IDfamille
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
Пример #8
0
 def OuvrirFicheFamille(self, event):
     if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("familles_fiche", "consulter") == False : return
     if len(self.Selection()) == 0 :
         dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune fiche famille à ouvrir !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
         dlg.ShowModal()
         dlg.Destroy()
         return
     IDindividu = self.Selection()[0].IDindividu
     IDfamille = self.Selection()[0].IDfamille
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, IDfamille)
     if dlg.ShowModal() == wx.ID_OK:
         self.MAJ(IDindividu=IDindividu, listeActivites=self.listeActivites, listeGroupes=self.listeGroupes, listeCategories=self.listeCategories, presents=self.presents)
     dlg.Destroy()
Пример #9
0
    def Ajouter(self, event):
        if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("familles_fiche", "creer") == False : return
        from Dlg import DLG_Famille
        dlg = DLG_Famille.Dialog(self, IDfamille=None)
        if dlg.ShowModal() == wx.ID_OK:
            pass
        # MAJ du listView
##        self.MAJ()
        # MAJ du remplissage
        try :
            if self.GetGrandParent().GetName() == "general" :
                self.GetGrandParent().MAJ() 
##                self.GetGrandParent().ctrl_remplissage.MAJ() 
            else:
                self.MAJ() 
        except : pass
Пример #10
0
    def OuvrirFicheFamille(self,
                           track=None,
                           ouvrirGrille=False,
                           ouvrirFicheInd=False,
                           IDfamille=None):
        if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel(
                "familles_fiche", "consulter") == False:
            return

        IDindividu = None
        if IDfamille == None:

            IDindividu = track.IDindividu

            rattachements, dictTitulaires, txtTitulaires = track.GetRattachements(
            )
            if rattachements != None:
                rattachements.sort()

            # Rattaché à aucune famille
            if rattachements == None:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Cet individu n'est rattaché à aucune famille.\n\nSouhaitez-vous ouvrir sa fiche individuelle ?"
                      ), _(u"Confirmation"), wx.YES_NO | wx.YES_DEFAULT
                    | wx.CANCEL | wx.ICON_INFORMATION)
                reponse = dlg.ShowModal()
                dlg.Destroy()
                if reponse != wx.ID_YES:
                    return False
                else:
                    # Ouverture de la fiche individuelle
                    from Dlg import DLG_Individu
                    dlg = DLG_Individu.Dialog(None, IDindividu=IDindividu)
                    if dlg.ShowModal() == wx.ID_OK:
                        pass
                    dlg.Destroy()
                    self.MAJ()
                    return

            # Rattachée à une seule famille
            elif len(rattachements) == 1:
                IDcategorie, IDfamille, titulaire = rattachements[0]
            # Rattachée à plusieurs familles
            else:
                listeNoms = []
                for IDcategorie, IDfamille, titulaire in rattachements:
                    nomTitulaires = dictTitulaires[IDfamille]
                    if IDcategorie == 1:
                        nomCategorie = _(u"représentant")
                        if titulaire == 1:
                            nomCategorie += _(u" titulaire")
                    elif IDcategorie == 2:
                        nomCategorie = _(u"enfant")
                    elif IDcategorie == 3:
                        nomCategorie = _(u"contact")
                    else:
                        nomCategorie = _(u"Catégorie inconnue")
                    listeNoms.append(
                        _(u"%s (en tant que %s)") %
                        (nomTitulaires, nomCategorie))
                dlg = wx.SingleChoiceDialog(
                    self,
                    _(u"Cet individu est rattaché à %d familles.\nLa fiche de quelle famille souhaitez-vous ouvrir ?"
                      ) % len(listeNoms), _(u"Rattachements multiples"),
                    listeNoms, wx.CHOICEDLG_STYLE)
                IDfamilleSelection = None
                if dlg.ShowModal() == wx.ID_OK:
                    indexSelection = dlg.GetSelection()
                    IDcategorie, IDfamille, titulaire = rattachements[
                        indexSelection]
                    dlg.Destroy()
                else:
                    dlg.Destroy()
                    return

        # Ouverture de la fiche famille
        if IDfamille != None and IDfamille != -1:
            from Dlg import DLG_Famille
            if ouvrirGrille == True or ouvrirFicheInd == True:
                AfficherMessagesOuverture = False
            else:
                AfficherMessagesOuverture = True
            dlg = DLG_Famille.Dialog(
                self,
                IDfamille=IDfamille,
                AfficherMessagesOuverture=AfficherMessagesOuverture)
            # Ouverture grille de l'individ
            if ouvrirGrille == True:
                dlg.OuvrirGrilleIndividu(IDindividu)
            # Ouverture fiche de l'individu
            if ouvrirFicheInd == True:
                dlg.OuvrirFicheIndividu(IDindividu)
            if dlg.ShowModal() == wx.ID_OK:
                self.MAJ(IDindividu)
            try:
                dlg.Destroy()
            except:
                pass
            # MAJ du remplissage
            try:
                if self.GetGrandParent().GetName() == "general":
                    self.GetGrandParent().MAJ()
                else:
                    self.MAJ()
            except:
                pass
            # Mémorisation pour l'historique de la barre de recherche rapide
            try:
                if IDindividu not in self.historique:
                    self.historique.append(IDindividu)
                    if len(self.historique) > 30:
                        self.historique.pop(0)
            except:
                pass
Пример #11
0
    def ReglerFacture(self, numFacture=None):
        if self.IDfamille != None:
            texteSupp = _(u"pour cette famille ")
            conditionFamille = " AND comptes_payeurs.IDfamille=%d" % self.IDfamille
        else:
            texteSupp = u""
            conditionFamille = ""

        try:
            if "-" in numFacture:
                prefixe, numero = numFacture.split("-")
                numero = int(numero)
                conditionNumero = u"WHERE factures_prefixes.prefixe='%s' AND factures.numero=%d" % (
                    prefixe, numero)
            else:
                numero = int(numFacture)
                conditionNumero = u"WHERE factures.numero=%d" % numero
        except:
            conditionNumero = None

        if conditionNumero == None:
            dlg = wx.MessageDialog(
                self, _(u"Ce numéro de facture ne semble pas valide !"),
                _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        DB = GestionDB.DB()

        ##        # Récupération des totaux des prestations pour chaque facture
        ##        req = """
        ##        SELECT
        ##        IDfacture, SUM(montant)
        ##        FROM prestations
        ##        WHERE IDfacture IS NOT NULL %s
        ##        GROUP BY IDfacture
        ##        ;""" % conditionFamille
        ##        DB.ExecuterReq(req)
        ##        listeDonnees = DB.ResultatReq()
        ##        dictPrestations = {}
        ##        for IDfacture, totalPrestations in listeDonnees :
        ##            if IDfacture != None :
        ##                dictPrestations[IDfacture] = totalPrestations

        # Recherche si le numéro de facture existe
        req = u"""
        SELECT 
        factures.IDfacture, factures.total, factures.regle, factures.solde,
        SUM(ventilation.montant), etat,
        comptes_payeurs.IDfamille
        FROM factures
        LEFT JOIN prestations ON prestations.IDfacture = factures.IDfacture
        LEFT JOIN ventilation ON prestations.IDprestation = ventilation.IDprestation
        LEFT JOIN comptes_payeurs ON comptes_payeurs.IDcompte_payeur = factures.IDcompte_payeur
        LEFT JOIN factures_prefixes ON factures_prefixes.IDprefixe = factures.IDprefixe
        %s %s
        GROUP BY factures.IDfacture
        ;""" % (conditionNumero, conditionFamille)
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close()
        # Si le numéro de facture n'existe pas
        if len(listeDonnees) == 0:
            dlg = wx.MessageDialog(
                self,
                _(u"Ce numéro ne correspond à aucune facture existante %s!")
                % texteSupp, _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        IDfacture, totalInitial, regleInitial, soldeInitial, regleActuel, etat, IDfamille = listeDonnees[
            0]
        if etat == "annulation":
            dlg = wx.MessageDialog(
                self,
                _(u"La facture n°%s a été annulée !") % numFacture,
                _(u"Facture annulée"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Recherche si la facture a déjà été réglée

        DB = GestionDB.DB()
        req = """SELECT IDfacture, SUM(montant)
        FROM prestations
        WHERE IDfacture=%d
        GROUP BY IDfacture
        ;""" % IDfacture
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        if len(listeDonnees) > 0:
            totalActuel = listeDonnees[0][1]
        else:
            totalActuel = 0.0
        DB.Close()

        if totalActuel == None: totalActuel = 0.0
        if regleActuel == None: regleActuel = 0.0
        if totalActuel - regleActuel == 0.0:
            dlg = wx.MessageDialog(
                self,
                _(u"La facture n°%s a déjà été réglée en intégralité !"
                  ) % numFacture, _(u"Erreur de saisie"),
                wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

        # Ouverture de la fiche famille
        if self.IDfamille != None:
            self.GetGrandParent().ReglerFacture()
        else:
            from Dlg import DLG_Famille
            dlg = DLG_Famille.Dialog(self,
                                     IDfamille=IDfamille,
                                     AfficherMessagesOuverture=False)
            dlg.ReglerFacture(IDfacture)
            dlg.ShowModal()
            dlg.Destroy()

        self.SetValue("")
        if self.GetParent().GetName() == "DLG_Regler_facture":
            self.GetParent().Destroy()
Пример #12
0
    def OuvrirFicheFamille(self, event=None):
        if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("familles_fiche", "consulter") == False : return
        if len(self.Selection()) == 0 :
            dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune fiche famille à ouvrir !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        track = self.Selection()[0]

        if self.mode == "familles":

            # Mode familles
            from Dlg import DLG_Famille
            dlg = DLG_Famille.Dialog(self, track.IDfamille)
            if dlg.ShowModal() == wx.ID_OK:
                self.MAJ(track.IDfamille)
            dlg.Destroy()

        else :

            # Mode individus
            IDindividu = track.IDindividu

            rattachements, dictTitulaires, txtTitulaires = OL_Individus.GetRattachements(IDindividu)
            if rattachements != None:
                rattachements.sort()

            # Rattaché à aucune famille
            if rattachements == None:
                dlg = wx.MessageDialog(self, _(u"Cet individu n'est rattaché à aucune famille.\n\nSouhaitez-vous ouvrir sa fiche individuelle ?"), _(u"Confirmation"), wx.YES_NO | wx.YES_DEFAULT | wx.CANCEL | wx.ICON_INFORMATION)
                reponse = dlg.ShowModal()
                dlg.Destroy()
                if reponse != wx.ID_YES:
                    return False
                else:
                    # Ouverture de la fiche individuelle
                    from Dlg import DLG_Individu
                    dlg = DLG_Individu.Dialog(None, IDindividu=IDindividu)
                    if dlg.ShowModal() == wx.ID_OK:
                        pass
                    dlg.Destroy()
                    self.MAJ()
                    return

            # Rattachée à une seule famille
            elif len(rattachements) == 1:
                IDcategorie, IDfamille, titulaire = rattachements[0]
            # Rattachée à plusieurs familles
            else:
                listeNoms = []
                for IDcategorie, IDfamille, titulaire in rattachements:
                    nomTitulaires = dictTitulaires[IDfamille]
                    if IDcategorie == 1:
                        nomCategorie = _(u"représentant")
                        if titulaire == 1:
                            nomCategorie += _(u" titulaire")
                    if IDcategorie == 2: nomCategorie = _(u"enfant")
                    if IDcategorie == 3: nomCategorie = _(u"contact")
                    listeNoms.append(_(u"%s (en tant que %s)") % (nomTitulaires, nomCategorie))
                dlg = wx.SingleChoiceDialog(self, _(u"Cet individu est rattaché à %d familles.\nLa fiche de quelle famille souhaitez-vous ouvrir ?") % len(listeNoms), _(u"Rattachements multiples"), listeNoms, wx.CHOICEDLG_STYLE)
                IDfamilleSelection = None
                if dlg.ShowModal() == wx.ID_OK:
                    indexSelection = dlg.GetSelection()
                    IDcategorie, IDfamille, titulaire = rattachements[indexSelection]
                    dlg.Destroy()
                else:
                    dlg.Destroy()
                    return

            # Ouverture de la fiche famille
            if IDfamille != None and IDfamille != -1:
                from Dlg import DLG_Famille
                dlg = DLG_Famille.Dialog(self, IDfamille=IDfamille)
                if dlg.ShowModal() == wx.ID_OK:
                    self.MAJ(IDindividu)
                try:
                    dlg.Destroy()
                except:
                    pass
Пример #13
0
 def OnBoutonFamille(self, event):
     from Dlg import DLG_Famille
     dlg = DLG_Famille.Dialog(self, self.track.IDfamille)
     dlg.ShowModal()
     dlg.Destroy()
def Dlg_Famille_(dlg):
    famille = DLG_Famille.Dialog(None, 15)
    Dlg_Famille_Evaluer_Mensualite(dlg, famille)
    Dlg_Famille_Fixer_Tarif(dlg, famille)
    famille.Destroy()