Les champs d'une transaction se trouvent très souvent sur plusieurs onglets. Pour faciliter et accélérer la saisie des données on pourrait rassembler ces champs sur un seul onglet. Ceci est plus complexe que de déplacer des champs sur l'écran car la logique de la transaction joue un grand rôle. |
Nous expliquons les techniques principales dans ce tutoriel. Notre but est d'afficher les champs concernant l'évaluation des biens du patrimoine directement sur le premier onglet "Généralités" pour les transactions:
La transaction standard AS02 est comme suit:
Nous souhaitons afficher toutes les informations dans le cadre rouge sur l'onglet "Généralités". Nous allons les effacer sur l'onglet "Impôt patr.", déplacer les champs concernant les terrains et droits de propriété vers le haut et renommer l'onglet en "Terrains". Le nouvel onglet "Terrains" sera comme suit:
Vous voyez que nous avons remplacé deux champs de saisie par un choix de boutons radios (groupes "Type de propriété" et "Evaluation suivant"). |
Méthode:
Vous pouvez utiliser un fichier .zip avec tous les fichiers utilisés pour vos propres tests: as_f_zip.zip. Nous allons initialiser les variables que nous utilisons sur la page de départ des transactions AS01 ainsi que AS02/AS03. La convention de désignation que nous utilisons pour nos variables InpustScript, c'est à dire les commencer par "AS_" rend cela très simple:
// Scripte GuiXT saplaist.f0105.txt
// Initialiser les variables pour AS01
Set
V[AS_*]
""
// Scripte GuiXT Script saplaist.f0100.txt
// Initialiser les variables pour AS02 /AS03 Set V[AS_*] "" Les adaptations d'aspect d'écran ainsi que l'invocation des InputScripts correctes pour AS01/AS02/AS03 se font dans le scripte GuiXT correspondant à l'écran saplaist.1000:
// Scripte GuiXT "saplaist.f1000.txt"
// Transactions AS01 / AS02 / AS03
// InputScripts utilisés:
//
// AS_lire.txt
Lire données
// AS_sauvegarder.txt
Sauvegarder
// AS_verifier.txt
Vérifier
//-------------------------------------------
// Initialiser toutes les variables V[AS_*] sur la page de
départ de la transaction
// Initialiser également par sécurité les variables ,
lorsque
// le numéro de l'immobilisation a été changée (par
exemple lorsqu'on invoque
// la transaction à partir d'une liste)
if
not
V[AS_Immo=&F[Immobilis.]]
Set
V[AS_*]
""
Set
V[AS_Immo]
"&F[Immobilis.]"
endif
// spécifier un indicateur readonly pour l'affichage, pour
utiliser les mêmes commandes
// InputField pour toutes les transactions par la suite
if
Q[Transaction=AS03]
Set
V[AS_readonly]
"-readonly"
endif
// Lire les données une première fois lors de la
modification ou de l'affichage
if
Q[Transaction=AS02]
or
Q[Transaction=AS03]
if
not
V[AS_read=X]
Set
V[AS_read]
"X"
Enter
process="AS_lire.txt"
// quitter le scripte ici, vu que l'écran n'est pas
affiché
Stop
endif
endif
// Renommer l'onglet, vu que seuls les champs concernant
les terrains subsistent
Text
P[Impôt patr.]
"Terrains"
// Onglet Généralités, afficher les champs nouvellement
créés
if
Q[Page=Généralités]
// Supprimer le domaine scrollable interne
NoScrollBar
// commencer après le premier cadre de groupe
offset G[Informations de comptabilisation]+(5,0)
box
(0,0)
(9,80)
"Evaluation des biens"
pushbutton
(1,78)
"@0Q\QTexte long Val.man.patrim.@"
"=LTXTNETA"
size=(1,1)
inputfield
(1,1)
"Code de ventilation"
(1,24) size=4 name="AS_Code_de_ventilation"
"&V[AS_readonly]"
techname="ANLA-VMGLI"
Text
(1,30)
"&V[AS_Texte_Code_de_ventilation]"
-border
inputfield
(2,1)
"Val.man.patrim."
(2,24)
size=16
name="AS_Val.man.patrim.]"
"&V[AS_readonly]"
-numerical
Box
(4,1)
(8,20)
"Type de propriété"
radiobutton
(5,2)
"Propriété"
name="AS_Type_de_propriété" value="1"
"&V[AS_readonly]"
radiobutton
(6,2)
"Leasing"
name="AS_Type_de_propriété" value="2"
"&V[AS_readonly]"
radiobutton
(7,2)
"Participation" name="AS_Type_de_propriété" value="3"
"&V[AS_readonly]"
Box
(4,30)
(8,59)
"Evaluation suivant"
radiobutton
(5,31)
"Base
de l'imposition globale"
name="AS_Evaluation_Man" value="003"
"&V[AS_readonly]"
radiobutton
(6,31)
"Valeur
locative"
name="AS_Evaluation_Man"
value="001"
"&V[AS_readonly]"
//Afficher le terrain
if
Q[transaction=AS02]
or
Q[transaction=AS03]
offset
(0,0)
image
(5,90)
(20,135)
"&F[Immobilis.].jpg"
endif
endif
// Onglet "Impôt patr.", effacer les champs qui se
trouvent maintenant sur l'onglet "Généralités"
if
Q[Page=Impôt patr.]
del
G[Evaluation des biens du patrimoine]
pos
G[Terrains et droits de propriété]
(5,1)
endif
if
Q[Transaction=AS01]
or
Q[Transaction=AS02]
// Invoquer notre propre scripte lors de la sauvegarde
dans AS01/AS02
on
"/11"
process="AS_sauvegarder.txt"
on
"/Menu=1,7"
process="AS_sauvegarder.txt"
// Ne pas accepter la sauvegarde à partir du popup,
traiter de la même manière que /12
on
"/3"
fcode="/12"
on
"/15"
fcode="/12"
// Vérifier les données complémentaires directement sur
l'onglet "Généralités" lors de l'"Enter"
if
Q[Page=Généralités]
on Enter
process="AS_verifier.txt"
endif
endif L'InputScript "AS_lire.txt" va lire les champs sur l'onglet et retourner à l'onglet "Généralités". Nous pouvons également transmettre des éléments texte d'un onglet à l'autre.
// AS_lire.txt
// Aller sur l'onglet "Impôt patr."
Enter
"=TAB05"
// AS02, Evaluation du bien
Screen
SAPLAIST.1000
Set
V[AS_Code_de_ventilation]
"&F[Code de ventilation]"
Set
V[AS_Texte_Code_de_ventilation]
"&F[T092T-VMTXT]"
Set
V[AS_Type_de_propriété]
"&F[Code de propriété]"
Set
V[AS_Evaluation_Man]
"&F[Motif éval. man.]"
Set
V[AS_Val_man_patrim]
"&F[Val.man.patrim.]"
Enter
"=TAB01"
De la même manière "AS_sauvegarder.txt" va mettre lors de la sauvegarde les valeurs des nouveaux champs dans les champs d'origine. En cas de message d'erreur nous allons retourner sur l'onglet "Généralités".
// InputScript AS_sauvegarder.txt
// Sauvegarder dans les transactions AS02 et AS03
// Aller sur l'onglet "Impôt patr."
Enter
"=TAB05"
// Valorisation des terrains
Screen
SAPLAIST.1000
// Mémoriser les anciennes valeurs pour
qu'elles puissent être utilisées en cas d'erreur
Set
V[AS_corr_Code_de_ventilation]
"&F[Code de ventilation]"
Set
V[AS_corr_Val_man_patrim]
"&F[Val.man.patrim]"
// Saisir nouvelles valeurs
Set
F[Code de ventilation]
"&V[AS_Code_de_ventilation]"
Set
F[Code de propriété]
"&V[AS_Type_de_propriété]"
Set
F[Motif éval. man.]
"&V[AS_Evaluation_Man]"
Set
F[Val.man.patrim.]
"&V[AS_Val_man_patrim]"
// Sauvegarder, continuer en cas d'erreur
Enter
"/11"
OnError=Continue
// Remise des anciennes valeurs, étant
donné que certaines valeurs sont erronnées
Set
F[Code_de_ventilation]
"&V[AS_corr_Code_de_ventilation]"
Set
F[Val.man.patrim.]
"&V[AS_corr_Val.man.patrim]"
// Retour au premier onglet avec un message
d'erreur
Message
"&V[_lasterror]"
-statusline
Enter
"=TAB01"
La vérification des données à l'aide d'un propre InputScript "AS_verifier.txt" à la suite d'un "Enter" n'est pas forcément nécessaire. La vérification se fait de toutes les façons lors de la sauvegarde. Toutefois il est plus agréable pour l'utilisateur si les données sont vérifiées déjà lors du premier "Enter".
// AS_verifier.txt
// Vérifier les données saisies
// Aller sur l'onglet "Impôt patr."
Enter
"=TAB05"
// Valorisation des terrains
Screen
SAPLAIST.1000
// Mémoriser les anciennes valeurs pour
qu'elles puissent être utilisées en cas d'erreur
Set
V[AS_corr_Code_de_ventilation]
"&F[Code de ventilation]"
Set
V[AS_corr_Val_man_patrim]
"&F[Val.man.patrim]"
// Saisir nouvelles valeurs
Set
F[Code de ventilation]
"&V[AS_Code_de_ventilation]"
Set
F[Code de propriété]
"&V[AS_Type_de_propriété]"
Set
F[Motif éval. man.]
"&V[AS_Evaluation_Man]"
Set
F[Val.man.patrim.]
"&V[AS_Val_man_patrim]"
// Sauvegarder, continuer en cas d'erreur
Enter
OnError=Continue
goto Erreur
// Valorisation
Screen
SAPLAIST.1000
// Récupérer texte
Set
V[AS_Texte_Code_de_ventilation]
"&F[T092T-VMTXT]"
// traitement standard de la
Val.man.patrim.
Set
V[AS_Val_man_patrim]
"&F[Val.man.patrim.]"
// retour sur le premier onglet
Enter
"=TAB01"
// quitter le scripte, les données saisies
sont correctes
Leave
// traitement des messages d'erreurs
label Erreur
// réinitialiser les valeurs car certaines
incorrectes, pour quitter l'onglet
Set
F[Code de ventilation]
"&V[AS_corr_Code_de_ventilation]"
Set
F[Val.man.patrim]
"&V[AS_corr_Val_man_patrim]"
// Retour sur premier onglet avec un
message d'erreur
Message
"&V[_lasterror]"
-statusline
Enter
"=TAB01"
|