Question

How to get alert pop up if same email is used for two customers in lead section while qualifying lead.

Hi,

Team

We are trying to add one alert window in lead section. If the same email will be there for two leads in lead section means while qualifying the leads it have to through one alert like email is already been existed and not suppose to qualify.It is working fine (you can see in image 1 screenshot) for that we written some code in leadpagev2 .But what happening is if we try to clicking qualify with different emails it is not qualifying(qualify button is not performing any action). Will you please help on this issue.

Here the code:

define("LeadPageV2", ["BusinessRuleModule", "ConfigurationConstants", "BaseFiltersGenerateModule"],
        function(BusinessRuleModule, ConfigurationConstants, BaseFiltersGenerateModule) {
            return {
                entitySchemaName: "Lead",
                attributes: {
                    "EmployeesNumber": {
                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                        lookupListConfig: {
                            orders: [{columnPath: "Position"}]
                        }
                    },
                    "SalesOwner": {
                        dataValueType: Terrasoft.DataValueType.LOOKUP,
                        lookupListConfig: {filter: BaseFiltersGenerateModule.OwnerFilter}
                    }
                },
                details: /**SCHEMA_DETAILS*/{
                    Activities: {
                        schemaName: "ActivityDetailV2",
                        filter: {
                            detailColumn: "Lead"
                        },
                        defaultValues: {
                            Lead: {
                                masterColumn: "Id"
                            }
                        }
                    },
                    Calls: {
                        schemaName: "CallDetail",
                        filter: {
                            masterColumn: "Id",
                            detailColumn: "Lead"
                        }
                    },
                    Files: {
                        schemaName: "FileDetailV2",
                        entitySchemaName: "FileLead",
                        filter: {
                            detailColumn: "Lead"
                        }
                    },
                    QualifyStatusInLead: {
                        schemaName: "QualifyStatusInLeadDetailV2",
                        filter: {
                            masterColumn: "Id",
                            detailColumn: "Lead"
                        }
                    }
                }/**SCHEMA_DETAILS*/,
                methods: {

                    /**
                     * @inheritdoc Terrasoft.BasePageV2#getActions
                     * @overridden
                     */
                    getActions: function() {
                        var actionMenuItems = this.callParent(arguments);
                        var disqualifyMenuItems = this.Ext.create("Terrasoft.BaseViewModelCollection");
                        disqualifyMenuItems.addItem(this.getButtonMenuItem({
                            Caption: {bindTo: "Resources.Strings.DisqualifyLeadLost"},
                            Tag: "disqualifyLost"
                        }));
                        disqualifyMenuItems.addItem(this.getButtonMenuItem({
                            Caption: {bindTo: "Resources.Strings.DisqualifyLeadNoConnection"},
                            Tag: "disqualifyNoConnection"
                        }));
                        disqualifyMenuItems.addItem(this.getButtonMenuItem({
                            Caption: {bindTo: "Resources.Strings.DisqualifyLeadNotInterested"},
                            Tag: "disqualifyNotInterested"
                        }));
                        return actionMenuItems;
                    },

                    /**
                     * @inheritdoc Terrasoft.BasePageV2#save
                     * @overridden
                     */
                     checkRequiredActionColumns: function() {
var account = this.get("Account");
var contact = this.get("Contact");
if (!account && !contact) {
this.showInformationDialog(this.get("Resources.Strings.RequiredFieldsMessage"));
return false;
}

//var activeRow = this; //.getActiveRow();\

var recordEmail = this.get("Email");
var tempCount = 0;
                           var message = "";
                           if(recordEmail !== null && recordEmail !== "" && recordEmail !== undefined) 
                         {
                       var emailesq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
       rootSchemaName: "Lead"
      });

         emailesq.addColumn("Email", "Email");

           var esqEmailFilter = emailesq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 
"Email", recordEmail);

         emailesq.filters.add("esqFirstFilter", esqEmailFilter);

         emailesq.getEntityCollection(function (result) {
        if (!result.success) {
          this.showInformationDialog("Data query error");
          return false;
         }
       else{
       result.collection.each(function (item) {
           tempCount = tempCount + 1;
           if(tempCount > 1){
       message = message + "Email " + item.get("Email") + " already exists\n";
                                    if(message !== ""){
    this.showInformationDialog(message);
       return false;
                                   
                                   }
           }
           else{
               return true;
         }
   });
   
     }
}, this);

                    }
                    else{
                    return true;
                    }
                  
},
//return this.callParent(arguments);

                    /**
                     * Opens lead qualification page.
                     */
                    qualifyLead: function() {
                        var recordId = this.get("Id");
                        var token = "CardModuleV2/LeadQualificationPageV2/edit/" + recordId;
                        this.sandbox.publish("PushHistoryState", {hash: token});
                    },

                    /**
                     * Checks required parameters.
                     * @return {Boolean} Validation result.
                     */
            /*    checkRequiredActionColumns: function() {
                    
                    //    this.showInformationDialog("Test Alert");
                        var account = this.get("Account");
                        var contact = this.get("Contact");
                        if (!account && !contact) {
                            this.showInformationDialog(this.get("Resources.Strings.RequiredFieldsMessage"));
                            return false;
                        } 
                        return true;
                            //var activeRow = this; //.getActiveRow();\
                        
                    },/*

                    /**
                     * Saves lead.
                     */
                    saveLead: function() { 
                        this.showBodyMask();
                        if (!this.checkRequiredActionColumns()) {
                            this.hideBodyMask();
                            return;
                        }
                        this.saveEntity(this.qualifyLead, this);
                    },

                    /**
                     * Launches "Disqualify" action.
                     * @param {Guid} statusId Qualification status.
                     */
                    disqualifyLead: function(statusId) {
                        
                        if (!this.checkRequiredActionColumns()) {
                            return;
                        }
                        this.showConfirmationDialog(this.get("Resources.Strings.DisqualifyLeadActionMessage"),
                            function(returnCode) {
                                if (returnCode === this.Terrasoft.MessageBoxButtons.YES.returnCode) {
                                    this.loadLookupDisplayValue("Status", statusId);
                                }
                            }, ["yes", "no"]);
                    },

                    /**
                     * Launches "Disqualify" action with the "Lost" status.
                     */
                    disqualifyLost: function() {
                        this.disqualifyLead(ConfigurationConstants.Lead.Status.QualifiedAsLost);
                    },

                    /**
                     * Launches "Disqualify" action with the "No connection" status.
                     */
                    disqualifyNoConnection: function() {
                        this.disqualifyLead(ConfigurationConstants.Lead.Status.QualifiedAsNoConnection);
                    },

                    /**
                     * Launches "Disqualify" action with the "Not interested" status.
                     */
                    disqualifyNotInterested: function() {
                        this.disqualifyLead(ConfigurationConstants.Lead.Status.QualifiedAsNotInterested);
                    },

                    /**
                     * Updates links in the related activities.
                     * @param {String} linkColumnName Name of the column to be updated.
                     * @param {Guid} recordId Unique identifier.
                     */
                    updateActivitiesLink: function(linkColumnName, recordId) {
                        var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
                            rootSchemaName: "Activity"
                        });
                        esq.addColumn("Id");
                        esq.filters.add("LeadFilter",
                            esq.createColumnFilterWithParameter(
                                this.Terrasoft.ComparisonType.EQUAL, "Lead", this.get("Id")));
                        esq.getEntityCollection(function(result) {
                            var batchQuery = Ext.create("Terrasoft.BatchQuery");
                            var collection = result.collection;
                            collection.each(function(item) {
                                var activityId = item.get("Id");
                                var update = Ext.create("Terrasoft.UpdateQuery", {
                                    rootSchemaName: "Activity"
                                });
                                update.enablePrimaryColumnFilter(activityId);
                                update.setParameterValue(linkColumnName, recordId, this.Terrasoft.DataValueType.GUID);
                                batchQuery.add(update);
                            });
                            batchQuery.execute();
                        }, this);
                    },

                    /**
                     * @inheritdoc Terrasoft.BasePageV2#onEntityInitialized
                     * @overridden
                     */
                    onEntityInitialized: function() {
                        var account = this.get("Account");
                        if (this.Terrasoft.isGUID(account)) {
                            this.set("Account", null);
                            this.loadLookupDisplayValue("Account", account);
                        }
                        var contact = this.get("Contact");
                        if (this.Terrasoft.isGUID(contact)) {
                            this.set("Contact", null);
                            this.loadLookupDisplayValue("Contact", contact);
                        }
                        var queryParams = this.sandbox.publish("GetHistoryState");
                        if (queryParams) {
                            var createdmessage = "";
                            var queryParamsState = queryParams.state;
                            if (queryParamsState.Qualified) {
                                if (queryParamsState.contactName && queryParamsState.isContactQualifyAsNew) {
                                    createdmessage += Ext.String.format(this.get("Resources.Strings.CreatedContactMessage"),
                                        queryParamsState.contactName);
                                    queryParamsState.contactName = null;
                                }
                                if (queryParamsState.accountName && queryParamsState.isAccountQualifyAsNew) {
                                    if (createdmessage) {
                                        createdmessage += " ";
                                    }
                                    createdmessage += Ext.String.format(this.get("Resources.Strings.CreatedAccountMessage"),
                                        queryParamsState.accountName);
                                    queryParamsState.accountName = null;
                                }
                                if (createdmessage) {
                                    this.showInformationDialog(createdmessage);
                                }
                                if (queryParamsState.contactId) {
                                    this.updateActivitiesLink("Contact", queryParamsState.contactId);
                                }
                                if (queryParamsState.accountId) {
                                    this.updateActivitiesLink("Account", queryParamsState.accountId);
                                }
                                queryParamsState.Qualified = false;
                                var currentHash = queryParams.hash;
                                var newState = this.Terrasoft.deepClone(queryParams);
                                this.sandbox.publish("ReplaceHistoryState", {
                                    stateObj: newState,
                                    pageTitle: null,
                                    hash: currentHash.historyState,
                                    silent: true
                                });
                            }
                        }
                        this.callParent(arguments);
                    },

                    /**
                     * @inheritdoc Terrasoft.BaseModulePageV2#getFileEntitySchemaName
                     * @overridden
                     */
                    getFileEntitySchemaName: function() {
                        return "FileLead";
                    }
                },
                diff: /**SCHEMA_DIFF*/[
                ]/**SCHEMA_DIFF*/,
                rules: {
                
                }
            };
        });

 

Thanks&Regards,

PRAVEENKUMAR.N

Like 0

Like

2 comments

Hello Praveen,

It seems that the base logic was overridden incorrectly.
Please check your code for the missing calls of the base logic in the places where it was redefined. You can achieve it via this.callParent method.

Also, please debug your method that gets leads from the database via esq. You should be confident that window is showing only in way when there are more than one leads with same email.

Best regards,
Alex

Alex_Tim,

Tnx For Your Solution

Show all comments