def AfficherApercu(self, event=None): item = self.GetSelection() dictItem = self.GetMainWindow().GetItemPyData(item) if dictItem == None : dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune lettre dans la liste !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return type = dictItem["type"] if type != "compte" : dlg = wx.MessageDialog(self, _(u"Vous n'avez sélectionné aucune lettre dans la liste !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return IDfamille = dictItem["IDfamille"] IDcompte_payeur = dictItem["IDfamille"] dictDocument = dictItem["ctrl_document"].GetDictDocument() # Vérifie qu'un texte a été attribué if dictDocument["IDtexte"] == 0 : dlg = wx.MessageDialog(self, _(u"Vous devez obligatoirement attribuer un texte à cette lettre !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() return # Récupération des données dictCompte = self.dictComptes[IDcompte_payeur] dictCompte["titre"] = dictDocument["titre"] dictCompte["IDtexte"] = dictDocument["IDtexte"] # Fusion des mots-clés facturation = UTILS_Rappels.Facturation() dictCompte["texte"] = facturation.Fusion(dictDocument["IDtexte"] , dictCompte) # Récupération des paramètres d'affichage dlg = DLG_Apercu_rappel.Dialog(self, provisoire=True) if dlg.ShowModal() == wx.ID_OK: dictOptions = dlg.GetParametres() dlg.Destroy() else : dlg.Destroy() return False # Fabrication du PDF dlgAttente = wx.BusyInfo(_(u"Création de l'aperçu au format PDF..."), None) if 'phoenix' not in wx.PlatformInfo: wx.Yield() try : UTILS_Impression_rappel.Impression({IDcompte_payeur : dictCompte}, dictOptions, IDmodele=dictOptions["IDmodele"]) del dlgAttente except Exception as err: del dlgAttente traceback.print_exc(file=sys.stdout) dlg = wx.MessageDialog(self, _(u"Désolé, le problème suivant a été rencontré dans la création de l'aperçu de la lettre de rappel : \n\n%s") % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return False
def CreationPDFunique(repertoireCible=""): dictPieces = {} dlgAttente = wx.BusyInfo( _(u"Génération des lettres de rappel à l'unité au format PDF..." ), None) if 'phoenix' not in wx.PlatformInfo: wx.Yield() try: index = 0 for IDrappel, dictRappel in dictRappels.items(): if dictRappel["select"] == True: num_rappel = dictRappel["num_rappel"] nomTitulaires = self.Supprime_accent( dictRappel["nomSansCivilite"]) nomFichier = _(u"Lettre de rappel %d - %s") % ( num_rappel, nomTitulaires) cheminFichier = u"%s/%s.pdf" % (repertoireCible, nomFichier) dictComptesTemp = {IDrappel: dictRappel} self.EcritStatusbar( _(u"Edition de la lettre de rappel %d/%d : %s") % (index, len(dictRappel), nomFichier)) UTILS_Impression_rappel.Impression( dictComptesTemp, dictOptions, IDmodele=dictOptions["IDmodele"], ouverture=False, nomFichier=cheminFichier) dictPieces[IDrappel] = cheminFichier index += 1 self.EcritStatusbar("") del dlgAttente return dictPieces except Exception as err: del dlgAttente traceback.print_exc(file=sys.stdout) dlg = wx.MessageDialog( None, _(u"Désolé, le problème suivant a été rencontré dans l'édition des lettres de rappel : \n\n%s" ) % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return False
def Impression(self, listeRappels=[], nomDoc=None, afficherDoc=True, dictOptions=None, repertoire=None, repertoireTemp=False): """ Impression des factures """ # Récupération des données à partir des IDrappel resultat = self.GetDonneesImpression(listeRappels) if resultat == False: return False dictRappels, dictChampsFusion = resultat # Récupération des paramètres d'affichage if dictOptions == None: if afficherDoc == False: dlg = DLG_Apercu_rappel.Dialog( None, titre=_( u"Sélection des paramètres de la lettre de rappel"), intro= _(u"Sélectionnez ici les paramètres d'affichage du rappel à envoyer par Email." )) dlg.bouton_ok.SetImageEtTexte("Images/32x32/Valider.png", _("Ok")) else: dlg = DLG_Apercu_rappel.Dialog(None) if dlg.ShowModal() == wx.ID_OK: dictOptions = dlg.GetParametres() dlg.Destroy() else: dlg.Destroy() return False # Création des PDF à l'unité def CreationPDFunique(repertoireCible=""): dictPieces = {} dlgAttente = wx.BusyInfo( _(u"Génération des lettres de rappel à l'unité au format PDF..." ), None) if 'phoenix' not in wx.PlatformInfo: wx.Yield() try: index = 0 for IDrappel, dictRappel in dictRappels.items(): if dictRappel["select"] == True: num_rappel = dictRappel["num_rappel"] nomTitulaires = self.Supprime_accent( dictRappel["nomSansCivilite"]) nomFichier = _(u"Lettre de rappel %d - %s") % ( num_rappel, nomTitulaires) cheminFichier = u"%s/%s.pdf" % (repertoireCible, nomFichier) dictComptesTemp = {IDrappel: dictRappel} self.EcritStatusbar( _(u"Edition de la lettre de rappel %d/%d : %s") % (index, len(dictRappel), nomFichier)) UTILS_Impression_rappel.Impression( dictComptesTemp, dictOptions, IDmodele=dictOptions["IDmodele"], ouverture=False, nomFichier=cheminFichier) dictPieces[IDrappel] = cheminFichier index += 1 self.EcritStatusbar("") del dlgAttente return dictPieces except Exception as err: del dlgAttente traceback.print_exc(file=sys.stdout) dlg = wx.MessageDialog( None, _(u"Désolé, le problème suivant a été rencontré dans l'édition des lettres de rappel : \n\n%s" ) % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return False # Répertoire souhaité par l'utilisateur if repertoire != None: resultat = CreationPDFunique(repertoire) if resultat == False: return False # Répertoire TEMP (pour Emails) dictPieces = {} if repertoireTemp == True: dictPieces = CreationPDFunique(UTILS_Fichiers.GetRepTemp()) if dictPieces == False: return False # Fabrication du PDF global if repertoireTemp == False: dlgAttente = wx.BusyInfo( _(u"Création du PDF des lettres de rappel..."), None) if 'phoenix' not in wx.PlatformInfo: wx.Yield() self.EcritStatusbar( _(u"Création du PDF des lettres de rappel en cours... veuillez patienter..." )) try: UTILS_Impression_rappel.Impression( dictRappels, dictOptions, IDmodele=dictOptions["IDmodele"], ouverture=afficherDoc, nomFichier=nomDoc) self.EcritStatusbar("") del dlgAttente except Exception as err: del dlgAttente traceback.print_exc(file=sys.stdout) err = str(err).decode("iso-8859-15") dlg = wx.MessageDialog( None, _(u"Désolé, le problème suivant a été rencontré dans l'édition des lettres de rappel : \n\n%s" ) % err, _(u"Erreur"), wx.OK | wx.ICON_ERROR) dlg.ShowModal() dlg.Destroy() return False return dictChampsFusion, dictPieces