Exemple #1
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: GestionCategories.__init__
        kwds["style"] = wx.TAB_TRAVERSAL
        wx.Panel.__init__(self, *args, **kwds)
        self.sizer_navigation_staticbox = wx.StaticBox(
            self, -1, u"Gestion des catégories")
        self.button_ajout_categorie = wx.Button(
            self, -1, u"Ajouter une nouvelle catégorie")
        self.liste_categories = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_categories.SetColumns([
            ColumnDefn("ID", "right", valueGetter="get_id", fixedWidth=70),
            ColumnDefn("Nom", "left", -1, "nom"),
            ColumnDefn("Nombre de produits",
                       "left",
                       100,
                       "nombre_produits",
                       stringConverter="%s produit(s)",
                       isSpaceFilling=True)
        ])

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutCategorie,
                  self.button_ajout_categorie)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnModifCategorie,
                  self.liste_categories)
Exemple #2
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: GestionTvas.__init__
        kwds["style"] = wx.TAB_TRAVERSAL
        wx.Panel.__init__(self, *args, **kwds)
        self.sizer_navigation_staticbox = wx.StaticBox(self, -1,
                                                       u"Gestion des taux de TVA")
        self.button_ajout_tva = wx.Button(self, -1,
                                                u"Ajouter un nouveau taux de TVA")
        self.liste_tvas = ObjectListView(self, -1,
                                               style=wx.LC_REPORT |
                                                     wx.SUNKEN_BORDER |
                                                     wx.LC_SINGLE_SEL)

        self.liste_tvas.SetColumns([
            ColumnDefn("Taux", "center", -1, "taux", stringConverter="%s %%", fixedWidth=70),
            ColumnDefn("Nombre de produits avec ce taux", "left", 100,
                       "nombre_produits",
                       stringConverter="%s produit(s)",
                       isSpaceFilling=True)
        ])

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutTVA,
                  self.button_ajout_tva)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnModifTVA,
                  self.liste_tvas)
Exemple #3
0
    def __init__(self, fournisseur):
        wx.Dialog.__init__(self,
                           None,
                           -1,
                           title=u"Ajouter un référent",
                           pos=wx.DefaultPosition,
                           size=wx.DefaultSize,
                           style=wx.DEFAULT_DIALOG_STYLE)

        self.fournisseur = fournisseur
        """ Attention, ici le référent est un objet Adherent"""

        self.liste_referents = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_referents.SetColumns([
            ColumnDefn("Nom", "left", -1, "nom", minimumWidth=100),
            ColumnDefn(u"Prénom",
                       "left",
                       -1,
                       "prenom",
                       minimumWidth=100,
                       isSpaceFilling=True)
        ])

        self.liste_referents.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
                                  self.OnClickReferent)

        self.__set_properties()
        self.__remplissage_liste()
        self.__do_layout()
    def __init__(self, parent, adherent):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          style=wx.TAB_TRAVERSAL)

        self.adherent = adherent

        self.label_description = wx.StaticText(
            self, -1, u"Liste des cotisations réglées par l'adhérent.")
        self.staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition,
                                        wx.DefaultSize, wx.LI_HORIZONTAL)
        self.bouton_ajout_adhesion = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"))
        self.bouton_supprime_adhesion = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/enlever.ico"))
        self.liste_adhesions = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_adhesions.SetColumns([
            ColumnDefn(u"Adhésion",
                       "left",
                       -1,
                       "adhesion_type.nom",
                       minimumWidth=100),
            ColumnDefn("Date",
                       "left",
                       -1,
                       "date",
                       stringConverter="%d-%m-%Y",
                       minimumWidth=100),
            ColumnDefn("Montant",
                       "left",
                       100,
                       "montant",
                       stringConverter=u"%.2f ¤",
                       isSpaceFilling=True)
        ])

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutAdhesion,
                  self.bouton_ajout_adhesion)
        self.Bind(wx.EVT_BUTTON, self.OnSupprimeAdhesion,
                  self.bouton_supprime_adhesion)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnEditionAdhesion,
                  self.liste_adhesions)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionAdhesion,
                  self.liste_adhesions)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnSelectionAdhesion,
                  self.liste_adhesions)
Exemple #5
0
    def __init__(self, parent, fournisseur):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          style=wx.TAB_TRAVERSAL)

        self.fournisseur = fournisseur
        """ Attention, ici le référent est un objet Adherent"""

        self.label_description = wx.StaticText(
            self, -1, u"Liste des référents du fournisseur.")
        self.staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition,
                                        wx.DefaultSize, wx.LI_HORIZONTAL)
        self.bouton_ajout_referent = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"))
        self.bouton_supprime_referent = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/enlever.ico"))
        self.liste_referents = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_referents.SetColumns([
            ColumnDefn("Nom", "left", -1, "nom", minimumWidth=100),
            ColumnDefn(u"Prénom",
                       "left",
                       -1,
                       "prenom",
                       minimumWidth=100,
                       isSpaceFilling=True)
        ])

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutReferent,
                  self.bouton_ajout_referent)
        self.Bind(wx.EVT_BUTTON, self.OnSupprimeReferent,
                  self.bouton_supprime_referent)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionReferent,
                  self.liste_referents)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnSelectionReferent,
                  self.liste_referents)
    def __init__(self, parent):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          style=wx.TAB_TRAVERSAL)

        self.bouton_ajout_adhesion_type = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"))
        self.bouton_supprime_adhesion_type = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/enlever.ico"))

        self.liste_adhesion_types = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_adhesion_types.SetColumns([
            ColumnDefn("Nom", "left", -1, "nom", minimumWidth=100),
            ColumnDefn(u"Prix",
                       "left",
                       50,
                       "prix",
                       stringConverter=u"%s ¤",
                       isSpaceFilling=True)
        ])

        self.liste_adhesion_types.SetEmptyListMsg(
            u"Il n'y a aucun type d'adhésion pour l'instant")

        self.__set_properties()
        self.__remplissage_liste()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutTypeAdhesion,
                  self.bouton_ajout_adhesion_type)
        self.Bind(wx.EVT_BUTTON, self.OnSupprimeTypeAdhesion,
                  self.bouton_supprime_adhesion_type)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnEditionTypeAdhesion,
                  self.liste_adhesion_types)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionTypeAdhesion,
                  self.liste_adhesion_types)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnDeselectionTypeAdhesion,
                  self.liste_adhesion_types)
    def __init__(self, parent, adherent):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          style=wx.TAB_TRAVERSAL)

        self.adherent = adherent

        self.label_description = wx.StaticText(
            self, -1,
            u"Liste des fournisseurs dont l'adhérent est référent.")
        self.staticline = wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition,
                                        wx.DefaultSize, wx.LI_HORIZONTAL)
        self.bouton_ajout_fournisseur = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"))
        self.bouton_supprime_fournisseur = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/enlever.ico"))
        self.liste_fournisseurs = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_fournisseurs.SetColumns([
            ColumnDefn(u"Fournisseur",
                       "left",
                       -1,
                       "nom",
                       minimumWidth=100,
                       isSpaceFilling=True)
        ])

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutFournisseur,
                  self.bouton_ajout_fournisseur)
        self.Bind(wx.EVT_BUTTON, self.OnSupprimeFournisseur,
                  self.bouton_supprime_fournisseur)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionFournisseur,
                  self.liste_fournisseurs)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnSelectionFournisseur,
                  self.liste_fournisseurs)
    def __init__(self, adherent):
        wx.Dialog.__init__(self,
                           None,
                           -1,
                           title=u"Ajouter un fournisseur",
                           pos=wx.DefaultPosition,
                           size=wx.DefaultSize,
                           style=wx.DEFAULT_DIALOG_STYLE)

        self.adherent = adherent

        self.liste_fournisseurs = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        self.liste_fournisseurs.SetColumns(
            [ColumnDefn("Fournisseur", "left", -1, "nom", minimumWidth=100)])

        self.liste_fournisseurs.Bind(wx.EVT_LIST_ITEM_ACTIVATED,
                                     self.OnClickFournisseur)

        self.__set_properties()
        self.__remplissage_liste()
        self.__do_layout()
Exemple #9
0
    def __init__(self, parent, inventaire=None):
        wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL)
        
        if inventaire:
            self.inventaire = inventaire
        else:
            inventaire = Inventaire.create()
            inventaire.initialisation()
            
        self.inventaire = inventaire

        self.sizer_inventaire_staticbox = wx.StaticBox(self, -1, "Liste des produits")
        self.label_titre_inventaire = wx.StaticText(self, -1, "Inventaire du ")
        self.label_fournisseur = wx.StaticText(self, -1, "Fournisseur :")
        self.combo_box_fournisseur = wx.ComboBox(self, -1,
                                                 choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY)
        self.search_nom = wx.SearchCtrl(self, -1, "")
        self.label_commentaire = wx.StaticText(self, -1, "Commentaires :")
        self.text_commentaire = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE)
        #self.bouton_ajout_produit = buttons.GenBitmapTextButton(self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"), u" Ajouter un produit non listé", style=wx.BORDER_NONE)
        self.bouton_ajout_produit = wx.Button(self, -1, u"Ajouter un produit non listé")
        self.liste_lignes_inventaire = ObjectListView(self, -1,
                                                      style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        def update_stock_reel(li, valeur):
            if valeur<0:
                valeur = 0

            if li.produit.vrac:
                li.stock_reel = valeur *  1000
            else:
                li.stock_reel = valeur
                
            li.save()

            if self.inventaire.pret_a_valider():
                self.bouton_valider.Enable()
            
                
        def editor_stock_reel(olv, rowIndex, subItemIndex):
            if olv.GetObjectAt(rowIndex).produit.vrac:
                return StockFloatEditor(olv, subItemIndex, validator=CellEditor.NumericValidator("0123456789.,"))
            else:
                return StockIntEditor(olv, subItemIndex, validator=CellEditor.NumericValidator("0123456789"))
            
        
        self.liste_lignes_inventaire.SetColumns([
            ColumnDefn("Ref GASE", "left", -1, "produit.ref_GASE", fixedWidth=90),
            ColumnDefn("Nom", "left", -1, "produit.nom",  minimumWidth=100),
            ColumnDefn("Fournisseur", "left", -1, "produit.fournisseur.nom", minimumWidth=100),
            ColumnDefn(u"Stock théorique", "left", -1,
                       "stock_theorique_format",
                       stringConverter="%s", minimumWidth=80),
            ColumnDefn(u"Stock réel", "left", -1,
                       "stock_reel_format", isEditable=True,
                       cellEditorCreator = editor_stock_reel,
                       valueSetter=update_stock_reel, minimumWidth=80),
            ColumnDefn(u"Différence", "u_", -1,
                       "stock_difference", minimumWidth=80)
        ])

        def RFLignesInventaire(listItem, ligne_inventaire):
            if ligne_inventaire.stock_reel:
                listItem.SetBackgroundColour("#E3FFCB")
            else:
                listItem.SetBackgroundColour("#FFD3D3")
                
        #self.liste_lignes_inventaire.rowFormatter = RFLignesInventaire

        self.bouton_enregistrer = wx.Button(self, wx.ID_SAVE, "Enregistrer")
        self.bouton_valider = wx.Button(self, wx.ID_OK, u"Valider l'inventaire")

        self.__set_properties()
        self.__set_valeurs()
        self.__remplissage_liste()
        self.__do_layout()

        self.combo_box_fournisseur.Bind(wx.EVT_COMBOBOX, self.OnFilter)
        self.search_nom.Bind(wx.EVT_TEXT, self.OnFilter)
        self.bouton_ajout_produit.Bind(wx.EVT_BUTTON, self.OnAjoutProduit)
        self.liste_lignes_inventaire.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnModifStock)
        self.bouton_enregistrer.Bind(wx.EVT_BUTTON, self.OnEnregistrer)
        self.bouton_valider.Bind(wx.EVT_BUTTON, self.OnValider)

        self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy)
    def __init__(self, parent):
        wx.Panel.__init__(self,
                          parent,
                          id=wx.ID_ANY,
                          pos=wx.DefaultPosition,
                          style=wx.TAB_TRAVERSAL)

        self.sizer_navigation_staticbox = wx.StaticBox(
            self, -1, "Gestion des inventaires")
        self.bouton_ajout_inventaire = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/ajouter.ico"))
        self.bouton_suppression_inventaire = wx.BitmapButton(
            self, -1, wx.Bitmap("../icons/16x16/enlever.ico"))
        self.liste_inventaires = ObjectListView(
            self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_SINGLE_SEL)

        def is_valide(value):
            if value:
                return u"Validé"
            else:
                return "En cours de validation"

        self.liste_inventaires.SetColumns([
            ColumnDefn("Date",
                       "left",
                       200,
                       "date",
                       stringConverter="Inventaire du %d-%m-%Y",
                       minimumWidth=200),
            ColumnDefn("Statut",
                       "left",
                       -1,
                       "is_valide",
                       stringConverter=is_valide),
            ColumnDefn(u"Valeur du stock théorique",
                       "left",
                       100,
                       "valeur_stock_theorique",
                       stringConverter=u"%.2f ¤"),
            ColumnDefn(u"Valeur du stock réel",
                       "left",
                       100,
                       "valeur_stock_reel",
                       stringConverter=u"%.2f ¤",
                       isSpaceFilling=True)
        ])

        def rowFormatterLI(listItem, commande):
            if commande.is_valide == 0:
                #C5CBFF
                listItem.SetBackgroundColour("#FBFCC8")
            elif commande.is_valide == 1:
                #FFA3A2
                listItem.SetBackgroundColour("#E3FFCB")

        self.liste_inventaires.rowFormatter = rowFormatterLI

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()

        self.Bind(wx.EVT_BUTTON, self.OnAjoutInventaire,
                  self.bouton_ajout_inventaire)
        self.Bind(wx.EVT_BUTTON, self.OnSuppressionInventaire,
                  self.bouton_suppression_inventaire)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnEditionInventaire,
                  self.liste_inventaires)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionInventaire,
                  self.liste_inventaires)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnSelectionInventaire,
                  self.liste_inventaires)
Exemple #11
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL)

        self.sizer_communication_staticbox = wx.StaticBox(self, -1, "Communication")
        self.sizer_autre_staticbox = wx.StaticBox(self, -1, "Autre")
        self.sizer_critere_utilisateur_staticbox = wx.StaticBox(self, -1, "Utilisateurs")
        self.checkbox_gase = wx.CheckBox(self, -1, "GASE")
        self.checkbox_paniers = wx.CheckBox(self, -1, "Paniers")
        self.radio_box_etat_adhesion = wx.RadioBox(self, -1, u"Etat de l'adhésion", choices=["Tous", u"Adhésion à jour", u"Adhésion à renouveler"], majorDimension=1, style=wx.RA_SPECIFY_COLS)
        self.checkbox_sans_email = wx.CheckBox(self, -1, "Sans email")
        self.checkbox_sans_telephone = wx.CheckBox(self, -1, u"Sans téléphone")
        self.checkbox_ancien_adherents = wx.CheckBox(self, -1, u"Anciens adhérents")
        self.bouton_ajout_adhesion = wx.BitmapButton(self, -1, wx.Bitmap("../icons/32x32/nouvelle_adhesion.ico", wx.BITMAP_TYPE_ANY))
        self.bouton_ajout_credit = wx.BitmapButton(self, -1, wx.Bitmap("../icons/32x32/ajout_credit.png", wx.BITMAP_TYPE_ANY))
        self.static_line_1 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
        self.label_recherche = wx.StaticText(self, -1, "Recherche sur le nom")
        self.text_ctrl_recherche = wx.TextCtrl(self, -1, "")
        self.static_line_2 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
        self.bouton_ajout_adherent = wx.BitmapButton(self, -1, wx.Bitmap("../icons/32x32/nouvel_adherent.ico", wx.BITMAP_TYPE_ANY))
        self.liste_adherents = ObjectListView(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER|wx.LC_SINGLE_SEL)

        def AJour(value):
            if value:
                return "A jour"
            else:
                return u"Pas à jour"

        self.liste_adherents.SetColumns([
            ColumnDefn("Nom", "left", -1, "nom",  minimumWidth=100, useInitialLetterForGroupKey=True),
            ColumnDefn(u"Prénom", "left", -1, "prenom", minimumWidth=100),
            ColumnDefn("Ville", "left", -1, "ville", minimumWidth=100),
            ColumnDefn(u"Téléphone", "left", -1, "telephone", minimumWidth=100),
            ColumnDefn(u"Cotisation", "left", -1, "cotisation_type.nom", minimumWidth=100),
            ColumnDefn(u"Adhésion", "left", 100, "is_adhesion_a_jour", stringConverter=AJour, isSpaceFilling=True, minimumWidth=100)
        ])

        def RFListeAdherents(listItem, adherent):
            if adherent.is_adhesion_a_jour:
                listItem.SetBackgroundColour("#E3FFCB")
            else:
                listItem.SetBackgroundColour("#FFD3D3")

        self.liste_adherents.rowFormatter = RFListeAdherents

        self.__set_properties()
        self.__do_layout()
        self.__remplissage_liste()
        self.liste_adherents.SetSortColumn(0, True)

        self.filtres = {}

        self.Bind(wx.EVT_BUTTON, self.OnAjoutAdhesion, self.bouton_ajout_adhesion)
        self.Bind(wx.EVT_BUTTON, self.OnAjoutCredit, self.bouton_ajout_credit)
        self.Bind(wx.EVT_BUTTON, self.OnAjoutAdherent, self.bouton_ajout_adherent)
        self.Bind(wx.EVT_RADIOBOX, self.OnFilterAdhesion, self.radio_box_etat_adhesion)
        self.Bind(wx.EVT_CHECKBOX, self.OnFilterSansEmail, self.checkbox_sans_email)
        self.Bind(wx.EVT_CHECKBOX, self.OnFilterSansTelephone, self.checkbox_sans_telephone)
        self.Bind(wx.EVT_CHECKBOX, self.OnFilterUtilisateursPaniers, self.checkbox_paniers)
        self.Bind(wx.EVT_CHECKBOX, self.OnFilterAnciensAdherents, self.checkbox_ancien_adherents)
        self.Bind(wx.EVT_TEXT, self.OnFilterNom, self.text_ctrl_recherche)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnEditionAdherent, self.liste_adherents)
        self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnSelectionAdherent, self.liste_adherents)
        self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnDeselectionAdherent, self.liste_adherents)
        self.Bind(wx.EVT_LIST_ITEM_RIGHT_CLICK, self.OnClickDroitListe, self.liste_adherents)
Exemple #12
0
    def __init__(self, parent, commande=None):
        wx.Panel.__init__(self, parent, style=wx.TAB_TRAVERSAL)

        if commande == None:
            commande = Commande.create()

        self.commande = commande

        self.sizer_commande_staticbox = wx.StaticBox(self, -1, "Commande")
        self.sizer_fournisseur_produits_staticbox = wx.StaticBox(
            self, -1, "Liste des produits")
        self.label_titre_commande = wx.StaticText(self, -1, "Commande pour ")
        self.bouton_infos_fournisseur = wx.Button(
            self, -1, "Afficher les infos du fournisseur")
        self.label_date_commande = wx.StaticText(self, -1,
                                                 "Date de la commande :")
        self.datepicker_date_commande = wx.DatePickerCtrl(self, -1)
        self.label_FiltreRecherche = wx.StaticText(self, -1,
                                                   "Recherche sur le nom :")
        self.text_ctrl_FiltreRecherche = wx.TextCtrl(self, -1, "")
        self.liste_produits = ObjectListView(self,
                                             -1,
                                             style=wx.LC_REPORT
                                             | wx.SUNKEN_BORDER)
        self.label_total = wx.StaticText(self, -1, "Total de la commande :")
        self.label_total_valeur = wx.StaticText(self,
                                                -1,
                                                u"0.00 ¤",
                                                style=wx.ALIGN_RIGHT)
        self.liste_lignes_commande = ObjectListView(self,
                                                    -1,
                                                    style=wx.LC_REPORT
                                                    | wx.SUNKEN_BORDER)
        self.bouton_Sauvegarder = wx.Button(self, -1,
                                            "Enregistrer la commande")

        self.liste_produits.SetColumns([
            ColumnDefn("Ref GASE", "left", -1, "ref_GASE", minimumWidth=100),
            ColumnDefn("Nom", "left", -1, "nom", minimumWidth=100),
            ColumnDefn("Prix TTC",
                       "right",
                       -1,
                       "prix_achat_TTC",
                       stringConverter=u"%.2f ¤",
                       minimumWidth=100),
            ColumnDefn("Conditionnement",
                       "left",
                       -1,
                       "conditionnement_format",
                       isSpaceFilling=True,
                       minimumWidth=200)
        ])
        self.liste_produits.SetEmptyListMsg("Ce fournisseur n'a aucun produit")
        self.liste_produits.AutoSizeColumns()

        self.liste_lignes_commande.SetColumns([
            ColumnDefn("Ref Fournisseur",
                       "left",
                       -1,
                       "produit.ref_fournisseur",
                       minimumWidth=120),
            ColumnDefn("Nom", "left", -1, "produit.nom", minimumWidth=100),
            ColumnDefn(u"Quantité",
                       "left",
                       -1,
                       "quantite_commandee_conditionnement",
                       minimumWidth=150),
            ColumnDefn("Total TTC",
                       "right",
                       -1,
                       "prix_total_commande_ttc",
                       stringConverter=u"%s ¤",
                       isSpaceFilling=True,
                       minimumWidth=100)
        ])
        self.liste_lignes_commande.AutoSizeColumns()

        self.liste_lignes_commande.SetEmptyListMsg(
            "La commande ne contient aucun produit")

        self.__set_properties()
        self.__set_values()
        self.__do_layout()

        self.Bind(wx.EVT_BUTTON, self.OnInfosFournisseur,
                  self.bouton_infos_fournisseur)
        self.Bind(wx.EVT_BUTTON, self.OnSauvegarder, self.bouton_Sauvegarder)
        self.Bind(wx.EVT_TEXT, self.OnFilter, self.text_ctrl_FiltreRecherche)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnAjoutProduit,
                  self.liste_produits)
        self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnModifProduit,
                  self.liste_lignes_commande)
        self.Bind(wx.EVT_WINDOW_DESTROY, self.OnDestroy, self)