/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License * The Original Code is: vtiger CRM Open Source * The Initial Developer of the Original Code is vtiger. * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. *************************************************************************************/ Vtiger_Detail_Js("Accounts_Detail_Js",{ //It stores the Account Hierarchy response data accountHierarchyResponseCache : {}, /* * function to trigger Account Hierarchy action * @param: Account Hierarchy Url. */ triggerAccountHierarchy : function(accountHierarchyUrl) { Accounts_Detail_Js.getAccountHierarchyResponseData(accountHierarchyUrl).then( function(data) { Accounts_Detail_Js.displayAccountHierarchyResponseData(data); } ); }, /* * function to get the AccountHierarchy response data */ getAccountHierarchyResponseData : function(params) { var aDeferred = jQuery.Deferred(); //Check in the cache if(!(jQuery.isEmptyObject(Accounts_Detail_Js.accountHierarchyResponseCache))) { aDeferred.resolve(Accounts_Detail_Js.accountHierarchyResponseCache); } else { AppConnector.request(params).then( function(data) { //store it in the cache, so that we dont do multiple request Accounts_Detail_Js.accountHierarchyResponseCache = data; aDeferred.resolve(Accounts_Detail_Js.accountHierarchyResponseCache); } ); } return aDeferred.promise(); }, /* * function to display the AccountHierarchy response data */ displayAccountHierarchyResponseData : function(data) { var callbackFunction = function(data) { app.showScrollBar(jQuery('#hierarchyScroll'), { height: '300px', railVisible: true, size: '6px' }); } app.showModalWindow(data, function(data){ if(typeof callbackFunction == 'function' && jQuery('#hierarchyScroll').height() > 300){ callbackFunction(data); } }); } },{ //Cache which will store account name and whether it is duplicate or not accountDuplicationCheckCache : {}, getDeleteMessageKey : function() { return 'LBL_RELATED_RECORD_DELETE_CONFIRMATION'; }, isAccountNameDuplicate : function(params) { var thisInstance = this; var accountName = params.accountName; var aDeferred = jQuery.Deferred(); var analyzeResponse = function(response){ if(response['success'] == true) { aDeferred.reject(response['message']); }else{ aDeferred.resolve(); } } if(accountName in thisInstance.accountDuplicationCheckCache) { analyzeResponse(thisInstance.accountDuplicationCheckCache[accountName]); }else{ Vtiger_Helper_Js.checkDuplicateName(params).then( function(response){ thisInstance.accountDuplicationCheckCache[accountName] = response; analyzeResponse(response); }, function(response) { thisInstance.accountDuplicationCheckCache[accountName] = response; analyzeResponse(response); } ); } return aDeferred.promise(); }, saveFieldValues : function (fieldDetailList) { var thisInstance = this; var targetFn = this._super; var fieldName = fieldDetailList.field; if(fieldName != 'accountname') { return targetFn.call(thisInstance, fieldDetailList); } var aDeferred = jQuery.Deferred(); fieldDetailList.accountName = fieldDetailList.value; fieldDetailList.recordId = this.getRecordId(); this.isAccountNameDuplicate(fieldDetailList).then( function() { targetFn.call(thisInstance, fieldDetailList).then( function(data){ aDeferred.resolve(data); },function() { aDeferred.reject(); } ); }, function(message) { var form = thisInstance.getForm(); var params = { title: app.vtranslate('JS_DUPLICATE_RECORD'), text: app.vtranslate(message), width: '35%' }; Vtiger_Helper_Js.showPnotify(params); form.find('[name="accountname"]').closest('td.fieldValue').trigger('click'); aDeferred.reject(); } ) return aDeferred.promise(); }, /** * Function to register event for adding related record for module */ registerEventForAddingRelatedRecord : function(){ var thisInstance = this; var detailContentsHolder = this.getContentHolder(); detailContentsHolder.on('click','[name="addButton"]',function(e){ var element = jQuery(e.currentTarget); var selectedTabElement = thisInstance.getSelectedTab(); var relatedModuleName = thisInstance.getRelatedModuleName(); var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ relatedModuleName +'"]'); if(quickCreateNode.length <= 0) { window.location.href = element.data('url'); return; } var relatedController = new Vtiger_RelatedList_Js(thisInstance.getRecordId(), app.getModuleName(), selectedTabElement, relatedModuleName); var postPopupViewController = function() { var instance = new Contacts_Edit_Js(); var data = new Object; var container = jQuery("[name='QuickCreate']"); data.source_module = app.getModuleName(); data.record = thisInstance.getRecordId(); data.selectedName = container.find("[name='account_id_display']").val(); instance.referenceSelectionEventHandler(data,container); } if(relatedModuleName == 'Contacts') relatedController.addRelatedRecord(element , postPopupViewController); else relatedController.addRelatedRecord(element); }) } });