Esempio n. 1
0
    def MAJ(self):
        self.IDconso = self.dictValeurs["IDconso"]
        self.date = self.dictValeurs["date"]
        self.IDunite = self.dictValeurs["IDunite"]
        self.heure_debut = self.dictValeurs["heure_debut"]
        self.heure_fin = self.dictValeurs["heure_fin"]
        self.quantite = self.dictValeurs["quantite"]
        self.etat = self.dictValeurs["etat"]
        self.etiquettes = self.dictValeurs["etiquettes"]

        self.nomUnite = "TEST"  #self.parent.dictUnites[self.IDunite]["nom"]

        self.texteDetail = ""
        if self.heure_debut != None and self.heure_fin != None:
            self.texteDetail = "%s - %s" % (self.heure_debut.replace(
                ":", "h"), self.heure_fin.replace(":", "h"))
        if self.quantite != None:
            self.texteDetail += _(u" Qté=%d") % self.quantite

        if self.etat == "reservation":
            self.texteEtat = _(u"Réservation")
        elif self.etat == "present":
            self.texteEtat = _(u"Présent")
        elif self.etat == "attente":
            self.texteEtat = _(u"Attente")
        elif self.etat == "absenti":
            self.texteEtat = _(u"Absence injustifiée")
        elif self.etat == "absentj":
            self.texteEtat = _(u"Absence justifiée")
        elif self.etat == "refus":
            self.texteEtat = _(u"Refus")
        else:
            self.texteEtat = ""

        # Calcule des horaires
        self.heure_debut_time = UTILS_Dates.HeureStrEnTime(self.heure_debut)
        self.heure_fin_time = UTILS_Dates.HeureStrEnTime(self.heure_fin)

        # Calcule la durée réelle
        self.duree_reelle = UTILS_Dates.SoustractionHeures(
            self.heure_fin_time, self.heure_debut_time)
        self.duree_reelle_str = UTILS_Dates.DeltaEnStr(self.duree_reelle,
                                                       separateur="h")

        # Calcule la durée arrondie
        arrondi_type = self.clsbase.GetValeur("arrondi_type", None)
        arrondi_delta = self.clsbase.GetValeur("arrondi_delta", 15)
        self.duree_arrondie = UTILS_Dates.CalculerArrondi(
            arrondi_type=arrondi_type,
            arrondi_delta=arrondi_delta,
            heure_debut=self.heure_debut_time,
            heure_fin=self.heure_fin_time)
        self.duree_arrondie_str = UTILS_Dates.DeltaEnStr(self.duree_arrondie,
                                                         separateur="h")
Esempio n. 2
0
 def FormateDuree(duree):
     if duree in (None, "", datetime.timedelta(seconds=0)):
         return ""
     else :
         if type(duree) == int :
             duree = datetime.timedelta(hours=duree)
         return UTILS_Dates.DeltaEnStr(duree, separateur="h")
Esempio n. 3
0
 def FormateDuree(duree):
     if duree in (None, "", datetime.timedelta(seconds=0)):
         return ""
     if type(duree) == datetime.timedelta:
         return UTILS_Dates.DeltaEnStr(duree, separateur="h")
     if type(duree) in (str, six.text_type):
         duree = duree.replace(' ', '')
         duree = duree.replace(":", "h")
         return duree
Esempio n. 4
0
 def SetDuree(self, duree=None):
     """ duree = float, str ou timedelta """
     if type(duree) == float:
         td = datetime.timedelta(hours=duree)
     elif type(duree) in (str, unicode):
         td = UTILS_Dates.HeureStrEnDelta(duree)
     elif type(duree) == datetime.timedelta:
         td = duree
     else:
         td = datetime.timedelta(0)
     valeur = UTILS_Dates.DeltaEnStr(td, separateur=self.separateur)
     wx.TextCtrl.SetValue(self, valeur)
    def MAJ(self):
        listeDonnees = [
            {"label" : _(u"Nombre de jours prévus"), "code" : "nbre_dates", "format" : "entier", "suffixe" : _(u"jours"), "defaut" : 0},
            {"label" : _(u"Nombre de semaines prévues"), "code" : "nbre_semaines", "format" : "entier", "suffixe" : _(u"semaines"), "defaut" : 0},
            {"label" : _(u"Nombre de mois prévus"), "code" : "nbre_mois", "format" : "entier", "suffixe" : _(u"mois"), "defaut" : 0},
            {"label" : _(u"Nombre moyen d'heures prévues par jour"), "code" : "moy_heures_jour", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre moyen d'heures prévues par semaine"), "code" : "moy_heures_semaine", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre moyen d'heures prévues par mois"), "code" : "moy_heures_mois", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre d'heures prévues arrondies"), "code" : "duree_heures_brut", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre d'heures RTT prévues"), "code" : "duree_absences_prevues", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre d'heures RTT prises"), "code" : "duree_absences_prises", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre d'heures RTT restantes"), "code" : "duree_absences_solde", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre d'heures de régularisation"), "code" : "duree_heures_regularisation", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre total d'heures facturées"), "code" : "duree_heures_contrat", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Heures facturées chaque mois"), "code" : "forfait_horaire_mensuel", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Heures facturées le dernier mois"), "code" : "forfait_horaire_dernier_mois", "format" : "duree", "suffixe" : _(u""), "defaut" : datetime.timedelta(0)},
            {"label" : _(u"Nombre de mensualités"), "code" : "nbre_mensualites", "format" : "entier", "suffixe" : _(u"mensualités"), "defaut" : 0},
            {"label" : _(u"Montant total facturé"), "code" : "total_mensualites", "format" : "montant", "suffixe" : "", "defaut" : FloatToDecimal(0.0)},
        ]

        self.donnees = []
        index = 0
        for dictDonnee in listeDonnees :
            valeur = self.clsbase.GetValeur(dictDonnee["code"], dictDonnee["defaut"])
            if dictDonnee["format"] == "montant" :
                valeur = u"%.2f %s" % (valeur, SYMBOLE)
            if dictDonnee["format"] == "entier" :
                valeur = u"%d" % valeur
            if dictDonnee["format"] == "decimal" :
                valeur = u"%.2f" % valeur
            if dictDonnee["format"] == "duree" :
                valeur = UTILS_Dates.DeltaEnStr(valeur)
            if "suffixe" in dictDonnee and dictDonnee["suffixe"] != "" :
                valeur += " " + dictDonnee["suffixe"]
            self.donnees.append(Track(index, dictDonnee["label"], valeur))
            index += 1

        self.SetObjects(self.donnees)
        self._ResizeSpaceFillingColumns() 
Esempio n. 6
0
    def OnBoutonOk(self, event):
        # Récupération et vérification des données saisies
        if self.IDfacture != None:
            dlg = wx.MessageDialog(
                self,
                _(u"Cette prestation apparaît déjà sur une facture. Il est donc impossible de la modifier !\n\nVous devez obligatoirement cliquer sur le bouton ANNULER pour quitter."
                  ), _(u"Validation impossible"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return

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

        categorie = self.ctrl_categorie.GetCategorie()

        label = self.ctrl_label.GetValue()
        if label == "":
            dlg = wx.MessageDialog(
                self, _(u"Vous devez obligatoirement saisir un intitulé !"),
                _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_label.SetFocus()
            return

        IDactivite = self.ctrl_activite.GetID()
        IDcategorie_tarif = self.ctrl_categorie_tarif.GetID()
        IDtarif = self.ctrl_tarif.GetID()

        montant_initial = self.ctrl_montant_avant_deduc.GetMontant()
        montant = self.ctrl_montant.GetMontant()
        if montant == None:
            dlg = wx.MessageDialog(
                self,
                _(u"Le montant que vous avez saisi ne semble pas valide !"),
                _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            self.ctrl_montant.SetFocus()
            return

        IDfamille = self.IDfamille
        if self.radio_type_individuelle.GetValue() == True:
            IDindividu = self.ctrl_individu.GetID()
            if IDindividu == None:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Etant donné que vous avez sélectionné le type 'prestation individuelle', vous devez obligatoirement sélectionner un individu dans la liste !"
                      ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
                dlg.ShowModal()
                dlg.Destroy()
                self.ctrl_individu.SetFocus()
                return
        else:
            IDindividu = 0

        code_comptable = self.ctrl_code_comptable.GetValue()
        if code_comptable == "":
            code_comptable = None

        code_produit_local = self.ctrl_code_produit_local.GetValue()
        if code_produit_local == "":
            code_produit_local = None

        tva = self.ctrl_tva.GetValue()
        if tva == 0.0:
            tva = None

        # Vérifie temps facturé
        temps_facture = UTILS_Dates.DeltaEnStr(self.ctrl_temps.GetDuree(),
                                               separateur=":")
        if temps_facture != None:
            if self.ctrl_temps.Validation() == False:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Le temps facturé que vous avez saisi ne semble pas correct !"
                      ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
                dlg.ShowModal()
                dlg.Destroy()
                self.ctrl_temps.SetFocus()
                return

        # Périodes de gestion
        gestion = UTILS_Gestion.Gestion(None)
        if gestion.Verification("prestations", date) == False: return False

        # Récupération du IDcompte_payeur
        DB = GestionDB.DB()
        req = "SELECT IDcompte_payeur FROM familles WHERE IDfamille=%d" % self.IDfamille
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        DB.Close()
        IDcompte_payeur = listeDonnees[0][0]

        DB = GestionDB.DB()

        # Recherche si cette prestation a déjà été ventilée sur un règlement
        if self.IDprestation != None:
            req = """SELECT IDventilation, ventilation.montant
            FROM ventilation
            LEFT JOIN reglements ON reglements.IDreglement = ventilation.IDreglement
            WHERE IDprestation=%d
            ORDER BY reglements.date;""" % self.IDprestation
            DB.ExecuterReq(req)
            listeVentilations = DB.ResultatReq()
            montantVentilation = 0.0
            for IDventilation, montantTmp in listeVentilations:
                montantVentilation += montantTmp
            if montantVentilation > montant:
                # Si le montant total ventilé est supérieur au montant de la prestation :
                montantVentilationTmp = 0.0
                for IDventilation, montantTmp in listeVentilations:
                    montantVentilationTmp += montantTmp
                    if montantVentilationTmp > montant:
                        nouveauMontant = montantTmp - (montantVentilationTmp -
                                                       montant)
                        if nouveauMontant > 0.0:
                            DB.ReqMAJ("ventilation", [
                                ("montant", nouveauMontant),
                            ], "IDventilation", IDventilation)
                            montantVentilationTmp = (
                                montantVentilationTmp -
                                montantTmp) + nouveauMontant
                        else:
                            DB.ReqDEL("ventilation", "IDventilation",
                                      IDventilation)

        # Sauvegarde de la prestation
        listeDonnees = [
            ("IDcompte_payeur", IDcompte_payeur),
            ("date", date),
            ("categorie", categorie),
            ("label", label),
            ("montant_initial", montant_initial),
            ("montant", montant),
            ("IDactivite", IDactivite),
            ("IDtarif", IDtarif),
            ("IDfamille", IDfamille),
            ("IDindividu", IDindividu),
            ("temps_facture", temps_facture),
            ("IDcategorie_tarif", IDcategorie_tarif),
            ("code_compta", code_comptable),
            ("tva", tva),
            ("code_produit_local", code_produit_local),
        ]
        if self.IDprestation == None:
            listeDonnees.append(("date_valeur", str(datetime.date.today())))
            self.IDprestation = DB.ReqInsert("prestations", listeDonnees)
        else:
            DB.ReqMAJ("prestations", listeDonnees, "IDprestation",
                      self.IDprestation)
        DB.Close()

        # Sauvegarde des déductions
        self.ctrl_deductions.Sauvegarde(IDprestation=self.IDprestation)

        # Fermeture de la fenêtre
        self.EndModal(wx.ID_OK)
 def FormateDuree(duree):
     if duree in (None, "", datetime.timedelta(seconds=0)):
         return ""
     else:
         return UTILS_Dates.DeltaEnStr(duree, separateur="h")
Esempio n. 8
0
    def Sauvegarde(self):
        """ Sauvegarde dans la base """
        DB = GestionDB.DB()

        # Enregistrement des informations générales sur le contrat
        listeDonnees = (
            ("IDindividu", self.GetValeur("IDindividu", None)),
            ("IDinscription", self.GetValeur("IDinscription", None)),
            ("IDactivite", self.GetValeur("IDactivite", None)),
            ("date_debut", self.GetValeur("date_debut", None)),
            ("date_fin", self.GetValeur("date_fin", None)),
            ("observations", self.GetValeur("observations", None)),
            ("type", "psu"),
            ("duree_absences_prevues",
             UTILS_Dates.DeltaEnStr(self.GetValeur("duree_absences_prevues",
                                                   datetime.timedelta(0)),
                                    separateur=":")),
            ("duree_heures_regularisation",
             UTILS_Dates.DeltaEnStr(self.GetValeur(
                 "duree_heures_regularisation", datetime.timedelta(0)),
                                    separateur=":")),
            ("arrondi_type", self.GetValeur("arrondi_type", None)),
            ("arrondi_delta", self.GetValeur("arrondi_delta", 30)),
            ("planning", self.GetValeur("planning", None)),
        )
        if self.IDcontrat == None:
            self.IDcontrat = DB.ReqInsert("contrats", listeDonnees)
        else:
            DB.ReqMAJ("contrats", listeDonnees, "IDcontrat", self.IDcontrat)

        # Enregistrement des consommations
        # liste_IDconso = []
        # for track in self.GetValeur("tracks_previsions", []):
        #     listeDonnees = (
        #         ("IDindividu", self.GetValeur("IDindividu", None)),
        #         ("IDinscription", self.GetValeur("IDinscription", None)),
        #         ("IDactivite", self.GetValeur("IDactivite", None)),
        #         ("date", track.date),
        #         ("IDunite", track.IDunite),
        #         ("IDgroupe", self.GetValeur("IDgroupe", None)),
        #         ("heure_debut", track.heure_debut),
        #         ("heure_fin", track.heure_fin),
        #         ("etat", track.etat),
        #         #("date_saisie", track.date_saisie),
        #         ("IDutilisateur", UTILS_Identification.GetIDutilisateur()),
        #         ("IDcategorie_tarif", self.GetValeur("IDcategorie_tarif", None)),
        #         ("IDcompte_payeur", self.GetValeur("IDcompte_payeur", None)),
        #         #("IDprestation", track.IDprestation),#TODO
        #         #("forfait", track.forfait),#TODO
        #         ("quantite", track.quantite),
        #         #("etiquettes", track.etiquettes),#TODO
        #     )
        #     if track.IDconso == None :
        #         IDconso = DB.ReqInsert("consommations", listeDonnees)
        #     else :
        #         IDconso = track.IDconso
        #         DB.ReqMAJ("consommations", listeDonnees, "IDconso", IDconso)
        #     liste_IDconso.append(IDconso)

        # Version optimisée
        listeChamps = [
            "IDindividu",
            "IDinscription",
            "IDactivite",
            "date",
            "IDunite",
            "IDgroupe",
            "heure_debut",
            "heure_fin",
            "etat",
            "IDutilisateur",
            "IDcategorie_tarif",
            "IDcompte_payeur",
            "quantite",
        ]
        liste_IDconso = []
        listeAjouts = []
        listeModifications = []
        for track in self.GetValeur("tracks_previsions", []):
            listeDonnees = [
                self.GetValeur("IDindividu", None),
                self.GetValeur("IDinscription", None),
                self.GetValeur("IDactivite", None),
                track.date,
                track.IDunite,
                self.GetValeur("IDgroupe", None),
                track.heure_debut,
                track.heure_fin,
                track.etat,
                UTILS_Identification.GetIDutilisateur(),
                self.GetValeur("IDcategorie_tarif", None),
                self.GetValeur("IDcompte_payeur", None),
                track.quantite,
            ]
            if track.IDconso == None:
                listeAjouts.append(listeDonnees)
            else:
                IDconso = track.IDconso
                listeDonnees.append(IDconso)
                listeModifications.append(listeDonnees)
                liste_IDconso.append(IDconso)

        # Ajout optimisé des conso
        if len(listeAjouts) > 0:
            texteChampsTemp = ", ".join(listeChamps)
            listeInterrogations = []
            for champ in listeChamps:
                listeInterrogations.append("?")
            texteInterrogations = ", ".join(listeInterrogations)
            DB.Executermany("INSERT INTO consommations (%s) VALUES (%s)" %
                            (texteChampsTemp, texteInterrogations),
                            listeAjouts,
                            commit=True)

        # Modification optimisée des conso
        if len(listeModifications) > 0:
            listeChampsTemp = []
            for champ in listeChamps:
                listeChampsTemp.append(("%s=?" % champ))
            DB.Executermany("UPDATE consommations SET %s WHERE IDconso=?" %
                            ", ".join(listeChampsTemp),
                            listeModifications,
                            commit=True)

        # Suppression des consommations supprimées
        listeSuppressions = []
        for IDconso in self.GetValeur("liste_IDconso", []):
            if IDconso not in liste_IDconso:
                listeSuppressions.append(IDconso)

        if len(listeSuppressions) > 0:
            if len(listeSuppressions) == 1:
                conditionSuppression = "(%d)" % listeSuppressions[0]
            else:
                conditionSuppression = str(tuple(listeSuppressions))
            DB.ExecuterReq("DELETE FROM consommations WHERE IDconso IN %s" %
                           conditionSuppression)

        # Enregistrement des tarifs
        liste_IDtarif = []
        for track in self.GetValeur("tracks_tarifs", []):
            listeDonnees = (
                ("IDcontrat", self.IDcontrat),
                ("date_debut", track.date_debut),
                ("revenu", track.revenu),
                ("quotient", track.quotient),
                ("taux", track.taux),
                ("tarif_base", track.tarif_base),
                ("tarif_depassement", track.tarif_depassement),
            )
            if track.IDcontrat_tarif == None:
                IDcontrat_tarif = DB.ReqInsert("contrats_tarifs", listeDonnees)
            else:
                IDcontrat_tarif = track.IDcontrat_tarif
                DB.ReqMAJ("contrats_tarifs", listeDonnees, "IDcontrat_tarif",
                          IDcontrat_tarif)
            liste_IDtarif.append(IDcontrat_tarif)

        # Suppression des tarifs supprimés
        listeSuppressions = []
        for IDcontrat_tarif in self.GetValeur("liste_IDtarif", []):
            if IDcontrat_tarif not in liste_IDtarif:
                listeSuppressions.append(IDcontrat_tarif)

        if len(listeSuppressions) > 0:
            if len(listeSuppressions) == 1:
                conditionSuppression = "(%d)" % listeSuppressions[0]
            else:
                conditionSuppression = str(tuple(listeSuppressions))
            DB.ExecuterReq(
                "DELETE FROM contrats_tarifs WHERE IDcontrat_tarif IN %s" %
                conditionSuppression)

        # Enregistrement des mensualités
        # liste_IDprestation = []
        # for track in self.GetValeur("tracks_mensualites", []):
        #     listeDonnees = (
        #         ("IDcompte_payeur", self.GetValeur("IDcompte_payeur", None)),
        #         ("date", track.date_facturation),
        #         ("categorie", "consommation"),
        #         ("label", track.label_prestation),
        #         ("montant_initial", track.montant_mois),
        #         ("montant", track.montant_mois),
        #         ("IDactivite", self.GetValeur("IDactivite", None)),
        #         ("IDtarif", self.GetValeur("IDtarif", None)),
        #         ("IDfacture", track.IDfacture),
        #         ("IDfamille", self.GetValeur("IDfamille", None)),
        #         ("IDindividu", self.GetValeur("IDindividu", None)),
        #         ("forfait", None),
        #         ("temps_facture", UTILS_Dates.DeltaEnStr(track.heures_facturees, ":")),
        #         ("IDcategorie_tarif", self.GetValeur("IDcategorie_tarif", None)),
        #         ("forfait_date_debut", track.forfait_date_debut),
        #         ("forfait_date_fin", track.forfait_date_fin),
        #         ("IDcontrat", self.IDcontrat),
        #     )
        #     if track.IDprestation == None :
        #         IDprestation = DB.ReqInsert("prestations", listeDonnees)
        #     else :
        #         IDprestation = track.IDprestation
        #         DB.ReqMAJ("prestations", listeDonnees, "IDprestation", IDprestation)
        #     liste_IDprestation.append(IDprestation)
        #
        # # Suppression des prestations supprimées
        # listeSuppressions = []
        # for IDprestation in self.GetValeur("liste_IDprestation", []):
        #     if IDprestation not in liste_IDprestation :
        #         listeSuppressions.append(IDprestation)
        #
        # if len(listeSuppressions) > 0 :
        #     if len(listeSuppressions) == 1 :
        #         conditionSuppression = "(%d)" % listeSuppressions[0]
        #     else :
        #         conditionSuppression = str(tuple(listeSuppressions))
        #     DB.ExecuterReq("DELETE FROM prestations WHERE IDprestation IN %s" % conditionSuppression)
        #     DB.ExecuterReq("DELETE FROM ventilation WHERE IDprestation IN %s" % conditionSuppression)
        #     DB.ExecuterReq("DELETE FROM deductions WHERE IDprestation IN %s" % conditionSuppression)

        DB.Commit()
        DB.Close()
Esempio n. 9
0
    def Valider(self):
        """ Valider les mensualités """
        listeTracks = self.GetCheckedObjects()

        # Vérifications
        if len(listeTracks) == 0:
            dlg = wx.MessageDialog(
                self,
                _(u"Vous n'avez sélectionné aucune mensualité à générer dans la liste !"
                  ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return False

        for track in listeTracks:
            if track.IDprestation != None:
                dlg = wx.MessageDialog(
                    self,
                    _(u"Vous ne pouvez pas sélectionner des lignes dont les mensualités ont déjà été générées !"
                      ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION)
                dlg.ShowModal()
                dlg.Destroy()
                return False

        # Demande de confirmation
        dlg = wx.MessageDialog(
            self,
            _(u"Confirmez-vous la validation des %d mensualités sélectionnées sur le mois de %s %d ?"
              % (len(listeTracks), LISTE_MOIS[self.mois - 1], self.annee)),
            _(u"Confirmation"),
            wx.YES_NO | wx.NO_DEFAULT | wx.CANCEL | wx.ICON_QUESTION)
        reponse = dlg.ShowModal()
        dlg.Destroy()
        if reponse != wx.ID_YES:
            return False

        # Enregistrement des mensualités
        DB = GestionDB.DB()

        for track in listeTracks:
            listeDonnees = [
                ("IDcompte_payeur",
                 track.clsbase.GetValeur("IDcompte_payeur", None)),
                ("date", track.date_facturation),
                ("categorie", "consommation"),
                ("label", track.label_prestation),
                ("montant_initial", float(track.montant_a_facturer)),
                ("montant", float(track.montant_a_facturer)),
                ("IDactivite", track.clsbase.GetValeur("IDactivite", None)),
                ("IDtarif", track.clsbase.GetValeur("IDtarif", None)),
                ("IDfacture", track.IDfacture),
                ("IDfamille", track.clsbase.GetValeur("IDfamille", None)),
                ("IDindividu", track.clsbase.GetValeur("IDindividu", None)),
                ("forfait", None),
                ("temps_facture",
                 UTILS_Dates.DeltaEnStr(track.heures_a_facturer, ":")),
                ("IDcategorie_tarif",
                 track.clsbase.GetValeur("IDcategorie_tarif", None)),
                ("forfait_date_debut", track.forfait_date_debut),
                ("forfait_date_fin", track.forfait_date_fin),
                ("IDcontrat", track.clsbase.IDcontrat),
            ]
            if track.IDprestation == None:
                listeDonnees.append(
                    ("date_valeur", str(datetime.date.today())))
                IDprestation = DB.ReqInsert("prestations", listeDonnees)
            else:
                IDprestation = track.IDprestation
                DB.ReqMAJ("prestations", listeDonnees, "IDprestation",
                          IDprestation)

            # MAJ des consommations
            listeUnites = []
            for IDunite in (track.IDunite_prevision, track.IDunite_presence):
                if IDunite != None:
                    listeUnites.append(IDunite)
            if len(listeUnites) == 0: conditionUnites = "()"
            elif len(listeUnites) == 1:
                conditionUnites = "(%d)" % listeUnites[0]
            else:
                conditionUnites = str(tuple(listeUnites))

            req = """UPDATE consommations SET IDprestation=%d
            WHERE IDinscription=%d AND date>='%s' AND date<='%s' AND IDunite IN %s
            ;""" % (IDprestation, track.IDinscription,
                    track.forfait_date_debut, track.forfait_date_fin,
                    conditionUnites)
            DB.ExecuterReq(req)

            # MAJ du track
            track.IDprestation = IDprestation
            track.heures_facturees = track.heures_a_facturer
            track.montant_facture = track.montant_a_facturer
            self.RefreshObject(track)

        DB.Commit()
        DB.Close()

        # Confirmation succès
        dlg = wx.MessageDialog(
            self, _(u"Les mensualités ont été générées avec succès !"),
            _(u"Génération terminée"), wx.OK | wx.ICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()
        return True
Esempio n. 10
0
 def FormateDuree(duree):
     if duree in (None, ""):
         return ""
     else:
         return UTILS_Dates.DeltaEnStr(duree, separateur="h")