...
Bloc de code | ||
---|---|---|
| ||
WebhookDefinitionOverload_xxx
// WebhookDefinitionOverload_xxx
// @Description => Overload webhook definition
languageCode = VARGET_SHELL( "languageCode", "WebhookDefinition" )
specificOverload = TRANSLATE( "
{
'extendedFieldsListToExclude': '',
'simpleFieldsList': '',
'relatedTablesCount': '',
'relatedTables': [],
'authorizedTables': [],
'cascadeDeleteTables': [],
'fieldsList': {
},
strictFilters: [
],
'strictOrderBy': [
],
'outOfMainTableFields': [
]
}
" )
RETURN( "<varscript>specificOverload</varscript>" ) |
...
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,...' |
...
Je ne veux pas retourner les champs serialnumber et location
Bloc de code | ||
---|---|---|
| ||
'extendedFieldsListToExclude': 'serialnumber,location' |
...
Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.
Syntaxe
Bloc de code | ||
---|---|---|
| ||
'simpleFieldsList': 'field1,field2,field3,...' |
...
La liste du standard ne me convient pas et je veux afficher les champs codecustomer, name, city et final_pricecategory_ID_tarCod.
Bloc de code | ||
---|---|---|
| ||
'simpleFieldsList': 'codecustomer,name,city,final_pricecategory_ID_tarCod' |
...
Liste des tables liées pour affichage de type étendu relationnel
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 suffitles champs de type foreignkey dont on veut afficher les valeurs de la table liée pour le type étendu relationnel (resultType=extendedRelated) pour les webhooks en mode GET.
Dans la surcharge il faudra reprendre la liste des champs du standard si vous voulez les conserver, complété par vos champs.
Il faudra également que la fonction de définition de la table liée correspondante existe (WebhookDefinition_xxxx) ainsi que sa surcharge (WebhookDefinitionOverload_xxxx).
Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.
Il faudra également fournir le nombre de tables liées.
Syntaxe
Bloc de code | ||
---|---|---|
| ||
'fieldsListrelatedTablesCount': { xx, 'field1relatedTables': { 'type': '…', 'length': '…', 'label': '…', 'targetTableName': '…', 'targetFieldName': '…', 'fieldNameToShow': '…', 'alias': '…', 'mandatory'['fieldFK1', 'fieldFK2', '...'] |
Exemple
Le standard liste les champs generictype_ID_customerFamily, baseuser_ID et generictype_ID_country.
Je veux compléter cette liste pour afficher les valeurs de la table liée au champ final_pricecategory_ID_tarCod.
Bloc de code | ||
---|---|---|
| ||
'relatedTablesCount': 4,
'relatedTables': ['generictype_ID_customerFamily', 'baseuser_ID', 'generictype_ID_country', 'final_pricecategory_ID_tarCod'] |
La liste proposée par le standard ne me convient pas et je ne veux afficher que les valeurs liées pour generictype_ID_customerFamily complété par le champ final_pricecategory_ID_tarCod.
Bloc de code | ||
---|---|---|
| ||
'relatedTablesCount': 2,
'relatedTables': ['generictype_ID_customerFamily', 'final_pricecategory_ID_tarCod'] |
Liste des tables autorisées pour mise à jour additionnelle
Permet de lister les tables autorisées en mise à jour additionnelle pour les webhooks en mode PUT.
Dans la surcharge il faudra reprendre la liste des tables autorisées du standard si vous voulez les conserver, complété par vos tables.
Il faudra également que la fonction de définition de la table autorisée correspondante existe (WebhookDefinition_xxxx) ainsi que sa surcharge (WebhookDefinitionOverload_xxxx).
Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.
Syntaxe
Bloc de code | ||
---|---|---|
| ||
'authorizedTables': [{'tableName':'mainTableName'}, {'tableName':'additionalTableName1'}, {'tableName':'additionalTableName2'}, {'tableName':'....'}] |
Exemple
Pour le webhook des interventions, le standard autorise les table suivantes : intervention, interventionequipment et interventionpart.
Je veux compléter cette liste pour gérer la table des opérations interventionoperationrange.
Bloc de code | ||
---|---|---|
| ||
'authorizedTables': [{'tableName':'intervention'}, {'tableName':'interventionequipment'}, {'tableName':'interventionpart'}, {'tableName':'interventionoperationrange'}] |
Liste des tables pour suppression en cascade
Permet de lister les tables qui peuvent être supprimées en cascade pour les webhooks en mode DELETE.
Dans la surcharge il faudra reprendre la liste des tables du standard si vous voulez les conserver, complété par vos tables.
Cette propriété n’est pas présente par défaut dans le squelette de la surcharge, il faudra l’ajouter manuellement.
Info |
---|
Attention, on ne permet qu’un seul niveau de suppression en cascade. La suppression d’un enregistrement d’une table principale permet de supprimer en cascade un enregistrement d’une sous-table. Mais si l’enregistrement de cette sous-table est utiilisé dans une autre table, la suppression sera interdite. |
Syntaxe
Bloc de code | ||
---|---|---|
| ||
'cascadeDeleteTables': [{'tableName':'tableName1'}, {'tableName':'tableName2'}, {'tableName':'...'}] |
Exemple
Pour le webhook des interventions, le standard permet la suppression en cascade des tables suivantes : interventionequipment et interventionpart.
Je veux compléter cette liste pour gérer la table des opérations interventionoperationrange.
Bloc de code | ||
---|---|---|
| ||
'cascadeDeleteTables': [{'tableName':'interventionequipment'}, {'tableName':'interventionpart'}, {'tableName':'interventionoperationrange'}], |
Champs
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': '…'
}
], |
...
Bloc de code |
---|
'fieldsList': { 'name': { 'alias': 'Nom_du_client' }, 'postalCode': { 'alias': 'Code_Postal' }, 'city': { 'alias': 'Ville' }, 'phoneNumber': { 'alias': 'Num_Telephone' ' } } |
-> Résultat :
Avant :
Bloc de code | ||
---|---|---|
| ||
"action": [ "verb": "PUT" }, "data": { "customer" : { "name" : "ENTREPRISE DIJON GUICHARD", "postalCode": "21000" "city" : "DIJON", } } |
-> Résultat :
...
... |
Après :
Bloc de code | language | json
---|
"action": [ "verb": "PUT" }, "data": { "customer" : { "nameNom_du_client" : "ENTREPRISE DIJON GUICHARD", "postalCodeCode_Postal": "21000" "city" : "DIJON", ... |
...
J’ai un champ spécifique « Catégorie tarif interne » (final_pricecategory_ID_tarCodInternal) pour lequel je veux interdire toute mise à jour que ce soit en ajout ou en mise à jour d'enregistrement même si une valeur est passée dans le json car il est géré en interne :
Bloc de code |
---|
"action":'fieldsList': { [ "verb": "PUT" }, "data": { "customer" : {'final_pricecategory_ID_tarCodInternal': { 'canInsert': 0, 'canUpdate': 0 "Nom_du_client" : "ENTREPRISE DIJON GUICHARD", "Code_Postal": "21000"} } |
J'ai un champ spécifique « Code test » (final_test_ID), que je ne veux plus gérer car il est obsolète :
Bloc de code |
---|
'fieldsList': { 'final_test_ID': { "city" 'deprecated': 1 "DIJON", ...} } |
Exemples impactant la définition
J’ai un champ spécifique « Catégorie tarif interne » (final_pricecategory_ID_tarCodInternal) pour lequel je veux interdire toute mise à jour que ce soit en ajout ou en mise à jour d'enregistrement même si une valeur est passée dans le json car il est géré en interne _ID_tarCodInternal) pour lequel je veux lister toutes les valeurs (code et libellé de la table sw_data_pricecategory) :
Bloc de code |
---|
'fieldsList': { 'final_pricecategory_ID_tarCodInternal': { 'canInsert': 0, canGetDefinitionList': 1, } } |
-> Résultat :
Bloc de code | ||
---|---|---|
| ||
"final_pricecategory_ID_tarCodeInternal": [ { "code": "99", "label": "Prix particulier" }, { "code": "GR", 'canUpdate'"label": 0 "Grossiste" } } |
...
, |
En plus du code et du libellé, je veux savoir s'il s'agit d'un tarif particulier (champ tarifPart de la table sw_data_pricecategory) et je veux lui donner un nom lisible "tarif particulier" :
Bloc de code |
---|
'fieldsList': { 'final_testpricecategory_ID_tarCodInternal': { 'deprecatedcanGetDefinitionList': 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) :
Bloc de code |
---|
'fieldsList': { 'definitionExtraFields': [ { 'final_pricecategory_ID_tarCodInternalfieldName': 'tarifPart', { 'canGetDefinitionListfieldNameToShow': 1, 'tarif particulier' } ] } } |
-> Résultat :
Bloc de code | ||
---|---|---|
| ||
"final_pricecategory_ID_tarCodeInternal": [ { "code": "99", "label": "Prix particulier", "tarif particulier": "1" }, { "code": "GR", "label": "Grossiste", "tarif particulier": "0" }, |
En plus du code et du libellécomplément, je veux savoir s'il s'agit d'un tarif particulier (champ tarifPart également retourner la valeur d'un champ (originalCode) qui correspond à une foreign (champ generictype_ID_tarifType de la table sw_data_pricecategory) et je veux lui donner un nom lisible "tarif particulier" :
Bloc de code |
---|
'fieldsList': { 'final_pricecategory_ID_tarCodInternal': { 'canGetDefinitionList': 1, 'definitionExtraFields': [ { 'fieldName': 'tarifPart', 'fieldNameToShow': 'tarif particulier' } ] } } |
-> Résultat :
Bloc de code | ||
---|---|---|
| ||
"final_pricecategory_ID_tarCodeInternal": [ { "code"'fieldName': "99"'tarifPart', "label": "Prix particulier", 'fieldNameToShow': "'tarif particulier": "1"' }, { }, "code": "GR", { "label": "Grossiste", "tarif particulier": "0" }, |
...
'fieldName': 'generictype_ID_tarifType |
...
Bloc de code |
---|
'fieldsList': {', 'targetFieldName': 'originalCode' 'final_pricecategory_ID_tarCodInternal': { } 'canGetDefinitionList': 1, ] 'definitionExtraFields'} } |
-> Résultat :
Bloc de code | ||
---|---|---|
| ||
"final_pricecategory_ID_tarCodeInternal": [ { "code": "99", { "label": "Prix particulier", 'fieldName': 'tarifPart',"tarif particulier": "1", "generictype_ID_tarifType": "PART" }, 'fieldNameToShow': 'tarif particulier'{ "code": "GR", },"label": "Grossiste", "tarif particulier": "0", { "generictype_ID_tarifType": "STD" }, |
Si je veux filtrer les valeurs retournées uniquement sur les tarifs dont le champ « Tarif particulier » (tarifPart) est à 0 :
Bloc de code |
---|
'fieldsList': { 'fieldName': 'generictypefinal_pricecategory_ID_tarifTypetarCodInternal',: { 'targetFieldNamecanGetDefinitionList': 'originalCode'1, } ]'definitionFilter': 'tarifPart = 0' } } |
-> Résultat :
...
language | json |
---|
...
Filtres
Permet de rajouter des filtres spécifiques pour interroger les données en mode LIST.
Syntaxe
Bloc de code |
---|
'strictFilters': [ { "code"'fieldName': "99"'…', "label": "Prix particulier"'operator': '…', "tarif particulier": "1"'targetField': '…', "generictype_ID_tarifType": "PART" 'query': '…' }, { "code"'fieldName': "GR"'…', "label": "Grossiste",'operator': '…' "tarif particulier": "0", "generictype_ID_tarifType": "STD" }, |
Si je veux filtrer les valeurs retournées uniquement sur les tarifs dont le champ « Tarif particulier » (tarifPart) est à 0 :
Bloc de code |
---|
'fieldsList': {
'final_pricecategory_ID_tarCodInternal': {
'canGetDefinitionList': 1,
'definitionFilter': 'tarifPart = 0'
}
} |
Filtres
Permet de rajouter des filtres spécifiques pour interroger les données en mode LIST.
...
'targetField': '…',
'query': '…'
},
{
...
}
] |
Description syntaxe
fieldName : nom du champ sur lequel on veut filtrer des données
operator : opérateur de filtre
Les opérateurs disponibles sont :
Opérateur | Correspondance MySql |
---|---|
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) :
Bloc de code |
---|
'strictFilters': [ { 'fieldName': '…phoneNumber', 'operator': '…', 'targetField': '…', 'query': '…' },Equal' } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters":
{
"phoneNumber": "02 31 14 50 00"
} |
Je veux filtrer mes clients sur un champ standard « Date de fin des congés » (vacationEnd) sur une date précise ou une plage de dates :
Bloc de code |
---|
'strictFilters': [ { 'fieldName': '…vacationEnd', 'operator' : '…' Equal, }, { 'targetFieldfieldName': '…vacationEndBetween', 'queryoperator' : '…Between' }, { ... } ] |
Description syntaxe
fieldName : nom du champ sur lequel on veut filtrer des données
operator : opérateur de filtre
Les opérateurs disponibles sont :
...
Opérateur
...
Correspondance MySql
...
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.
...
'targetField': 'vacationEnd'
}
] |
Remarque : on peut voir ici la manière de cumuler plusieurs filtres sur le même champ en utilisant la propriété "targetField" pour le 2eme filtre.
-> Appel webhook avec le filtre sur une date :
Bloc de code | ||
---|---|---|
| ||
"filters":
{
"vacationEnd": "2020-08-30"
} |
-> Appel webhook avec le filtre sur une plage de dates :
Bloc de code | ||
---|---|---|
| ||
"filters":
{
"vacationEndBetween": "2020-08-01|2020-08-30"
} |
Je veux filtrer mes clients sur un champ standard « N° de téléphone » (phoneNumberspécifique « Catégorie tarif » (final_pricecategory_ID_tarCod) qui pointe vers une table standard (sw_data_pricecategory) :
Bloc de code |
---|
'strictFilters': [ { 'fieldName': 'final_pricecategory_ID_tarCod', 'operator': 'In', 'fieldNametargetField': 'phoneNumbercustomer_ID', 'operatorquery': 'Equal' } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters":
{
"phoneNumber": "02 31 14 50 00"
} |
Je veux filtrer mes clients sur un champ standard « Date de fin des congés » (vacationEnd) sur une date précise ou une plage de dates :
Bloc de code |
---|
'strictFilters': [
{
'fieldName': 'vacationEnd',
'operator' : Equal,
},
{
'fieldName': 'vacationEndBetween',
'operator' : 'Between',
'targetField': 'vacationEnd'
}
] |
Remarque : on peut voir ici la manière de cumuler plusieurs filtres sur le même champ en utilisant la propriété "targetField" pour le 2eme filtre.
-> Appel webhook avec le filtre sur une date :
Bloc de code | ||
---|---|---|
| ||
"filters": { "vacationEnd": "2020-08-30" }( 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 sur une plage de dates :
Bloc de code | ||
---|---|---|
| ||
"filters": { "vacationEndBetweenfinal_pricecategory_ID_tarCod": "2020-08-01|2020-08-30TC" } |
Je veux filtrer mes clients sur un champ spécifique « Catégorie tarif Code remise » (final_pricecategoryt035_ID_tarCod) qui pointe vers une table standard spécifique (sw_data_final_pricecategoryt035) :
Bloc de code |
---|
strictFilters: [ { 'fieldName': 'final_pricecategoryt035_ID_tarCod', 'operator': 'In', 'targetField': 'customer_ID', 'query': '( SELECT customer_ID FROM sw_data_customer AS c INNER JOIN sw_data_final_pricecategory AS pct035 AS t035 ON t035.final_t035_ID = c.final_t035_ID WHERE t035.codefinal_t035 = %valueToBeReplaced% )' } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters": ON{ pc.pricecategory_ID = c."final_pricecategoryt035_ID_tarCod ": "RG" } |
Je veux filtrer mes clients sur un champ personnalisé « Capital (Keuros) » (v_A101) avec l’opérateur >= :
Bloc de code |
---|
strictFilters: [ { 'fieldName': 'v_A101', WHERE pc.codepricecategory = %valueToBeReplaced% )'operator': 'GreaterOrEqual' } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters": { "final_pricecategory_ID_tarCodv_A101": "TC1000" } |
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) :
Bloc de code |
---|
strictFilters |
Tris
Permet de rajouter des tris spécifiques pour interroger les données en mode LIST.
Syntaxe
Bloc de code |
---|
'strictOrderBy': [ { 'fieldNamename': 'final_t035_ID',...', 'fields': [ { 'operatortable': 'In',...' 'targetFieldfield': 'customer_ID...', 'queryorder': '...'( SELECT customer_ID }, { FROM sw_data_customer AS c'table': '...' 'field': '...', INNER JOIN sw_data_final_t035 AS t035'order': '...' }, { ON t035.final_t035_ID = c.final_t035_ID ... }] }, { 'name': '...', 'fields': [ WHERE t035.codefinal_t035 = %valueToBeReplaced% )'{ } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters": { "final_t035_ID": "RG" } |
Je veux filtrer mes clients sur un champ personnalisé « Capital (Keuros) » (v_A101) avec l’opérateur >= :
Bloc de code |
---|
strictFilters: [ { 'table': '...' 'fieldNamefield': 'v_A101...', 'operatororder': 'GreaterOrEqual' } ] |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"filters":
{
"v_A101": "1000"
} |
Tris
Permet de rajouter des tris spécifiques pour interroger les données en mode LIST.
...
...'
},
{
...
}]
}] |
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)
field : nom du champ sur lequel on veut trier les données
order : ordre de tri
Les ordres de tris disponibles sont :
Ordre | Description |
---|---|
asc | tri ascendant |
desc | tri descendant |
table (optionnel) : nom de la table liée sur laquelle on veut faire le tri. Ne pas utiliser si le tri est effectué sur un champ de la table principale. Ne peut être utilisé que si un champ est déjà lu dans la table liée (selon type “simple” ou “extended”). Pour le type “simple”, les tris sur des tables liées ne seront donc pas forcément tous disponibles.
Exemples
Je veux trier mes clients sur les champs standards « Code postal » (postalCode) et « Ville » (city) de manière ascendante :
Bloc de code |
---|
'strictOrderBy': [ { 'name': '...postalCodeAscCityAsc', 'fields': [ { 'field': '...postalCode', 'order': '...asc' }, { 'field': '...city', 'order': 'asc' }] 'order': '...' }, { ... }] },}] |
-> Appel webhook avec le tri :
Bloc de code | ||
---|---|---|
| ||
"orderBy": "postalCodeAscCityAsc" |
Je veux trier mes clients sur les champs standards « Date de fin des congés » (vacationEnd) descendante et sur le « Nom » (name) ascendant :
Bloc de code |
---|
'strictOrderBy': [ { 'name': '...vacationEndDescNameASc', 'fields': [ { 'field': '...vacationEnd', 'order': '...desc' }, { ... }] }] |
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)
field : nom du champ sur lequel on veut trier les données
order : ordre de tri
Les ordres de tris disponibles sont :
...
Ordre
...
Description
...
asc
...
tri ascendant
...
desc
...
tri descendant
Les tris ne sont possibles que sur les champs de la table principale du webhook.
...
'field': 'name',
'order': 'asc'
}]
}] |
-> Appel webhook avec le tri :
Bloc de code | ||
---|---|---|
| ||
"orderBy": "vacationEndDescNameASc" |
Je veux trier mes clients sur les champs standards « Code postal » (postalCode) et « Ville » (city) de manière ascendante :
...
un champ personnalisé « Capital (Keuros) » (v_A101) de manière descendante :
Bloc de code |
---|
'strictOrderBy': [ { 'fieldname': 'postalCodeCapitalDesc', 'orderfields': 'asc' },[ { 'field': 'cityv_A101', 'order': 'ascdesc' }] }] |
-> Appel webhook avec le tri filtre :
Bloc de code | ||
---|---|---|
| ||
"orderBy": "postalCodeAscCityAscCapitalDesc" |
Je veux trier mes clients sur les champs standards « Date de fin des congés » (vacationEnd) descendante un champ d’une autre table « Catégorie client » (codepricecategory) ascendant et sur le « Nom » (name) ascendant :
Info |
---|
Attention ici ce tri ne peut être utilisé que si l’interrogation est effectué pour un type “extended” Pour une utilisation pour un type “simple”, il faudrait ajouter le champ “pricecategory_ID” dans la propriété simpleFieldsList |
Bloc de code |
---|
'strictOrderBy': [ { 'name': 'vacationEndDescNameASccodePriceCategoryAscNameAsc', 'fields': [ { 'fields': [ {'table': 'pricecategory', 'field': 'vacationEndcodepricecategory', 'order': 'descasc' }, { 'field': 'name', 'order': 'asc' }] } |
-> Appel webhook avec le tri filtre :
Bloc de code | ||
---|---|---|
| ||
"orderBy": "vacationEndDescNameASccodePriceCategoryAscNameAsc" |
Je veux trier mes clients sur un champ personnalisé « Capital (Keuros) » (v_A101) de manière descendante d’une autre table « Type générique - Pays » (originalCode) ascendant et sur le « Nom » (name) ascendant :
Bloc de code |
---|
'strictOrderBy': [ { 'name': 'CapitalDesccodeCountryAscNameAsc', 'fields': [ { 'table': 'generictype_country', 'field': 'originalCode', 'order': 'asc' }, { 'field': 'v_A101name', 'order': 'descasc' }] } |
-> Appel webhook avec le filtre :
Bloc de code | ||
---|---|---|
| ||
"orderBy": "CapitalDesccodeCountryAscNameAsc" |
Surcharge des règles métier
...