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