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érateurCorrespondance MariaDB
      NullIS NULL
      NotNullIS NOT NULL
      Equal=
      NotEqual<>
      Greater>
      GreaterOrEqual>=
      Less<
      LessOrEqual<=
      ContainsLIKE %...%
      InIN
      BetweenBETWEEN
      StartsWithLIKE …%
      EndsWithLIKE %...

      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"
      }

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