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