def __init__(self, parent, track=None, activeMontant=True): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE) self.parent = parent self.track = track self.SetTitle(_(u"Saisie d'un prélèvement")) # Famille self.box_famille_staticbox = wx.StaticBox(self, -1, _(u"Destinataire")) self.label_famille = wx.StaticText(self, -1, _(u"Famille :")) self.ctrl_famille = CTRL_Famille(self) self.ctrl_famille.Enable(False) # IBAN self.box_rib_staticbox = wx.StaticBox(self, -1, _(u"Coordonnées bancaires")) self.label_iban = wx.StaticText(self, -1, _(u"IBAN")) self.label_bic = wx.StaticText(self, -1, _(u"BIC")) self.ctrl_iban = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.image_valide = wx.Bitmap( Chemins.GetStaticPath(u"Images/16x16/Ok4.png"), wx.BITMAP_TYPE_ANY) self.image_nonvalide = wx.Bitmap( Chemins.GetStaticPath(u"Images/16x16/Interdit2.png"), wx.BITMAP_TYPE_ANY) self.ctrl_controle = wx.StaticBitmap(self, -1, self.image_nonvalide) self.ctrl_bic = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) ## self.label_banque = wx.StaticText(self, -1, _(u"Etablissement")) ## self.ctrl_banque = CTRL_Banque(self) ## self.bouton_banques = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Mecanisme.png"), wx.BITMAP_TYPE_ANY)) self.label_titulaire = wx.StaticText(self, -1, _(u"Titulaire du compte")) self.ctrl_titulaire = wx.TextCtrl(self, -1, u"") # Prélèvement self.box_prelevement_staticbox = wx.StaticBox(self, -1, _(u"Prélèvement")) self.label_type = wx.StaticText(self, -1, _(u"Type :")) self.ctrl_type = wx.StaticText(self, -1, _(u"Saisie manuelle")) self.label_sequence = wx.StaticText(self, -1, _(u"Séquence :")) self.ctrl_sequence = CTRL_Sequence(self, afficherAutomatique=False) self.label_libelle = wx.StaticText(self, -1, _(u"Libellé :")) self.ctrl_libelle = wx.TextCtrl(self, -1, u"") self.label_montant = wx.StaticText(self, -1, _(u"Montant :")) self.ctrl_montant = CTRL_Saisie_euros.CTRL(self) if activeMontant == False: self.ctrl_montant.Enable(False) self.label_etat = wx.StaticText(self, -1, _(u"Statut :")) self.radio_etat_attente = wx.RadioButton(self, -1, _(u"Attente"), style=wx.RB_GROUP) self.radio_etat_valide = wx.RadioButton(self, -1, _(u"Valide")) self.radio_etat_refus = wx.RadioButton(self, -1, _(u"Refus")) self.radio_etat_attente.Enable(False) self.radio_etat_valide.Enable(False) self.radio_etat_refus.Enable(False) self.label_reglement = wx.StaticText(self, -1, _(u"Règlement :")) self.ctrl_reglement = wx.StaticText(self, -1, _(u"Non")) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL( self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_ok = CTRL_Bouton_image.CTRL( self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") self.bouton_annuler = CTRL_Bouton_image.CTRL( self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() # Binds self.Bind(wx.EVT_CHOICE, self.OnChoixFamille, self.ctrl_famille) ## self.Bind(wx.EVT_BUTTON, self.OnBoutonBanques, self.bouton_banques) self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_iban) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_bic) # Init contrôles self.Importation() self.OnSaisieIBAN(None)
def __init__(self, parent, IDfamille=None, IDmandat=None): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME) self.parent = parent self.IDfamille = IDfamille self.IDmandat = IDmandat # Mandat self.box_mandat_staticbox = wx.StaticBox(self, -1, _(u"Caractéristiques du mandat")) self.label_reference_mandat = wx.StaticText(self, -1, _(u"Référence Unique du Mandat (RUM) :")) self.ctrl_reference_mandat = wx.TextCtrl(self, -1, str(self.IDfamille), style=wx.TE_CENTRE) self.label_date_mandat = wx.StaticText(self, -1, _(u"Date de signature du mandat :")) self.ctrl_date_mandat = CTRL_Saisie_date.Date2(self) self.label_type_mandat = wx.StaticText(self, -1, _(u"Type de mandat :")) self.ctrl_type_mandat = wx.Choice(self, -1, choices=[_(u"Récurrent"), _(u"Ponctuel")]) self.ctrl_type_mandat.Select(0) self.ctrl_actif = wx.CheckBox(self, -1, "") self.ctrl_actif.SetValue(True) # RIB self.box_rib_staticbox = wx.StaticBox(self, -1, _(u"Coordonnées bancaires")) # IBAN self.label_iban = wx.StaticText(self, -1, _(u"IBAN")) self.label_bic = wx.StaticText(self, -1, _(u"BIC")) self.ctrl_iban = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.ctrl_bic = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.image_valide = wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Ok4.png"), wx.BITMAP_TYPE_ANY) self.image_nonvalide = wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Interdit2.png"), wx.BITMAP_TYPE_ANY) self.ctrl_controle = wx.StaticBitmap(self, -1, self.image_nonvalide) self.label_analyse_iban = wx.StaticText(self, -1, _(u"Analyse IBAN")) self.label_analyse_iban.SetForegroundColour((130, 130, 130)) ## # Etablissement ## self.label_banque = wx.StaticText(self, -1, _(u"Etablissement")) ## self.ctrl_banque = CTRL_Banque(self) ## self.bouton_banques = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Mecanisme.png"), wx.BITMAP_TYPE_ANY)) # Titulaire self.box_titulaire_staticbox = wx.StaticBox(self, -1, _(u"Titulaire du compte bancaire")) self.radio_membre = wx.RadioButton(self, -1, _(u"Le membre :"), style=wx.RB_GROUP) self.ctrl_membre = CTRL_Titulaire(self, IDfamille=IDfamille) self.radio_individu = wx.RadioButton(self, -1, _(u"Le titulaire suivant :")) self.label_individu_nom = wx.StaticText(self, -1, _(u"Nom :")) self.ctrl_individu_nom = wx.TextCtrl(self, -1, u"") self.label_individu_rue = wx.StaticText(self, -1, _(u"Rue :")) self.ctrl_individu_rue = wx.TextCtrl(self, -1, u"") self.label_individu_ville = wx.StaticText(self, -1, _(u"C.P. :")) self.ctrl_individu_ville = CTRL_Saisie_adresse.Adresse(self) # Options self.box_options_staticbox = wx.StaticBox(self, -1, _(u"Options")) self.label_sequence = wx.StaticText(self, -1, _(u"Séquence suiv. :")) self.ctrl_sequence = CTRL_Sequence(self) self.ctrl_sequence.Select(0) self.label_memo = wx.StaticText(self, -1, _(u"Observations :")) self.ctrl_memo = wx.TextCtrl(self, -1, u"", style=wx.TE_MULTILINE) self.label_actif = wx.StaticText(self, -1, _(u"Mandat activé :")) # Liste des prélèvements self.box_prelevements_staticbox = wx.StaticBox(self, -1, _(u"Prélèvements rattachés")) self.notebook = wx.Notebook(self, -1, style=wx.BK_TOP) if self.IDmandat == None : IDmandatTemp = 0 else : IDmandatTemp = self.IDmandat self.ctrl_prelevements = OL_Prelevements.ListView(self.notebook, id=-1, IDmandat=IDmandatTemp, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) self.ctrl_prelevements.SetMinSize((50, 180)) self.ctrl_prelevements.MAJ() if self.IDmandat == None : IDmandatTemp = 0 else : IDmandatTemp = self.IDmandat self.ctrl_pieces = OL_PES_mandat.ListView(self.notebook, id=-1, IDmandat=IDmandatTemp, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) self.ctrl_pieces.SetMinSize((50, 180)) self.ctrl_pieces.MAJ() self.notebook.AddPage(self.ctrl_prelevements, _(u"Prélèvements directs SEPA (%d)") % len(self.ctrl_prelevements.donnees)) self.notebook.AddPage(self.ctrl_pieces, _(u"Prélèvements PES ORMC (%d)") % len(self.ctrl_pieces.donnees)) self.notebook.SetMinSize((50, 180)) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_email = CTRL_Bouton_image.CTRL(self, texte=_(u"Envoyer par Email"), cheminImage="Images/32x32/Emails_exp.png") self.bouton_imprimer = CTRL_Bouton_image.CTRL(self, texte=_(u"Imprimer"), cheminImage="Images/32x32/Imprimante.png") self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") self.bouton_annuler = CTRL_Bouton_image.CTRL(self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() # Binds self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_iban) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_bic) ## self.Bind(wx.EVT_BUTTON, self.OnBoutonBanques, self.bouton_banques) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioTitulaire, self.radio_membre) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioTitulaire, self.radio_individu) self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonImprimer, self.bouton_imprimer) self.Bind(wx.EVT_BUTTON, self.OnBoutonEmail, self.bouton_email) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) # Init contrôles if self.IDmandat != None : self.SetTitle(_(u"Modification d'un mandat SEPA")) self.Importation() else : self.SetTitle(_(u"Saisie d'un mandat SEPA")) self.ctrl_reference_mandat.SetValue(self.GetProchainRUM()) self.ImportationAncienRIB() self.OnSaisieIBAN(None) self.OnRadioTitulaire(None)
class Dialog(wx.Dialog): def __init__(self, parent, track=None, activeMontant=True): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE) self.parent = parent self.track = track self.SetTitle(_(u"Saisie d'un prélèvement")) # Famille self.box_famille_staticbox = wx.StaticBox(self, -1, _(u"Destinataire")) self.label_famille = wx.StaticText(self, -1, _(u"Famille :")) self.ctrl_famille = CTRL_Famille(self) self.ctrl_famille.Enable(False) # IBAN self.box_rib_staticbox = wx.StaticBox(self, -1, _(u"Coordonnées bancaires")) self.label_iban = wx.StaticText(self, -1, _(u"IBAN")) self.label_bic = wx.StaticText(self, -1, _(u"BIC")) self.ctrl_iban = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.image_valide = wx.Bitmap( Chemins.GetStaticPath(u"Images/16x16/Ok4.png"), wx.BITMAP_TYPE_ANY) self.image_nonvalide = wx.Bitmap( Chemins.GetStaticPath(u"Images/16x16/Interdit2.png"), wx.BITMAP_TYPE_ANY) self.ctrl_controle = wx.StaticBitmap(self, -1, self.image_nonvalide) self.ctrl_bic = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) ## self.label_banque = wx.StaticText(self, -1, _(u"Etablissement")) ## self.ctrl_banque = CTRL_Banque(self) ## self.bouton_banques = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Mecanisme.png"), wx.BITMAP_TYPE_ANY)) self.label_titulaire = wx.StaticText(self, -1, _(u"Titulaire du compte")) self.ctrl_titulaire = wx.TextCtrl(self, -1, u"") # Prélèvement self.box_prelevement_staticbox = wx.StaticBox(self, -1, _(u"Prélèvement")) self.label_type = wx.StaticText(self, -1, _(u"Type :")) self.ctrl_type = wx.StaticText(self, -1, _(u"Saisie manuelle")) self.label_sequence = wx.StaticText(self, -1, _(u"Séquence :")) self.ctrl_sequence = CTRL_Sequence(self, afficherAutomatique=False) self.label_libelle = wx.StaticText(self, -1, _(u"Libellé :")) self.ctrl_libelle = wx.TextCtrl(self, -1, u"") self.label_montant = wx.StaticText(self, -1, _(u"Montant :")) self.ctrl_montant = CTRL_Saisie_euros.CTRL(self) if activeMontant == False: self.ctrl_montant.Enable(False) self.label_etat = wx.StaticText(self, -1, _(u"Statut :")) self.radio_etat_attente = wx.RadioButton(self, -1, _(u"Attente"), style=wx.RB_GROUP) self.radio_etat_valide = wx.RadioButton(self, -1, _(u"Valide")) self.radio_etat_refus = wx.RadioButton(self, -1, _(u"Refus")) self.radio_etat_attente.Enable(False) self.radio_etat_valide.Enable(False) self.radio_etat_refus.Enable(False) self.label_reglement = wx.StaticText(self, -1, _(u"Règlement :")) self.ctrl_reglement = wx.StaticText(self, -1, _(u"Non")) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL( self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_ok = CTRL_Bouton_image.CTRL( self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") self.bouton_annuler = CTRL_Bouton_image.CTRL( self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() # Binds self.Bind(wx.EVT_CHOICE, self.OnChoixFamille, self.ctrl_famille) ## self.Bind(wx.EVT_BUTTON, self.OnBoutonBanques, self.bouton_banques) self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_iban) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_bic) # Init contrôles self.Importation() self.OnSaisieIBAN(None) def __set_properties(self): self.ctrl_iban.SetMinSize((200, -1)) self.ctrl_bic.SetMinSize((120, -1)) self.ctrl_iban.SetToolTip( wx.ToolTip(_(u"Saisissez ici le numéro IBAN"))) self.ctrl_bic.SetToolTip(wx.ToolTip( _(u"Saisissez ici le numéro BIC"))) self.ctrl_type.SetForegroundColour(wx.Colour(150, 150, 150)) self.ctrl_reglement.SetForegroundColour(wx.Colour(150, 150, 150)) self.ctrl_famille.SetToolTip( wx.ToolTip(_(u"Sélectionnez ici la famille à débiter"))) self.ctrl_controle.SetToolTip( wx.ToolTip( _(u"Une coche verte apparaît si les coordonnées bancaires sont valides" ))) ## self.ctrl_banque.SetToolTip(wx.ToolTip(_(u"Sélectionnez ici l'établissement du compte"))) ## self.bouton_banques.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour accéder à la gestion des établissements bancaires"))) self.bouton_aide.SetToolTip( wx.ToolTip(_(u"Cliquez ici pour obtenir de l'aide"))) self.bouton_ok.SetToolTip(wx.ToolTip(_(u"Cliquez ici pour valider"))) self.bouton_annuler.SetToolTip( wx.ToolTip(_(u"Cliquez ici pour annuler"))) self.ctrl_sequence.SetToolTip( wx.ToolTip( _(u"Sélectionnez la séquence de l'opération (Si vous n'êtes pas sûr, laissez ce que Noethys a sélectionné automatiquement)" ))) def __do_layout(self): grid_sizer_base = wx.FlexGridSizer(rows=5, cols=1, vgap=10, hgap=10) # Activation box_famille = wx.StaticBoxSizer(self.box_famille_staticbox, wx.VERTICAL) grid_sizer_famille = wx.FlexGridSizer(rows=1, cols=3, vgap=10, hgap=10) grid_sizer_famille.Add(self.label_famille, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_famille.Add(self.ctrl_famille, 0, wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, 0) grid_sizer_famille.AddGrowableCol(1) box_famille.Add(grid_sizer_famille, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_base.Add(box_famille, 1, wx.LEFT | wx.RIGHT | wx.TOP | wx.EXPAND, 10) # RIB box_rib = wx.StaticBoxSizer(self.box_rib_staticbox, wx.VERTICAL) grid_sizer_rib = wx.FlexGridSizer(rows=2, cols=5, vgap=5, hgap=5) grid_sizer_iban = wx.FlexGridSizer(rows=2, cols=3, vgap=5, hgap=5) grid_sizer_iban.Add(self.label_iban, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 10) grid_sizer_iban.Add(self.label_bic, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 10) grid_sizer_iban.Add((2, 2), 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_iban.Add(self.ctrl_iban, 0, wx.EXPAND, 0) grid_sizer_iban.Add(self.ctrl_bic, 0, wx.EXPAND, 0) grid_sizer_iban.Add(self.ctrl_controle, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_iban.AddGrowableCol(0) box_rib.Add(grid_sizer_iban, 1, wx.LEFT | wx.RIGHT | wx.TOP | wx.BOTTOM | wx.EXPAND, 10) ## grid_sizer_label_banque = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) ## grid_sizer_label_banque.Add(self.label_banque, 0, wx.EXPAND|wx.LEFT|wx.BOTTOM, 8) ## box_rib.Add(grid_sizer_label_banque, 0, wx.LEFT|wx.RIGHT|wx.EXPAND, 10) ## grid_sizer_banque = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) ## grid_sizer_banque.Add(self.ctrl_banque, 0, wx.EXPAND, 0) ## grid_sizer_banque.Add(self.bouton_banques, 0, wx.EXPAND, 0) ## grid_sizer_banque.AddGrowableCol(0) ## box_rib.Add(grid_sizer_banque, 1, wx.LEFT|wx.RIGHT|wx.EXPAND, 10) grid_sizer_label_titulaire = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) grid_sizer_label_titulaire.Add(self.label_titulaire, 0, wx.EXPAND | wx.LEFT | wx.BOTTOM, 8) box_rib.Add(grid_sizer_label_titulaire, 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 10) box_rib.Add(self.ctrl_titulaire, 0, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, 10) grid_sizer_base.Add(box_rib, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10) # Prélèvement box_prelevement = wx.StaticBoxSizer(self.box_prelevement_staticbox, wx.VERTICAL) grid_sizer_prelevement = wx.FlexGridSizer(rows=6, cols=2, vgap=10, hgap=10) grid_sizer_prelevement.Add(self.label_type, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(self.ctrl_type, 0, wx.EXPAND, 0) grid_sizer_prelevement.Add(self.label_sequence, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(self.ctrl_sequence, 0, wx.EXPAND, 0) grid_sizer_prelevement.Add(self.label_libelle, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(self.ctrl_libelle, 0, wx.EXPAND, 0) grid_sizer_prelevement.Add(self.label_montant, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(self.ctrl_montant, 0, 0, 0) grid_sizer_prelevement.Add(self.label_etat, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_etat = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) grid_sizer_etat.Add(self.radio_etat_attente, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_etat.Add(self.radio_etat_valide, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_etat.Add(self.radio_etat_refus, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(grid_sizer_etat, 1, wx.EXPAND, 0) grid_sizer_prelevement.Add(self.label_reglement, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_prelevement.Add(self.ctrl_reglement, 0, 0, 0) grid_sizer_prelevement.AddGrowableCol(1) box_prelevement.Add(grid_sizer_prelevement, 1, wx.ALL | wx.EXPAND, 10) grid_sizer_base.Add(box_prelevement, 1, wx.LEFT | wx.RIGHT | wx.EXPAND, 10) # Boutons grid_sizer_boutons = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=10) grid_sizer_boutons.Add(self.bouton_aide, 0, 0, 0) grid_sizer_boutons.Add((20, 20), 0, wx.EXPAND, 0) grid_sizer_boutons.Add(self.bouton_ok, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_annuler, 0, 0, 0) grid_sizer_boutons.AddGrowableCol(1) grid_sizer_base.Add(grid_sizer_boutons, 1, wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, 10) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) grid_sizer_base.AddGrowableCol(0) self.Layout() self.CenterOnScreen() def OnChoixFamille(self, event): IDfamille = self.ctrl_famille.GetIDfamille() if IDfamille == None: return DB = GestionDB.DB() req = """SELECT prelevement_activation, prelevement_etab, prelevement_guichet, prelevement_numero, prelevement_cle, prelevement_banque, prelevement_individu, prelevement_nom, individus.nom, individus.prenom FROM familles LEFT JOIN individus ON individus.IDindividu = familles.prelevement_individu WHERE IDfamille=%d;""" % IDfamille DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) == 0: return activation, etab, guichet, numero, cle, banque, IDindividu, nomIndividu, nomMembre, prenomMembre = listeDonnees[ 0] if etab != None: self.ctrl_code_etab.SetValue(etab) if guichet != None: self.ctrl_code_guichet.SetValue(guichet) if numero != None: self.ctrl_numero.SetValue(numero) if cle != None: self.ctrl_cle.SetValue(cle) if nomIndividu == None: nomIndividu = u"" self.ctrl_banque.SetID(banque) if IDindividu != None: titulaireCompte = u"%s %s" % (nomMembre, prenomMembre) else: titulaireCompte = nomIndividu self.ctrl_titulaire.SetValue(titulaireCompte) def OnSaisieIBAN(self, event): self.ControleIBAN() if event != None: event.Skip() def ControleIBAN(self): iban = self.ctrl_iban.GetValue() bic = self.ctrl_bic.GetValue() if UTILS_Prelevements.ControleIBAN( iban) == True and UTILS_Prelevements.ControleBIC(bic) == True: self.ctrl_controle.SetBitmap(self.image_valide) return True else: self.ctrl_controle.SetBitmap(self.image_nonvalide) return False ## def OnBoutonBanques(self, event): ## IDbanque = self.ctrl_banque.GetID() ## import DLG_Banques ## dlg = DLG_Banques.Dialog(self) ## dlg.ShowModal() ## dlg.Destroy() ## self.ctrl_banque.MAJ() ## self.ctrl_banque.SetID(IDbanque) def OnBoutonAide(self, event): from Utils import UTILS_Aide UTILS_Aide.Aide("Prlvementautomatique1") def OnBoutonAnnuler(self, event): self.EndModal(wx.ID_CANCEL) def Importation(self): """ Importation des données """ if self.track == None: return self.ctrl_famille.SetIDfamille(self.track.IDfamille) if self.track.prelevement_iban != None: self.ctrl_iban.SetValue(self.track.prelevement_iban) if self.track.prelevement_bic != None: self.ctrl_bic.SetValue(self.track.prelevement_bic) ## if self.track.prelevement_banque != None : self.ctrl_banque.SetID(self.track.prelevement_banque) self.ctrl_titulaire.SetValue(self.track.titulaire) if self.track.type == "manuel": labelType = _(u"Saisie manuelle") elif self.track.type == "facture": labelType = _(u"Facture") else: labelType = u"" self.ctrl_type.SetLabel(labelType) self.ctrl_libelle.SetValue(self.track.libelle) self.ctrl_montant.SetMontant(self.track.montant) if self.track.reglement == True: self.ctrl_reglement.SetLabel(_(u"Oui")) else: self.ctrl_reglement.SetLabel(_(u"Non")) if self.track.statut == "valide": self.radio_etat_valide.SetValue(True) elif self.track.statut == "refus": self.radio_etat_refus.SetValue(True) else: self.radio_etat_attente.SetValue(True) self.ctrl_sequence.SetCode(self.track.sequence) def OnBoutonOk(self, event): # Récupération des données track = self.GetTrack() if track == False: return # Fermeture self.EndModal(wx.ID_OK) def GetTrack(self): IDfamille = self.ctrl_famille.GetIDfamille() IDcompte_payeur = self.ctrl_famille.GetIDcompte_payeur() iban = self.ctrl_iban.GetValue() bic = self.ctrl_bic.GetValue() IDbanque = None #self.ctrl_banque.GetID() titulaire = self.ctrl_titulaire.GetValue() libelle = self.ctrl_libelle.GetValue() montant = self.ctrl_montant.GetMontant() sequence = self.ctrl_sequence.GetCode() # Validation des données if IDfamille == None: dlg = wx.MessageDialog( self, _(u"Vous avez oublié de sélectionner une famille dans la liste !" ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_famille.SetFocus() return False if self.ControleIBAN() == False: dlg = wx.MessageDialog( self, _(u"Il est impossible d'activer le prélèvement :\nLes coordonnées bancaires ne sont pas valides !" ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_code_etab.SetFocus() return False ## if IDbanque == None : ## dlg = wx.MessageDialog(self, _(u"Il est impossible d'activer le prélèvement :\nVous n'avez sélectionné aucun établissement bancaire !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) ## dlg.ShowModal() ## dlg.Destroy() ## self.ctrl_banque.SetFocus() ## return False if titulaire == "": dlg = wx.MessageDialog( self, _(u"Vous avez oublié de saisir un nom de titulaire pour le compte bancaire !" ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_titulaire.SetFocus() return False if libelle == "": dlg = wx.MessageDialog( self, _(u"Vous avez oublié de saisir un libellé pour cette opération ! \n\n(Ex : 'Facture n°346573', 'Décembre 2013', etc...)" ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_libelle.SetFocus() return False if montant == None or montant == 0.0: dlg = wx.MessageDialog( self, _(u"Vous avez oublié de saisir un montant pour cette opération !" ), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_montant.SetFocus() return False # MAJ du track track = self.track track.IDfamille = IDfamille track.InitNomsTitulaires() track.IDcompte_payeur = IDcompte_payeur track.prelevement_iban = iban track.prelevement_bic = bic track.prelevement_banque = IDbanque track.titulaire = titulaire track.libelle = libelle track.montant = montant ## track.nomBanque = self.ctrl_banque.GetStringSelection() track.sequence = sequence if self.ctrl_type.GetLabel() == _(u"Saisie manuelle"): track.type = "manuel" if self.ctrl_type.GetLabel() == _(u"Facture"): track.type = "facture" if self.radio_etat_attente.GetValue() == True: track.statut = "attente" if self.radio_etat_valide.GetValue() == True: track.statut = "valide" if self.radio_etat_refus.GetValue() == True: track.statut = "refus" return track
class Dialog(wx.Dialog): def __init__(self, parent, IDfamille=None, IDmandat=None): wx.Dialog.__init__(self, parent, -1, style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.MAXIMIZE_BOX|wx.MINIMIZE_BOX|wx.THICK_FRAME) self.parent = parent self.IDfamille = IDfamille self.IDmandat = IDmandat # Mandat self.box_mandat_staticbox = wx.StaticBox(self, -1, _(u"Caractéristiques du mandat")) self.label_reference_mandat = wx.StaticText(self, -1, _(u"Référence Unique du Mandat (RUM) :")) self.ctrl_reference_mandat = wx.TextCtrl(self, -1, str(self.IDfamille), style=wx.TE_CENTRE) self.label_date_mandat = wx.StaticText(self, -1, _(u"Date de signature du mandat :")) self.ctrl_date_mandat = CTRL_Saisie_date.Date2(self) self.label_type_mandat = wx.StaticText(self, -1, _(u"Type de mandat :")) self.ctrl_type_mandat = wx.Choice(self, -1, choices=[_(u"Récurrent"), _(u"Ponctuel")]) self.ctrl_type_mandat.Select(0) self.ctrl_actif = wx.CheckBox(self, -1, "") self.ctrl_actif.SetValue(True) # RIB self.box_rib_staticbox = wx.StaticBox(self, -1, _(u"Coordonnées bancaires")) # IBAN self.label_iban = wx.StaticText(self, -1, _(u"IBAN")) self.label_bic = wx.StaticText(self, -1, _(u"BIC")) self.ctrl_iban = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.ctrl_bic = wx.TextCtrl(self, -1, u"", style=wx.TE_CENTRE) self.image_valide = wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Ok4.png"), wx.BITMAP_TYPE_ANY) self.image_nonvalide = wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Interdit2.png"), wx.BITMAP_TYPE_ANY) self.ctrl_controle = wx.StaticBitmap(self, -1, self.image_nonvalide) self.label_analyse_iban = wx.StaticText(self, -1, _(u"Analyse IBAN")) self.label_analyse_iban.SetForegroundColour((130, 130, 130)) ## # Etablissement ## self.label_banque = wx.StaticText(self, -1, _(u"Etablissement")) ## self.ctrl_banque = CTRL_Banque(self) ## self.bouton_banques = wx.BitmapButton(self, -1, wx.Bitmap(Chemins.GetStaticPath(u"Images/16x16/Mecanisme.png"), wx.BITMAP_TYPE_ANY)) # Titulaire self.box_titulaire_staticbox = wx.StaticBox(self, -1, _(u"Titulaire du compte bancaire")) self.radio_membre = wx.RadioButton(self, -1, _(u"Le membre :"), style=wx.RB_GROUP) self.ctrl_membre = CTRL_Titulaire(self, IDfamille=IDfamille) self.radio_individu = wx.RadioButton(self, -1, _(u"Le titulaire suivant :")) self.label_individu_nom = wx.StaticText(self, -1, _(u"Nom :")) self.ctrl_individu_nom = wx.TextCtrl(self, -1, u"") self.label_individu_rue = wx.StaticText(self, -1, _(u"Rue :")) self.ctrl_individu_rue = wx.TextCtrl(self, -1, u"") self.label_individu_ville = wx.StaticText(self, -1, _(u"C.P. :")) self.ctrl_individu_ville = CTRL_Saisie_adresse.Adresse(self) # Options self.box_options_staticbox = wx.StaticBox(self, -1, _(u"Options")) self.label_sequence = wx.StaticText(self, -1, _(u"Séquence suiv. :")) self.ctrl_sequence = CTRL_Sequence(self) self.ctrl_sequence.Select(0) self.label_memo = wx.StaticText(self, -1, _(u"Observations :")) self.ctrl_memo = wx.TextCtrl(self, -1, u"", style=wx.TE_MULTILINE) self.label_actif = wx.StaticText(self, -1, _(u"Mandat activé :")) # Liste des prélèvements self.box_prelevements_staticbox = wx.StaticBox(self, -1, _(u"Prélèvements rattachés")) self.notebook = wx.Notebook(self, -1, style=wx.BK_TOP) if self.IDmandat == None : IDmandatTemp = 0 else : IDmandatTemp = self.IDmandat self.ctrl_prelevements = OL_Prelevements.ListView(self.notebook, id=-1, IDmandat=IDmandatTemp, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) self.ctrl_prelevements.SetMinSize((50, 180)) self.ctrl_prelevements.MAJ() if self.IDmandat == None : IDmandatTemp = 0 else : IDmandatTemp = self.IDmandat self.ctrl_pieces = OL_PES_mandat.ListView(self.notebook, id=-1, IDmandat=IDmandatTemp, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) self.ctrl_pieces.SetMinSize((50, 180)) self.ctrl_pieces.MAJ() self.notebook.AddPage(self.ctrl_prelevements, _(u"Prélèvements directs SEPA (%d)") % len(self.ctrl_prelevements.donnees)) self.notebook.AddPage(self.ctrl_pieces, _(u"Prélèvements PES ORMC (%d)") % len(self.ctrl_pieces.donnees)) self.notebook.SetMinSize((50, 180)) # Boutons self.bouton_aide = CTRL_Bouton_image.CTRL(self, texte=_(u"Aide"), cheminImage="Images/32x32/Aide.png") self.bouton_email = CTRL_Bouton_image.CTRL(self, texte=_(u"Envoyer par Email"), cheminImage="Images/32x32/Emails_exp.png") self.bouton_imprimer = CTRL_Bouton_image.CTRL(self, texte=_(u"Imprimer"), cheminImage="Images/32x32/Imprimante.png") self.bouton_ok = CTRL_Bouton_image.CTRL(self, texte=_(u"Ok"), cheminImage="Images/32x32/Valider.png") self.bouton_annuler = CTRL_Bouton_image.CTRL(self, texte=_(u"Annuler"), cheminImage="Images/32x32/Annuler.png") self.__set_properties() self.__do_layout() # Binds self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_iban) self.Bind(wx.EVT_TEXT, self.OnSaisieIBAN, self.ctrl_bic) ## self.Bind(wx.EVT_BUTTON, self.OnBoutonBanques, self.bouton_banques) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioTitulaire, self.radio_membre) self.Bind(wx.EVT_RADIOBUTTON, self.OnRadioTitulaire, self.radio_individu) self.Bind(wx.EVT_BUTTON, self.OnBoutonAide, self.bouton_aide) self.Bind(wx.EVT_BUTTON, self.OnBoutonImprimer, self.bouton_imprimer) self.Bind(wx.EVT_BUTTON, self.OnBoutonEmail, self.bouton_email) self.Bind(wx.EVT_BUTTON, self.OnBoutonOk, self.bouton_ok) self.Bind(wx.EVT_BUTTON, self.OnBoutonAnnuler, self.bouton_annuler) # Init contrôles if self.IDmandat != None : self.SetTitle(_(u"Modification d'un mandat SEPA")) self.Importation() else : self.SetTitle(_(u"Saisie d'un mandat SEPA")) self.ctrl_reference_mandat.SetValue(self.GetProchainRUM()) self.ImportationAncienRIB() self.OnSaisieIBAN(None) self.OnRadioTitulaire(None) def __set_properties(self): self.ctrl_iban.SetMinSize((200, -1)) self.ctrl_bic.SetMinSize((120, -1)) self.ctrl_controle.SetToolTipString(_(u"Une coche verte apparaît si les coordonnées bancaires sont valides")) ## self.ctrl_banque.SetToolTipString(_(u"Sélectionnez ici l'établissement du compte")) self.ctrl_iban.SetToolTipString(_(u"Saisissez ici le numéro IBAN")) self.ctrl_bic.SetToolTipString(_(u"Saisissez ici le numéro BIC")) ## self.bouton_banques.SetToolTipString(_(u"Cliquez ici pour accéder à la gestion des établissements bancaires")) self.radio_membre.SetToolTipString(_(u"Cliquez ici pour sélectionner un membre de la famille")) self.ctrl_membre.SetToolTipString(_(u"Sélectionnez ici un membre de la famille en tant que titulaire du compte bancaire")) self.radio_individu.SetToolTipString(_(u"Cliquez ici pour saisir manuellement un titulaire de compte bancaire")) self.ctrl_individu_nom.SetToolTipString(_(u"Saisissez un nom de titulaire pour ce compte bancaire")) self.ctrl_individu_rue.SetToolTipString(_(u"Saisissez la rue de l'individu")) self.ctrl_reference_mandat.SetToolTipString(_(u"Lors de la saisie d'un mandat, il est attribué automatiquement par Noethys en fonction du RUM du dernier mandat saisi. Mais vous pouvez le modifier en fonction de vos besoins (Ex : '004567', 'XZA-34654', etc...). Attention, il doit s'agir d'une référence alphanumérique unique.")) self.ctrl_date_mandat.SetToolTipString(_(u"Saisissez ici la date de signature du mandat SEPA")) self.ctrl_type_mandat.SetToolTipString(_(u"Utilisez le type 'Récurrent' si le mandant est utilisable pour plusieurs prélèvements ou 'Ponctuel' s'il n'était destiné qu'à un prélèvement unique.")) self.ctrl_memo.SetToolTipString(_(u"Saisissez des observations")) self.ctrl_sequence.SetToolTipString(_(u"Sélectionnez la séquence de la prochaine opération (Automatique par défaut)\n\nImportant : Sélectionnez RCUR si ce mandat a déjà été utilisé hors de Noethys ou avant le 01/01/2014.")) self.ctrl_actif.SetToolTipString(_(u"Mandat activé ou non. Si vous le désactivez, il ne sera plus utilisable pour de futurs prélèvements.")) self.bouton_aide.SetToolTipString(_(u"Cliquez ici pour obtenir de l'aide")) self.bouton_imprimer.SetToolTipString(_(u"Cliquez ici pour imprimer le mandat au format PDF")) self.bouton_email.SetToolTipString(_(u"Cliquez ici pour envoyer le mandat en PDF par Email")) self.bouton_ok.SetToolTipString(_(u"Cliquez ici pour valider")) self.bouton_annuler.SetToolTipString(_(u"Cliquez ici pour annuler")) def __do_layout(self): grid_sizer_base = wx.FlexGridSizer(rows=6, cols=1, vgap=10, hgap=10) # RIB box_rib = wx.StaticBoxSizer(self.box_rib_staticbox, wx.VERTICAL) grid_sizer_iban = wx.FlexGridSizer(rows=2, cols=3, vgap=5, hgap=5) grid_sizer_iban.Add(self.label_iban, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 10) grid_sizer_iban.Add(self.label_bic, 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 10) grid_sizer_iban.Add( (2, 2), 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_iban.Add(self.ctrl_iban, 0, wx.EXPAND, 0) grid_sizer_iban.Add(self.ctrl_bic, 0, wx.EXPAND, 0) grid_sizer_iban.AddGrowableCol(0) box_rib.Add(grid_sizer_iban, 1, wx.LEFT|wx.TOP|wx.EXPAND, 10) grid_sizer_controle = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_controle.Add(self.ctrl_controle, 0, wx.LEFT, 10) grid_sizer_controle.Add(self.label_analyse_iban, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_controle.AddGrowableCol(1) box_rib.Add(grid_sizer_controle, 1, wx.LEFT|wx.RIGHT|wx.TOP|wx.EXPAND, 10) # Banque ## grid_sizer_banque = wx.FlexGridSizer(rows=1, cols=3, vgap=5, hgap=5) ## grid_sizer_banque.Add(self.ctrl_banque, 0, wx.EXPAND, 0) ## grid_sizer_banque.Add(self.bouton_banques, 0, wx.EXPAND, 0) ## grid_sizer_banque.AddGrowableCol(0) ## box_rib.Add(grid_sizer_banque, 1, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 10) # Titulaire box_titulaire = wx.StaticBoxSizer(self.box_titulaire_staticbox, wx.VERTICAL) grid_sizer_titulaire = wx.FlexGridSizer(rows=5, cols=1, vgap=5, hgap=5) grid_sizer_membre = wx.FlexGridSizer(rows=1, cols=2, vgap=5, hgap=5) grid_sizer_membre.Add(self.radio_membre, 0, wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_membre.Add(self.ctrl_membre, 0, wx.EXPAND, 0) grid_sizer_membre.AddGrowableCol(1) grid_sizer_titulaire.Add(grid_sizer_membre, 1, wx.EXPAND, 0) grid_sizer_titulaire.Add(self.radio_individu, 0, 0, 0) grid_sizer_individu = wx.FlexGridSizer(rows=3, cols=2, vgap=5, hgap=5) grid_sizer_individu.Add(self.label_individu_nom, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_individu.Add(self.ctrl_individu_nom, 0, wx.EXPAND, 0) grid_sizer_individu.Add(self.label_individu_rue, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_individu.Add(self.ctrl_individu_rue, 0, wx.EXPAND, 0) grid_sizer_individu.Add(self.label_individu_ville, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_individu.Add(self.ctrl_individu_ville, 0, wx.EXPAND, 0) grid_sizer_individu.AddGrowableCol(1) grid_sizer_titulaire.Add(grid_sizer_individu, 1, wx.LEFT|wx.EXPAND, 47) grid_sizer_titulaire.AddGrowableCol(0) box_titulaire.Add(grid_sizer_titulaire, 1, wx.ALL|wx.EXPAND, 10) # Mandat SEPA box_mandat = wx.StaticBoxSizer(self.box_mandat_staticbox, wx.VERTICAL) grid_sizer_mandat = wx.FlexGridSizer(rows=4, cols=2, vgap=10, hgap=10) grid_sizer_mandat.Add(self.label_reference_mandat, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mandat.Add(self.ctrl_reference_mandat, 0, wx.EXPAND, 0) grid_sizer_mandat.Add(self.label_date_mandat, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mandat.Add(self.ctrl_date_mandat, 0, wx.EXPAND, 0) grid_sizer_mandat.Add(self.label_type_mandat, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_mandat.Add(self.ctrl_type_mandat, 0, wx.EXPAND, 0) grid_sizer_mandat.Add(self.label_actif, 0, wx.ALIGN_RIGHT , 0) grid_sizer_mandat.Add(self.ctrl_actif, 0, wx.EXPAND, 0) grid_sizer_mandat.AddGrowableCol(1) box_mandat.Add(grid_sizer_mandat, 1, wx.ALL|wx.EXPAND, 10) # Options box_options = wx.StaticBoxSizer(self.box_options_staticbox, wx.VERTICAL) grid_sizer_options = wx.FlexGridSizer(rows=3, cols=2, vgap=10, hgap=10) grid_sizer_options.Add(self.label_sequence, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_options.Add(self.ctrl_sequence, 0, wx.EXPAND, 0) grid_sizer_options.Add(self.label_memo, 0, wx.ALIGN_RIGHT , 0) grid_sizer_options.Add(self.ctrl_memo, 0, wx.EXPAND, 0) grid_sizer_options.AddGrowableCol(1) grid_sizer_options.AddGrowableRow(1) box_options.Add(grid_sizer_options, 1, wx.ALL|wx.EXPAND, 10) # Placement de tous les box du contenu grid_sizer_contenu = wx.FlexGridSizer(rows=1, cols=2, vgap=10, hgap=10) grid_sizer_gauche = wx.FlexGridSizer(rows=3, cols=1, vgap=10, hgap=10) grid_sizer_droite = wx.FlexGridSizer(rows=2, cols=1, vgap=10, hgap=10) grid_sizer_gauche.Add(box_mandat, 1, wx.EXPAND, 0) grid_sizer_gauche.Add(box_rib, 1, wx.EXPAND, 0) grid_sizer_droite.Add(box_titulaire, 1, wx.EXPAND, 0) grid_sizer_droite.Add(box_options, 1, wx.EXPAND, 0) grid_sizer_droite.AddGrowableRow(1) grid_sizer_droite.AddGrowableCol(0) grid_sizer_contenu.Add(grid_sizer_gauche, 1, wx.EXPAND, 0) grid_sizer_contenu.Add(grid_sizer_droite, 1, wx.EXPAND, 0) grid_sizer_contenu.AddGrowableCol(1) grid_sizer_base.Add(grid_sizer_contenu, 1, wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND, 10) # Liste des prélèvements box_prelevements = wx.StaticBoxSizer(self.box_prelevements_staticbox, wx.VERTICAL) box_prelevements.Add(self.notebook, 1, wx.ALL|wx.EXPAND, 10) grid_sizer_base.Add(box_prelevements, 1, wx.LEFT|wx.RIGHT|wx.EXPAND, 10) # Boutons grid_sizer_boutons = wx.FlexGridSizer(rows=1, cols=6, vgap=10, hgap=10) grid_sizer_boutons.Add(self.bouton_aide, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_email, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_imprimer, 0, 0, 0) grid_sizer_boutons.Add((20, 20), 0, wx.EXPAND, 0) grid_sizer_boutons.Add(self.bouton_ok, 0, 0, 0) grid_sizer_boutons.Add(self.bouton_annuler, 0, 0, 0) grid_sizer_boutons.AddGrowableCol(3) grid_sizer_base.Add(grid_sizer_boutons, 1, wx.LEFT|wx.RIGHT|wx.BOTTOM|wx.EXPAND, 10) self.SetSizer(grid_sizer_base) grid_sizer_base.Fit(self) grid_sizer_base.AddGrowableCol(0) grid_sizer_base.AddGrowableRow(1) self.Layout() self.SetMinSize(self.GetSize()) self.CenterOnScreen() def OnSaisieIBAN(self, event): self.ControleIBAN() if event != None : event.Skip() def ControleIBAN(self): iban = self.ctrl_iban.GetValue() bic = self.ctrl_bic.GetValue() if UTILS_Prelevements.ControleIBAN(iban) == True and UTILS_Prelevements.ControleBIC(bic) == True : self.MAJcontrole(iban, bic, True) return True else : self.MAJcontrole(iban, bic, False) return False def MAJcontrole(self, iban="", bic="", valide=True): if valide == True : self.ctrl_controle.SetBitmap(self.image_valide) texte = _(u"Coordonnées bancaires valides") infosBanque = DATA_Bic.RechercherBIC(bic) if infosBanque != None : nomBanque, villeBanque = infosBanque texte += u"\n%s (%s)" % (nomBanque, villeBanque) else : texte += _(u"\nBanque inconnue") else : self.ctrl_controle.SetBitmap(self.image_nonvalide) texte = _(u"Coordonnées bancaires non valides") self.label_analyse_iban.SetLabel(texte) def OnBoutonBanques(self, event): IDbanque = self.ctrl_banque.GetID() import DLG_Banques dlg = DLG_Banques.Dialog(self) dlg.ShowModal() dlg.Destroy() self.ctrl_banque.MAJ() self.ctrl_banque.SetID(IDbanque) def OnRadioTitulaire(self, event): etat = self.radio_membre.GetValue() self.ctrl_membre.Enable(etat) self.ctrl_individu_nom.Enable(not etat) self.ctrl_individu_rue.Enable(not etat) self.ctrl_individu_ville.Enable(not etat) def OnBoutonAide(self, event): from Utils import UTILS_Aide UTILS_Aide.Aide("Rglements1") def OnBoutonAnnuler(self, event): self.EndModal(wx.ID_CANCEL) def GetProchainRUM(self): """ Recherche le prochain RUM pour un nouveau mandat """ DB = GestionDB.DB() req = """SELECT IDmandat, rum FROM mandats ORDER BY IDmandat DESC;""" DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) == 0 : dernierRum = "0" else : IDmandat, dernierRum = listeDonnees[0] if dernierRum == None : dernierRum = "0" rum = UTILS_Texte.Incrementer(dernierRum) return rum def ImportationAncienRIB(self): """ Importe le IBAN de l'ancien RIB s'il existe """ try : DB = GestionDB.DB() req = """SELECT prelevement_etab, prelevement_guichet, prelevement_numero, prelevement_cle, prelevement_cle_iban, prelevement_bic FROM familles WHERE IDfamille=%d;""" % self.IDfamille DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) == 0 : return etab, guichet, numero, cle_rib, cle_iban, bic = listeDonnees[0] if etab == None : etab = "" if guichet == None : guichet = "" if numero == None : numero = "" if cle_rib == None : cle_rib = "" if cle_iban == None or cle_iban == "" : cle_iban = "FR76" if bic == None : bic = "" iban = cle_iban + etab + guichet + numero + cle_rib if len(iban) > 5 : self.ctrl_iban.SetValue(iban) if len(bic) > 5 : self.ctrl_bic.SetValue(bic) except : pass def Importation(self): """ Importation des données """ if self.IDfamille == None : return DB = GestionDB.DB() req = """SELECT IDfamille, rum, type, date, IDbanque, IDindividu, individu_nom, individu_rue, individu_cp, individu_ville, iban, bic, memo, sequence, actif FROM mandats WHERE IDmandat=%d;""" % self.IDmandat DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) == 0 : return self.IDfamille, rum, typeMandat, date, IDbanque, IDindividu, nom, rue, cp, ville, iban, bic, memo, sequence, actif = listeDonnees[0] if nom == None : nom = "" if rue == None : rue = "" if cp == None : cp = "" if ville == None : ville = "" if iban == None : iban = "" if bic == None : bic = "" if rum == None : rum = "" if memo == None : memo = "" # Mandat self.ctrl_reference_mandat.SetValue(rum) self.ctrl_date_mandat.SetDate(date) if typeMandat == "recurrent" : self.ctrl_type_mandat.Select(0) else : self.ctrl_type_mandat.Select(1) # Coords compte self.ctrl_iban.SetValue(iban) self.ctrl_bic.SetValue(bic) ## self.ctrl_banque.SetID(IDbanque) # Titulaire if IDindividu != None : self.radio_membre.SetValue(True) self.ctrl_membre.SetID(IDindividu) else : self.radio_individu.SetValue(True) self.ctrl_individu_nom.SetValue(nom) self.ctrl_individu_rue.SetValue(rue) self.ctrl_individu_ville.SetValueCP(cp) self.ctrl_individu_ville.SetValueVille(ville) # Mémo self.ctrl_memo.SetValue(memo) self.ctrl_sequence.SetCode(sequence) # Actif if actif == 1 : self.ctrl_actif.SetValue(True) else : self.ctrl_actif.SetValue(False) def OnBoutonOk(self, event): # Récupération des données ## IDbanque = self.ctrl_banque.GetID() IDindividu = self.ctrl_membre.GetID() nom = self.ctrl_individu_nom.GetValue() rue = self.ctrl_individu_rue.GetValue() cp = self.ctrl_individu_ville.GetValueCP() ville = self.ctrl_individu_ville.GetValueVille() iban = self.ctrl_iban.GetValue() bic = self.ctrl_bic.GetValue() rum = self.ctrl_reference_mandat.GetValue() date = self.ctrl_date_mandat.GetDate() typeMandat = self.ctrl_type_mandat.GetSelection() memo = self.ctrl_memo.GetValue() actif = self.ctrl_actif.GetValue() if self.radio_membre.GetValue() == True : nom = None rue = None cp = None ville = None else : IDindividu = None # Vérification des données saisies if len(rum) == 0 : dlg = wx.MessageDialog(self, _(u"Vous devez saisir la référence du mandat !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_reference_mandat.SetFocus() return if date == None : dlg = wx.MessageDialog(self, _(u"Vous devez saisir la date de signature du mandat !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_date_mandat.SetFocus() return if UTILS_Prelevements.ControleIBAN(iban) == False : dlg = wx.MessageDialog(self, _(u"Le IBAN semble erroné !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_iban.SetFocus() return if UTILS_Prelevements.ControleBIC(bic) == False : dlg = wx.MessageDialog(self, _(u"Le BIC semble erroné !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_bic.SetFocus() return ## if IDbanque == None : ## dlg = wx.MessageDialog(self, _(u"Vous devez sélectionner un établissement bancaire !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) ## dlg.ShowModal() ## dlg.Destroy() ## self.ctrl_banque.SetFocus() ## return if self.radio_membre.GetValue() == True : if IDindividu == None : dlg = wx.MessageDialog(self, _(u"Vous n'avez pas sélectionné de titulaire du compte bancaire !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_membre.SetFocus() return else : if nom == "" : dlg = wx.MessageDialog(self, _(u"Vous n'avez pas renseigné le titulaire du compte bancaire !"), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_individu_nom.SetFocus() return if typeMandat == 0 : typeMandat = "recurrent" else : typeMandat = "ponctuel" sequence = self.ctrl_sequence.GetCode() # Vérifie que le RUM n'est pas déjà attribué à un autre mandat if self.IDmandat == None : IDmandatTemp = 0 else : IDmandatTemp = self.IDmandat DB = GestionDB.DB() req = """SELECT IDmandat, rum FROM mandats WHERE rum='%s' AND IDmandat !=%d;""" % (rum, IDmandatTemp) DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() if len(listeDonnees) > 0 : dlg = wx.MessageDialog(self, _(u"Le RUM saisi a déjà été enregistré pour un autre mandat alors qu'il doit être unique ! \n\nVeuillez en saisir un différent..."), _(u"Erreur de saisie"), wx.OK | wx.ICON_EXCLAMATION) dlg.ShowModal() dlg.Destroy() self.ctrl_reference_mandat.SetFocus() return # Sauvegarde DB = GestionDB.DB() listeDonnees = [ ("IDfamille", self.IDfamille), ("rum", rum), ("type", typeMandat), ("date", date), ("IDbanque", None), ("IDindividu", IDindividu), ("individu_nom", nom), ("individu_rue", rue), ("individu_cp", cp), ("individu_ville", ville), ("iban", iban), ("bic", bic), ("memo", memo), ("sequence", sequence), ("actif", int(actif)), ] if self.IDmandat == None : self.IDmandat = DB.ReqInsert("mandats", listeDonnees) else : DB.ReqMAJ("mandats", listeDonnees, "IDmandat", self.IDmandat) DB.Close() # Fermeture self.EndModal(wx.ID_OK) def GetIDmandat(self): return self.IDmandat def OnBoutonEmail(self, event): """ Envoi par mail """ from Utils import UTILS_Envoi_email UTILS_Envoi_email.EnvoiEmailFamille(parent=self, IDfamille=self.IDfamille, nomDoc=FonctionsPerso.GenerationNomDoc("MANDAT_SEPA", "pdf") , categorie="mandat_sepa") def OnBoutonImprimer(self, event): self.CreationPDF() def CreationPDF(self, nomDoc=FonctionsPerso.GenerationNomDoc("MANDAT_SEPA", "pdf"), afficherDoc=True): dictChampsFusion = {} dictDonnees = {} # Récupère infos sur organisateur from Utils import UTILS_Organisateur dictOrganisateur = UTILS_Organisateur.GetDonnees(tailleLogo=(200, 200)) # ICS DB = GestionDB.DB() req = """SELECT IDcompte, nom, numero, code_ics FROM comptes_bancaires;""" DB.ExecuterReq(req) listeDonnees = DB.ResultatReq() DB.Close() ics = "" if len(listeDonnees) > 0 : IDcompte, nomCompte, numeroCompte, ics = listeDonnees[0] if ics == None : ics = "" # Récupère données du mandat titulaire_nom = "" titulaire_rue = "" titulaire_cp = "" titulaire_ville = "" if self.radio_membre.GetValue() : IDindividu = self.ctrl_membre.GetID() if IDindividu != None : dictIndividus = UTILS_Titulaires.GetIndividus() titulaire_nom = dictIndividus[IDindividu]["nom_complet"] titulaire_rue = dictIndividus[IDindividu]["rue"] titulaire_cp = dictIndividus[IDindividu]["cp"] titulaire_ville = dictIndividus[IDindividu]["ville"] else : titulaire_nom = self.ctrl_individu_nom.GetValue() titulaire_rue = self.ctrl_individu_rue.GetValue() titulaire_cp = self.ctrl_individu_ville.GetValueCP() titulaire_ville = self.ctrl_individu_ville.GetValueVille() iban = self.ctrl_iban.GetValue() bic = self.ctrl_bic.GetValue() rum = self.ctrl_reference_mandat.GetValue() date = self.ctrl_date_mandat.GetDate() if date == None : date = "" if self.ctrl_type_mandat.GetSelection() == 0 : typeMandat = "recurrent" else : typeMandat = "ponctuel" dictDonnees = { "titulaire_nom" : titulaire_nom, "titulaire_rue" : titulaire_rue, "titulaire_cp" : titulaire_cp, "titulaire_ville" : titulaire_ville, "iban" : iban, "bic" : bic, "rum" : rum, "date" : date, "typeMandat" : typeMandat, "organisateur" : dictOrganisateur, "ics" : ics, } # Mémorisation pour la fusion Emails dictChampsFusion["{RUM}"] = rum dictChampsFusion["{DATE}"] = date # Lancement de l'édition du PDF Impression(dictDonnees, nomDoc=nomDoc, afficherDoc=afficherDoc) return dictChampsFusion