175 lines
5.9 KiB
JavaScript
175 lines
5.9 KiB
JavaScript
/*+***********************************************************************************
|
|
* 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);
|
|
})
|
|
}
|
|
|
|
}); |