Sommaire | ||
---|---|---|
|
Les routines de traitement permettent de réaliser des traitements particuliers via une syntaxe reconnue dans Divalto, en utilisant un langage adapté à l'écriture de routines.
C’est un approche low-code qui permet, avec un langage et une syntaxe dédiée, d’obtenir des séquences de traitement produites à partir d’un zoom de l’ERP sans passer par un environnement de développement, permettant aussi a des profils non développeurs ayant une certaine maîtrise dans la logique de programmation d’adapter le comportement du configurateur.
Une routine peut être une simple affectation/lecture de donnée, une écriture plus avancée avec des conditions, ou un algorithme un peu plus complexe qui va permettre une mise à jour de donnée selon différents critères.
Info |
---|
- En mode réel, la sauvegarde des enregistrements est fait en temps réel lors de l’exécution de la routine. On ne pourra donc pas revenir en arrière sur un code traitement qui à créé ou modifié des données. |
Dossier de travail des codes traitement dans les implicites
Un code traitement va être converti en un “objet” utilisable dans l’ERP de la même manière que les objets livrés avec l’ERP lors de son installation. Il est donc indispensable que ces objets soient placés dans un endroit connu de l’ERP.
On utilise a cette fin les chemins implicites de l’ERP afin d’y avoir un dossier de travail pour le configurateur. Par défaut, ce dossier de travail est nomme ‘CFG’ et placé sous le dossier ‘FICHIERS’
Ce dossier de travail doit donc apparaître dans les chemins implicites ainsi que dans le code chemin de la fiche ‘Dossier communs’ dans l’onglet configurateur.
Il va servir lors de la génération des objets, puis lors de l’appel des routines lors des traitements du configurateur.
Info |
---|
Consultez le chapitre dédié au paramétrage et activation du configurateur : https://divalto.atlassian.net/wiki/spaces/UDI112/pages/11005123352/Param+trage+et+article+configur#Activer-le-configurateur |
A noter que les codes traitement passent actuellement par un génération de source et une compilation dynamique d’objet diva, mais que ce concept est susceptible d'évoluer.
Traitement avant / Traitement après
Dans la définition des attributs de l’article configurateur, les champs Traitement avant et Traitement après peuvent contenir la dénomination de traitements à exécuter avant ou après la saisie de la valeur d'attribut associée.
Les traitements avant / après peuvent être positionnés sur un attribut et sur le formulaire
le traitement avant du formulaire sera exécuté à l’ouverture du formulaire
le traitement avant / après d’un attribut sera exécuté avant / après le passage en saisie d’un attribut par l’utilisateur pendant le déroulement du formulaire
le traitement après du formulaire sera exécuté à la validation du formulaire
Si nous reprenons l'exemple de la porte, on pourrait par exemple imaginer un Traitement avant qui se déclencherait juste avant saisie des attributs Hauteur, largeur et épaisseur et qui pourrait par exemple indiquer à l'utilisateur "Les dimensions doivent être saisies en cm".
Toujours dans l'exemple des attributs de hauteur, largeur et épaisseur de porte, on pourrait par exemple imaginer un Traitement après qui se déclencherait après saisie de la valeur de l'attribut largeur et qui pourrait par exemple indiquer à l'utilisateur:
S'il a saisi 70, 80 ou 90 en largeur, "porte à 1 vantail".
S'il a saisi 160 en largeur, "porte à 2 vantaux".
De façon plus complexe, on pourrait imaginer un attribut 1 qui correspondrait à une couleur, un attribut 2 qui correspondrait à une taille, et un attribut 3 qui correspondrait à un prix. Le Traitement avant Attribut 3 pourrait être un traitement qui lirait la matrice Couleur X Taille et qui garnirait automatiquement la valeur d'attribut 3.
Remarque : pour des cas simples, il n’est pas nécessaire de lire une matrice. La matrice permet de laisser l’utilisateur agir avec des données pré-paramétrées, modifiables, sans avoir a retoucher des routines de code traitement.
Table des codes traitement
L’utilisation de ces tables nécessite des connaissances en algorithmique de programmation.
La table des codes traitement est accessible par Commerce et logistique/ Fichiers/ Tables/ Tables liées au configurateur/ Code traitement.
Les codes traitement correspondent à des fonctions qui reçoivent des données en entrée et retournent en sortie le résultat du traitement opéré par la fonction. Vous pouvez construire vos propres fonctions par appel à des routines préprogrammées que nous fournissons, l’utilisation de structures conditionnelles (SI, SINON, FINSI), l’utilisation des opérateurs de calcul plus, moins, multiplier et diviser et l’affectation d’une valeur à une variable (= ).
Remarque |
---|
Tout formulaire du configurateur doit avoir au moins 1 code traitement qui fait appel à la fonction ENREGISTRER_ARTICLE qui va effectuer la sauvegarde des données de l’article configuré. L’appel a cette fonction pré-programmée se fait idéalement dans un code traitement associé au Traitement après du formulaire |
Le zoom des codes traitement propose deux zones importantes dans le volet de droite:
Routine : c’est la zone qui permet se saisir les routines
Compte rendu : c’est la zone qui permet de consulter le compte-rendu de la dernière action sur ce code traitement : soit le résultat de l’analyse, soit le résultat de la génération (voir plus bas)
Informations générales, notamment la dernière génération
Code routine
Compte rendu d’analyse ou de génération
Dans l’exemple simple ci-dessous, le code traitement COMMUN_MAJ_ARTICLE fait appel à la routine préprogrammée et fournie ENREGISTRER_ARTICLE. Ce code traitement doit être spécifié dans le champ Traitement après de la définition du formulaire pour être exécuté à la validation du formulaire.
Ce code traitement est associé au Traitement après du formulaire FAUTEUIL
Dans l’exemple plus complexe ci-après, le code FAUT_CALCUL_PUB illustre l’utilisation de la structure conditionnelle (SI, SINON, FINSI) et l’utilisation de variables.
Ce code traitement est associé au Traitement après de l’attribut FAUTEUIL
Table des codes variables
Qui dit algorithmique et utilisation de fonctions, dit utilisation de variables. Les variables sont définies dans la table Commerce et logistique/ Fichiers/ Tables/ Tables liées au configurateur/ code variable.
Une variable peut être de type numérique, alphanumérique, ou string (chaîne de caractères).
Toute variable utilisée dans un code traitement doit exister dans cette table des codes variables.
Analyser la fonction
Une fois que la fonction routine est écrite dans Les pictogrammes
le ‘point noir’ indique un lien vers lecode traitements, donc un traitement qui est utilisé en tant que ‘formule’ avant ou après saisie
le ‘point d’exclamation' indique une anomalie liée à l’objet généré, par exemple une erreur dans le code traitement ou une incompatilibité d’objet
le ‘feu’ indique 3 états
vert = utilisable dans le configurateur, pas d’anomalie
orange = avertissement dans le compte rendu à traiter
rouge = anomalie, code traitement non utilisable en l'état, voir le compte rendu
Table des codes variables
Qui dit algorithmique et utilisation de fonctions, dit utilisation de variables. Les variables sont définies dans la table Commerce et logistique/ Fichiers/ Tables/ Tables liées au configurateur/ code traitement, le bouton Analyser va effectuer une analyse syntaxique du code.
Remarque |
---|
Important : L'utilisation de code Diva direct n’est pas autorisée. Seules les routines fournies et préprogrammées doivent être utilisées. |
L’analyseur lexical permet de vérifier que les fonctions préprogrammées, méthodes, variables, écriture syntaxique,… utilisés dans la routine sont autorisés.
En cas d’erreurs, des messages correspondants sont restitués dans la zone de compte rendu
Exemple : le mot clé EXEC est interdit
Générer l'exécutable de la fonction
Une fois l’analyse de la fonction finalisée, le bouton Générer (variable.
Une variable peut être de type numérique, alphanumérique, ou string (chaîne de caractères).
Toute variable utilisée dans un code traitement doit exister dans cette table des codes variables.
Analyser la fonction
Une fois que la fonction routine est écrite dans Commerce et logistique/ Fichiers/ Tables/ Tables liées au configurateur/ code traitement ) permet la génération de la version exécutable de la fonction. Une fois cette étape passée sans erreurs, la fonction sera opérationnelle en exploitation.
Remarque : la génération est implicitement précédée par une phase d’analyse.
Langage de routines
Mot-clé routine
Mot-clé
Equivalent en langage de programmation
Utilisation
(SI)
If
Cas de test conditionnel
(SINON)
Else
Si cas de test non vrai
(SINONSI)
Elsif
2ème cas de test
(FINSI)
EndIf
Fin cas de test
CONDITION (expressionCondition, resultatVrai, resultatFaux)
If
Else
EndIf
Opérateur de condition. La fonction Condition permet de simplifier l'écriture de certains tests qui peuvent s'écrire avec les mot clés (SI) (SINON) (FINSI).
La valeur retournée est resultatVrai ou resultatFaux selon l'évaluation de expressionCondition. Le type de Expression1 et de Expression2 doit être identique.
Exemple : vPresenceApt = Lire_Valeur_attribut('FAUT_APT')
vPresenceApt = CONDITION(vPresenceApt <> ' ‘, vPresenceApt, 'NON’)
permet de sécuriser vPresenceApt et d’assurer qu’il y a au minimum ‘NON’
(MAJUSCULE)
FString('U'
Mise en majuscule de la chaîne -> (MAJUSCULE)"chaine_maj")
(MINUSCULE)
FString('l'
Mise en minuscule de la chaîne -> (MINUSCULE)"chaine_min")
(EXTRAIRE)
mid(
Extraction (variable, position, [ longueur ])
(GAUCHE)
left(
Extraction à partir de la Gauche -> (GAUCHE)"chaine a extraire", X) X correspond à longueur du découpage
(DROITE)
right(
Extraction à partir de la Droite -> (DROITE)"chaine a extraire", X) X correspond à longueur du découpage
(MODIFIER)
modify(
(MODIFIER)"chaîne_à_chercher", "chaîne_de_remplacement", "chaîne_origine")
(TANTQUE)
Loop
Boucle de lecture, exécute « tant que » valeur est vrai
(FINTANTQUE)
Endloop
Fin de boucle
(MSG)
Messagebox(
Affiche un message -> (MSG)"Ceci est le corps du message", "Ceci est le titre")
(AFFICHER_MESSAGE)
messagebox(
Affiche un message -> (MSG)"Ceci est le corps du message", "Ceci est le titre")
(SUPPRIMER_ESPACE)
NoSpaces(
Supprime les espaces inutiles (début et fin) -> (SUPPRIMER_ESPACE)" chaine de travail ")
(COMMENTAIRE)
;
Mise en commentaire d'une ligne -> (COMMENTAIRE) Ceci est un commentaire
(ALLERA)
GOTO
Branchement à une étiquette
(ETIQUETTE)
LABEL
Positionnement d'une étiquette
(ETIQ)
LABEL
Positionnement d'une étiquette
(ET)
AND
ET
(OU)
OR
OU
(CONCAT)
&
Concaténation
(AUJOURDHUI)
Today
today renvoie la date du jour au format AAAAMMJJ.
(DATEFR)
FormatD('J0/M0/AAAA'
Affiche la date du jour au format Français JJ/MM/AAAA -> (DATEFR)(AUJOURDHUI))
Les chaînes de caractères doivent être entourée de cote simple : '
Opérateurs routine
Opérateur
Utilisation
=
Affectation de variable, affectation de valeur, Test d'égalité dans une condition
Exemple : VOPTION = ‘FAUTEUIL’ ou CFG_ARTICLE.DES = ‘Mon article configuré’ ou (SI) VOPTION = ‘FAUTEUIL’
<, >, <=, >=
Infériorité stricte ou non, supériorité stricte ou non
Exemple : PRIX >= 15 ou PRIX < 100
+, -, *, /
+=, -=, *=, /=
Opérateurs mathématiques addition, soustraction, multiplication, division
Idem avec affectation au membre de gauche
& ou &&
Concaténation de chaîne de caractères
(ET) (OU)
Opérateur logique
Enregistrement mémoire (données)
Tous les enregistrements mémoire ont pour structure celle du dictionnaire de données de l’ERP.
Info |
---|
Pour connaître les champs disponibles dans un enregistrement mémoire, appuyez sur Ctrl+D dans le zoom correspondant à l’entité. Exemple : le zoom article indique le champ ‘Des’ comme étant la désignation. On pourra donc affecter ce champ avec la syntaxe : CODE_ENREGISTREMENT.NomDuChamp |
Code enregistrement
Entité concernée
Type d’accès
Utilisation
CFG_ARTICLE
Fiche article ART
Lecture/Ecriture
Données de la fiche article. Les données de l’article configuré sont initialisées à partir de l’article configurateur
Exemple d’affectation : CFG_ARTICLE.Des = ‘Mon article configuré’
CFG_FORM_LIGNE
Ligne courante du formulaire
Lecture/Ecriture
Données de la ligne courante pendant le déroulement du configurateur
CFG_SSREF
Sous-référence article SART
Lecture/Ecriture
Données de la fiche sous-référence.
CFG_INFODEPO
Information dépôt article ARTDEPO
Lecture/Ecriture
Données de la fiche information dépôt de l'article
CFG_INFOSTOCK
Information stock article ARTSTOC
Lecture/Ecriture
Données de la fiche information stock de l'article
CFG_REFCLIENT
Référencement client RCL
Lecture/Ecriture
Données de la fiche référencement client de l'article
CFG_REAPPROFOUR
Réapprovisionnement fournisseur RFO
Lecture/Ecriture
Données de la fiche réapprovisionnement fournisseur de l'article
CFG_ARTREAPPRO
Réapprovisionnement article RSO
Lecture/Ecriture
Données de la fiche réapprovisionnement de l'article
CFG_CLIENT
Fiche client CLI
Lecture/Ecriture uniquement pièce
Données de la fiche client. Uniquement utilisable dans un contexte de saisie de pièce
CFG_FOURNISSEUR
Fiche fournisseur FOU
Lecture/Ecriture uniquement pièce
Données de la fiche fournisseur. Uniquement utilisable dans un contexte de saisie de pièce
CFG_NOM_ENT
Entête de nomenclature BA
Lecture/Ecriture uniquement prod
Données de l’entête de nomenclature. Uniquement utilisable dans un contexte de la configuration d’un article fabriqué
CFG_NOM_COMP
Ligne de composant BB
Lecture/Ecriture uniquement prod
Données de chaque ligne de composant. Uniquement utilisable dans un contexte de la configuration d’un article fabriqué
CFG_GAM_SEQ
Ligne de séquence de gamme BC
Lecture/Ecriture uniquement prod
Données de chaque ligne de séquence. Uniquement utilisable dans un contexte de la configuration d’un article fabriqué
LCT_SOC
Fiche dossier courante SOC
Lecture
Données de la fiche dossier en cours d’utilisation
LCT_ENT
Entête de pièce ENT
Lecture uniquement pièce
, le bouton Analyser va effectuer une analyse syntaxique du code.
Remarque |
---|
Important : L'utilisation de code Diva direct n’est pas autorisée. Seules les routines fournies et préprogrammées doivent être utilisées. |
L’analyseur lexical permet de vérifier que les fonctions préprogrammées, méthodes, variables, écriture syntaxique,… utilisés dans la routine sont autorisés.
En cas d’erreurs, des messages correspondants sont restitués dans la zone de compte rendu
Exemple : le mot clé EXEC est interdit
Générer l'exécutable de la fonction
Une fois l’analyse de la fonction finalisée, le bouton Générer (dans Commerce et logistique/ Fichiers/ Tables/ Tables liées au configurateur/ code traitement ) permet la génération de la version exécutable de la fonction. Une fois cette étape passée sans erreurs, la fonction sera opérationnelle en exploitation.
Remarque : la génération est implicitement précédée par une phase d’analyse.
Langage de routines
Les langages (V10.12)
La version ERP 10.12 a introduit la notion de langages afin de distinguer des codes traitement destinés au configurateur, de ceux destinés au connecteur étiquettes
Code langage | Libellé |
---|---|
CFG | Traitement pour configurateur |
ETI | Traitement pour connecteur étiquette (V10.12) |
Le choix du langage permet de préciser l’usage du code traitement et le domaine lexical autorisé lors de l’analyse et de la compilation.
Les chapitres suivants n’abordent que l’usage pour le configurateur article
Plus d’informations sur le connecteur étiquette Gérer le connecteur étiquettes (V10.12) et sur l’utilisation des codes traitement pour les étiquettes Code traitement et langage de routine (etiquettes)
Mot-clé routine
Mot-clé | Equivalent en langage de programmation | Utilisation |
---|---|---|
(SI) | If | Cas de test conditionnel |
(SINON) | Else | Si cas de test non vrai |
(SINONSI) | Elsif | 2ème cas de test |
(FINSI) | EndIf | Fin cas de test |
CONDITION (expressionCondition, resultatVrai, resultatFaux) | If Else EndIf | Opérateur de condition. La fonction Condition permet de simplifier l'écriture de certains tests qui peuvent s'écrire avec les mot clés (SI) (SINON) (FINSI). La valeur retournée est resultatVrai ou resultatFaux selon l'évaluation de expressionCondition. Le type de Expression1 et de Expression2 doit être identique. Exemple : vPresenceApt = Lire_Valeur_attribut('FAUT_APT') vPresenceApt = CONDITION(vPresenceApt <> ' ‘, vPresenceApt, 'NON’) permet de sécuriser vPresenceApt et d’assurer qu’il y a au minimum ‘NON’ |
(MAJUSCULE) | FString('U' | Mise en majuscule de la chaîne -> (MAJUSCULE)"chaine_maj") |
(MINUSCULE) | FString('l' | Mise en minuscule de la chaîne -> (MINUSCULE)"chaine_min") |
(EXTRAIRE) | mid( | Extraction (variable, position, [ longueur ]) |
(GAUCHE) | left( | Extraction à partir de la Gauche -> (GAUCHE)"chaine a extraire", X) X correspond à longueur du découpage |
(DROITE) | right( | Extraction à partir de la Droite -> (DROITE)"chaine a extraire", X) X correspond à longueur du découpage |
(MODIFIER) | modify( | (MODIFIER)"chaîne_à_chercher", "chaîne_de_remplacement", "chaîne_origine") |
(TANTQUE) | Loop | Boucle de lecture, exécute « tant que » valeur est vrai |
(FINTANTQUE) | Endloop | Fin de boucle |
(MSG) | Messagebox( | Affiche un message -> (MSG)"Ceci est le corps du message", "Ceci est le titre") |
(AFFICHER_MESSAGE) | messagebox( | Affiche un message -> (MSG)"Ceci est le corps du message", "Ceci est le titre") |
(SUPPRIMER_ESPACE) | NoSpaces( | Supprime les espaces inutiles (début et fin) -> (SUPPRIMER_ESPACE)" chaine de travail ") |
(COMMENTAIRE) | ; | Mise en commentaire d'une ligne -> (COMMENTAIRE) Ceci est un commentaire |
(ALLERA) | GOTO | Branchement à une étiquette |
(ETIQUETTE) | LABEL | Positionnement d'une étiquette |
(ETIQ) | LABEL | Positionnement d'une étiquette |
(ET) | AND | ET |
(OU) | OR | OU |
(CONCAT) | & | Concaténation |
(AUJOURDHUI) | Today | today renvoie la date du jour au format AAAAMMJJ. |
(DATEFR) | FormatD('J0/M0/AAAA' | Affiche la date du jour au format Français JJ/MM/AAAA -> (DATEFR)(AUJOURDHUI)) |
Les chaînes de caractères doivent être entourée de cote simple : '
Opérateurs routine
Opérateur | Utilisation |
---|---|
= | Affectation de variable, affectation de valeur, Test d'égalité dans une condition Exemple : VOPTION = ‘FAUTEUIL’ ou CFG_ARTICLE.DES = ‘Mon article configuré’ ou (SI) VOPTION = ‘FAUTEUIL’ |
<, >, <=, >= | Infériorité stricte ou non, supériorité stricte ou non Exemple : PRIX >= 15 ou PRIX < 100 |
+, -, *, / +=, -=, *=, /= | Opérateurs mathématiques addition, soustraction, multiplication, division Idem avec affectation au membre de gauche |
& ou && | Concaténation de chaîne de caractères |
(ET) (OU) | Opérateur logique |
Enregistrement mémoire (données)
Tous les enregistrements mémoire ont pour structure celle du dictionnaire de données de l’ERP.
Info |
---|
Pour connaître les champs disponibles dans un enregistrement mémoire, appuyez sur Ctrl+D dans le zoom correspondant à l’entité. Exemple : le zoom article indique le champ ‘Des’ comme étant la désignation. On pourra donc affecter ce champ avec la syntaxe : CODE_ENREGISTREMENT.NomDuChamp |
Code enregistrement | Entité concernée | Type d’accès | Utilisation |
---|---|---|---|
CFG_ARTICLE | Fiche article ART | Lecture/Ecriture | Données de la fiche article. Les données de l’article configuré sont initialisées à partir de l’article configurateur Exemple d’affectation : CFG_ARTICLE.Des = ‘Mon article configuré’ |
CFG_FORM_LIGNE | Ligne courante du formulaire | Lecture/Ecriture | Données de la ligne courante pendant le déroulement du configurateur |
CFG_SSREF | Sous-référence article SART | Lecture/Ecriture | Données de la fiche sous-référence. |
CFG_INFODEPO | Information dépôt article ARTDEPO | Lecture/Ecriture | Données de la fiche information dépôt de l'article |
CFG_INFOSTOCK | Information stock article ARTSTOC | Lecture/Ecriture | Données de la fiche information stock de l'article |
CFG_REFCLIENT | Référencement client RCL | Lecture/Ecriture | Données de la fiche référencement client de l'article |
CFG_REAPPROFOUR | Réapprovisionnement fournisseur RFO | Lecture/Ecriture | Données de la fiche réapprovisionnement fournisseur de l'article |
CFG_ARTREAPPRO | Réapprovisionnement article RSO | Lecture/Ecriture | Données de la fiche réapprovisionnement de l'article |
CFG_CLIENT | Fiche client CLI | Lecture/Ecriture uniquement pièce | Données de la fiche client. Uniquement utilisable dans un contexte de saisie de pièce |
CFG_ |
FOURNISSEUR | Fiche fournisseur FOU | Lecture/Ecriture uniquement pièce | Données de |
la fiche fournisseur. Uniquement utilisable dans un contexte de saisie de pièce |
CFG_ |
NOM_ENT |
Entête de |
nomenclature BA | Lecture/Ecriture uniquement |
prod | Données de |
l’entête de |
nomenclature. Uniquement utilisable dans un contexte de |
LCT_VENTILATION
Ventilation de pièce MVTL
Lecture uniquement pièce
la configuration d’un article fabriqué | |||
CFG_NOM_COMP | Ligne de composant BB | Lecture/Ecriture uniquement prod | Données de chaque ligne de composant. Uniquement utilisable dans un contexte de |
Fonctions préprogrammées
Fonctions préprogrammées de gestion de l’article configuré
Nom de la fonction et paramètres
Utilisation
ENREGISTRER_ARTICLE
Création ou modification de l'article configuré selon les données CFG_ARTICLE
Si CFG_ARTICLE.REF indique une référence d’un article existant, alors il sera mis à jour
Sinon l’article sera créé
Si CFG_ARTICLE.REF est vide/blanc, alors il reçoit automatiquement une référence sous la forme : Préfixe de l’article configurateur + '_' + compteur automatique (visible sur la fiche dossier numérotation)
Si CFG_ARTICLE.REF a été renseigné par le code traitement, il est pris tel quel
CHARGER_xxxx avec xxxx pouvant être :
SSREF en lien avec les données CFG_SSREF
INFODEPO en lien avec les données CFG_INFODEPO
INFOSTOCK en lien avec les données CFG_INFOSTOCK
REFCLIENT en lien avec les données CFG_REFCLIENT
REAPPROFOUR en lien avec les données CFG_REAPPROFOUR
REAPPRO en lien avec les données CFG_ARTREAPPRO
Chargement de la sous-fiche article xxxx.
Il faut au préalable utiliser l’enregistrement mémoire pour indiquer les champs CLE qui permettent de trouver la fiche à charger.
Exemple :
; Positionnement des champs clé de la fiche réapprovisionnement article
CFG_ARTREAPPRO.REF = ‘MonArticle’
CFG_ARTREAPPRO.DEPO = ' '
; Chargement de la fiche
CHARGER_REAPPRO
ENREGISTRER_xxxx avec xxxx pouvant être :
SSREF en lien avec les données CFG_SSREF
INFODEPO en lien avec les données CFG_INFODEPO
INFOSTOCK en lien avec les données CFG_INFOSTOCK
REFCLIENT en lien avec les données CFG_REFCLIENT
REAPPROFOUR en lien avec les données CFG_REAPPROFOUR
REAPPRO en lien avec les données CFG_ARTREAPPRO
Enregistrement/sauvegarde de la sous-fiche article xxxx.
Il faut au préalable avoir chargé la fiche avec CHARGE_xxxx.
Exemple :
; Sauvegarde de la fiche
ENREGISTRER_REAPPRO
ENREGISTRER_CLIENT
Uniquement dans un contexte de saisie de pièce.
Modification de la fiche client selon les données CFG_CLIENT
ENREGISTRER_FOURNISSEUR
Uniquement dans un contexte de saisie de pièce.
Modification de la fiche client selon les données CFG_FOURNISSEUR
ENREGISTRER_ARTICLE_NOMENCLATURE
Création ou modification de l'article configuré selon les données CFG_ARTICLE et les données de production de la nomenclature/gamme associée à l’article configurateur
(même règles pour la gestion de l’article que ENREGISTRER_ARTICLE)
Fonctions préprogrammées de gestion des attributs et valeurs
Les fonctions de lecture font en renvoi de la valeur. Le type du retour dépend du paramétrage de l’attribut (numérique, caractères ou date)
Pour rappel le paramétrage d’un attribut
Lors du traitement du formulaire, le paramétrage d’attribut est repris sur chaque ligne donnant ainsi des valeurs locales au formulaire.
Ces valeurs propres au formulaire sont ensuite modifiables par le code traitement
Donnée de la ligne de formulaire
Nom des fonctions de lecture/écriture et paramètres
Utilisation
Valeur (1)
LIRE_VALEUR_ATTRIBUT(CODEATTRIBUT)
ECRIRE_VALEUR_ATTRIBUT(CODEATTRIBUT, VALEUR)
Lecture de la valeur d’un attribut par son code. C’est la valeur présente dans le formulaire.
Cette valeur a été soit saisie par l’utilisateur, soit renseignée à partir de la liste de valeurs
Valeur début (2)
LIRE_VALDEB_ATTRIBUT (CODEATTRIBUT)
ECRIRE_VALDEB_ATTRIBUT (CODEATTRIBUT, VALEUR_DEBUT)
Lecture de la valeur début d’un attribut par son code. C’est la valeur de début qui sert à contrôler la saisie d’une valeur à partir de la valeur début paramétrée sur l’attribut utilisé à la création du formulaire
Valeur fin (3)
LIRE_VALFIN_ATTRIBUT (CODEATTRIBUT)
ECRIRE_VALFIN_ATTRIBUT (CODEATTRIBUT, VALEUR_FIN)
Idem pour la valeur de fin
Prix unitaire brut (4)
LIRE_PRIX_ATTRIBUT (CODEATTRIBUT)
ECRIRE_PRIX_ATTRIBUT (CODEATTRIBUT, PRIX)
Lecture du prix d’un attribut. Le prix paramétré sur l’attribut utilisé à la création du formulaire sert à initialiser ce prix. Il est ensuite modifiable par code traitement
Remise (5)
LIRE_REMISE_ATTRIBUT (CODEATTRIBUT)
ECRIRE_REMISE_ATTRIBUT (CODEATTRIBUT, REMISE)
Lecture de la remise d’un attribut. La remise paramétrée sur l’attribut utilisé à la création du formulaire sert à initialiser cette remise. Elle est ensuite modifiable par code traitement
Montant (6)
LIRE_MONTANT_ATTRIBUT (CODEATTRIBUT)
ECRIRE_MONTANT_ATTRIBUT (CODEATTRIBUT, MONTANT)
Lecture du montant d’un attribut. Le montant paramétré sur l’attribut utilisé à la création du formulaire sert à initialiser ce montant . Il est ensuite modifiable par code traitement
Quantité (7)
LIRE_QUANTITE_ATTRIBUT (CODEATTRIBUT)
ECRIRE_QUANTITE_ATTRIBUT (CODEATTRIBUT, QUANTITE)
la configuration d’un article fabriqué | |||
CFG_GAM_SEQ | Ligne de séquence de gamme BC | Lecture/Ecriture uniquement prod | Données de chaque ligne de séquence. Uniquement utilisable dans un contexte de la configuration d’un article fabriqué |
LCT_SOC | Fiche dossier courante SOC | Lecture | Données de la fiche dossier en cours d’utilisation |
LCT_ENT | Entête de pièce ENT | Lecture uniquement pièce | Données de l’entête de pièce. Uniquement utilisable dans un contexte de saisie de pièce |
LCT_MOUVEMENT | Mouvement de pièce MOUV | Lecture uniquement pièce | Données de mouvement de pièce Uniquement utilisable dans un contexte de saisie de pièce |
LCT_G1T1 | Ligne de pièce G1T1 | Lecture uniquement pièce | Données de ligne de pièce . Uniquement utilisable dans un contexte de saisie de pièce |
LCT_VENTILATION | Ventilation de pièce MVTL | Lecture uniquement pièce | Données de ventilation de pièce. Uniquement utilisable dans un contexte de saisie de pièce |
Fonctions préprogrammées
Fonctions préprogrammées de gestion de l’article configuré
Nom de la fonction et paramètres | Utilisation |
---|---|
ENREGISTRER_ARTICLE | Création ou modification de l'article configuré selon les données CFG_ARTICLE Si CFG_ARTICLE.REF indique une référence d’un article existant, alors il sera mis à jour Sinon l’article sera créé
|
CHARGER_xxxx avec xxxx pouvant être : SSREF en lien avec les données CFG_SSREF INFODEPO en lien avec les données CFG_INFODEPO INFOSTOCK en lien avec les données CFG_INFOSTOCK REFCLIENT en lien avec les données CFG_REFCLIENT REAPPROFOUR en lien avec les données CFG_REAPPROFOUR REAPPRO en lien avec les données CFG_ARTREAPPRO | Chargement de la sous-fiche article xxxx. Il faut au préalable utiliser l’enregistrement mémoire pour indiquer les champs CLE qui permettent de trouver la fiche à charger. Exemple : ; Positionnement des champs clé de la fiche réapprovisionnement article ; Chargement de la fiche |
ENREGISTRER_xxxx avec xxxx pouvant être : SSREF en lien avec les données CFG_SSREF INFODEPO en lien avec les données CFG_INFODEPO INFOSTOCK en lien avec les données CFG_INFOSTOCK REFCLIENT en lien avec les données CFG_REFCLIENT REAPPROFOUR en lien avec les données CFG_REAPPROFOUR REAPPRO en lien avec les données CFG_ARTREAPPRO | Enregistrement/sauvegarde de la sous-fiche article xxxx. Il faut au préalable avoir chargé la fiche avec CHARGE_xxxx. Exemple : ; Sauvegarde de la fiche |
ENREGISTRER_CLIENT | Uniquement dans un contexte de saisie de pièce. Modification de la fiche client selon les données CFG_CLIENT |
ENREGISTRER_FOURNISSEUR | Uniquement dans un contexte de saisie de pièce. Modification de la fiche client selon les données CFG_FOURNISSEUR |
ENREGISTRER_ARTICLE_NOMENCLATURE | Création ou modification de l'article configuré selon les données CFG_ARTICLE et les données de production de la nomenclature/gamme associée à l’article configurateur (même règles pour la gestion de l’article que ENREGISTRER_ARTICLE) |
Fonctions préprogrammées de gestion des attributs et valeurs
Les fonctions de lecture font en renvoi de la valeur. Le type du retour dépend du paramétrage de l’attribut (numérique, caractères ou date)
Pour rappel le paramétrage d’un attribut
Lors du traitement du formulaire, le paramétrage d’attribut est repris sur chaque ligne donnant ainsi des valeurs locales au formulaire.
Ces valeurs propres au formulaire sont ensuite modifiables par le code traitement
Donnée de la ligne de formulaire | Nom des fonctions de lecture/écriture et paramètres | Utilisation |
---|---|---|
Valeur (1) | LIRE_VALEUR_ATTRIBUT(CODEATTRIBUT) ECRIRE_VALEUR_ATTRIBUT(CODEATTRIBUT, VALEUR) | Lecture de la valeur d’un attribut par son code. C’est la valeur présente dans le formulaire. Cette valeur a été soit saisie par l’utilisateur, soit renseignée à partir de la liste de valeurs |
Valeur début (2) | LIRE_VALDEB_ATTRIBUT (CODEATTRIBUT) ECRIRE_VALDEB_ATTRIBUT (CODEATTRIBUT, VALEUR_DEBUT) | Lecture de la valeur début d’un attribut par son code. C’est la valeur de début qui sert à contrôler la saisie d’une valeur à partir de la valeur début paramétrée sur l’attribut utilisé à la création du formulaire |
Valeur fin (3) | LIRE_VALFIN_ATTRIBUT (CODEATTRIBUT) ECRIRE_VALFIN_ATTRIBUT (CODEATTRIBUT, VALEUR_FIN) | Idem pour la valeur de fin |
Prix unitaire brut (4) | LIRE_PRIX_ATTRIBUT (CODEATTRIBUT) ECRIRE_PRIX_ATTRIBUT (CODEATTRIBUT, PRIX) | Lecture du prix d’un attribut. Le prix paramétré sur l’attribut utilisé à la création du formulaire sert à initialiser |
ce prix. |
Il est ensuite modifiable par code traitement |
En complément, des champs sur la ligne permettent de stocker des valeurs complémentaires : le prix brut total, le prix net total et la remise en montant
Nom des fonctions de lecture/écriture et paramètres
Utilisation
ECRIRE_PRIX_NET_LIGNE (PUNET)
Mise à jour du prix net total de la ligne
ECRIRE_PRIX_BRUT_LIGNE (PUB)
Mise à jour du prix brut total de la ligne
ECRIRE_REMISE_LIGNE (REM1, REM2, REM3
Mise à jour de la remise totale de la ligne. 3 champs possibles
Fonctions préprogrammées de gestion des images
La fonction RECUPERER_MEDIA permet de récupérer le média (=image) en interrogeant le tableau de paramétrage des images.
Pour rappel, le paramétrage des images consiste à indiquer pour les combinaisons d’attributs, le nom d’une image qui rend la combinaison visible dans un image.
RECUPERER_MEDIA (FormCFGCod, ValAttributCod1, ValAttributCod2, …, ValAttributCod9, ValAttributCod10)
FormCFGCod : Code Formulaire courant
ValAttributCodX : valeur de l’attribut X ( X étant compris entre 1 et 10 )
Exemple de récupération du l’image (le tableau donne pour la combinaison AppuiTete+Accoudoir+Couleur+Roulette une image correspondante=
Remise (5) | LIRE_REMISE_ATTRIBUT (CODEATTRIBUT) ECRIRE_REMISE_ATTRIBUT (CODEATTRIBUT, REMISE) | Lecture de la remise d’un attribut. La remise paramétrée sur l’attribut utilisé à la création du formulaire sert à initialiser cette remise. Elle est ensuite modifiable par code traitement |
Montant (6) | LIRE_MONTANT_ATTRIBUT (CODEATTRIBUT) ECRIRE_MONTANT_ATTRIBUT (CODEATTRIBUT, MONTANT) | Lecture du montant d’un attribut. Le montant paramétré sur l’attribut utilisé à la création du formulaire sert à initialiser ce montant . Il est ensuite modifiable par code traitement |
Quantité (7) | LIRE_QUANTITE_ATTRIBUT (CODEATTRIBUT) ECRIRE_QUANTITE_ATTRIBUT (CODEATTRIBUT, QUANTITE) | Lecture de la quantité d’un attribut. La quantité paramétrée sur l’attribut utilisé à la création du formulaire sert à initialiser cette quantité . Elle est ensuite modifiable par code traitement |
Remarque |
---|
En cas d’utilisation d’attribut DECIMAUX (donc des chiffres avec virgule) il faut nécessairement passer par une variable intermédiaire, car l’utilisation d’opérateurs de comparaison ne fonctionnera pas dans ce cas spécifique. Exemple : (SI) LIRE_VALEUR_ATTRIBUT(x) > 9 ne fonctionnera pas si le retour de l’attribut est un décimal. On écrira plutôt : MaVariableDecimal = LIRE_VALEUR_ATTRIBUT(x) puis (SI) MaVariableDecimal > 9 |
En complément, des champs sur la ligne permettent de stocker des valeurs complémentaires : le prix brut total, le prix net total et la remise en montant
Nom des fonctions de lecture/écriture et paramètres | Utilisation |
---|---|
ECRIRE_PRIX_NET_LIGNE (PUNET) | Mise à jour du prix net total de la ligne |
ECRIRE_PRIX_BRUT_LIGNE (PUB) | Mise à jour du prix brut total de la ligne |
ECRIRE_REMISE_LIGNE (REM1, REM2, REM3) | Mise à jour de la remise totale de la ligne. 3 champs possibles |
Fonctions préprogrammées de gestion des images
La fonction RECUPERER_MEDIA permet de récupérer le média (=image) en interrogeant le tableau de paramétrage des images.
Pour rappel, le paramétrage des images consiste à indiquer pour les combinaisons d’attributs, le nom d’une image qui rend la combinaison visible dans un image.
RECUPERER_MEDIA (FormCFGCod, ValAttributCod1, ValAttributCod2, …, ValAttributCod9, ValAttributCod10)
FormCFGCod : Code Formulaire courant
ValAttributCodX : valeur de l’attribut X ( X étant compris entre 1 et 10 )
Exemple de récupération du l’image : le tableau donne pour la combinaison AppuiTete+Accoudoir+Couleur+Roulette une image correspondante
Exemple de code à copier
Bloc de code |
---|
; Initialisation des options
VOpt1= 'OPT1'
VOpt2= 'OPT2'
VOpt3= 'OPT3'
VOpt4= 'OPT4'
; Lecture des valeurs
VChoix1= Lire_Valeur_Attribut (VOpt1)
VChoix2= Lire_Valeur_Attribut (VOpt2)
VChoix3= Lire_Valeur_Attribut (VOpt3)
VChoix4= Lire_Valeur_Attribut (VOpt4)
; Valeur par défaut si manquant
VChoix1 = Condition(VChoix1 <> ' ', VChoix1, 'OUI')
VChoix2 = Condition(VChoix2 <> ' ', VChoix2, 'NON')
VChoix3 = Condition(VChoix3 <> ' ', VChoix3, 'OUI')
VChoix4 = Condition(VChoix4 <> ' ', VChoix4, 'NON')
; Code entrée
VEntree= CFG_ARTICLE.FormCFGCod
; Récupération du média
CFG_ARTICLE.MEDIA = Recuperer_Media (Ventree, VChoix1 , VChoix2, VChoix3, VChoix4) |
Fonctions préprogrammées de gestion de la matrice
La fonction LECTURE_MATRICE permet de lire la matrice de paramétrage afin de récupérer des valeurs.
Pour rappel, la matrice consiste sur 1 à 4 dimensions, de données des valeurs à une entrée définie.
LECTURE_MATRICE (EntreeCod, DimCod1, DimDetCod1, DimCod2, DimDetCod2, DimCod3, DimDetCod3; DimCod4, DimDetCod4)
EntreeCod : Code entrée de matrice
DimCodX en association avec DimDetCodX : valeur de la dimension X ( X étant compris entre 1 et 4 ) à partir du code dimension DimCod et de la valeur DimDetCod
Exemple de lecture de matrice (la matrice qui a été fait pour délivrer un prix, donne selon l’attribut courant de Largeur et l’attribut courant AppuiTete une valeur de prix)
Fonctions préprogrammées d’appel de routine
La fonction EXECUTER_TRAITEMENT permet a une routine d’appeler une autre routine.
EXECUTER_TRAITEMENT (CodeTraitement, 1)
CodeTraitement : Code du traitement à appeler
Utiliser Notepad++ pour éditer le code traitement (V10.8)
Les routines liées au configurateur sont à définir dans Commerce & logistique/ Fichiers/ Tables/ Tables liées au configurateur/ Code traitement.
Après saisie de la routine, au moment de sa validation, les mots-clefs reconnus sont colorisés automatiquement selon un code couleur, prédéfini pour chaque type de mot-clé.
Remarque : les codes couleurs sont surchargeables.
Intégrer le langage Configurateur à Notepad++
Pour que le langage Configurateur soit reconnu dans Notepad++, il est nécessaire d’importer la fichier XML, fourni en téléchargement ci-dessous.
View file | ||
---|---|---|
|
Il suffit d’importer ensuite ce fichier dans Notepad++, en se rendant sur Langage/ Langage utilisateur/ Définir votre langage, puis cliquer sur Importer pour rapatrier le fichier fourni par nos soins.
Utiliser Notepad++ comme éditeur de texte pour les routines
Pour éditer le texte de la routine dans Notepad++, coller le texte de la routine, puis choisir le langage CFG :
Technique et surcharge
La gestion des code traitement est très ouverte à la surcharge, afin de faciliter l’ajout d’entité, de mot clé, à travers le module GTTMCODETRAIT
Le module GTTMCFG000 permet également la surcharge du configurateurconfigurateur article
Voir la page dédiée Technique et surcharge codes traitement
Gestion de l’obsolescence des codes traitements dans le cadre d’une migration (V10.10)
Dans le zoom des traitements, le champ Version génération indique dans quelle version de l’ERP le code traitement a été généré.
Il est possible que d’une version à l’autre de l’ERP, certains enregistrements aient évolués.
Ainsi, en cas de migration de l’ERP vers une version plus récente, s’il existe un déphasage entre les versions concernant la génération du code traitement, un point d’exclamation signale qu’une régénération de l’objet est nécessaire dans la nouvelle version.
Sur le formulaire de configuration d’un article configurateur, si le code traitement est topé comme étant à regénérer, un message d’alerte en informe l’utilisateur.
Remarque : Il est à noter qu’en cas de non-régénération, on s’expose à des plantages divers et variés.