Esempio n. 1
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)
Esempio n. 2
0
    def GetDuree(self, format=datetime.timedelta):
        """ format = datetime.timedelta ou str ou float"""
        valeur = wx.TextCtrl.GetValue(self)
        valeur = valeur.replace(' ', '')
        valeur = valeur.replace('h', ':')
        valeur = valeur.replace('H', ':')
        if valeur == ":":
            valeur = None

        # Vérifie si c'est un float
        try:
            valeur = float(valeur)
            format = float
        except:
            pass

        # Conversion
        if format == datetime.timedelta:
            return UTILS_Dates.HeureStrEnDelta(valeur)
        elif format == float:
            return datetime.timedelta(hours=valeur)
        else:
            return valeur
Esempio n. 3
0
    def Importation(self, DBtemp=None):
        """ Importation depuis la base """
        dictValeurs = {}

        # Lecture de la base
        if DBtemp == None:
            DB = GestionDB.DB()
        else:
            DB = DBtemp

        # Informations générales sur le contrat
        if self.IDcontrat != None:

            req = """SELECT contrats.IDindividu, IDinscription, date_debut, date_fin, observations, IDactivite, type,
            duree_absences_prevues, duree_heures_regularisation, arrondi_type, arrondi_delta, duree_tolerance_depassement, planning,
            individus.nom, individus.prenom
            FROM contrats
            LEFT JOIN individus ON individus.IDindividu = contrats.IDindividu
            WHERE IDcontrat=%d
            ;""" % self.IDcontrat
            DB.ExecuterReq(req)
            listeDonnees = DB.ResultatReq()
            if len(listeDonnees) > 0:
                IDindividu, IDinscription, date_debut, date_fin, observations, IDactivite, type_contrat, duree_absences_prevues, duree_heures_regularisation, arrondi_type, arrondi_delta, duree_tolerance_depassement, planning, individu_nom, individu_prenom = listeDonnees[
                    0]

                self.IDinscription = IDinscription
                dictValeurs["IDinscription"] = self.IDinscription
                dictValeurs["date_debut"] = UTILS_Dates.DateEngEnDateDD(
                    date_debut)
                dictValeurs["date_fin"] = UTILS_Dates.DateEngEnDateDD(date_fin)
                dictValeurs["observations"] = observations
                dictValeurs["IDactivite"] = IDactivite
                dictValeurs["type_contrat"] = type_contrat
                dictValeurs[
                    "duree_absences_prevues"] = UTILS_Dates.HeureStrEnDelta(
                        duree_absences_prevues)
                dictValeurs[
                    "duree_heures_regularisation"] = UTILS_Dates.HeureStrEnDelta(
                        duree_heures_regularisation)
                dictValeurs[
                    "duree_tolerance_depassement"] = UTILS_Dates.HeureStrEnDelta(
                        duree_tolerance_depassement)
                dictValeurs["individu_nom"] = individu_nom
                dictValeurs["individu_prenom"] = individu_prenom
                dictValeurs["arrondi_type"] = arrondi_type
                dictValeurs["arrondi_delta"] = arrondi_delta
                dictValeurs["planning"] = planning

                if individu_prenom != None:
                    dictValeurs["individu_nom_complet"] = u"%s %s" % (
                        individu_nom, individu_prenom)
                else:
                    dictValeurs["individu_nom_complet"] = individu_nom

        # Importation des données de l'inscription
        if self.IDinscription != None:

            req = """SELECT IDindividu, IDfamille, IDactivite, IDgroupe, IDcategorie_tarif, IDcompte_payeur, date_inscription, parti
            FROM inscriptions
            WHERE inscriptions.statut='ok' AND IDinscription=%d
            ;""" % self.IDinscription
            DB.ExecuterReq(req)
            listeDonnees = DB.ResultatReq()
            IDindividu, IDfamille, IDactivite, IDgroupe, IDcategorie_tarif, IDcompte_payeur, date_inscription, parti = listeDonnees[
                0]

            dictValeurs["IDinscription"] = self.IDinscription
            dictValeurs["IDindividu"] = IDindividu
            dictValeurs["IDfamille"] = IDfamille
            dictValeurs["IDactivite"] = IDactivite
            dictValeurs["IDgroupe"] = IDgroupe
            dictValeurs["IDcategorie_tarif"] = IDcategorie_tarif
            dictValeurs["IDcompte_payeur"] = IDcompte_payeur
            dictValeurs["date_inscription"] = date_inscription
            dictValeurs["parti"] = parti

            # Infos sur le dernier contrat saisi
            req = """SELECT arrondi_type, arrondi_delta, duree_tolerance_depassement
            FROM contrats
            WHERE type='psu' AND IDactivite=%d
            ORDER BY IDcontrat DESC LIMIT 1
            ;""" % IDactivite
            DB.ExecuterReq(req)
            listeDonnees = DB.ResultatReq()
            if len(listeDonnees) > 0:
                arrondi_type, arrondi_delta, duree_tolerance_depassement = listeDonnees[
                    0]
                dictValeurs["arrondi_type"] = arrondi_type
                dictValeurs["arrondi_delta"] = arrondi_delta
                dictValeurs[
                    "duree_tolerance_depassement"] = UTILS_Dates.HeureStrEnDelta(
                        duree_tolerance_depassement)

        # Informations sur l'activité
        req = """SELECT psu_unite_prevision, psu_unite_presence, psu_tarif_forfait, psu_etiquette_rtt
        FROM activites
        WHERE IDactivite=%d
        ;""" % dictValeurs["IDactivite"]
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        psu_unite_prevision, psu_unite_presence, psu_tarif_forfait, psu_etiquette_rtt = listeDonnees[
            0]

        dictValeurs["IDunite_prevision"] = psu_unite_prevision
        dictValeurs["IDunite_presence"] = psu_unite_presence
        dictValeurs["IDtarif"] = psu_tarif_forfait
        dictValeurs["psu_etiquette_rtt"] = psu_etiquette_rtt
        dictValeurs["duree_absences_prises"] = datetime.timedelta(0)

        # Mémorise les données déjà importées
        self.SetValeurs(dictValeurs)

        # Echap sur nouveau contrat
        if self.IDcontrat == None:
            DB.Close()
            return

        # Lecture des consommations
        req = """SELECT IDconso, date, IDunite, IDgroupe, heure_debut, heure_fin, consommations.etat, verrouillage, date_saisie, IDutilisateur,
        IDcategorie_tarif, IDprestation, forfait, quantite, etiquettes
        FROM consommations
        WHERE IDinscription=%d AND date>='%s' AND date<='%s'
        ;""" % (self.IDinscription, dictValeurs["date_debut"],
                dictValeurs["date_fin"])
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()

        tracks_previsions = []
        liste_IDconso = []
        liste_conso = []
        dict_conso = {}
        for IDconso, date, IDunite, IDgroupe, heure_debut, heure_fin, etat, verrouillage, date_saisie, IDutilisateur, IDcategorie_tarif, IDprestation, forfait, quantite, etiquettes in listeDonnees:
            date = UTILS_Dates.DateEngEnDateDD(date)
            date_saisie = UTILS_Dates.DateEngEnDateDD(date_saisie)
            heure_debut_time = UTILS_Dates.HeureStrEnTime(heure_debut)
            heure_fin_time = UTILS_Dates.HeureStrEnTime(heure_fin)
            etiquettes = UTILS_Texte.ConvertStrToListe(etiquettes)

            dictConso = {
                "IDconso": IDconso,
                "date": date,
                "IDunite": IDunite,
                "IDgroupe": IDgroupe,
                "heure_debut": heure_debut,
                "heure_fin": heure_fin,
                "etat": etat,
                "verrouillage": verrouillage,
                "date_saisie": date_saisie,
                "IDutilisateur": IDutilisateur,
                "IDcategorie_tarif": IDcategorie_tarif,
                "IDprestation": IDprestation,
                "forfait": forfait,
                "quantite": quantite,
                "etiquettes": etiquettes,
                "heure_debut_time": heure_debut_time,
                "heure_fin_time": heure_fin_time,
            }

            track = Track_conso(self, dictConso)

            liste_conso.append(track)
            if (date in dict_conso) == False:
                dict_conso[date] = []
            dict_conso[date].append(track)

            if IDunite == self.GetValeur("IDunite_prevision", None):
                tracks_previsions.append(track)
                liste_IDconso.append(IDconso)

            if dictValeurs["psu_etiquette_rtt"] in etiquettes:
                dictValeurs["duree_absences_prises"] += track.duree_arrondie

        dictValeurs["liste_conso"] = liste_conso
        dictValeurs["dict_conso"] = dict_conso
        dictValeurs["tracks_previsions"] = tracks_previsions
        dictValeurs["liste_IDconso"] = liste_IDconso

        # Lecture des tarifs du contrat
        req = """SELECT IDcontrat_tarif, date_debut, revenu, quotient, taux, tarif_base, tarif_depassement
        FROM contrats_tarifs
        WHERE IDcontrat=%d
        ;""" % self.IDcontrat
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        tracks_tarifs = []
        liste_IDtarif = []
        for IDcontrat_tarif, date_debut, revenu, quotient, taux, tarif_base, tarif_depassement in listeDonnees:
            date_debut = UTILS_Dates.DateEngEnDateDD(date_debut)
            dictTarif = {
                "IDcontrat_tarif": IDcontrat_tarif,
                "date_debut": date_debut,
                "revenu": revenu,
                "quotient": quotient,
                "taux": taux,
                "tarif_base": tarif_base,
                "tarif_depassement": tarif_depassement,
            }
            tracks_tarifs.append(Track_tarif(dictTarif))
            liste_IDtarif.append(IDcontrat_tarif)
        dictValeurs["tracks_tarifs"] = tracks_tarifs
        dictValeurs["liste_IDtarif"] = liste_IDtarif

        # Lecture des mensualités
        req = """SELECT IDprestation, date, label, montant_initial, prestations.montant, prestations.IDfacture, temps_facture,
        forfait_date_debut, forfait_date_fin, factures.numero
        FROM prestations
        LEFT JOIN factures ON factures.IDfacture = prestations.IDfacture
        WHERE IDcontrat=%d
        ;""" % self.IDcontrat
        DB.ExecuterReq(req)
        listeDonnees = DB.ResultatReq()
        liste_prestations = []
        liste_IDprestation = []
        for IDprestation, date_facturation, label, montant_initial, montant, IDfacture, temps_facture, forfait_date_debut, forfait_date_fin, num_facture in listeDonnees:
            date_facturation = UTILS_Dates.DateEngEnDateDD(date_facturation)
            forfait_date_debut = UTILS_Dates.DateEngEnDateDD(
                forfait_date_debut)
            forfait_date_fin = UTILS_Dates.DateEngEnDateDD(forfait_date_fin)
            montant_initial = FloatToDecimal(montant_initial)
            montant = FloatToDecimal(montant)
            temps_facture = UTILS_Dates.HeureStrEnDelta(temps_facture)
            dictMensualite = {
                "IDprestation": IDprestation,
                "date_facturation": date_facturation,
                "label": label,
                "montant_initial": montant_initial,
                "montant": montant,
                "IDfacture": IDfacture,
                "temps_facture": temps_facture,
                "forfait_date_debut": forfait_date_debut,
                "forfait_date_fin": forfait_date_fin,
                "num_facture": num_facture,
            }
            liste_prestations.append(dictMensualite)
            liste_IDprestation.append(IDprestation)
        dictValeurs["liste_prestations"] = liste_prestations
        dictValeurs["liste_IDprestation"] = liste_IDprestation

        # Fermeture de la base
        if DBtemp == None:
            DB.Close()

        # Mémorisation des données
        self.SetValeurs(dictValeurs)