2017-03-08 1 views
0

Je souhaite filtrer la liste qui n'a pas d'e-mail et d'e-mail de désactivation non valides dans le module Lecteurs et Contacts utilisant l'API SugarCRM 7.Liste de filtres ne contenant pas d'e-mail et d'e-mail invalide utilisant l'API SugarCRM 7

J'ai ajouté le filtre d'email ci-dessous dans les arguments mais ne fonctionne pas. Comment envoyer un e-mail de filtrage via l'API de repos SugarCRM 7.x.

$filter_arguments = array(

      "filter" => array(

       array(
        "assigned_user_id" => 1, 
       ), 
       array(
        "email1" => array(
         array(
          'opt_out' => array(
           '$equals' => '' 
          ) 
         ) 
        ) 
       ), 
      ), 
     ); 
$url = $base_url . "/Contacts/filter"; 

Merci.

Répondre

1

Ce code beaucoup ne vous aidera pas s'il vous plaît vérifier:

Reference Link 1

Reference Link 2

L'exemple suivant démontrera comment ajouter un filtre prédéfini sur le module Comptes pour renvoyer tous les enregistrements avec un type de compte "Client" et secteur d'activité "Autre".

Pour créer un filtre prédéfini, créez une extension d'étiquette d'affichage au ./custom/Extension/modules/<module>/Ext/Language/. Pour cet exemple, nous allons créer:

./custom/Extension/modules/Accounts/Ext/Language/en_us.filterAccountByTypeAndIndustry.php 

<?php 

$mod_strings['LBL_FILTER_ACCOUNT_BY_TYPE_AND_INDUSTRY'] = 'Customer/Other Accounts'; 

Ensuite, créez un, nous allons créer l'extension de filtre personnalisé dans ./custom/Extension/modules/<module>/Ext/clients/base/filters/basic/.

Pour cet exemple,:

./custom/Extension/modules/Accounts/Ext/clients/base/filters/basic/filterAccountByTypeAndIndustry.php 

<?php 

$viewdefs['Accounts']['base']['filter']['basic']['filters'][] = array(
    'id' => 'filterAccountByTypeAndIndustry', 
    'name' => 'LBL_FILTER_ACCOUNT_BY_TYPE_AND_INDUSTRY', 
    'filter_definition' => array(
     array(
      'account_type' => array(
       '$in' => array(
        'Customer', 
       ), 
      ), 
     ), 
     array(
      'industry' => array(
       '$in' => array(
        'Other', 
       ), 
      ), 
     ), 
    ), 
    'editable' => false, 
    'is_template' => false, 
); 

Vous remarquerez que la Les options editable et is_template ont été définies sur "false". Si editable n'est pas défini sur "false", le filtre ne sera pas affiché dans la liste du filtre de vue liste. Pour finir, accédez à Admin> Réparer et cliquez sur "Réparation rapide et reconstruction" pour reconstruire les extensions et mettre le filtre prédéfini à la disposition des utilisateurs. Ajout de filtres initiaux aux recherches de recherche

Pour ajouter des filtres initiaux aux recherches d'enregistrements et aux recherches de type à suivre, définissez un modèle de filtre. Cela vous permettra de filtrer les résultats pour les utilisateurs lors de la recherche d'un enregistrement parent. L'exemple suivant montre comment ajouter un filtre initial pour la recherche de compte sur le module Contacts. Ce filtre initial limitera les enregistrements à un type de compte "Client" et à une valeur utilisateur attribuée dynamiquement, déterminée par l'utilisateur affecté du contact.

Pour ajouter un filtre initial à la vue d'enregistrement des contacts, créer une étiquette d'affichage pour le filtre à ./custom/Extension/modules/<module>/Ext/Language/. For this example , we will create:

./custom/Extension/modules/Accounts/Ext/Language/en_us.filterAccountTemplate.php 

<?php 

$mod_strings['LBL_FILTER_ACCOUNT_TEMPLATE'] = 'Customer Accounts By A Dynamic User'; 

Ensuite, créez une extension de filtre de modèle personnalisé dans ./custom/Extension/modules/<module>/Ext/clients/base/filters/basic/. Pour cet exemple, créez:

./custom/Extension/modules/Accounts/Ext/clients/base/filters/basic/filterAccountTemplate.php 

<?php 

$viewdefs['Accounts']['base']['filter']['basic']['filters'][] = array(
    'id' => 'filterAccountTemplate', 
    'name' => 'LBL_FILTER_ACCOUNT_TEMPLATE', 
    'filter_definition' => array(
     array(
      'account_type' => array(
       '$in' => array(), 
      ), 
     ), 
     array(
      'assigned_user_id' => '' 
     ) 
    ), 
    'editable' => true, 
    'is_template' => true, 
); 

Comme vous pouvez le voir, le filter_definition contient des tableaux pour ACCOUNT_TYPE et assigned_user_id. Ces définitions de filtre recevront leurs valeurs à partir des métadonnées de la vue d'enregistrement de contact. Vous devriez également noter que ce filtre a is_template et modifiable à "true". Ceci est requis pour les filtres initiaux.

Une fois le modèle de filtre en place, modifiez les métadonnées de la vue d'enregistrement de contact.Pour ce faire, modifiez ./custom/modules/Contacts/clients/base/views/record/record.php pour ajuster le champ account_name. Si ce fichier n'existe pas dans votre installation Sugar locale, accédez à Admin> Studio> Contacts> Layouts> Record View et cliquez sur "Save & Deploy" pour le générer. Dans ce fichier, identifier le réseau panel_body comme indiqué ci-dessous:

1 => 
array (
    'name' => 'panel_body', 
    'label' => 'LBL_RECORD_BODY', 
    'columns' => 2, 
    'labelsOnTop' => true, 
    'placeholders' => true, 
    'newTab' => false, 
    'panelDefault' => 'expanded', 
    'fields' => 
    array (
     0 => 'title', 
     1 => 'phone_mobile', 
     2 => 'department', 
     3 => 'do_not_call', 
     4 => 'account_name', 
     5 => 'email', 
    ), 
), 

Ensuite, modifier le champ account_name pour contenir les paramètres de filtre initiales.

1 => 
array (
    'name' => 'panel_body', 
    'label' => 'LBL_RECORD_BODY', 
    'columns' => 2, 
    'labelsOnTop' => true, 
    'placeholders' => true, 
    'newTab' => false, 
    'panelDefault' => 'expanded', 
    'fields' => 
    array (
     0 => 'title', 
     1 => 'phone_mobile', 
     2 => 'department', 
     3 => 'do_not_call', 
     4 => array (
      //field name 
      'name' => 'account_name', 

      //the name of the filter template 
      'initial_filter' => 'filterAccountTemplate', 

      //the display label for users 
      'initial_filter_label' => 'LBL_FILTER_ACCOUNT_TEMPLATE', 



    //the hardcoded filters to pass to the templates filter definition 
      'filter_populate' => array(
       'account_type' => array('Customer') 
      ), 

      //the dynamic filters to pass to the templates filter definition 
      //please note the index of the array will be for the field the data is being pulled from 
      'filter_relate' => array(
       //'field_to_pull_data_from' => 'field_to_populate_data_to' 
       'assigned_user_id' => 'assigned_user_id', 
      ) 
     ), 
     5 => 'email', 
    ), 
), 

Enfin, accédez à Admin> Réparer et cliquez sur "Réparation rapide et Reconstruire". Cela va reconstruire les extensions et rendre le filtre initial disponible pour les utilisateurs lors de la sélection d'un compte parent pour un contact. Ajout de filtres initiaux à Tiroirs à partir d'un contrôleur

Lorsque vous créez vos propres vues, vous devrez peut-être filtrer un tiroir appelé à partir de votre contrôleur personnalisé. L'utilisation d'un filtre initial, comme décrit dans les Ajout de filtres initiaux Lookup section recherches, nous pouvons filtrer un tiroir avec des valeurs prédéfinies en créant un objet filtre et peuplant la propriété config.filter_populate comme indiqué ci-dessous:

//create filter 
var filterOptions = new app.utils.FilterOptions() 
    .config({ 
     'initial_filter': 'filterAccountTemplate', 
     'initial_filter_label': 'LBL_FILTER_ACCOUNT_TEMPLATE', 
     'filter_populate': { 
      'account_type': ['Customer'], 
      'assigned_user_id': 'seed_sally_id' 
     } 
    }) 
    .format(); 

//open drawer 
app.drawer.open({ 
    layout: 'selection-list', 
    context: { 
     module: 'Accounts', 
     filterOptions: filterOptions, 
     parent: this.context 
    } 
}); 

Pour créer un tiroir filtré avec des valeurs dynamiques, créer un objet de filtre et remplir la propriété config.filter_relate selon la méthode populateRelate comme indiqué ci-dessous:

//record to filter related fields by 
var contact = app.data.createBean('Contacts', { 
    'first_name': 'John', 
    'last_name': 'Smith',  
    'assigned_user_id': 'seed_sally_id' 
}); 

//create filter 
var filterOptions = new app.utils.FilterOptions() 
    .config({ 
     'initial_filter': 'filterAccountTemplate', 
     'initial_filter_label': 'LBL_FILTER_ACCOUNT_TEMPLATE', 
     'filter_populate': { 
      'account_type': ['Customer'], 
     }, 
     'filter_relate': { 
      'assigned_user_id': 'assigned_user_id' 
     } 
    }) 
    .populateRelate(contact) 
    .format(); 

//open drawer 
app.drawer.open({ 
    layout: 'selection-list', 
    context: { 
     module: 'Accounts', 
     filterOptions: filterOptions, 
     parent: this.context 
    } 
}); 
+0

Merci pour la réponse. –

+0

Si son aide vous s'il vous plaît upvote et accepte la réponse. –