Setting up default filter for entity Account

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • greenbits
    Junior Member
    • Feb 2025
    • 4

    Setting up default filter for entity Account

    Hello,
    I have added the boolean field cHidden to the entity Account.
    In list view I only want to show accounts which are not hidden.
    I have added a primary filter to select only active records, but still all records are shown.
    What am I doing wrong?

    Following this post https://forum.espocrm.com/forum/deve...-espocrm-7-0-x I have setup the following:

    /custom/Espo/Custom/Select/Account/PrimaryFilters/Active.php
    PHP Code:
    <?php
    
    namespace Espo\Custom\Select\Account\PrimaryFilters;
    
    use Espo\Core\Select\Primary\Filter;
    use Espo\ORM\Query\SelectBuilder;
    
    class Active implements Filter
    {
    public function apply(SelectBuilder $queryBuilder): void
    {
    $queryBuilder->where([
    'cHidden' => false,
    ]);
    }
    }
    /custom/Espo/Custom/Resources/metadata/selectDefs/Account.json
    Code:
    {
    "primaryFilterClassNameMap": {
    "active": "Espo\\Custom\\Select\\Account\\PrimaryFilters\\Active"
    }
    }
    /custom/Espo/Custom/Resources/metadata/clientDefs/Account.json
    Code:
    {
    "filterList": [
    {
    "name": "active"
    }
    ]
    }
    /custom/Espo/Custom/Resources/i18n/de_DE/Account.json
    Code:
    {
    "presetFilters": {
    "active": "active"
    }
    }​



    Last edited by greenbits; Today, 10:42 AM.
  • ChrisSka83
    Senior Member
    • Apr 2023
    • 224

    #2
    Have you tried this?
    So with Classes

    PHP Code:
    namespace Espo\Custom\Classes\Select\Account\PrimaryFilters;

    Comment

    • ChrisSka83
      Senior Member
      • Apr 2023
      • 224

      #3
      I just saw that you have a different folder structure.
      Normally there is a Classes folder between custom\Espo\custom and Select.

      Click image for larger version

Name:	image.png
Views:	124
Size:	1.8 KB
ID:	114808

      Comment

      • greenbits
        Junior Member
        • Feb 2025
        • 4

        #4
        Yes, I tried this. I moved the filter to the directory /custom/Espo/Custom/Classes/Select/Account/PrimaryFilters/Active.php and changed the namespace. In /custom/Espo/Custom/Ressources/metadata/selectDefs/Account.json​ I adjusted the path, but the filter still does not work.

        Comment

        • radek
          Junior Member
          • Feb 2024
          • 10

          #5
          Could it be the double S in Ressources? Try "Resources" in your folder structure instead.

          Comment

          • greenbits
            Junior Member
            • Feb 2025
            • 4

            #6
            Sorry, that was a misspelling in my question. The folder name is Resources.

            Comment

            • greenbits
              Junior Member
              • Feb 2025
              • 4

              #7
              I finally managed to setup the default filter. This is how it works:


              /custom/Espo/Custom/Classes/Select/Account/PrimaryFilters/Active.php
              PHP Code:
              <?php
              namespace Espo\Custom\Classes\Select\Account\PrimaryFilters;
              use Espo\Core\Select\Primary\Filter;
              use Espo\ORM\Query\SelectBuilder;
              class Active implements Filter
              {
                  public function apply(SelectBuilder $queryBuilder): void
                  {
                      $queryBuilder->where([
                          'cHidden' => false,
                      ]);
                  }
              }

              /custom/Espo/Custom/Classes/Select/Account/PrimaryFilters/Inactive.php​​
              PHP Code:
              <?php
              namespace Espo\Custom\Classes\Select\Account\PrimaryFilters;
              use Espo\Core\Select\Primary\Filter;
              use Espo\ORM\Query\SelectBuilder;
              
              class Inactive implements Filter
              {
                  public function apply(SelectBuilder $queryBuilder): void
                  {
                      $queryBuilder->where([
                          'cHidden' => true,
                      ]);
                  }
              }​​

              /custom/Espo/Custom/Resources/metadata/selectDefs/Account.json
              Code:
              {
                "primaryFilterClassNameMap": {
                  "active": "Espo\\Custom\\Classes\\Select\\Account\\PrimaryFilters\\Active",
                  "inactive": "Espo\\Custom\\Classes\\Select\\Account\\PrimaryFilters\\Inactive"
                }
              }​​

              /custom/Espo/Custom/Resources/metadata/clientDefs/Account.json
              Code:
              {
                "defaultFilterData": {
                  "primary": "active"
                },
                "selectDefaultFilters": {
                  "filter": "active"
                },
                "filterList":[
                  {
                    "name":"active"
                  },
                  {
                    "name":"inactive"
                  }
                ]
              }​​
              There is no need to edit /custom/Espo/Custom/Resources/i18n/de_DE/Account.json​.

              Comment

              Working...