def MenuEvaluerMensualite(self, event): inscriptions = Inscriptions() activite = GetActivite(inscriptions) if activite is None: inscriptions.Close() return brut, mensualites, coeffBR, coeffDeg, enfants = inscriptions.EvaluerMensualite( self.IDfamille, activite[0]) inscriptions.Close() coeff = coeffBR * coeffDeg msgBrut = u"MONTANT BRUT:\n- famille: {montant:25.2f}\n".format( montant=inscriptions.CalculateTaux(brut, mensualites)) msgRed = u"MONTANT REDUIT:\n- famille: {montant:25.2f}\n".format( montant=inscriptions.CalculateTaux(brut, mensualites, coeff)) for id, prenom, taux in enfants: msgBrut += u"\n- {prenom:25s}: {montant:15.2f}".format(prenom=prenom, montant=inscriptions.CalculateTaux(taux, mensualites)) msgRed += u"\n- {prenom:25s}: {montant:15.2f}".format(prenom=prenom, montant=inscriptions.CalculateTaux(taux, mensualites, coeff)) reponse = (u"{msgBrut}\n\nREDUCTIONS:\n- intervenants BR: {coeffBR:25.0%}\n" u"- tarif dégressif: {coeffDeg:25.0%}\n- soit: {coeff:25.2%}\n\n\n{msgRed}").format( msgBrut=msgBrut, msgRed=msgRed, coeffBR=1 - coeffBR, coeffDeg=1 - coeffDeg, coeff=1 - coeff) message(reponse)
def ExecuterReq(self, req): if self.echec == 1: return False # Pour parer le pb des () avec MySQL if self.isNetwork: req = req.replace("()", "(10000000, 10000001)") try: self.cursor.execute(req) GestionDB.DICT_CONNEXIONS[self.IDconnexion].append(req) except Exception as err: err = str(err).encode("ascii", "replace") req = req.encode("ascii", "replace") message(err + u"\n\n" + req) print( _(u"Requete SQL incorrecte :\n%s\nErreur detectee:\n%s") % (req, err)) return 0 else: return 1
def Extension(): if not hasModule(__name__ + VERSION): message(u"L'extension est correctement installée, " + u"merci de redémarrer Noethys pour l'activer.") return message(u"Extension installée et activée.", __name__ + VERSION)
def MenuFixerTarif(self, event): inscriptions = Inscriptions() # recuperer la saisie utilisateur pour l'année et le montant dlg = Dialog(None, db=inscriptions) response = dlg.ShowModal() if response != wx.ID_OK: return activite = dlg.GetAnnee() montant = dlg.GetMontant() dlg.Destroy() if not activite: return if not montant: text = u'Voulez-vous vraiment fixer un tarif mensuel de 0€ ?' response = message(text, style=wx.YES_NO) if response != wx.ID_YES: return # calculer le nouveau quotient et récupérer le quotient actif IDactivite, nom, date_debut, date_fin = activite brut, mensualites, coeffBR, coeffDeg, enfants = inscriptions.EvaluerMensualite( self.IDfamille, IDactivite) if not brut: message( u"Aucun enfant de cette famille n'est inscrit à cette activité", u"Opération impossible", wx.OK | wx.ICON_ERROR) return quotient = int(round(montant / brut)) quotientActif = GetQuotientActif(inscriptions, self.IDfamille, date_debut, date_fin) # pas de redondances if quotientActif and quotientActif[4] and quotient == int( quotientActif[4]): message(u"Ce montant est déjà fixé.") return # stopper le quotient actif en BDD values = u"" if quotientActif: date_debut = date.today().isoformat() values += u""" ({IDquotient}, NULL, NULL, '{date_fin}', NULL, NULL, NULL, NULL), """.format(IDquotient=quotientActif[0], date_fin=date.fromordinal(date.today().toordinal() - 1).isoformat()) # nouveau quotient en BDD observations = u"""Pour une mensualite totale de {montant}€ :""".format( montant=montant) for id, prenom, taux in enfants: observations += u"\\n - {prenom}: {montant}".format( prenom=prenom, montant=round(montant * taux / brut, 2)) values += u""" (NULL, {IDfamille}, '{date_debut}', '{date_fin}', {quotient}, "{observations}", NULL, 1) """.format( IDfamille=self.IDfamille, date_debut=date_debut, date_fin=date_fin, quotient=quotient, observations=observations, ) # execution query = u""" INSERT INTO `quotients` ( `IDquotient`, `IDfamille`, `date_debut`, `date_fin`, `quotient`, `observations`, `revenu`, `IDtype_quotient` ) VALUES {values} ON DUPLICATE KEY UPDATE `date_fin`=VALUES(`date_fin`) """.format(values=values) inscriptions.ExecuterReq(query) inscriptions.Close() message(u"""Le montant a été fixé. Merci de consulter le volet QF/Revenus pour vérifier la période d'application.""" ) OuvrirQF(self)
def MajMensualiteBase(): inscriptions = Inscriptions() activite = GetActivite(db=inscriptions) if activite is None: return IDactivite = activite[0] familles = inscriptions.GetResponse("SELECT `IDfamille` FROM `familles`") total = len(familles) current = 0 progress = wx.ProgressDialog( title=u"Mise à jour des tarifs de base …", message=u"{current}/{total}".format(current=current, total=total), maximum=total, style=wx.PD_APP_MODAL | wx.PD_SMOOTH | wx.PD_CAN_SKIP | wx.PD_REMAINING_TIME | wx.PD_AUTO_HIDE) for IDfamille, in familles: current += 1 ok, skip = progress.Update( value=current, newmsg=u"{current}/{total}".format(current=current, total=total), ) if skip: progress.Destroy() return try: brut, mensualites, coeffBr, coeffDeg, enfants = inscriptions.EvaluerMensualite( IDfamille, IDactivite) quotient = inscriptions.GetQuotient(IDfamille, IDactivite) coeff = coeffBr * coeffDeg # mensualité estimée avant réductions inscriptions.AddValue( 19, IDfamille, inscriptions.CalculateTaux(brut, mensualites)) # coefficient de réduction "Intervenant BR" inscriptions.AddValue(43, IDfamille, coeffBr) # coefficient de réduction "Tarif dégressif" inscriptions.AddValue(44, IDfamille, coeffDeg) # coefficient de réduction global inscriptions.AddValue(45, IDfamille, coeff) # mensualité estimée après réductions inscriptions.AddValue( 30, IDfamille, inscriptions.CalculateTaux(brut, mensualites, coeff)) if quotient is not None: # mensualité fixée inscriptions.AddValue(20, IDfamille, round(brut * quotient[4], 2)) fillCompteClient(IDfamille, inscriptions) # Enfants for id, prenom, taux in enfants: # mensualité estimée avant réductions inscriptions.AddValue( 25, id, inscriptions.CalculateTaux(taux, mensualites), INDIVIDU) # mensualité estimée après réductions inscriptions.AddValue( 31, id, inscriptions.CalculateTaux(taux, mensualites, coeff), INDIVIDU) if quotient is not None: # mensualité fixée inscriptions.AddValue(42, id, round(taux * quotient[4], 2), INDIVIDU) inscriptions.Execute() except Exception: progress.Destroy() printErr(u"Erreur avec la famille" + str( getQuery(""" SELECT `nom`, `prenom` FROM `rattachements` LEFT JOIN `individus` USING(`IDindividu`) WHERE `IDfamille`={IDfamille} """.format(IDfamille=IDfamille)))) return progress.Destroy() message(u"La procédure s'est terminée avec succés.", u"Fin")