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.

...

Bloc de code
languagenone
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>" )

Liste des champs à exclure pour affichage de type étendu

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
languagenone
'extendedFieldsListToExclude': 'field1,field2,field3,...'

...

Je ne veux pas retourner les champs serialnumber et location

Bloc de code
languagenone
'extendedFieldsListToExclude': 'serialnumber,location'

Liste des champs pour affichage de type simple

Permet de lister les champs pour le type simple (resultType=simple) pour les webhooks en mode LIST et GET.

...

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
languagenone
'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
languagenone
'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
languagenone
'fieldsListrelatedTablesCount': {
      'field1': {
          'type': '…',
          'length': '…',
          'label': '…',
          'targetTableName': '…',
          'targetFieldName': '…',
          'fieldNameToShow': '…',
          'alias':xx,
'relatedTables': ['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
languagenone
'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
languagenone
'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
languagenone
'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
languagenone
'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
languagenone
'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
languagenone
'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
languagenone
'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
languagejson
"action": 
[
  "verb": "PUT"
},
"data":
{
  "customer" :
  {
    "name" : "ENTREPRISE DIJON GUICHARD",
    "postalCode": "21000" 
    "city" : "DIJON",
   } }

-> Résultat :

...

...

Après :

json
Bloc de code
language
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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 :

...

languagejson

...

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
languagejson
"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
languagejson
"filters": 
{
  "vacationEnd": "2020-08-30"
}

-> Appel webhook avec le filtre sur une plage de dates :

Bloc de code
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"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
languagejson
"orderBy": "CapitalDesccodeCountryAscNameAsc"

Surcharge des règles métier

...