[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/Settings/Vtiger/resources/ -> Tax.js (source)

   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  })


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1