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:

  • AS01: Créer immobilisation

  • AS02: Modifier immobilisation

  • AS03: Afficher immobilisation

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:

  • Nous modifions l'aspect des deux onglets comme souhaité (effacer les champs concernant l'évaluation des biens sur l'onglet "Impôt patr." , déplacer vers le haut les champs concernant les terrains, création de nouveaux éléments sur l'onglet "Généralités" et changer le nom de l'onglet "Inpôts patr." en "Terrains"). 

  • En invoquant des InputScripts appropriés nous obtenons la saisie automatiques des valeurs dans les modes affichage et modification. Pour cela nous allons lors du premier passage sur l'onglet "Généralités" invoquer un InputScript avec lequel nous allons sur l'onglet "Impôt patr.", stockons les valeurs dans des variables InputScript et retournons sur l'onglet "Généralités". Veuillez noter que l'InputScript a aussi accès aux champs même si nous les avons effacés à l'affichage sur l'onglet dans un scripte GuiXT.

  • De manière analogique nous allons assurer la transmission de champs supplémentaires pendant la création et la modification avant que ne soit effectué la sauvegarde.

  • Veuillez noter notre façon de traiter les erreurs de saisie. Nous allons afficher les messages d'erreurs sur l'onglet "Généralités" pour que l'utilisateur puisse y faire directement les corrections.

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"