Sommaire | ||||
---|---|---|---|---|
|
Surcharge des définitions
...
Permet de lister les champs étendus à exclure pour les webhooks en mode LIST et GET (par défaut on retourne tous les champs).
Syntaxe
...
Bloc de code |
---|
'extendedFieldsListToExclude': 'field1,field2,field3,...' |
Exemple
...
Je ne veux pas retourner les champs serialnumber et location
...
Permet de lister des champs qui demandent un traitement spécial pour être affichés en mode LIST et GET ou pour la mise à jour en mode PUT. Par défaut pour les clés étrangères spécifiques on retourne toujours le code de la table étrangère. Il n’y a donc pas besoin de traitement spécifique pour ces cas si le code suffit.
Syntaxe
...
Bloc de code | ||
---|---|---|
| ||
'fieldsList': { 'field1': { 'type': '…', 'length': '…', 'label': '…', 'targetTableName': '…', 'targetFieldName': '…', 'fieldNameToShow': '…', 'alias': '…', 'mandatory': 0 or 1, 'cannotBeNull': 0 or 1, 'canGet': 0 or 1, 'canInsert': 0 or 1, 'canUpdate': 0 or 1, 'deprecated': 0 or 1, 'foreignParent': '…' }, 'field2': { 'type': '…', 'length': '…', 'label': '…', 'targetTableName': '…', 'targetFieldName': '…', 'fieldNameToShow': '…', 'alias': '…', 'mandatory': 0 or 1, 'cannotBeNull': 0 or 1, 'canGet': 0 or 1, 'canInsert': 0 or 1, 'canUpdate': 0 or 1, 'deprecated': 0 or 1, 'foreignParent': '…' }, 'field3': { 'type': '…', 'length': '…', 'label': '…', 'targetTableName': '…', 'targetFieldName': '…', 'fieldNameToShow': '…', 'alias': '…', 'mandatory': 0 or 1, 'cannotBeNull': 0 or 1, 'canGet': 0 or 1, 'canInsert': 0 or 1, 'canUpdate': 0 or 1, 'deprecated': 0 or 1, 'foreignParent': '…' } … }, 'outOfMainTableFields': [ { 'fieldName': '…', 'tableName': '…' } ], |
Description syntaxe
...
Propriété | Mode utilisation | Description |
---|---|---|
fieldsList | ||
type | LIST, GET | Type du champ dans le résultat (bloc "fieldList"). En standard on a : varchar, text, int, double, bool, datetime, timestamp, foreignkey, mediumblob. |
length | LIST, GET | Longueur du champ dans le résultat (bloc "fieldList)". En standard renseigné pour varchar, text. |
label | LIST, GET | Libellé du champ dans le résultat (bloc "fieldList)". En standard on retourne la clé de traduction en fonction du code langue du json. |
targetTableName | LIST, GET | Nom de la table liée pour les clés étrangères. A utiliser uniquement pour un champ spécifique qui pointe vers une table standard. |
targetFieldName | LIST, GET | Nom du champ à afficher pour les clés étrangères. |
fieldNameToShow | LIST, GET | Permet de changer le nom du champ en retour au lieu d’avoir le nom du champ en base de données. Ex : baseuser_ID -> Utilisateur du client |
alias | PUT | Permet de changer le du nom du champ à renseigner afin qu’il soit plus explicite. L’alias ne doit pas comporter d’espaces. Permet de se détacher de la base de données. Ex : city -> Ville |
mandatory | PUT | Permet de rendre un champ obligatoire dans le json. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Champ non obligatoire) |
cannotBeNull | PUT | Permet de rendre la valeur d'un champ obligatoire dans le json (c'est-à-dire que la valeur ne peut être à chaine vide ou null). Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Valeur du champ non obligatoire) |
canGet | LIST, GET | Permet d'exclure un champ. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Champ retourné). |
canInsert | PUT | Permet de ne pas insérer la valeur d'un champ lors d'un ajout. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Insérer valeur) |
canUpdate | PUT | Permet de ne pas mettre à jour la valeur d'un champ lors d'une mise à jour. Valeurs possibles : 0, 1 (Par défaut on aura : 1 - Mettre à jour valeur) |
deprecated | PUT | Permet de ne plus prendre en compte un champ devenu obsolète. Il ne sera ni vérifié, ni inséré, ni mis à jour. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Non déprécié) |
checkForeign | PUT | Permet de ne pas contrôler la valeur d'une foreignkey. Valeurs possibles : 0, 1 (Par défaut on aura : 1 : Contrôler la foreignkey) |
canGetDefinitionList | DEFINITION | Permet de lister les valeurs d'une foreignkey. Valeurs possibles : 0, 1 (Par défaut on aura : 0 - Ne pas lister les valeurs) |
definitionLabelFieldName | DEFINITION | Permet de donner le champ à utiliser pour afficher le libellé dans la liste. (Si non renseigné on utilisera le champ "label" s'il existe dans la table). Possibilité d'utiliser des fonctions mysql pour par exemple concaténer le nom et le prénom dans la liste des utilisateurs : 'definitionLabelFieldName': 'CONCAT_WS(' ',lastName,firstName)' |
definitionFilter | DEFINITION | Permet de filtrer les enregistrements retournés. Ex pour ne pas afficher les ressources matérielles et les équipes dans la liste des utilisateurs : 'definitionFilter': 'resourcetype_ID IS NULL AND teamtype_ID IS NULL' |
definitionExtraFields | DEFINITION | Permet d'ajouter des champs additionnels en plus du code et du libellé |
dataType | DEFINITION, PUT | Permet de donner le type de data pour une foreignkey pointant vers une table generictype afin de filtrer et contrôler les données |
foreignParent | LIST, GET | Nom de la clé étrangère dans la table principale. Cas très particulier où on veut pointer vers une table de niveau +2. Sera combiné avec « outOfMainTableFields » Ex d’utilisation en standard : sw_data_intervention -> sw_datacustomeraddress -> sw_data_customer (ici « customeraddress_ID » pour notre exemple) Permet donc dans notre exemple de retourner une info de la table « sw_data_customer » |
outOfMainTableFields (utilisé uniquement en combinaison avec foreignParent) | ||
fieldname | LIST, GET | Nom de la clé étrangère dans la table de niveau +1 (ici « customer_ID » pour notre exemple) |
tableName | LIST, GET | Nom de la table liée de niveau +1 (ici « sw_data_customeraddress » pour notre exemple) |
...
Bloc de code | ||
---|---|---|
| ||
"response": { "data": [{ depends of the webhook}], "fieldList": [{ "entityName": "value", // name of the table (ie intervention) "fields": [{ "fieldName": "value", // name of the field (ie codeintervention, customer_ID, …) "fieldType": "value", // type of the field : varchar, text, int, double, bool, datetime, timestamp, foreignkey "fieldLength": "value", // length of the field : informed for varchar, text "fieldLabel": "value" // label of the field : depends on the value of the languageCode from the header (default : FR) }, { "fieldName": "value", "fieldType": "value", "fieldLength": "value", "fieldLabel": "value" }, { ... }], "related": [{ "entityName": "value", "fields": [{ ... }] }, { "entityName": "value", "fields": [{ ... }] }, { ... }] }] |
Exemples impactant la structure du json
...
J’ai un champ spécifique « Catégorie tarif » (final_pricecategory_ID_tarCod) que je veux rendre obligatoire dans le json et dont la valeur doit être renseignée :
...
Bloc de code | ||
---|---|---|
| ||
"result": { "common" : { "resultCode": "1", "errorMessage": "Data Error: Value of final_pricecategory_ID_tarCod cannot be null" } } |
Exemples impactant le réponse dans le bloc "data": [...]
...
Ce bloc contient la valeur des champs retournés.
...
Bloc de code | ||
---|---|---|
| ||
"N° Siret du client principal" : "1234567899988", |
Exemples impactant le réponse dans le bloc "fieldList": [...]
...
Ce bloc contient la description des champs retournés.
...
Bloc de code |
---|
"fields": [ { "fieldName" : "generictype_ID_country", "fieldType": "foreignkey-varchar" "fieldLength" : "255", "fieldLabel" : "Pays", } ] |
Exemples impactant l'ajout et la mise à jour
...
En ajout/mise à jour je veux donner des noms plus explicites pour certains champs :
...
Bloc de code |
---|
'fieldsList': { 'final_test_ID': { 'deprecated': 1 } } |
Exemples impactant la définition
...
J’ai un champ spécifique « Catégorie tarif interne » (final_pricecategory_ID_tarCodInternal) pour lequel je veux lister toutes les valeurs (code et libellé de la table sw_data_pricecategory) :
...
Permet de rajouter des filtres spécifiques pour interroger les données en mode LIST.
Syntaxe
...
Bloc de code |
---|
'strictFilters': [ { 'fieldName': '…', 'operator': '…', 'targetField': '…', 'query': '…' }, { 'fieldName': '…', 'operator': '…' 'targetField': '…', 'query': '…' }, { ... } ] |
Description syntaxe
...
fieldName : nom du champ sur lequel on veut filtrer des données
...
query : requête de filtre avec jointure vers la table étrangère qui doit retourner l’ID de la table principale. A utiliser uniquement pour les filtres avec clé étrangère.
Exemples
...
Je veux filtrer mes clients sur un champ standard « N° de téléphone » (phoneNumber) :
...
Permet de rajouter des tris spécifiques pour interroger les données en mode LIST.
Syntaxe
...
Bloc de code |
---|
'strictOrderBy': [ { 'name': '...', 'fields': [ { 'field': '...', 'order': '...' }, { 'field': '...', 'order': '...' }, { ... }] }, { 'name': '...', 'fields': [ { 'field': '...', 'order': '...' }, { ... }] }] |
Description syntaxe
...
name : nom du tri, il doit être unique, il peut être intéressant de reprendre le nom des champs et l'ordre du tri comme mnémonique (non obligatoire)
...
Les tris ne sont possibles que sur les champs de la table principale du webhook.
Exemples
...
Je veux trier mes clients sur les champs standards « Code postal » (postalCode) et « Ville » (city) de manière ascendante :
...
Bloc de code |
---|
DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "response", "0" ) DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "errorMessage", "Specific rule error: …" ) response = DOCUMENT_SERIALIZE( jsonResponse, "json" ) RETURN( response ) |
Exemples pour le contrôle des règles métier
Je ne veux autoriser l’ajout/mise à jour d’un enregistrement dans « sw_data_customer », uniquement s’il s’agit d’un prospect :
...
Bloc de code | ||
---|---|---|
| ||
"data": { "customer": { "codecustomer": "C0000001", "name": "ENTREPRISE DIJON GUICHARD", "dynamicfields": [{ "fieldname":"CLI40", "fieldvalue": "8" }, { "fieldname":"CLI50", "fieldvalue": "6" }] } } | ||
Bloc de code | ||
IF( EQUALS( method, "PUT" ) )THEN
jsonCustomer = JSON_GET_FROM_PATH( dataInput, "customer" )
IF ( JSON_EXISTS_FROM_PATH( jsonCustomer, "dynamicfields" ) ) THEN
jsonDynamicFields = JSON_GET_FROM_PATH( jsonCustomer, "dynamicfields" )
VARSET_SHELL( "errorMessage", "", "FINAL_RulesDynamicFields" )
EXECUTE_SCRIPT_FOREACH_ROW( "FINAL_WebhookRulesDynamicFields_customer", "json", jsonDynamicFields )
errorMessage = VARGET_SHELL( "errorMessage", "FINAL_RulesDynamicFields" )
IF (LEN( "<varscript>errorMessage</varscript>" ) > 0) THEN
error = 1
DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "response", "0" )
DOCUMENT_ADD_PROPERTY_TO_OBJECT( jsonResponse, "errorMessage", "Specific rule error: <varscript>errorMessage</varscript>" )
ENDIF
VARDELGROUP_SHELL( "FINAL_RulesDynamicFields" )
IF EQUALS( "<varscript>error</varscript>", "1" ) THEN
response = DOCUMENT_SERIALIZE( jsonResponse, "json" )
RETURN( response )
ENDIF
ENDIF
ENDIF |
...
Bloc de code |
---|
"result": { "common": { "resultCode": "1", "errorMessage": "Specific rule error: La note administrative du cl, valeur envoyée 6)"" }, |
Exemples pour l’initialisation des champs
Je veux mettre un commentaire dans le champ « comment » de « sw_data_customer » si certaines informations sont incomplètes.
Bloc de code |
---|
IF( EQUALS( method, "PUT" ) )THEN jsonCustomer = JSON_GET_FROM_PATH( dataInput, "customer" ) VARINITIALIZE_SCRIPT_BYJSON( jsonCustomer ) msg = "" IF( LEN( "<varscript>apeCode</varscript>" ) == 0 )THEN msg = CONCAT( msg, "*** Code APE" ) ENDIF IF( LEN( "<varscript>phoneNumber</varscript>" ) == 0 )THEN msg = CONCAT( msg, "*** Téléphone" ) ENDIF IF( LEN( "<varscript>generictype_ID_country</varscript>" ) == 0 )THEN msg = CONCAT( msg, "*** Pays" ) ENDIF IF( LEN( "<varscript>msg</varscript>" ) > 0 )THEN msg = CONCAT ( "Informations nécessaires à renseigner dès que possible : ", msg ) ENDIF DOCUMENT_ADD_PROPERTY_TO_OBJECT( ruleFields, "comment", msg) END IF |
Je veux initialiser un champ spécifique « final_contract_ID_default » de « sw_data_customer ».
Bloc de code |
---|
contractID = CALL_SCRIPT( "FINAL_GetContract4Customer", "<varscript>customer_ID</varscript>" ) // script for example who return a contract id
contractCode = CALL_SCRIPT( "Func_GetCodeFromID", "sw_data_contract", "<varscript>contractID</varscript>" )
DOCUMENT_ADD_PROPERTY_TO_OBJECT( ruleFields, "final_contract_ID_default", "<varscript>contractCode</varscript>" ) |
Remarque |
---|
Pour initialiser un champ de type foreignKey, il est impératif de passer le code de l’enregistrement et pas son ID. |
Surcharge avant exécution webhook
...