[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/SalesOrder/resources/ -> Detail.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_Detail_Js("SalesOrder_Detail_Js",{},{
  11      
  12      /**
  13       * Function to register recordpresave event
  14       */
  15      registerRecordPreSaveEvent : function(form){
  16          if(typeof form == 'undefined') {
  17              form = this.getForm();
  18          }
  19  
  20          var fieldsForRecurrence = new Array("start_period","end_period","recurring_frequency","payment_duration","invoicestatus");
  21          form.on(this.fieldPreSave,'[name="enable_recurring"]', function(e) {
  22              var currentElement = jQuery(e.currentTarget);
  23              jQuery(fieldsForRecurrence).each(function(key,value){
  24                  var relatedFieldSavedValue = form.find('[value="'+value+'"]').data('prevValue');
  25                  if((currentElement.is(':checked')) && (relatedFieldSavedValue == '')){
  26                  form.removeData('submit');
  27                  e.preventDefault();
  28              }
  29              });
  30          })
  31      },
  32      
  33      /**
  34       * Function to register event for enabling recurrence
  35       * When recurrence is enabled some of the fields need
  36       * to be check for mandatory validation
  37       */
  38      registerEventForEnablingRecurrence : function(){
  39          var thisInstance = this;
  40          var form = this.getForm();
  41          var enableRecurrenceField = form.find('[name="enable_recurring"]');
  42          var fieldsForValidation = new Array('recurring_frequency','start_period','end_period','payment_duration','invoicestatus');
  43          enableRecurrenceField.on('change',function(e){
  44              var element = jQuery(e.currentTarget);
  45              var addValidation;
  46              if(element.is(':checked')){
  47                  addValidation = true;
  48              }else{
  49                  addValidation = false;
  50              }
  51              if(addValidation){
  52                  form.validationEngine('detach');
  53                  thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,addValidation);
  54                  form.validationEngine(app.validationEngineOptions);
  55                  jQuery(fieldsForValidation).each(function(key,value){
  56                      form.find('[name="'+value+'"]').trigger('click');
  57                  });
  58              }else{
  59                  thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,addValidation);
  60              }
  61          })
  62          if(!enableRecurrenceField.is(":checked")){
  63              thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,false);
  64          }else if(enableRecurrenceField.is(":checked")){
  65              thisInstance.AddOrRemoveRequiredValidation(fieldsForValidation,true);
  66          }
  67      },
  68      
  69      /**
  70       * Function to add or remove required validation for dependent fields
  71       */
  72      AddOrRemoveRequiredValidation : function(dependentFieldsForValidation,addValidation){
  73          var form = this.getForm();
  74          jQuery(dependentFieldsForValidation).each(function(key,value){
  75              var relatedField = form.find('[name="'+value+'"]');
  76              if(addValidation){
  77                  var validationValue = relatedField.attr('data-validation-engine');
  78                  if(validationValue.indexOf('[f') > 0){
  79                      relatedField.attr('data-validation-engine','validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]');
  80                  }
  81                  if(relatedField.is("select")){
  82                      relatedField.attr('disabled',false).trigger("liszt:updated");
  83                  }else{
  84                      relatedField.removeAttr('disabled');
  85                  }
  86              }else if(!addValidation){
  87                  if(relatedField.is("select")){
  88                      relatedField.attr('disabled',true).trigger("liszt:updated");
  89                  }else{
  90                      relatedField.attr('disabled','disabled');
  91                  }
  92                  relatedField.closest('td').find('.edit').addClass('hide');
  93              }
  94          })
  95      },
  96      
  97      getCustomFieldNameValueMap : function(fieldNameValueMap){
  98          var fieldName = fieldNameValueMap['field'];
  99          if(fieldName == "enable_recurring"){
 100              var fieldsForValidation = new Array('recurring_frequency','start_period','end_period','payment_duration','invoicestatus');
 101              var form = this.getForm();
 102              jQuery(fieldsForValidation).each(function(key,value){
 103                  var relatedFieldSavedValue = jQuery('[value="'+value+'"]',form).data('prevValue');
 104                  fieldNameValueMap[value] = relatedFieldSavedValue;
 105              })
 106          }
 107          return fieldNameValueMap;
 108      },
 109      
 110      /**
 111      * Function which will regiter all events for this page
 112      */
 113      registerEvents : function(){
 114          this._super();
 115          var form = this.getForm();
 116          this.registerRecordPreSaveEvent(form);
 117          this.registerEventForEnablingRecurrence();
 118      }
 119  });


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