def On_outils_saisie_forfait(self, event): if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel( "consommations_conso", "creer") == False: return listeActivites = self.panel_grille.listeSelectionActivites listeIndividus = self.panel_grille.listeSelectionIndividus if len(self.panel_grille.grille.listeHistorique) > 0: dlg = wx.MessageDialog( self, _(u"Des modifications ont été effectuées dans la grille.\n\nVous devez d'abord les sauvegarder avant de saisir un forfait !" ), _(u"Sauvegarde des modifications"), wx.YES_NO | wx.YES_DEFAULT | wx.ICON_EXCLAMATION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES: return # Sauvegarde des données self.panel_grille.grille.Sauvegarde() self.panel_grille.grille.InitDonnees() self.panel_grille.MAJ_grille() from Dlg import DLG_Appliquer_forfait dlg = DLG_Appliquer_forfait.Dialog(self, IDfamille=self.IDfamille, listeActivites=listeActivites, listeIndividus=listeIndividus) dlg.ShowModal() dlg.Destroy() self.panel_grille.MAJ_grille()
def Inscrire(self, IDactivite=None, nomActivite="", IDgroupe=None, nomGroupe="", IDcategorie_tarif=None, nomCategorie=""): """ Lance la procédure d'inscription """ tracks = self.GetCheckedObjects() if len(tracks) == 0 : dlg = wx.MessageDialog(self, _(u"Vous devez cocher au moins un individu dans la liste !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return dlg = wx.MessageDialog(self, _(u"Souhaitez-vous vraiment inscrire %d individus à l'activité '%s' ?") % (len(tracks), nomActivite), _(u"Confirmation"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_INFORMATION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return dlgprogress = wx.ProgressDialog(_(u"Veuillez patienter"), _(u"Lancement de la procédure..."), maximum=len(tracks), parent=None, style= wx.PD_SMOOTH | wx.PD_ESTIMATED_TIME | wx.PD_REMAINING_TIME | wx.PD_CAN_ABORT | wx.PD_AUTO_HIDE | wx.PD_APP_MODAL) listeAnomalies = [] listeValidees = [] index = 0 for track in tracks : # Recherche du nom de l'individu if track.prenom == None : nomIndividu = track.nom else : nomIndividu = u"%s %s" % (track.nom, track.prenom) keepGoing, skip = dlgprogress.Update(index, _(u"[%d/%d] Inscription de %s...") % (index, len(tracks), nomIndividu)) # Vérifie si individu déjà inscrit if track.inscrit == "oui" : listeAnomalies.append(_(u"%s (Famille de %s) : Individu déjà inscrit") % (nomIndividu, track.nomTitulaires)) index += 1 else : # Sauvegarde DB = GestionDB.DB() listeDonnees = [ ("IDindividu", track.IDindividu ), ("IDfamille", track.IDfamille ), ("IDactivite", IDactivite ), ("IDgroupe", IDgroupe), ("IDcategorie_tarif", IDcategorie_tarif), ("IDcompte_payeur", track.IDcompte_payeur), ("date_inscription", str(datetime.date.today()) ), ("parti", 0), ] IDinscription = DB.ReqInsert("inscriptions", listeDonnees) DB.Close() # Mémorise l'action dans l'historique UTILS_Historique.InsertActions([{ "IDindividu" : track.IDindividu, "IDfamille" : track.IDfamille, "IDcategorie" : 18, "action" : _(u"Inscription à l'activité '%s' sur le groupe '%s' avec la tarification '%s'") % (nomActivite, nomGroupe, nomCategorie) },]) # Saisie de forfaits auto f = DLG_Appliquer_forfait.Forfaits(IDfamille=track.IDfamille, listeActivites=[IDactivite,], listeIndividus=[track.IDindividu,], saisieManuelle=False, saisieAuto=True) f.Applique_forfait(selectionIDcategorie_tarif=IDcategorie_tarif, inscription=True, selectionIDactivite=IDactivite) # Actualise l'affichage self.dictInscriptions[(track.IDindividu, track.IDfamille, IDactivite)] = {"IDinscription" : IDinscription, "IDgroupe" : IDgroupe, "IDcategorie_tarif" : IDcategorie_tarif} track.inscrit = "oui" self.RefreshObject(track) # Attente listeValidees.append(track) time.sleep(0.2) index += 1 # Stoppe la procédure if keepGoing == False : break # Fermeture dlgprogress dlgprogress.Destroy() # Messages de fin if len(listeAnomalies) > 0 : message1 = _(u"%d inscriptions ont été créées avec succès mais les %d anomalies suivantes ont été trouvées :") % (len(listeValidees), len(listeAnomalies)) message2 = u"\n".join(listeAnomalies) dlg = dialogs.MultiMessageDialog(self, message1, caption = _(u"Inscription"), msg2=message2, style = wx.ICON_EXCLAMATION | wx.YES|wx.YES_DEFAULT, btnLabels={wx.ID_YES : _(u"Ok")}) reponse = dlg.ShowModal() dlg.Destroy() else : dlg = wx.MessageDialog(self, _(u"%d inscriptions ont été créées avec succès !") % len(listeValidees), _(u"Fin"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy()
def OnBoutonOk(self, event): # Vérification des données saisies IDactivite = self.GetIDactivite() 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() return IDgroupe = self.ctrl_groupes.GetID() if IDgroupe == None : dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner un groupe !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return IDcategorie_tarif = self.ctrl_categories.GetID() if IDcategorie_tarif == None : dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement sélectionner une catégorie de tarifs !"), _(u"Erreur"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return # Verrouillage utilisateurs if self.mode == "saisie" : action = "creer" else : action = "modifier" if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel("individus_inscriptions", action, IDactivite=IDactivite) == False : return # Vérification du nombre d'inscrits max de l'activité if self.mode == "saisie" and self.dictActivite["nbre_places_disponibles"] != None : if self.dictActivite["nbre_places_disponibles"] <= 0 : dlg = wx.MessageDialog(None, _(u"Le nombre maximal d'inscrits autorisé pour cette activité (%d places max) a été atteint !\n\nSouhaitez-vous tout de même inscrire cet individu ?") % self.dictActivite["nbre_inscrits_max"], _(u"Nbre d'inscrit maximal atteint"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return # Vérification du nombre d'inscrits max du groupe if IDgroupe != self.IDgroupe : for dictGroupe in self.dictActivite["groupes"] : if dictGroupe["IDgroupe"] == IDgroupe and dictGroupe["nbre_places_disponibles"] != None : if dictGroupe["nbre_places_disponibles"] <= 0 : dlg = wx.MessageDialog(None, _(u"Le nombre maximal d'inscrits autorisé sur ce groupe (%d places max) a été atteint !\n\nSouhaitez-vous tout de même inscrire cet individu ?") % dictGroupe["nbre_inscrits_max"], _(u"Nbre d'inscrit maximal atteint"), wx.YES_NO|wx.NO_DEFAULT|wx.CANCEL|wx.ICON_EXCLAMATION) reponse = dlg.ShowModal() dlg.Destroy() if reponse != wx.ID_YES : return # Récupération autres variables IDfamille = self.ctrl_famille.GetID() nomActivite = self.ctrl_activite.GetNomActivite() nomGroupe = self.ctrl_groupes.GetStringSelection() nomCategorie = self.ctrl_categories.GetStringSelection() IDcompte_payeur = self.GetCompteFamille(IDfamille) parti = self.ctrl_parti.GetValue() DB = GestionDB.DB() # Vérifie que l'individu n'est pas déjà inscrit à cette activite if self.mode == "saisie" : req = """SELECT IDinscription, IDindividu, IDfamille FROM inscriptions WHERE IDindividu=%d AND IDfamille=%d AND IDactivite=%d;""" % (self.IDindividu, IDfamille, IDactivite) DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() if len(listeDonnees) > 0 : DB.Close() dlg = wx.MessageDialog(self, _(u"Cet individu est déjà inscrit à l'activité '%s' !") % nomActivite, _(u"Erreur de saisie"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return # Sauvegarde listeDonnees = [ ("IDindividu", self.IDindividu), ("IDfamille", IDfamille), ("IDactivite", IDactivite), ("IDgroupe", IDgroupe), ("IDcategorie_tarif", IDcategorie_tarif), ("IDcompte_payeur", IDcompte_payeur), ("parti", parti), ] if self.mode == "saisie" : listeDonnees.append(("date_inscription", str(datetime.date.today()))) self.IDinscription = DB.ReqInsert("inscriptions", listeDonnees) else : DB.ReqMAJ("inscriptions", listeDonnees, "IDinscription", self.IDinscription) DB.Close() # Mémorise l'action dans l'historique if self.mode == "saisie" : IDcategorie_historique = 18 texte_historique = _(u"Inscription à l'activité '%s' sur le groupe '%s' avec la tarification '%s'") % (nomActivite, nomGroupe, nomCategorie) else : IDcategorie_historique = 20 texte_historique = _(u"Modification de l'inscription à l'activité '%s' sur le groupe '%s' avec la tarification '%s'") % (nomActivite, nomGroupe, nomCategorie) UTILS_Historique.InsertActions([{ "IDindividu" : self.IDindividu, "IDfamille" : IDfamille, "IDcategorie" : IDcategorie_historique, "action" : texte_historique, },]) # Saisie de forfaits auto f = DLG_Appliquer_forfait.Forfaits(IDfamille=IDfamille, listeActivites=[IDactivite,], listeIndividus=[self.IDindividu,], saisieManuelle=False, saisieAuto=True) f.Applique_forfait(selectionIDcategorie_tarif=IDcategorie_tarif, inscription=True, selectionIDactivite=IDactivite) # Fermeture de la fenêtre self.EndModal(wx.ID_OK)
def OnBoutonForfait(self, event): """ Saisir un forfait daté """ if UTILS_Utilisateurs.VerificationDroitsUtilisateurActuel( "consommations_conso", "creer") == False: return # Recherche si l'individu est rattaché à d'autres familles listeNoms = [] listeFamille = [] # Vérifie que l'individu est rattaché comme REPRESENTANT ou ENFANT à une famille if self.dictFamillesRattachees != None: valide = False for IDfamille, dictFamille in self.dictFamillesRattachees.items(): if dictFamille["IDcategorie"] in (1, 2): valide = True if valide == False: dlg = wx.MessageDialog( self, _(u"Pour être inscrit à une activité, un individu doit obligatoirement être rattaché comme représentant ou enfant à une fiche famille !" ), _(u"Inscription impossible"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return if len(self.dictFamillesRattachees) == 1: IDfamille = list(self.dictFamillesRattachees.keys())[0] listeFamille.append(IDfamille) listeNoms.append( self.dictFamillesRattachees[IDfamille]["nomsTitulaires"]) else: # Si rattachée à plusieurs familles for IDfamille, dictFamille in self.dictFamillesRattachees.items(): IDcategorie = dictFamille["IDcategorie"] if IDcategorie in (1, 2): listeFamille.append(IDfamille) listeNoms.append(dictFamille["nomsTitulaires"]) if len(listeFamille) == 1: IDfamille = listeFamille[0] else: # On demande à quelle famille rattacher cette inscription dlg = wx.SingleChoiceDialog( self, _(u"Cet individu est rattaché à %d familles.\nA quelle famille souhaitez-vous rattacher cette inscription ?" ) % len(listeNoms), _(u"Rattachements multiples"), listeNoms, wx.CHOICEDLG_STYLE) if dlg.ShowModal() == wx.ID_OK: indexSelection = dlg.GetSelection() IDfamille = listeFamille[indexSelection] dlg.Destroy() else: dlg.Destroy() return # Récupère la liste des activités sur lesquelle l'individu est inscrit listeActivites = self.ctrl_inscriptions.GetListeActivites() # Affiche la fenêtre de saisie d'un forfait daté from Dlg import DLG_Appliquer_forfait dlg = DLG_Appliquer_forfait.Dialog(self, IDfamille=IDfamille, listeActivites=listeActivites, listeIndividus=[ self.IDindividu, ]) if dlg.ShowModal() == wx.ID_OK: pass dlg.Destroy()
def Sauvegarde(self): # Récupération des données à sauvegarder IDactivite = self.GetIDactivite() IDgroupe = self.ctrl_groupes.GetID() IDcategorie_tarif = self.ctrl_categories.GetID() nomGroupe = self.ctrl_groupes.GetStringSelection() nomCategorie = self.ctrl_categories.GetStringSelection() IDfamille = self.GetGrandParent().ctrl_famille.GetID() IDcompte_payeur = self.GetCompteFamille(IDfamille) nomActivite = self.ctrl_activite.GetNomActivite() if self.ctrl_check_depart.IsChecked(): date_desinscription = str(self.ctrl_date_depart.GetDate()) else: date_desinscription = None statut = self.parent.parent.ctrl_statut.GetID() # Sauvegarde DB = GestionDB.DB() listeDonnees = [ ("IDindividu", self.parent.IDindividu), ("IDfamille", IDfamille), ("IDactivite", IDactivite), ("IDgroupe", IDgroupe), ("IDcategorie_tarif", IDcategorie_tarif), ("IDcompte_payeur", IDcompte_payeur), ("date_desinscription", date_desinscription), ("statut", statut), ] if self.parent.mode == "saisie": listeDonnees.append( ("date_inscription", str(datetime.date.today()))) self.IDinscription = DB.ReqInsert("inscriptions", listeDonnees) else: DB.ReqMAJ("inscriptions", listeDonnees, "IDinscription", self.IDinscription) # Création d'une prestation négative pour la famille correspondant au remboursement if self.dict_remboursement != None: listeDonnees = [ ("IDcompte_payeur", IDcompte_payeur), ("date", str(datetime.date.today())), ("label", self.dict_remboursement["motif"]), ("montant_initial", -self.dict_remboursement["montant"]), ("montant", -self.dict_remboursement["montant"]), ("IDactivite", IDactivite), ("IDcategorie_tarif", IDcategorie_tarif), ("IDfamille", IDfamille), ("IDindividu", self.parent.IDindividu), ("categorie", "autre"), ("date_valeur", str(datetime.date.today())), ] DB.ReqInsert("prestations", listeDonnees) # Si une action consommation est nécessaire, on l'exécute if self.action_consommation != None: self.action_consommation(DB, date_desinscription) DB.Commit() DB.Close() # Mémorise l'action dans l'historique if self.parent.mode == "saisie": IDcategorie_historique = 18 texte_historique = _( u"Inscription à l'activité '%s' sur le groupe '%s' avec la tarification '%s'" ) % (nomActivite, nomGroupe, nomCategorie) else: IDcategorie_historique = 20 texte_historique = _( u"Modification de l'inscription à l'activité '%s' sur le groupe '%s' avec la tarification '%s'" ) % (nomActivite, nomGroupe, nomCategorie) UTILS_Historique.InsertActions([ { "IDindividu": self.parent.IDindividu, "IDfamille": IDfamille, "IDcategorie": IDcategorie_historique, "action": texte_historique, }, ]) # Saisie de forfaits auto #if self.parent.mode == "saisie" : if statut == "ok" and self.ancien_statut != "ok": f = DLG_Appliquer_forfait.Forfaits(IDfamille=IDfamille, listeActivites=[ IDactivite, ], listeIndividus=[ self.parent.IDindividu, ], saisieManuelle=False, saisieAuto=True) resultat = f.Applique_forfait( selectionIDcategorie_tarif=IDcategorie_tarif, inscription=True, selectionIDactivite=IDactivite) if resultat == False: dlg = wx.MessageDialog( self, _(u"Cet individu a bien été inscrit mais le forfait associé n'a pas été créé !" ), _(u"Information"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return self.IDinscription