Announcement

Collapse
No announcement yet.

Define accountRole as Enum instead of varchar

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Define accountRole as Enum instead of varchar

    Hi,

    I am trying to make accountRole (Title) as enum/drop down while linking an account.


    This didn't work...
    entityDefs/Contact.json

    Code:
    {
        "fields": {
            "accountRole": {
                "type": "enum",
                "required": true,
                "options": [
                    "",
                    "Type-A",
                    "Type-B",
                    "Type-C",
                    "Type-D"
                ],
                "notStorable": true,
                "layoutDetailDisabled": true,
                "layoutMassUpdateDisabled": true,
                "layoutFiltersDisabled": true,
                "exportDisabled": true,
                "importDisabled": true,
                "view": "crm:views/contact/fields/account-role"
            }
        }
    }
    I haven't made any changes in crm:views/contact/fields/account-role
    Last edited by theBuzzyCoder; 03-15-2018, 06:52 AM.

  • #2

    Hi, "view": "crm:views/contact/fields/account-role" this view extends varchar field view. Change the view
    check client/modules/crm/src/views/contact/fields/opportunity-role.js

    Comment


    • #3
      Thanks tanya .


      This is not working. Is there anything else I need to do other than clear_cache and rebuild

      espocrm/client/modules/crm/src/views/contact/fields/account-role.js

      Code:
      Espo.define('crm:views/contact/fields/account-role', 'views/fields/enum', function (Dep) {
      
          return Dep.extend({
      
              detailTemplate: 'crm:contact/fields/account-role/detail',
      
              listTemplate: 'crm:contact/fields/account-role/detail',
      
              setup: function () {
                  Dep.prototype.setup.call(this);
                  this.listenTo(this.model, 'change:title', function (model, value, o) {
                      this.model.set('accountRole', this.model.get('title'));
                  }, this);
              },
      
              getAttributeList: function () {
                  var list = Dep.prototype.getAttributeList.call(this);
                  list.push('title');
                  return list;
              },
      
              data: function () {
                  var data = Dep.prototype.data.call(this);
      
                  if (this.model.has('accountIsInactive')) {
                      data.accountIsInactive = this.model.get('accountIsInactive');
                  }
                  return data;
              }
          });
      
      });
      Contact.json

      Code:
      {
          "fields": {
               "accountRole": {
                  "type": "enum",
                  "notStorable": true,
                  "options": [
                          "",
                         "Type-A",
                         "Type-B",
                         "Type-C",
                         "Type-D"
                   ],
                  "layoutMassUpdateDisabled": true,
                  "layoutListDisabled": true,
                  "layoutDetailDisabled": true,
                  "view": "crm:views/contact/fields/account-role"
              }
          }
      }
      Is there any way to write this in custom folder. So that I don't modify the original source code
      Last edited by theBuzzyCoder; 03-16-2018, 10:06 AM.

      Comment


      • #4
        you have set temples... varchar templates

        Comment


        • #5
          Hi tanya ,

          This is what I have done. But still no use. Can you please tell me what exactly I have to change.

          And I have looked and tried implementation given in the documentation before asking here!

          Code:
          Espo.define('crm:views/contact/fields/account-role', 'views/fields/enum', function (Dep) {
          
              return Dep.extend({
          
                  setup: function () {
                      Dep.prototype.setup.call(this);
                      this.listenTo(this.model, 'change:title', function (model, value, o) {
                          this.model.set('accountRole', this.model.get('title'));
                      }, this);
                  },
          
                  getAttributeList: function () {
                      var list = Dep.prototype.getAttributeList.call(this);
                      list.push('title');
                      return list;
                  },
          
                  data: function () {
                      var data = Dep.prototype.data.call(this);
          
                      if (this.model.has('accountIsInactive')) {
                          data.accountIsInactive = this.model.get('accountIsInactive');
                      }
                      return data;
                  }
              });
          
          });
          Last edited by theBuzzyCoder; 03-16-2018, 10:56 AM.

          Comment


          • #6
            Hi tanya ,

            Any updates on this?

            Thanks in advance

            Comment


            • #7
              Hey theBuzzyCoder

              have managed to make it work, i am trying to do the same and want to use a dropdown to chose contact role when linking to an account but couldn't get it to work. Seems there is always a problem in the code. I was just wondering if you managed to make it work and if it would be ok for you to share how does it work.

              Many thanks

              Rabii
              Rabii
              Web Dev

              Comment

              Working...
              X