Personnalisation de l'arbre des vagues


Exemple de mise en place d’un nouveau choix dans l’arbre et sélection :


Ici le choix « opération commerciale » est un champ spécifique de MOUV

Ici la case à cocher est un choix spécifique permettant de sélectionner une typologie de code opération, filtrant ainsi les lignes.


Recordsql BASEPREPA à surcharger pour ajouter le champs voulu :
;*
;*            Liste des MRES pour prépration WMS
;*
; pour WMS
 
<RecordSql Name=BasePrepa>
<SELECT>
                (MOUV.sp_nummev)                    AS sp_nummev                (>gtfdd.dhsd sp_nummev),
                (MOUV.sp_operation)  AS sp_operation             (>gtfdd.dhsd sp_operation)


Surcharge table mémoire WM504 :


Surcharge du chargement de la liste à préparer pour filtrer

module WMUMVAGUE
;*
function int Write_Wm504(&Wm504, BasePrepa)
;
Record wmsfdd.dhsd                   Wm504
Declaration_BasePrepa
                >gtfdd.dhsd sp_repcod
1 Retour 1,0 = 0
beginf
                ;Optimisation lecture office
                if G3XQ.sp_choix(1) = Oui and G3XQ.sp_nummevd <> BasePrepa.sp_nummev
                               FReturn(1)
                Endif
                Retour = standard.Write_Wm504(Wm504, BasePrepa)
                FReturn(Retour)
endf




Module WMUT504
Define                  C_Arret_OpCom=           10202                    ; Accès par Opération commerciale
;*
Procedure Charge_Acces
; Prépare le multichoix des accès
1                             I                                                                                                             2,0                                        
1                             J                                                                                                             2,0                                        
BeginP                                                                                                                                                                                                                              ; Charge_Acces
 
                Standard.Charge_Acces
 
                for I=1 to 20
                               if Wm504MC.MULTICTB(I) = ""
                                              
                                               exitfor
                               endif
                next
If i <=20
                Wm504MC.MULTICTB(i) = Translate ("Opération commerciale")
                | Wm504MC.MULTICID(i)            = C_Arret_OpCom                                        
Endif
 
EndP  


;*
Function int DefProcInterro_Defaut_TabVague_Spe()
;
1 IdListe L
Record wmsfdd.dhsd WM504T1 Ligne
;Record DDSYS.dhsd                                       ScrollBar32         ascenseur           ; ascenseur vertical associé au tableau
;1            privilege                                                                             1,0                                                                                                        ; privilege à passer à XmeListConsultDefProc
;1            selection                                                                            1,0                                                                                                        ; Gestion de la multiselection
;1            perso                                                                                                   1,0                                                                                                        ; personnalisation des fonctions defproc ...
1             retour                                                                                 1,0 = true
Beginf
 
                retour = standard.DefProcInterro_Defaut_TabVague_Spe
 
                PingLocalReceiveAndDelete("IdListe", IdListe)
 
                switch harmony.DataArret
                               Case C_Arret_OpCom
                                               Charger_Arbre(IdListe, C_Arret_OpCom)
                endswitch
                freturn(retour)
Endf                                                      


 

Module WMUMVAGUE
*
function int Compare_ListNiv0(ModeInterro, ListNiv)
; On trie la liste de base en fonction des critères choisis dans la sélection
1 ModeInterro >wmsfdd.dhsd ModeInterro
1 ListNiv L
;Local
1 Adr_Fonc                                                                       16
beginf
                standard.Compare_ListNiv0(ModeInterro, ListNiv)
                Switch ModeInterro
                               Case C_Arret_OpCom
                                               GetAdressFunction ("", "Compare_Wm504_OpCom", Adr_Fonc)
                                               ListSort(ListNiv, Adr_Fonc)
                endswitch
                freturn (0)
endf


;*
Function Long Rupture_Wm504_OpCom(&E1 , &E2)
Record wmsfdd.dhsd Wm504 E1
Record wmsfdd.dhsd Wm504 E2
1 S1 S
1 S2 S
Beginf
                S1 = [E1.sp_operation]
                S2 = [E2.sp_operation]
                freturn (S1 <> S2)
Endf


;*
function int Rupture_Wm504_ModeInterro(ModeInterro, Wm504, Wm504_Precedent)
; On trie la liste de base en fonction des critères choisis dans la sélection
; retour 9 : aucun case
1 ModeInterro >wmsfdd.dhsd ModeInterro
Record                                                                wmsfdd.dhsd                   Wm504
Record                                                                wmsfdd.dhsd                   Wm504                                Wm504_Precedent
;Local
1 Adr_Fonc                                                                       16
1 Indice                                                                               1,0
1 Retour 1,0 = 0
beginf
 
                retour = standard.Rupture_Wm504_ModeInterro(ModeInterro, Wm504, Wm504_Precedent)
 
                Switch ModeInterro
                               Case C_Arret_OpCom
                                               GetAdressFunction ("", "Rupture_Wm504_OpCom", Adr_Fonc)
                                               FReturn(FunctionCall(Adr_Fonc, Wm504, Wm504_Precedent))
 
                endswitch
                FReturn(retour)
endf



Module WMUMVAGUE
;*
function int Wm504T1_Insert_AV(&Wm504T1, Wm504, Niveau, ModeInterro, Wm504T1_Parent)
;Fonction appelée avant l'insertion de la ligne Wm504T1 dans le tableau arbre
Record                                 wmsfdd.dhsd Wm504T1
Record                                 wmsfdd.dhsd   Wm504
1 Niveau                                             2,0
1 ModeInterro >wmsfdd.dhsd ModeInterro
Record                                 wmsfdd.dhsd Wm504T1                                              Wm504T1_Parent                           = ""
;
Record                                 gtfdd.dhsd         T026
Declaration_CodeOperation
Declaration_CodeStatistiqueTiers
Declaration_ContratTrp
Declaration_Gare
1 Indice                                                                               1,0
1 i                                                                                                         2,0
1 Retour 1,0 = 0
beginf
               
                Retour = Standard.Wm504T1_Insert_AV(Wm504T1, Wm504, Niveau, ModeInterro, Wm504T1_Parent)
               
                Switch ModeInterro
                               Case C_Arret_OpCom
                                               Wm_Seek_ModeTransport_Optimize(T026, Wm504.BlMod)
                                               Wm504T1.WmCritere(Niveau) = Wm504.sp_operation
                                               Wm504T1.TreeLib                                                          = Wm504.sp_operation
                                               Wm504T1.WmLibCritere                             = "Opération commerciale"
                                               Wm504T1.Lib                                                                   = "Opération commerciale"
                                               Wm504T1.LibInterro                                     = RecupererLibInterroPar(C_Arret_OpCom)
                endswitch
 
                freturn (Retour)
endf


;*
Procedure Write_Wm504_Arborescence(&Wm504, ModeInterro, Niveau)
; On initialise le champ arborescence avec le modeinterro de base
Record                                                                wmsfdd.dhsd                   Wm504
1 ModeInterro                                 >wmsfdd.dhsd ModeInterro
1 Niveau                                                                            2,0
1 Indice                                                               1,0
1 i                                                                                          2,0
 
beginp
 
                Standard.Write_Wm504_Arborescence(Wm504, ModeInterro, Niveau)
                Switch ModeInterro
                               Case C_Arret_OpCom
                                               Wm504.WmCritere(Niveau)      = Wm504.sp_operation
                endswitch
endp