Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Lorsque l'objet métier traite les NOTES:

...

  • L'import peut importer des notes en CREATION uniquement (pas de modification de notes, uniquement création de note lors de la création ou modification d'une entité). Il faut indiquer le nom ODBC : NUMERONOTE ou le nom de la colonne.

...

  • L'export écrit le texte brut de la note dans la colonne.

Lorsque l'objet métier traite les FICHIERS JOINTS:

...

  • L'import peut attacher des fichiers joints en CREATION uniquement (pas de modification de fichier joint, uniquement création de lors de la création ou modification d'une entité). Il faut indiquer le nom de la colonne : JOINT

...

  • L'export écrit les noms des fichiers joints dans la colonne.

image-20240318-165512.pngImage Added

Remarques :

...

  • L'état actuel des objets métier ne permet pas de traiter les rubriques.

  • Un indicateur dans l'objet métier indique si la table peut être importée ou non par tableur.

image-20240318-165549.pngImage Added

Objet métier : gestion des notes

...

La gestion de notes dans les objets métiers se fait un deux phases :

...

  • Description des 'notes' (ou texte) dans l'objet métier pour donner des caractéristiques à ces

...

  • notes (indiquer quel est le champ de note, son CE associé, l'objet,…)

  • Chez l'appelant qui affiche ou saisi des notes pour gérer l'interaction

La phase 'Description' se fait par des fonctions à implémenter dans l'objet métier:

...

  • Indiquer les champs 'notes' dans la Get_xxx_FieldProperties

  • Ajouter une fonction Get_xxx_FieldNoteProperties qui donne des propriétés spécifiques aux notes

  • Ajouter une fonction par note gérée Get_xxx_FieldNote_yyyy

La phase 'Chez l'appelant' va dépendre du niveau de complexité et de rendu de la note : selon que la note est gérée en fenêtre superposée, en affichage rtf dans le masque, en saisie rtf dans le masque.

...

Le code à mettre chez l'appelant:

...

  • Déclarer A5PMCHK001.dhop

  • ZoomCreationRes doit faire appel à

A5_ChkNote_Flush() ou un appel à chaque note individuelle via la fonction

A5_ChkNote_Flush(Get_xxx_FieldNote_yyy())

...

  • ZoomModificationRes doit faire appel à

A5_ChkNote_Flush() ou un appel à chaque note individuelle via la fonction

A5_ChkNote_Flush(Get_xxx_FieldNote_yyy())

...

  • ZoomConsult lors du traitement de la touche d'affichage de note (K_SF6 en général) doit faire appel à

A5_ChkNote_Display(RSduZoom.xxx,Get_xxx_FieldNote_yyy())

...

  • ZoomArret lors du traitement de la touche de saisie de note (K_SF6 en général) doit faire appel à

A5_ChkNote_Input(RSduZoom.xxx,Get_xxx_FieldNote_yyy())

XmeToolbarSetButtonInfo(IdOutilZoom,“NOTE”, Condition(RSduZoom.CeNote=OUI, “<BITMAP>NOTE” ,“<BITMAP>NOTE_N”))

Remarques:

...

  • le module a5pmnotejoint ne sert plus dans le zoom

  • les anciennes instructions Note_debut, Note_Reinit, Note_chargement, Note_suppression ne servent plus

  • l'attributions/modification du numéro de note est fait par a5pmchk001 lors du passage dans le moteur sql

  • le champ CE est modifié dynamiquement à l'appel de A5_ChkNote_Input permettant d'utiliser sa valeur pour les bitmaps

Cas d'une note avec saisie RTF dans le masque

...

Le code à mettre chez l'appelant:

...

  • ZoomDebut doit faire appel à (pour indiquer un comportement de note différent que la fenêtre superposée)

;zoom spécial : la note est saisie dans le masque du zoom

A5_ChkNote_SetMode_MasqueAppelant(Get_xxx_FieldNote_yyy())

...

  • ZoomCreationRes doit faire appel à

A5_ChkNote_Flush() ou un appel à chaque note individuelle via la fonction

...

A5_ChkNote_PrepareDuplication(RSduZoom.yyy, Get_xxx_FieldNote_yyy()) EndIf

...

  • ZoomModificationRes doit faire appel à

A5_ChkNote_Display_ZoomMasqueAppelant(RSduZoom.xxx,Get_xxx_FieldNote_yyy())

...

  • ZoomAvantConsult doit faire appel à

A5_ChkNote_Display_ZoomMasqueAppelant(RSduZoom.xxx,Getxxx_FieldNote_yyy())

Remarques:

...

  • le module a5pmnotejoint ne sert plus dans le zoom

  • les anciennes instructions Note_debut, Note_Reinit, Note_chargement, Note_suppression, Note_Maj_Etat_Charge ne servent plus

  • l'attributions/modification du numéro de note est fait par a5pmchk001 lors du passage dans le moteur sql

  • le champ CE est modifié dynamiquement à l'appel de A5_ChkNote_Input permettant d'utiliser sa valeur pour les bitmaps

  • mw.rtfnom cest toujours utilisé pour l'affichage rtf de la note

Objet métier : gestion des fichiers joints

...

Le mécanisme est strictement similaire aux notes. Le terme NOTE est remplacé par ATTACH.

...

image-20240318-165801.pngImage Added

Objet métier : centralisation des fonctions de réservations d'entité

...

Le passage en objet métier entraîne une harmonisation des règles de nommage. Ainsi les fonctions existent sur le même schéma selon les règles suivantes:

...

  • Reservation_XXX_YYYY(XXX,err,f) correspond à une gestion de réservation par enregistrement XXX complet

  • Res_XXX_YYYY(champ1,err,f) correspond à une gestion de réservation par champ de la réservation uniquement

  • YYYY reflète l'action (réserver, libérer, …) : Lock ou UnLock ou Share ou Shift

  • La chaîne de réservation est construite à un endroit unique : Get_XXX_Reservation

Exemples:

...

Attention, cela implique que toutes les anciennes fonctions de réservation sont probablement renommées, mais sont écrites sous la même forme.

...

(Exemple : GTTMCHKT020) La mise en oeuvre passe par:

...

  • L'ajout d'une fonction 'Set_xxx_Cache_Mode' qui permet d'activer le cache pour l'entité. Cette fonction fait simplement appel a une fonction commune.

...

  • L'ajout d'une fonction 'Put_xxx_Cache_Data' qui permet d'ajouter un enregistrement au cache (pour permettre à l'appelant de lire en boucle des éléments et les placer en cache). Cette fonction fait simplement appel a une fonction commune.

...

image-20240318-165904.pngImage Added

La modification de l'écriture de la fonction LOAD.

image-20240318-165927.pngImage Added

  • Un premier test pour déterminer si le cache est actif ou non

  • Si le cache est actif, positionnement de la clé primaire pour la recherche d’existence dans le
    cache

  • Recherche dans le cache, et retour à 0 si trouvé dans le cache

  • Sinon, lecture de l'enregistrement, puis mise en cache en cas de réussite

Remarques:

...

  • La mise en cache fonctionne pour une entité complète (allcolumns=true) ou non; chaque 'mode' ayant son propre cache

...

  • Seuls les éléments existants sont mis en cache (pas de cache sur les recherches en échec)

  • Seules les fonctions suivantes bénéficient du cache : Load_xxx, Give_xxx

Mise en oeuvre chez l'appelant

...