[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 /*+*********************************************************************************** 2 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 3 * ("License"); You may not use this file except in compliance with the License 4 * The Original Code is: vtiger CRM Open Source 5 * The Initial Developer of the Original Code is vtiger. 6 * Portions created by vtiger are Copyright (C) vtiger. 7 * All Rights Reserved. 8 *************************************************************************************/ 9 10 jQuery.Class("Settings_Vtiger_Tax_Js",{},{ 11 12 //Stored history of TaxName and duplicate check result 13 duplicateCheckCache : {}, 14 15 /** 16 * This function will show the model for Add/Edit tax 17 */ 18 editTax : function(url, currentTrElement) { 19 var aDeferred = jQuery.Deferred(); 20 var thisInstance = this; 21 22 var progressIndicatorElement = jQuery.progressIndicator({ 23 'position' : 'html', 24 'blockInfo' : { 25 'enabled' : true 26 } 27 }); 28 29 AppConnector.request(url).then( 30 function(data) { 31 var callBackFunction = function(data) { 32 //cache should be empty when modal opened 33 thisInstance.duplicateCheckCache = {}; 34 var form = jQuery('#editTax'); 35 36 var params = app.validationEngineOptions; 37 params.onValidationComplete = function(form, valid){ 38 if(valid) { 39 thisInstance.saveTaxDetails(form, currentTrElement); 40 return valid; 41 } 42 } 43 form.validationEngine(params); 44 45 form.submit(function(e) { 46 e.preventDefault(); 47 }) 48 } 49 50 progressIndicatorElement.progressIndicator({'mode':'hide'}); 51 app.showModalWindow(data,function(data){ 52 if(typeof callBackFunction == 'function'){ 53 callBackFunction(data); 54 } 55 }, {'width':'500px'}); 56 }, 57 function(error) { 58 //TODO : Handle error 59 aDeferred.reject(error); 60 } 61 ); 62 return aDeferred.promise(); 63 }, 64 65 /* 66 * Function to Save the Tax Details 67 */ 68 saveTaxDetails : function(form, currentTrElement) { 69 var thisInstance = this; 70 var params = form.serializeFormData(); 71 72 if(typeof params == 'undefined' ) { 73 params = {}; 74 } 75 thisInstance.validateTaxName(params).then( 76 function(data) { 77 var progressIndicatorElement = jQuery.progressIndicator({ 78 'position' : 'html', 79 'blockInfo' : { 80 'enabled' : true 81 } 82 }); 83 84 params.module = app.getModuleName(); 85 params.parent = app.getParentModuleName(); 86 params.action = 'TaxAjax'; 87 AppConnector.request(params).then( 88 function(data) { 89 progressIndicatorElement.progressIndicator({'mode':'hide'}); 90 app.hideModalWindow(); 91 //Adding or update the tax details in the list 92 if(form.find('.addTaxView').val() == "true") { 93 thisInstance.addTaxDetails(data['result']); 94 } else { 95 thisInstance.updateTaxDetails(data['result'], currentTrElement); 96 } 97 //show notification after tax details saved 98 var params = { 99 text: app.vtranslate('JS_TAX_SAVED_SUCCESSFULLY') 100 }; 101 Settings_Vtiger_Index_Js.showMessage(params); 102 } 103 ); 104 }, 105 function(data,err) { 106 } 107 ); 108 }, 109 110 /* 111 * Function to add the Tax Details in the list after saving 112 */ 113 addTaxDetails : function(details) { 114 var container = jQuery('#TaxCalculationsContainer'); 115 116 //Based on tax type, we will add the tax details row 117 if(details.type == '0') { 118 var taxTable = jQuery('.inventoryTaxTable', container); 119 } else { 120 var taxTable = jQuery('.shippingTaxTable', container); 121 } 122 123 var trElementForTax = 124 jQuery('<tr class="opacity" data-taxid="'+details.taxid+'" data-taxtype="'+details.type+'">\n\ 125 <td style="border-left: none;" class="textAlignCenter '+details.row_type+'"><label class="taxLabel">'+details.taxlabel+'</label></td>\n\ 126 <td style="border-left: none;" class="textAlignCenter '+details.row_type+'"><span class="taxPercentage">'+details.percentage+'%</span></td>\n\ 127 <td style="border-left: none;" class="textAlignCenter '+details.row_type+'"><input class="editTaxStatus" type="checkbox" checked>\n\ 128 <div class="pull-right actions">\n\ 129 <a class="editTax cursorPointer" data-url="'+details._editurl+'">\n\ 130 <i class="icon-pencil alignBottom" title="'+app.vtranslate('JS_EDIT')+'"></i>\n\ 131 </a>\n\ 132 </div>\n\ 133 </td></tr>'); 134 taxTable.append(trElementForTax); 135 }, 136 137 /* 138 * Function to update the tax details in the list after edit 139 */ 140 updateTaxDetails : function(data, currentTrElement) { 141 currentTrElement.find('.taxLabel').text(data['taxlabel']); 142 currentTrElement.find('.taxPercentage').text(data['percentage']+'%'); 143 if(data['deleted'] == '0') { 144 currentTrElement.find('.editTaxStatus').attr('checked', 'true'); 145 } else { 146 currentTrElement.find('.editTaxStatus').removeAttr('checked'); 147 } 148 }, 149 150 /* 151 * Function to validate the TaxName to avoid duplicates 152 */ 153 validateTaxName : function(data) { 154 var thisInstance = this; 155 var aDeferred = jQuery.Deferred(); 156 157 var taxName = data.taxlabel; 158 var form = jQuery('#editTax'); 159 var taxLabelElement = form.find('[name="taxlabel"]'); 160 161 if(!(taxName in thisInstance.duplicateCheckCache)) { 162 thisInstance.checkDuplicateName(data).then( 163 function(data){ 164 thisInstance.duplicateCheckCache[taxName] = data['success']; 165 aDeferred.resolve(); 166 }, 167 function(data, err){ 168 thisInstance.duplicateCheckCache[taxName] = data['success']; 169 thisInstance.duplicateCheckCache['message'] = data['message']; 170 taxLabelElement.validationEngine('showPrompt', data['message'] , 'error','bottomLeft',true); 171 aDeferred.reject(data); 172 } 173 ); 174 } else { 175 if(thisInstance.duplicateCheckCache[taxName] == true){ 176 var result = thisInstance.duplicateCheckCache['message']; 177 taxLabelElement.validationEngine('showPrompt', result , 'error','bottomLeft',true); 178 aDeferred.reject(); 179 } else { 180 aDeferred.resolve(); 181 } 182 } 183 return aDeferred.promise(); 184 }, 185 186 /* 187 * Function to check Duplication of Tax Name 188 */ 189 checkDuplicateName : function(details) { 190 var aDeferred = jQuery.Deferred(); 191 var taxName = details.taxlabel; 192 var taxId = details.taxid; 193 var moduleName = app.getModuleName(); 194 var params = { 195 'module' : moduleName, 196 'parent' : app.getParentModuleName(), 197 'action' : 'TaxAjax', 198 'mode' : 'checkDuplicateName', 199 'taxlabel' : taxName, 200 'taxid' : taxId, 201 'type' : details.type 202 } 203 204 AppConnector.request(params).then( 205 function(data) { 206 var response = data['result']; 207 var result = response['success']; 208 if(result == true) { 209 aDeferred.reject(response); 210 } else { 211 aDeferred.resolve(response); 212 } 213 }, 214 function(error,err){ 215 aDeferred.reject(); 216 } 217 ); 218 return aDeferred.promise(); 219 }, 220 221 /* 222 * Function to update tax status as enabled or disabled 223 */ 224 updateTaxStatus : function(currentTarget) { 225 var aDeferred = jQuery.Deferred(); 226 227 var currentTrElement = currentTarget.closest('tr'); 228 var taxId = currentTrElement.data('taxid'); 229 var taxType = currentTrElement.data('taxtype'); 230 var deleted = currentTarget.is(':checked') ? 0 : 1; 231 232 var progressIndicatorElement = jQuery.progressIndicator({ 233 'position' : 'html', 234 'blockInfo' : { 235 'enabled' : true 236 } 237 }); 238 239 var params = { 240 'module' : app.getModuleName(), 241 'parent' : app.getParentModuleName(), 242 'action' : 'TaxAjax', 243 'taxid' : taxId, 244 'type' : taxType, 245 'deleted' : deleted 246 } 247 248 AppConnector.request(params).then( 249 function(data) { 250 progressIndicatorElement.progressIndicator({'mode' : 'hide'}); 251 aDeferred.resolve(data); 252 }, 253 function(error,err) { 254 progressIndicatorElement.progressIndicator({'mode' : 'hide'}); 255 //TODO : Handle error 256 aDeferred.reject(error); 257 } 258 ); 259 return aDeferred.promise(); 260 }, 261 262 /* 263 * Function to register all actions in the Tax List 264 */ 265 registerActions : function() { 266 var thisInstance = this; 267 var container = jQuery('#TaxCalculationsContainer'); 268 269 //register click event for Add New Tax button 270 container.find('.addTax').click(function(e) { 271 var addTaxButton = jQuery(e.currentTarget); 272 var createTaxUrl = addTaxButton.data('url')+'&type='+addTaxButton.data('type'); 273 thisInstance.editTax(createTaxUrl); 274 }); 275 276 //register event for edit tax icon 277 container.on('click', '.editTax', function(e) { 278 var editTaxButton = jQuery(e.currentTarget); 279 var currentTrElement = editTaxButton.closest('tr'); 280 thisInstance.editTax(editTaxButton.data('url'), currentTrElement); 281 }); 282 283 //register event for checkbox to change the tax Status 284 container.on('click', '.editTaxStatus', function(e) { 285 var currentTarget = jQuery(e.currentTarget); 286 287 thisInstance.updateTaxStatus(currentTarget).then( 288 function(data){ 289 var params = {}; 290 if(currentTarget.is(':checked')) { 291 params.text = app.vtranslate('JS_TAX_ENABLED'); 292 } else { 293 params.text = app.vtranslate('JS_TAX_DISABLED'); 294 } 295 Settings_Vtiger_Index_Js.showMessage(params); 296 }, 297 function(error){ 298 //TODO: Handle Error 299 } 300 ); 301 }); 302 303 }, 304 305 registerEvents: function() { 306 this.registerActions(); 307 } 308 309 }); 310 311 jQuery(document).ready(function(e){ 312 var taxInstance = new Settings_Vtiger_Tax_Js(); 313 taxInstance.registerEvents(); 314 })
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |