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