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
示例#2
0
 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
示例#3
0
    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