Ex 5 : Filtres
- Je veux filtrer mes clients sur le champ spécifique "Catégorie tarif" (final_pricecategory_ID_tarCod) qui pointe vers la table standard sw_data_pricecategory :
Permet de rajouter des filtres spécifiques pour interroger les données en mode LIST.
Syntaxe :
strictFilters: [ { 'fieldName': '…', 'operator': '…', 'targetField': '…', 'query': '…' }, { 'fieldName': '…', 'operator': '…' 'targetField': '…', 'query': '…' }, { … } ]
Description syntaxe :
Opérateur Correspondance MariaDB Null IS NULL NotNull IS NOT NULL Equal = NotEqual <> Greater > GreaterOrEqual >= Less < LessOrEqual <= Contains LIKE %...% In IN Between BETWEEN StartsWith LIKE …% EndsWith LIKE %... Pour un filtre sur une clé étrangère l’opérateur doit toujours avoir la valeur « In »
targetField : ID de la table principale. A utiliser uniquement pour les filtres avec clé étrangère.
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) :
'strictFilters': [ { 'fieldName': 'phoneNumber', 'operator': 'Equal' }
]-> Appel Webhook avec le filtre :
"filters":
[
"phoneNumber": "02 31 14 50 00"
}- Je veux filtrer mes clients sur le champ "Date de fin de congés" (vacationEnd), soit sur une date donnée, soit sur une plage de dates :
'strictFilters': [ { 'fieldName': 'vacationEnd', 'operator': 'Equal' },
{ 'fieldName': 'vacationEndBetween', 'operator': 'Between',
'targetField': 'vacationEnd' }
]-> Appel Webhook avec le filtre sur une date donnée
"filters":
[
"vacationEnd": "2020-08-30"
}-> Appel Webhook avec le filtre sur une plage de dates
"filters":
[
"vacationEndBetween": "2020-08-01|2020-08-30"
}- Je veux filtrer mes clients sur le champ spécifique "Catégorie tarif" (final_pricecategory_ID_tarCod) qui pointe vers la table standatd sw_data_pricecategory :
'
strictFilters': [ { 'fieldName': 'final_pricecategory_ID_tarCod', 'operator': 'In', 'targetField': 'customer_ID', 'query': '( SELECT customer_ID FROM sw_data_customer AS c INNER JOIN sw_data_pricecategory AS pc ON pc.pricecategory_ID = c.final_pricecategory_ID_tarCod WHERE pc.codepricecategory = %valueToBeReplaced% )' } ]
-> Appel Webhook avec le filtre :
"filters":
[
"final_pricecategory_ID_tarCod": "TC"
}- Je veux filtrer mes clients sur un champ spécifique « Code remise » (final_t035_ID) qui pointe vers une table spécifique (sw_data_final_t035) :
'strictFilters:' [ { 'fieldName': 'final_t035_ID', 'operator': 'In', 'targetField': 'customer_ID', 'query': '( SELECT customer_ID FROM sw_data_customer AS c INNER JOIN sw_data_final_t035 AS t035 ON t035.final_t035_ID = c.final_t035_ID WHERE t035.codefinal_t035 = %valueToBeReplaced% )' } ]
-> Appel Webhook avec le filtre :
"filters":
[
"final_t035_ID": "RG"
}- Je veux filtrer mes clients sur un champ personnalisé « Capital (Keuros) » (v_A101) avec l’opérateur >= :
'strictFilters': [ { 'fieldName': 'v_A101', 'operator': 'GreaterOrEqual' } ]
-> Appel Webhook avec le filtre
"filters":
[
"v_A101": "1000"
}
- Je veux filtrer mes clients sur le champ spécifique "Catégorie tarif" (final_pricecategory_ID_tarCod) qui pointe vers la table standard sw_data_pricecategory :
Surcharge des Ajouts/mises à jour pré Summer'21 (obsolète)
A partir de la SUMMER'21 cette surcharge devient obsolète car le mapping des champs est fait automatiquement en standard grâce au dictionnaire de données (même pour les champs que vous ajoutez en spécifique).
- Correspond à la construction de la requête d’ajout et mise à jour en base de données.
- Toutes les surcharges seront dans les scripts « WebhookInsertUpdateOverload_xxxx ».
- Il s’agit de concaténer les champs à mettre à jour dans la variable « data » de la manière suivante : data = fieldName1=value1 ;fieldName2=value2 ;fieldName3=value3;…
Squelette de la surcharge :
// WebhookInsertUpdateOverload_xxxx // @description => Overload insert update with yours. Return xxxxData for insert/update if needed. // // @json => jsonxxxx. // // @returns => xxxxData for insert/update // json = TRANSLATE( "<varscript>arg1</varscript>" ) VARINITIALIZE_SCRIPT_BYJSON( json ) data = "" // To complete … RETURN( data )
Description des paramètres :
En entrée :
- arg1 : json de l’entité concernée (jsonCustomer, jsonContract, …)
En sortie :
- data : chaîne contenant les infos à mettre à jour sous la forme fieldName1=value1 ;fieldName2=value2 ;fieldName3=value3;…
Mise à jour d'un champ simple
- Syntaxe :
IF ( VARSCRIPT_EXISTS( "final_myField" ) ) THEN
data = CONCAT( data, ";final_myField=<varscript>final_myField</varscript>" )
ENDIF
- Exemple : je veux mettre à jour le champ spécifique remise 1 (final_rem1) :
IF ( VARSCRIPT_EXISTS( "final_rem1" ) ) THEN
data = CONCAT( data, ";final_rem1=<varscript>final_rem1</varscript>" )
ENDIF
Mise à jour d'une clé étrangère
- Syntaxe :
IF ( VARSCRIPT_EXISTS( "final_myField_ID" ) ) THEN
final_myField_ID = CALL_SCRIPT( "Func_GetIDFromCode", "sw_data_final_mytable", "<varscript>final_myField_ID</varscript>" )
data = CONCAT( data, ";final_myField_ID=<varscript>final_myField_ID</varscript>" )
ENDIF
Exemples :
- Je veux mettre à jour le champ spécifique « Code remise » (final_t035_ID) à partir de son code (codefinal_t035)
IF ( VARSCRIPT_EXISTS( "final_t035_ID" ) ) THEN
final_t035_ID = CALL_SCRIPT( "Func_GetIDFromCode", "sw_data_final_t035", "<varscript>final_t035_ID</varscript>" )
data = CONCAT( data, ";final_t035_ID=<varscript>final_t035_ID</varscript>" )
ENDIF
- Je veux mettre à jour le champ spécifique « Catégorie tarif » (final_pricecategory_ID_tarCod) à partir de son code (CodePricecategory)
IF ( VARSCRIPT_EXISTS( "final_pricecategory_ID_tarCod" ) ) THEN
final_pricecategory_ID_tarCod = CALL_SCRIPT( "Func_GetIDFromCode", "sw_data_pricecategory", "<varscript>final_pricecategory_ID_tarCod</varscript>" )
data = CONCAT( data, ";final_pricecategory_ID_tarCod=<varscript>final_pricecategory_ID_tarCod</varscript>" )
ENDIF