def SetDonnees(self, donnees=None, format="texte"): """ Importe les données au format texte ou liste """ if format == "texte": if donnees == None: donnees = "" self.listeDonnees = UTILS_Divers.ConvertChaineEnListe(donnees) else: if donnees == None: donnees = [] self.listeDonnees = donnees self.MAJ()
def __init__(self, parent, donnees): self.IDcotisation = donnees[0] self.IDfamille = donnees[1] self.IDindividu = donnees[2] self.IDtype_cotisation = donnees[3] self.IDunite_cotisation = donnees[4] self.date_saisie = DateEngEnDateDD(donnees[5]) self.IDutilisateur = donnees[6] self.date_creation_carte = donnees[7] self.numero = donnees[8] self.IDdepot_cotisation = donnees[9] self.date_debut = DateEngEnDateDD(donnees[10]) self.date_fin = DateEngEnDateDD(donnees[11]) self.IDprestation = donnees[12] self.nomTypeCotisation = donnees[13] self.typeTypeCotisation = donnees[14] self.typeHasCarte = donnees[15] self.nomUniteCotisation = donnees[16] self.observations = donnees[17] self.activites = donnees[18] if self.activites == None: self.activites = "" self.individu_nom = donnees[19] if self.individu_nom == None: self.individu_nom = "" self.individu_prenom = donnees[20] if self.individu_prenom == None: self.individu_prenom = "" # Activites texte = "" if len(self.activites) > 0: listeTemp = [] listeIDactivites = UTILS_Divers.ConvertChaineEnListe( self.activites) for IDactivite in listeIDactivites: if IDactivite in parent.dictActivites: nomActivite = parent.dictActivites[IDactivite]["nom"] listeTemp.append(nomActivite) if len(listeTemp) > 0: texte = ", ".join(listeTemp) self.activitesStr = texte self.nomCotisation = u"%s - %s" % (self.nomTypeCotisation, self.nomUniteCotisation) if self.IDfamille in parent.titulaires: self.nomTitulaires = parent.titulaires[ self.IDfamille]["titulairesSansCivilite"] else: self.nomTitulaires = u"" # Individu self.individu = "" if self.IDindividu != None: self.individu = u"%s %s" % (self.individu_nom, self.individu_prenom) # Type if self.typeTypeCotisation == "famille": self.typeStr = _(u"Cotisation familiale") else: self.typeStr = _(u"Cotisation individuelle") # Validité dateDuJour = datetime.date.today() if dateDuJour >= self.date_debut and dateDuJour <= self.date_fin: self.valide = True else: self.valide = False # Dépôt if self.IDdepot_cotisation == None: self.depotStr = _(u"Non déposée") else: self.depotStr = _(u"Dépôt n°%d") % self.IDdepot_cotisation # Etat if self.IDdepot_cotisation == None or self.IDdepot_cotisation == 0: self.inclus = False else: self.inclus = True
def GetDonneesImpression(self, listeCotisations=[]): """ Impression des factures """ dlgAttente = wx.BusyInfo(_(u"Recherche des données..."), None) if 'phoenix' not in wx.PlatformInfo: wx.Yield() # Récupère les données de la facture if len(listeCotisations) == 0: conditions = "()" elif len(listeCotisations) == 1: conditions = "(%d)" % listeCotisations[0] else: conditions = str(tuple(listeCotisations)) DB = GestionDB.DB() # Récupération des activités req = """SELECT IDactivite, nom, abrege FROM activites ORDER BY date_fin DESC;""" DB.ExecuterReq(req) listeTemp = DB.ResultatReq() dictActivites = {} for IDactivite, nom, abrege in listeTemp: dictTemp = {"IDactivite": IDactivite, "nom": nom, "abrege": abrege} dictActivites[IDactivite] = dictTemp # Récupère les prestations dictFacturation = {} req = """SELECT IDcotisation, SUM(montant) FROM prestations LEFT JOIN cotisations ON cotisations.IDprestation = prestations.IDprestation WHERE cotisations.IDcotisation IN %s GROUP BY cotisations.IDcotisation;""" % conditions DB.ExecuterReq(req) listePrestations = DB.ResultatReq() for IDcotisation, montant in listePrestations: dictFacturation[IDcotisation] = { "montant": montant, "ventilation": 0.0, "dateReglement": None, "modeReglement": None } # Récupère la ventilation req = """SELECT IDcotisation, SUM(ventilation.montant), MIN(reglements.date), MIN(modes_reglements.label) FROM ventilation LEFT JOIN prestations ON prestations.IDprestation = ventilation.IDprestation LEFT JOIN cotisations ON cotisations.IDprestation = ventilation.IDprestation LEFT JOIN reglements ON reglements.IDreglement = ventilation.IDreglement LEFT JOIN modes_reglements ON modes_reglements.IDmode = reglements.IDmode WHERE cotisations.IDcotisation IN %s GROUP BY cotisations.IDcotisation;""" % conditions DB.ExecuterReq(req) listeVentilations = DB.ResultatReq() for IDcotisation, ventilation, dateReglement, modeReglement in listeVentilations: if IDcotisation in dictFacturation: dictFacturation[IDcotisation]["ventilation"] = ventilation dictFacturation[IDcotisation]["dateReglement"] = dateReglement dictFacturation[IDcotisation]["modeReglement"] = modeReglement # Recherche les cotisations req = """ SELECT cotisations.IDcotisation, cotisations.IDfamille, cotisations.IDindividu, cotisations.IDtype_cotisation, cotisations.IDunite_cotisation, cotisations.date_saisie, cotisations.IDutilisateur, cotisations.date_creation_carte, cotisations.numero, cotisations.IDdepot_cotisation, cotisations.date_debut, cotisations.date_fin, cotisations.IDprestation, types_cotisations.nom, types_cotisations.type, types_cotisations.carte, unites_cotisations.nom, comptes_payeurs.IDcompte_payeur, cotisations.observations, cotisations.activites FROM cotisations LEFT JOIN types_cotisations ON types_cotisations.IDtype_cotisation = cotisations.IDtype_cotisation LEFT JOIN unites_cotisations ON unites_cotisations.IDunite_cotisation = cotisations.IDunite_cotisation LEFT JOIN comptes_payeurs ON comptes_payeurs.IDfamille = cotisations.IDfamille WHERE cotisations.IDcotisation IN %s ORDER BY cotisations.date_saisie ;""" % conditions DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) == 0: del dlgAttente return False # Création des dictRappels dictDonnees = {} dictChampsFusion = {} for item in listeDonnees: IDcotisation = item[0] IDfamille = item[1] IDindividu = item[2] IDtype_cotisation = item[3] IDunite_cotisation = item[4] date_saisie = UTILS_Dates.DateEngEnDateDD(item[5]) IDutilisateur = item[6] date_creation_carte = item[7] numero = item[8] IDdepot_cotisation = item[9] date_debut = UTILS_Dates.DateEngEnDateDD(item[10]) date_fin = UTILS_Dates.DateEngEnDateDD(item[11]) IDprestation = item[12] nomTypeCotisation = item[13] typeTypeCotisation = item[14] typeHasCarte = item[15] nomUniteCotisation = item[16] IDcompte_payeur = item[17] observations = item[18] activites = item[19] if activites == None: activites = "" # Activités texte = "" if len(activites) > 0: listeTemp = [] listeIDactivites = UTILS_Divers.ConvertChaineEnListe(activites) for IDactivite in listeIDactivites: if IDactivite in dictActivites: nomActivite = dictActivites[IDactivite]["nom"] listeTemp.append(nomActivite) if len(listeTemp) > 0: texte = ", ".join(listeTemp) activites = texte nomCotisation = u"%s - %s" % (nomTypeCotisation, nomUniteCotisation) # Type if typeTypeCotisation == "famille": typeStr = _(u"Cotisation familiale") else: typeStr = _(u"Cotisation individuelle") # Dépôt if IDdepot_cotisation == None: depotStr = _(u"Non déposée") else: depotStr = _(u"Dépôt n°%d") % IDdepot_cotisation # Nom des titulaires de famille beneficiaires = "" rue = "" cp = "" ville = "" if IDfamille != None: beneficiaires = self.dictTitulaires[IDfamille][ "titulairesAvecCivilite"] rue = self.dictTitulaires[IDfamille]["adresse"]["rue"] cp = self.dictTitulaires[IDfamille]["adresse"]["cp"] ville = self.dictTitulaires[IDfamille]["adresse"]["ville"] if IDindividu != None and IDindividu in self.dictIndividus: beneficiaires = self.dictIndividus[IDindividu]["nom_complet"] rue = self.dictIndividus[IDindividu]["rue"] cp = self.dictIndividus[IDindividu]["cp"] ville = self.dictIndividus[IDindividu]["ville"] # Famille if IDfamille != None: nomTitulaires = self.dictTitulaires[IDfamille][ "titulairesAvecCivilite"] famille_rue = self.dictTitulaires[IDfamille]["adresse"]["rue"] famille_cp = self.dictTitulaires[IDfamille]["adresse"]["cp"] famille_ville = self.dictTitulaires[IDfamille]["adresse"][ "ville"] else: nomTitulaires = "Famille inconnue" famille_rue = "" famille_cp = "" famille_ville = "" # Facturation montant = 0.0 ventilation = 0.0 dateReglement = None modeReglement = None if IDcotisation in dictFacturation: montant = dictFacturation[IDcotisation]["montant"] ventilation = dictFacturation[IDcotisation]["ventilation"] dateReglement = dictFacturation[IDcotisation]["dateReglement"] modeReglement = dictFacturation[IDcotisation]["modeReglement"] solde = float( FloatToDecimal(montant) - FloatToDecimal(ventilation)) montantStr = u"%.02f %s" % (montant, SYMBOLE) regleStr = u"%.02f %s" % (ventilation, SYMBOLE) soldeStr = u"%.02f %s" % (solde, SYMBOLE) montantStrLettres = UTILS_Conversion.trad(montant, MONNAIE_SINGULIER, MONNAIE_DIVISION) regleStrLettres = UTILS_Conversion.trad(ventilation, MONNAIE_SINGULIER, MONNAIE_DIVISION) soldeStrLettres = UTILS_Conversion.trad(solde, MONNAIE_SINGULIER, MONNAIE_DIVISION) # Mémorisation des données dictDonnee = { "select": True, "{IDCOTISATION}": str(IDcotisation), "{IDTYPE_COTISATION}": str(IDtype_cotisation), "{IDUNITE_COTISATION}": str(IDunite_cotisation), "{DATE_SAISIE}": UTILS_Dates.DateDDEnFr(date_saisie), "{IDUTILISATEUR}": str(IDutilisateur), "{DATE_CREATION_CARTE}": UTILS_Dates.DateDDEnFr(date_creation_carte), "{NUMERO_CARTE}": numero, "{IDDEPOT_COTISATION}": str(IDdepot_cotisation), "{DATE_DEBUT}": UTILS_Dates.DateDDEnFr(date_debut), "{DATE_FIN}": UTILS_Dates.DateDDEnFr(date_fin), "{IDPRESTATION}": str(IDprestation), "{NOM_TYPE_COTISATION}": nomTypeCotisation, "{NOM_UNITE_COTISATION}": nomUniteCotisation, "{COTISATION_FAM_IND}": typeStr, "{IDCOMPTE_PAYEUR}": str(IDcompte_payeur), "{NOM_COTISATION}": nomCotisation, "{NOM_DEPOT}": depotStr, "{MONTANT_FACTURE}": montantStr, "{MONTANT_REGLE}": regleStr, "{SOLDE_ACTUEL}": soldeStr, "{MONTANT_FACTURE_LETTRES}": montantStrLettres.capitalize(), "{MONTANT_REGLE_LETTRES}": regleStrLettres.capitalize(), "{SOLDE_ACTUEL_LETTRES}": soldeStrLettres.capitalize(), "{DATE_REGLEMENT}": UTILS_Dates.DateDDEnFr(dateReglement), "{MODE_REGLEMENT}": modeReglement, "{ACTIVITES}": activites, "{NOTES}": observations, "{IDINDIVIDU}": IDindividu, "{BENEFICIAIRE_NOM}": beneficiaires, "{BENEFICIAIRE_RUE}": rue, "{BENEFICIAIRE_CP}": cp, "{BENEFICIAIRE_VILLE}": ville, "{IDFAMILLE}": str(IDfamille), "{FAMILLE_NOM}": nomTitulaires, "{FAMILLE_RUE}": famille_rue, "{FAMILLE_CP}": famille_cp, "{FAMILLE_VILLE}": famille_ville, "{ORGANISATEUR_NOM}": self.dictOrganisme["nom"], "{ORGANISATEUR_RUE}": self.dictOrganisme["rue"], "{ORGANISATEUR_CP}": self.dictOrganisme["cp"], "{ORGANISATEUR_VILLE}": self.dictOrganisme["ville"], "{ORGANISATEUR_TEL}": self.dictOrganisme["tel"], "{ORGANISATEUR_FAX}": self.dictOrganisme["fax"], "{ORGANISATEUR_MAIL}": self.dictOrganisme["mail"], "{ORGANISATEUR_SITE}": self.dictOrganisme["site"], "{ORGANISATEUR_AGREMENT}": self.dictOrganisme["num_agrement"], "{ORGANISATEUR_SIRET}": self.dictOrganisme["num_siret"], "{ORGANISATEUR_APE}": self.dictOrganisme["code_ape"], "{DATE_EDITION_COURT}": UTILS_Dates.DateDDEnFr(datetime.date.today()), "{DATE_EDITION_LONG}": UTILS_Dates.DateComplete(datetime.date.today()), } # Ajoute les informations de base individus et familles if IDindividu != None: dictDonnee.update( self.infosIndividus.GetDictValeurs(mode="individu", ID=IDindividu, formatChamp=True)) if IDfamille != None: dictDonnee.update( self.infosIndividus.GetDictValeurs(mode="famille", ID=IDfamille, formatChamp=True)) # Ajoute les réponses des questionnaires for dictReponse in self.Questionnaires.GetDonnees(IDfamille): dictDonnee[dictReponse["champ"]] = dictReponse["reponse"] if dictReponse["controle"] == "codebarres": dictDonnee[ "{CODEBARRES_QUESTION_%d}" % dictReponse["IDquestion"]] = dictReponse["reponse"] dictDonnees[IDcotisation] = dictDonnee # Champs de fusion pour Email dictChampsFusion[IDcotisation] = {} for key, valeur in dictDonnee.items(): if key[0] == "{": dictChampsFusion[IDcotisation][key] = valeur del dlgAttente return dictDonnees, dictChampsFusion
def __init__(self, parent, donnees, dictFacturation): self.IDcotisation = donnees[0] self.IDfamille = donnees[1] self.IDindividu = donnees[2] self.IDtype_cotisation = donnees[3] self.IDunite_cotisation = donnees[4] self.date_saisie = UTILS_Dates.DateEngEnDateDD(donnees[5]) self.IDutilisateur = donnees[6] self.date_creation_carte = donnees[7] self.numero = donnees[8] self.IDdepot_cotisation = donnees[9] self.date_debut = UTILS_Dates.DateEngEnDateDD(donnees[10]) self.date_fin = UTILS_Dates.DateEngEnDateDD(donnees[11]) self.IDprestation = donnees[12] self.nomTypeCotisation = donnees[13] self.typeTypeCotisation = donnees[14] self.typeHasCarte = donnees[15] self.nomUniteCotisation = donnees[16] self.IDcompte_payeur = donnees[17] self.observations = donnees[18] self.activites = donnees[19] if self.activites == None : self.activites = "" # Activites texte = "" if len(self.activites) > 0 : listeTemp = [] listeIDactivites = UTILS_Divers.ConvertChaineEnListe(self.activites) for IDactivite in listeIDactivites : if parent.dictActivites.has_key(IDactivite) : nomActivite = parent.dictActivites[IDactivite]["nom"] listeTemp.append(nomActivite) if len(listeTemp) > 0 : texte = ", ".join(listeTemp) self.activitesStr = texte # Nom cotisation self.nomCotisation = u"%s - %s" % (self.nomTypeCotisation, self.nomUniteCotisation) # Numéro de cotisation try : self.numero_int = int(self.numero) except : self.numero_int = None # Titulaires famille if parent.titulaires.has_key(self.IDfamille) : self.nomsTitulaires = parent.titulaires[self.IDfamille]["titulairesSansCivilite"] else : self.nomsTitulaires = "nom inconnu" # Type if self.typeTypeCotisation == "famille" : self.typeStr = _(u"Cotisation familiale") else: self.typeStr = _(u"Cotisation individuelle") # Validité dateDuJour = datetime.date.today() if dateDuJour >= self.date_debut and dateDuJour <= self.date_fin : self.valide = True else: self.valide = False # Dépôt if self.IDdepot_cotisation == None : self.depotStr = _(u"Non déposée") else: self.depotStr = _(u"Dépôt n°%d") % self.IDdepot_cotisation # Nom des titulaires de famille self.beneficiaires = "" self.rue = "" self.cp = "" self.ville = "" if self.IDfamille != None : self.beneficiaires = _(u"IDfamille n°%d") % self.IDfamille if parent.dictFamillesRattachees != None : if parent.dictFamillesRattachees.has_key(self.IDfamille) : self.beneficiaires = parent.dictFamillesRattachees[self.IDfamille]["nomsTitulaires"] else: self.beneficiaires = parent.titulaires[self.IDfamille]["titulairesSansCivilite"] self.rue = parent.titulaires[self.IDfamille]["adresse"]["rue"] self.cp = parent.titulaires[self.IDfamille]["adresse"]["cp"] self.ville = parent.titulaires[self.IDfamille]["adresse"]["ville"] if self.IDindividu != None and parent.individus.has_key(self.IDindividu) : self.beneficiaires = parent.individus[self.IDindividu]["nom_complet"] self.rue = parent.individus[self.IDindividu]["rue"] self.cp = parent.individus[self.IDindividu]["cp"] self.ville = parent.individus[self.IDindividu]["ville"] # Facturation self.montant = 0.0 self.ventilation = 0.0 self.dateReglement = None self.modeReglement = None if dictFacturation.has_key(self.IDprestation): self.montant = dictFacturation[self.IDprestation]["montant"] self.ventilation = dictFacturation[self.IDprestation]["ventilation"] self.dateReglement = dictFacturation[self.IDprestation]["dateReglement"] self.modeReglement = dictFacturation[self.IDprestation]["modeReglement"] self.solde = float(FloatToDecimal(self.montant) - FloatToDecimal(self.ventilation)) if self.solde > 0.0 : self.solde = -self.solde if self.montant == None : self.solde = 0.0