[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/SalesOrder/resources/ -> Edit.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  Inventory_Edit_Js("SalesOrder_Edit_Js",{},{
  11      
  12      /**
  13       * Function which will register event for Reference Fields Selection
  14       */
  15      registerReferenceSelectionEvent : function(container) {
  16          this._super(container);
  17          var thisInstance = this;
  18          
  19          jQuery('input[name="account_id"]', container).on(Vtiger_Edit_Js.referenceSelectionEvent, function(e, data){
  20              thisInstance.referenceSelectionEventHandler(data, container);
  21          });
  22      },
  23  
  24      /**
  25       * Function to get popup params
  26       */
  27      getPopUpParams : function(container) {
  28          var params = this._super(container);
  29          var sourceFieldElement = jQuery('input[class="sourceField"]',container);
  30  
  31          if(sourceFieldElement.attr('name') == 'contact_id' || sourceFieldElement.attr('name') == 'potential_id') {
  32              var form = this.getForm();
  33              var parentIdElement  = form.find('[name="account_id"]');
  34              if(parentIdElement.length > 0 && parentIdElement.val().length > 0 && parentIdElement.val() != 0) {
  35                  var closestContainer = parentIdElement.closest('td');
  36                  params['related_parent_id'] = parentIdElement.val();
  37                  params['related_parent_module'] = closestContainer.find('[name="popupReferenceModule"]').val();
  38              } else if(sourceFieldElement.attr('name') == 'potential_id') {
  39                  parentIdElement  = form.find('[name="contact_id"]');
  40                  if(parentIdElement.length > 0 && parentIdElement.val().length > 0) {
  41                      closestContainer = parentIdElement.closest('td');
  42                      params['related_parent_id'] = parentIdElement.val();
  43                      params['related_parent_module'] = closestContainer.find('[name="popupReferenceModule"]').val();
  44                  }
  45              }
  46          }
  47          return params;
  48      },
  49  
  50      /**
  51       * Function to search module names
  52       */
  53      searchModuleNames : function(params) {
  54          var aDeferred = jQuery.Deferred();
  55  
  56          if(typeof params.module == 'undefined') {
  57              params.module = app.getModuleName();
  58          }
  59          if(typeof params.action == 'undefined') {
  60              params.action = 'BasicAjax';
  61          }
  62  
  63          if (params.search_module == 'Contacts' || params.search_module == 'Potentials') {
  64              var form = this.getForm();
  65              var parentIdElement  = form.find('[name="account_id"]');
  66              if(parentIdElement.length > 0 && parentIdElement.val().length > 0) {
  67                  var closestContainer = parentIdElement.closest('td');
  68                  params.parent_id = parentIdElement.val();
  69                  params.parent_module = closestContainer.find('[name="popupReferenceModule"]').val();
  70              } else if(params.search_module == 'Potentials') {
  71                  parentIdElement  = form.find('[name="contact_id"]');
  72                  if(parentIdElement.length > 0 && parentIdElement.val().length > 0) {
  73                      closestContainer = parentIdElement.closest('td');
  74                      params.parent_id = parentIdElement.val();
  75                      params.parent_module = closestContainer.find('[name="popupReferenceModule"]').val();
  76                  }
  77              }
  78          }
  79  
  80          AppConnector.request(params).then(
  81              function(data){
  82                  aDeferred.resolve(data);
  83              },
  84              function(error){
  85                  aDeferred.reject();
  86              }
  87          )
  88          return aDeferred.promise();
  89      },
  90      
  91      /**
  92       * Function to register event for enabling recurrence
  93       * When recurrence is enabled some of the fields need
  94       * to be check for mandatory validation
  95       */
  96      registerEventForEnablingRecurrence : function(){
  97          var thisInstance = this;
  98          var form = this.getForm();
  99          var enableRecurrenceField = form.find('[name="enable_recurring"]');
 100          var fieldsForValidation = new Array('recurring_frequency','start_period','end_period','payment_duration','invoicestatus');
 101          enableRecurrenceField.on('change',function(e){
 102              var element = jQuery(e.currentTarget);
 103              var addValidation;
 104              if(element.is(':checked')){
 105                  addValidation = true;
 106              }else{
 107                  addValidation = false;
 108              }
 109              
 110              //If validation need to be added for new elements,then we need to detach and attach validation
 111              //to form
 112              if(addValidation){
 113                  form.validationEngine('detach');
 114                  thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,addValidation);
 115                  //For attaching validation back we are using not using attach,because chosen select validation will be missed
 116                  form.validationEngine(app.validationEngineOptions);
 117                  //As detach is used on form for detaching validationEngine,it will remove any actions on form submit,
 118                  //so events that are registered on form submit,need to be registered again after validationengine detach and attach
 119                  thisInstance.registerSubmitEvent();
 120              }else{
 121                  thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,addValidation);
 122              }
 123          })
 124          if(!enableRecurrenceField.is(":checked")){
 125              thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,false);
 126          }else if(enableRecurrenceField.is(":checked")){
 127              thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,true);
 128          }
 129      },
 130      
 131      /**
 132       * Function to add or remove required validation for dependent fields
 133       */
 134      AddOrRemoveRequiredValidation : function(dependentFieldsForValidation,addValidation){
 135          var form = this.getForm();
 136          jQuery(dependentFieldsForValidation).each(function(key,value){
 137              var relatedField = form.find('[name="'+value+'"]');
 138              if(addValidation){
 139                  var validationValue = relatedField.attr('data-validation-engine');
 140                  if(validationValue.indexOf('[f') > 0){
 141                      relatedField.attr('data-validation-engine','validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]');
 142                  }
 143                  if(relatedField.is("select")){
 144                      relatedField.attr('disabled',false).trigger("liszt:updated");
 145                  }else{
 146                      relatedField.removeAttr('disabled');
 147                  }
 148              }else if(!addValidation){
 149                  if(relatedField.is("select")){
 150                      relatedField.attr('disabled',true).trigger("liszt:updated");
 151                  }else{
 152                      relatedField.attr('disabled',"disabled");
 153                  }
 154                  relatedField.validationEngine('hide');
 155                  if(relatedField.is('select') && relatedField.hasClass('chzn-select')){
 156                      var parentTd = relatedField.closest('td');
 157                      parentTd.find('.chzn-container').validationEngine('hide');
 158                  }
 159              }
 160          })
 161      },
 162  
 163      registerEvents: function(){
 164          this._super();
 165          this.registerEventForEnablingRecurrence();
 166          this.registerForTogglingBillingandShippingAddress();
 167          this.registerEventForCopyAddress();
 168      }
 169  });
 170  
 171  


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