PATH:
home
/
letacommog
/
crmleta
/
layouts
/
v7
/
modules
/
Settings
/
Vtiger
/
resources
/*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.1 * ("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.Class("Settings_Vtiger_TaxIndex_Js",{ updateSelectElement : function(selectedRegions, skippedRegions, regionsElement){ var allRegions = jQuery('.taxRegionElements'); var prevSelectedRegions = regionsElement.val(); regionsElement.html(allRegions.clone().html()); for(var index in selectedRegions) { if (jQuery.inArray(selectedRegions[index], skippedRegions) == '-1') { regionsElement.find("option[value='"+selectedRegions[index]+"']").remove(); } } if(prevSelectedRegions) { regionsElement.select2("val", prevSelectedRegions); } } },{ init : function () { this.addModuleSpecificComponent('Index','Vtiger',app.getParentModuleName()); }, //Stored history of TaxName and duplicate check result duplicateCheckCache : {}, taxContainer : false, getContainer : function(){ if(this.taxContainer == false){ this.taxContainer = jQuery("#TaxCalculationsContainer"); } return this.taxContainer; }, /** * This function will show the model for Add/Edit tax */ editTax : function(url, currentTrElement) { var aDeferred = jQuery.Deferred(); var thisInstance = this; app.helper.showProgress(); app.request.post({url:url}).then( function(err,data) { app.helper.hideProgress(); if(err == null){ var callBackFunction = function(data) { //cache should be empty when modal opened thisInstance.duplicateCheckCache = {}; var form = jQuery('#editTax'); app.helper.showVerticalScroll(jQuery('#scrollContainer'), {setHeight:'80%'}); thisInstance.registerUpdateRegionsElementEvent(); jQuery('.regions').trigger('change'); form.find('#simple').click(function(e) { form.find('.compoundOnContainer').addClass('hide'); form.find('.dedcutedTaxDesc').addClass('hide'); form.find('.taxTypeContainer').removeClass('hide').show(); form.find('#compoundOn').select2('val', null); var container = form.find('.taxTypeContainer'); var taxType = jQuery(':checked', container).val(); if (taxType == 'Variable') { form.find('.taxValueContainer').addClass('hide'); form.find('.regionsContainer').removeClass('hide').show(); } }); form.find('#compound').click(function(e) { form.find('.dedcutedTaxDesc').addClass('hide'); form.find('.taxTypeContainer').removeClass('hide').show(); form.find('.compoundOnContainer').removeClass('hide').show(); var container = form.find('.taxTypeContainer'); var taxType = jQuery(':checked', container).val(); if (taxType == 'Variable') { form.find('.taxValueContainer').addClass('hide'); form.find('.regionsContainer').removeClass('hide').show(); } }); form.find('#deducted').click(function(e) { form.find('.compoundOnContainer').addClass('hide'); form.find('.taxTypeContainer').addClass('hide'); form.find('.regionsContainer').addClass('hide'); form.find('.dedcutedTaxDesc').removeClass('hide').show(); form.find('.taxValueContainer').removeClass('hide').show(); form.find('#compoundOn').select2('val', null); }); form.find('#fixed').click(function(e) { form.find('.regionsContainer').addClass('hide'); form.find('.taxValueContainer').removeClass('hide').show(); }); form.find('#variable').click(function(e) { form.find('.taxValueContainer').addClass('hide'); form.find('.regionsContainer').removeClass('hide').show(); }); form.on('click', '.deleteRow', function(e) { var element = jQuery(e.currentTarget); element.parent().parent().remove(); }); form.find('.addNewTaxBracket').click(function(e) { e.preventDefault(e); var taxRegionsTable = form.find('.regionsTable'); var taxRegionsCount = form.find('.regionsCount').val(); var widthHeight = form.find('#widthHeight').val(); var taxBracketBlock = jQuery('<tr>\n\ <td class="regionsList '+widthHeight+'">\n\ <div class="deleteRow close" style="float:left;margin-top:3px">×</div>  \n\ <select id="'+taxRegionsCount+'" data-placeholder="'+app.vtranslate('JS_SELECT_REGIONS')+'" name="regions['+taxRegionsCount+'][list]" class="regions select2 inputElement" multiple="" data-rule-required="true" style="width: 90%;">' +form.find('.taxRegionElements').html().toString()+'\n\ </select>\n\ </td>\n\ <td class="'+widthHeight+'" style="text-align: center;">\n\ <input class="inputElement" type="text" name="regions['+taxRegionsCount+'][value]" class="input-medium" value="" data-rule-required="true" data-rule-inventory_percentage="true" />\n\ </td>\n\ </tr>'); var selectedRegions = []; var regionElements = jQuery('.regionsTable select.regions'); jQuery.each(regionElements, function(index, element) { var selectedValues = jQuery(element).val(); if (jQuery.isArray(selectedValues)) { for (var i=0; i<selectedValues.length; i++) { selectedRegions.push(selectedValues[i]); } } }); for(var index in selectedRegions) { taxBracketBlock.find("option[value='"+selectedRegions[index]+"']").remove(); } form.find('.regionsCount').val(parseInt (taxRegionsCount) + 1); taxRegionsTable.append(taxBracketBlock); vtUtils.showSelect2ElementView(taxRegionsTable.find('tr:last td.regionsList select.select2')); }); var params = { submitHandler : function(form){ var form = jQuery(form); thisInstance.saveTaxDetails(form, currentTrElement); } } form.vtValidate(params); form.submit(function(e) { e.preventDefault(); }) } app.helper.showModal(data, {cb:callBackFunction}); } } ); return aDeferred.promise(); }, /* * Function to check Duplication of Tax Name */ checkDuplicateTaxName : function(details) { var aDeferred = jQuery.Deferred(); var taxName = details.taxlabel; var taxId = details.taxid; var moduleName = app.getModuleName(); var params = { 'module' : moduleName, 'parent' : app.getParentModuleName(), 'action' : 'TaxAjax', 'mode' : 'checkDuplicateTaxName', 'taxlabel' : taxName, 'taxid' : taxId, 'type' : details.type } app.request.post({data:params}).then(function(err,data) { if(err == null){ var result = data['success']; if(result == true) { aDeferred.reject(data); } else { aDeferred.resolve(data); } } else { aDeferred.reject(); } }); return aDeferred.promise(); }, /* * Function to validate the TaxName to avoid duplicates */ validateTaxName : function(data) { var thisInstance = this; var aDeferred = jQuery.Deferred(); var taxName = data.taxlabel; var form = jQuery('#editTax'); var taxLabelElement = form.find('[name="taxlabel"]'); if(!(taxName in thisInstance.duplicateCheckCache)) { thisInstance.checkDuplicateTaxName(data).then( function(data){ thisInstance.duplicateCheckCache[taxName] = data['success']; aDeferred.resolve(); }, function(data, err){ thisInstance.duplicateCheckCache[taxName] = data['success']; thisInstance.duplicateCheckCache['message'] = data['message']; aDeferred.reject(data); } ); } else { if(thisInstance.duplicateCheckCache[taxName] == true){ var result = thisInstance.duplicateCheckCache['message']; aDeferred.reject(); } else { aDeferred.resolve(); } } return aDeferred.promise(); }, /* * Function to Save the Tax Details */ saveTaxDetails : function(form, currentTrElement) { var thisInstance = this; var params = form.serializeFormData(); if(typeof params == 'undefined' ) { params = {}; } thisInstance.validateTaxName(params).then( function(data) { app.helper.showProgress(); params.module = app.getModuleName(); params.parent = app.getParentModuleName(); params.action = 'TaxAjax'; app.request.post({data:params}).then( function(err,data) { app.helper.hideModal(); app.helper.hideProgress(); //Adding or update the tax details in the list if(form.find('[name="taxid"]').val() == "") { thisInstance.addTaxDetails(data); } else { thisInstance.updateTaxDetails(data, currentTrElement); } //show notification after tax details saved var params = { message: app.vtranslate('JS_TAX_SAVED_SUCCESSFULLY') }; app.helper.showSuccessNotification(params); } ); }, function(err){ app.helper.hideModal(); app.helper.showErrorNotification({"message":err["message"]}); } ); }, addTaxDetails : function(details) { var container = this.getContainer(); //Based on tax type, we will add the tax details row if(details.type == '0') { var taxTable = jQuery('.inventoryTaxTable', container); } else { var taxTable = jQuery('.shippingTaxTable', container); } var isChecked = ''; if (details.deleted != 1) { isChecked = 'checked'; } var trElementForTax = jQuery('<tr class="opacity" data-taxid="'+details.taxid+'" data-taxtype="'+details.type+'">\n\ <td style="border-left: none;border-right: none;" '+details.row_type+'"><span class="taxLabel">'+details.taxlabel+'</span></td>\n\ <td style="border-left: none;border-right: none;" '+details.row_type+'"><span class="taxType">'+details.taxType+'</span></td>\n\ <td style="border-left: none;border-right: none;" '+details.row_type+'"><span class="taxMethod">'+details.method+'</span></td>\n\ <td style="border-left: none;border-right: none;" '+details.row_type+'"><span class="taxPercentage">'+details.percentage+'%</span></td>\n\ <td style="border-left: none;border-right: none;" '+details.row_type+'"><input class="editTaxStatus" type="checkbox" '+isChecked+' >\n\ </td><td style="border-left: none;border-right: none;">\n\ <div class="pull-right actions">\n\ <a class="editTax cursorPointer" data-url="'+details._editurl+'">\n\ <i class="fa fa-pencil alignMiddle" title="'+app.vtranslate('JS_EDIT')+'"></i>\n\ </a>\n\ </div>\n\</td></tr>'); taxTable.append(trElementForTax); }, /* * Function to update the tax details in the list after edit */ updateTaxDetails : function(data, currentTrElement) { currentTrElement.find('.taxLabel').text(data['taxlabel']); currentTrElement.find('.taxPercentage').text(data['percentage']+'%'); currentTrElement.find('.taxType').text(data['taxType']); currentTrElement.find('.taxMethod').text(data['method']); if(data['deleted'] == '0') { currentTrElement.find('.editTaxStatus').attr('checked', 'true'); } else { currentTrElement.find('.editTaxStatus').removeAttr('checked'); } }, /** * Function to register the click event for charges list tab */ registerChargesClickEvent : function() { var thisInstance = this; var taxContainer = this.getContainer(); var contents = taxContainer.find('.contents'); var relatedContainer = contents.find('#charges'); var relatedTab = contents.find('.chargesTab'); relatedTab.click(function() { if(relatedContainer.find('.chargesContainer').length > 0) { } else { var params = {}; params['module'] = app.getModuleName(); params['parent'] = app.getParentModuleName(); params['view'] = 'TaxIndex'; params['mode'] = 'showChargesAndItsTaxes'; app.request.post({data:params}).then(function(err,data) { relatedContainer.html(data); if(contents.find('.chargesContainer').length > 0) { contents.find('.addCharge').click(function(e) { var addChargeButton = jQuery(e.currentTarget); thisInstance.editCharge(addChargeButton.data('url')); }); contents.on('click', '.editCharge', function(e) { var editChargeButton = jQuery(e.currentTarget); var currentTrElement = editChargeButton.closest('tr'); thisInstance.editCharge(editChargeButton.data('url'), currentTrElement); }); contents.find('.addChargeTax').click(function(e) { var addTaxButton = jQuery(e.currentTarget); var createTaxUrl = addTaxButton.data('url')+'&type='+addTaxButton.data('type'); thisInstance.editTax(createTaxUrl); }); contents.on('click', '.editChargeTax', function(e) { var editTaxButton = jQuery(e.currentTarget); var currentTrElement = editTaxButton.closest('tr'); thisInstance.editTax(editTaxButton.data('url'), currentTrElement); }); } }); } }); }, editCharge : function(url, currentTrElement) { var aDeferred = jQuery.Deferred(); var thisInstance = this; app.helper.showProgress(); app.request.post({url:url}).then( function(err,data) { var callBackFunction = function(data) { //cache should be empty when modal opened thisInstance.duplicateCheckCache = {}; var form = jQuery('#editCharge'); thisInstance.registerUpdateRegionsElementEvent(); jQuery('.regions').trigger('change'); var container = jQuery('#scrollContainer'); form.find('#flat').click(function(e) { form.find('.percentIcon').addClass('hide'); jQuery('[name="value"]', container).data('ruleInventory_percentage',false).data('rulePositivenumber',true); jQuery('[name="defaultValue"]', container).data('ruleInventory_percentage',false).data('rulePositivenumber',true); var valuesObjsList = jQuery('.valuesList', container); jQuery.each(valuesObjsList, function(index, element) { jQuery(element).data('ruleInventory_percentage',false).data('rulePositivenumber',true); }); }); form.find('#percent').click(function(e) { form.find('.percentIcon').removeClass('hide'); jQuery('[name="value"]', container).data('ruleInventory_percentage',true).data('rulePositivenumber',true); jQuery('[name="defaultValue"]', container).data('ruleInventory_percentage',true).data('rulePositivenumber',true); var valuesObjsList = jQuery('.valuesList', container); jQuery.each(valuesObjsList, function(index, element) { jQuery(element).data('ruleInventory_percentage',true).data('rulePositivenumber',true); }); }); form.find('#fixed').click(function(e) { form.find('.regionsContainer').addClass('hide'); form.find('.chargeValueContainer').removeClass('hide').show(); }); form.find('#variable').click(function(e) { form.find('.chargeValueContainer').addClass('hide'); form.find('.regionsContainer').removeClass('hide').show(); }); form.find('.isTaxable').click(function(e) { var element = jQuery(e.currentTarget); var isChecked = element.is(':checked'); if (isChecked) { form.find('.taxContainer').removeClass('hide').show(); } else { form.find('.taxContainer').addClass('hide'); } }); form.on('click', '.deleteRow', function(e) { var element = jQuery(e.currentTarget); element.parent().parent().remove(); }); form.find('.addNewTaxBracket').click(function(e) { e.preventDefault(e); var taxRegionsTable = form.find('.regionsTable'); var taxRegionsCount = form.find('.regionsCount').val(); var widthHeight = form.find('#widthHeight').val(); var selectedFormat = jQuery(':checked', form.find('.formatContainer')).val(); var validator = 'PositiveNumber'; if (selectedFormat == 'Percent') { validator = 'inventory_percentage'; } var taxBracketBlock = jQuery('<tr>\n\ <td class="regionsList '+widthHeight+'">\n\ <span class="deleteRow close" style="float:left;margin-top:3px;">×</span> \n\ <select id="'+taxRegionsCount+'" data-placeholder="'+app.vtranslate('JS_SELECT_REGIONS')+'" name="regions['+taxRegionsCount+'][list]" class="select2 regions columns span3" multiple="" data-rule-required="true" style="width:90%;">' +form.find('.taxRegionElements').html().toString()+'\n\ </select>\n\ </td>\n\ <td class="'+widthHeight+'" style="text-align: center;">\n\ <input class="inputElement valuesList" type="text" name="regions['+taxRegionsCount+'][value]" class="input-medium" value="" data-rule-required="true" data-rule-'+validator+'="true"/>\n\ </td>\n\ </tr>'); var selectedRegions = []; var regionElements = jQuery('.regionsTable select.regions'); jQuery.each(regionElements, function(index, element) { var selectedValues = jQuery(element).val(); if (jQuery.isArray(selectedValues)) { for (var i=0; i<selectedValues.length; i++) { selectedRegions.push(selectedValues[i]); } } }); for(var index in selectedRegions) { taxBracketBlock.find("option[value='"+selectedRegions[index]+"']").remove(); } form.find('.regionsCount').val(parseInt (taxRegionsCount) + 1); taxRegionsTable.append(taxBracketBlock); vtUtils.showSelect2ElementView(taxRegionsTable.find('tr:last td.regionsList select.select2')); }); var params = { submitHandler : function(form){ var form = jQuery(form); thisInstance.saveChargeDetails(form, currentTrElement); } } form.vtValidate(params); form.submit(function(e) { e.preventDefault(); }); } app.helper.hideProgress(); app.helper.showModal(data,{cb:callBackFunction}); }, function(error) { //TODO : Handle error aDeferred.reject(error); } ); return aDeferred.promise(); }, saveChargeDetails : function(form, currentTrElement) { var thisInstance = this; var params = form.serializeFormData(); if(typeof params == 'undefined' ) { params = {}; } thisInstance.validateChargeName(params).then(function(data) { app.helper.showProgress(); params.module = app.getModuleName(); params.parent = app.getParentModuleName(); params.action = 'TaxAjax'; params.mode = 'saveCharge'; app.request.post({data:params}).then( function(err,data) { app.helper.hideProgress(); app.helper.hideModal(); if(form.find('[name="chargeid"]').val() == "") { thisInstance.addChargeDetails(data); } else { var result = data; currentTrElement.find('.chargeName').text(result['name']); currentTrElement.find('.chargeValue').text(result['value']); currentTrElement.find('.chargeIsTaxable').text(result['isTaxable']); currentTrElement.find('.chargeTaxes').text(result['selectedTaxes']); } var params = { message: app.vtranslate('JS_INVENTORY_CHARGE_SAVED_SUCCESSFULLY') }; app.helper.showSuccessNotification(params); } ); }); }, addChargeDetails : function(details) { var container = jQuery('#TaxCalculationsContainer'); var trElementForCharge = jQuery('<tr class="opacity">\n\ <td style="border-left: none;border-right: none;" class="'+details.row_type+'"><span class="chargeName" style="width:100px;">'+details.name+'</span></td>\n\ <td style="border-left: none;border-right: none;" class="'+details.row_type+'"><span class="chargeValue" style="width:105px;">'+details.value+'</span></td>\n\ <td style="border-left: none;border-right: none;" class="'+details.row_type+'"><span class="chargeIsTaxable">'+details.isTaxable+'</span></td>\n\ <td style="border-left: none;border-right: none;" class="'+details.row_type+'"><span class="chargeTaxes span2">'+details.selectedTaxes+'</span></td>\n\ <td style="border-left: none;border-right: none;" class="'+details.row_type+'">\n\ <div class="pull-right actions">\n\ <a class="editCharge cursorPointer" data-url="'+details._editurl+'">\n\ <i class="fa fa-pencil alignBottom" title="'+app.vtranslate('JS_EDIT')+'"></i>\n\ </a>\n\ </div>\n\ </td></tr>'); jQuery('.inventoryChargesTable', container).append(trElementForCharge); }, validateChargeName : function(data) { var thisInstance = this; var aDeferred = jQuery.Deferred(); var chargeName = data.name; var form = jQuery('#editCharge'); var chargeNameElement = form.find('[name="name"]'); if(!(chargeName in thisInstance.duplicateCheckCache)) { thisInstance.checkDuplicateChargeName(data).then( function(data){ thisInstance.duplicateCheckCache[chargeName] = data['success']; aDeferred.resolve(data); }, function(data, err){ thisInstance.duplicateCheckCache[chargeName] = data['success']; thisInstance.duplicateCheckCache['message'] = data['message']; app.helper.showErrorNotification({message:data['message']}); aDeferred.reject(data); } ); } else { if(thisInstance.duplicateCheckCache[chargeName] == true){ var result = thisInstance.duplicateCheckCache['message']; app.helper.showErrorNotification({message:result}); aDeferred.reject(); } else { aDeferred.resolve(); } } return aDeferred.promise(); }, checkDuplicateChargeName : function(details) { var aDeferred = jQuery.Deferred(); var params = { 'module' : app.getModuleName(), 'parent' : app.getParentModuleName(), 'action' : 'TaxAjax', 'mode' : 'checkDuplicateInventoryCharge', 'name' : details.name, 'chargeid' : details.chargeid } app.request.post({data:params}).then(function(err,data) { if(err == null){ var response = data; var result = response['success']; if(result == true) { aDeferred.reject(response); } else { aDeferred.resolve(response); } } else { aDeferred.reject(); } }); return aDeferred.promise(); }, registerUpdateRegionsElementEvent : function() { jQuery('.regionsTable').on('change', '.regions', function(e) { var currentElement = e.currentTarget; var selectedRegions = []; var regionElements = jQuery('.regionsTable select.regions'); jQuery.each(regionElements, function(index, element) { var selectedValues = jQuery(element).val(); if (jQuery.isArray(selectedValues)) { for (var i=0; i<selectedValues.length; i++) { selectedRegions.push(selectedValues[i]); } } }); jQuery.each(regionElements, function(index, element) { if (element != currentElement) { var skippedValues = jQuery(element).val(); if (!jQuery.isArray(skippedValues)) { skippedValues = []; } Settings_Vtiger_TaxIndex_Js.updateSelectElement(selectedRegions, skippedValues, jQuery(element)); } }); }); }, /** * Function to register the click event for regions list tab */ registerRegionsClickEvent : function() { var thisInstance = this; var taxContainer = this.getContainer(); var contents = taxContainer.find('.contents'); var relatedContainer = contents.find('#taxRegions'); var relatedTab = contents.find('.taxRegionsTab'); relatedTab.click(function() { if(relatedContainer.find('.taxRegionsContainer').length > 0) { } else { var params = {}; params['module'] = app.getModuleName(); params['parent'] = app.getParentModuleName(); params['view'] = 'TaxIndex'; params['mode'] = 'showTaxRegions'; app.request.post({data:params}).then(function(err,data) { relatedContainer.html(data); contents.find('.addRegion').click(function(e) { var addRegionButton = jQuery(e.currentTarget); thisInstance.editRegion(addRegionButton.data('url')); }); contents.on('click', '.editRegion', function(e) { var editRegionButton = jQuery(e.currentTarget); var currentTrElement = editRegionButton.closest('tr'); thisInstance.editRegion(editRegionButton.data('url'), currentTrElement); }); contents.on('click', '.deleteRegion', function(e) { var deleteRegionButton = jQuery(e.currentTarget); var currentTrElement = deleteRegionButton.closest('tr'); thisInstance.deleteRegion(deleteRegionButton.data('url'), currentTrElement); }); }); } }); }, deleteRegion : function(url, currentElement) { var message = app.vtranslate('JS_DELETE_REGION_DESC'); app.helper.showConfirmationBox({'message' : message}).then(function(e) { app.helper.showProgress(); app.request.post({url:url}).then(function(err,data){ app.helper.hideProgress(); if(err == null) { currentElement.remove(); var params = { message: app.vtranslate('JS_TAX_REGION_DELETED_SUCCESSFULLY') }; app.helper.showSuccessNotification(params); } else { var params = { message : app.vtranslate('JS_LBL_PERMISSION') } app.helper.showErrorNotification(params); } }); }); }, editRegion : function(url, currentTrElement) { var aDeferred = jQuery.Deferred(); var thisInstance = this; app.helper.showProgress(); app.request.post({url:url}).then( function(err,data) { if(err == null){ var callBackFunction = function(data) { var form = jQuery('#editTaxRegion'); //cache should be empty when modal opened thisInstance.duplicateCheckCache = {}; var params = { submitHandler : function(form){ var form = jQuery(form); thisInstance.saveRegionDetails(form, currentTrElement); } } form.vtValidate(params); form.submit(function(e) { e.preventDefault(); }) } app.helper.hideProgress(); app.helper.showModal(data,{cb:callBackFunction}); }else { aDeferred.reject(err); } }); return aDeferred.promise(); }, saveRegionDetails : function(form, currentTrElement) { var thisInstance = this; var params = form.serializeFormData(); if(typeof params == 'undefined' ) { params = {}; } thisInstance.validateRegionName(params).then( function(data) { app.helper.showProgress(); params.module = app.getModuleName(); params.parent = app.getParentModuleName(); params.action = 'TaxAjax'; params.mode = 'saveTaxRegion'; app.request.post({data:params}).then( function(err,data) { app.helper.hideProgress(); app.helper.hideModal(); if(form.find('[name="taxRegionId"]').val() == "") { thisInstance.addRegionDetails(data); } else { currentTrElement.find('.taxRegionName').text(data['name']); } var params = { message: app.vtranslate('JS_TAX_REGION_SAVED_SUCCESSFULLY') }; app.helper.showSuccessNotification(params); } ); }, function(data,err){ app.helper.hideModal(); app.helper.showErrorNotification({message:data["message"]}); } ); }, validateRegionName : function(data) { var thisInstance = this; var aDeferred = jQuery.Deferred(); var regionName = data.name; var form = jQuery('#editTaxRegion'); var regionNameElement = form.find('[name="name"]'); if(!(regionName in thisInstance.duplicateCheckCache)) { thisInstance.checkDuplicateRegionName(data).then( function(data){ thisInstance.duplicateCheckCache[regionName] = true; thisInstance.duplicateCheckCache['message'] = app.vtranslate('JS_LBL_TAX_REGION_EXIST'); aDeferred.resolve(data); }, function(data, err){ thisInstance.duplicateCheckCache[regionName] = data['success']; thisInstance.duplicateCheckCache['message'] = data['message']; aDeferred.reject(data); } ); } else { if(thisInstance.duplicateCheckCache[regionName] == true){ aDeferred.reject({message:thisInstance.duplicateCheckCache['message']}); } else { aDeferred.resolve(); } } return aDeferred.promise(); }, checkDuplicateRegionName : function(details) { var aDeferred = jQuery.Deferred(); var params = { 'module' : app.getModuleName(), 'parent' : app.getParentModuleName(), 'action' : 'TaxAjax', 'mode' : 'checkDuplicateTaxRegion', 'taxRegionName' : details.name, 'taxRegionId' : details.taxRegionId } app.request.post({data:params}).then(function(err,data) { if(err == null){ var result = data['success']; if(result == true) { aDeferred.reject(data); } else { aDeferred.resolve(data); } }else { aDeferred.reject(); } }); return aDeferred.promise(); }, addRegionDetails : function(details) { var container = this.getContainer(); var trElementForRegion = jQuery('<tr class="opacity" data-key-name="'+details.name+'" data-key="'+details.name+'">\n\ <td style="border-right:none;border-left:none;;" class="textAlignLeft '+details.row_type+'">\n\ <span class="taxRegionName">'+details.name+'</span>\n\ </td>\n\ <td style="border-right:none;border-left:none" class="'+details.row_type+'">\n\ <div class="pull-right actions">\n\ <a class="editRegion" data-url="'+details._editurl+'">\n\ <i class="fa fa-pencil alignMiddle" title="'+app.vtranslate('JS_EDIT')+'"></i>\n\ </a>\n\ <a class="deleteRegion" data-url="'+details._deleteurl+'">\n\ <i class="fa fa-trash alignMiddle" title="'+app.vtranslate('JS_DELETE')+'"></i>\n\ </a>\n\ </div>\n\ </td></tr>'); jQuery('.taxRegionsTable', container).append(trElementForRegion); }, /* * Function to update tax status as enabled or disabled */ updateTaxStatus : function(currentTarget) { var aDeferred = jQuery.Deferred(); var currentTrElement = currentTarget.closest('tr'); var taxId = currentTrElement.data('taxid'); var taxType = currentTrElement.data('taxtype'); var deleted = currentTarget.is(':checked') ? 0 : 1; app.helper.showProgress(); var params = { 'module' : app.getModuleName(), 'parent' : app.getParentModuleName(), 'action' : 'TaxAjax', 'mode' : 'updateTaxStatus', 'taxid' : taxId, 'type' : taxType, 'deleted' : deleted } app.request.post({data:params}).then( function(err,data) { if(err == null){ app.helper.hideProgress(); aDeferred.resolve(data); }else { app.helper.hideProgress(); aDeferred.reject(err); } }); return aDeferred.promise(); }, /* * Function to register all actions in the Tax List */ registerActions : function() { var thisInstance = this; var container = this.getContainer(); //register click event for Add New Tax button container.find('.addTax').click(function(e) { var addTaxButton = jQuery(e.currentTarget); var createTaxUrl = addTaxButton.data('url')+'&type='+addTaxButton.data('type'); thisInstance.editTax(createTaxUrl); }); //register event for edit tax icon container.on('click', '.editTax', function(e) { var editTaxButton = jQuery(e.currentTarget); var currentTrElement = editTaxButton.closest('tr'); thisInstance.editTax(editTaxButton.data('url'), currentTrElement); }); //register event for checkbox to change the tax Status container.on('click', '.editTaxStatus', function(e) { var currentTarget = jQuery(e.currentTarget); thisInstance.updateTaxStatus(currentTarget).then( function(data){ var params = {}; if(currentTarget.is(':checked')) { params.message = app.vtranslate('JS_TAX_ENABLED'); } else { params.message = app.vtranslate('JS_TAX_DISABLED'); } app.helper.showSuccessNotification(params); }, function(error){ //TODO: Handle Error } ); }); container.on('click', '[name="default_tax_mode"]', function(e) { var currentTarget = jQuery(e.currentTarget); var value = currentTarget.val(); var prevSelectedValue = jQuery('#selectedTaxMode').val(); if(value != prevSelectedValue) { var params = { 'module' : app.getModuleName(), 'parent' : app.getParentModuleName(), 'action' : 'TaxAjax', 'mode' : 'updateDefaultTaxMode', 'defaultTaxMode': value } app.request.post({data:params}).then(function(err,data) { if(err == null){ jQuery('#selectedTaxMode').val(value); var selectedType = currentTarget.parent().find('.mode').text(); app.helper.showSuccessNotification({ "message":app.vtranslate('JS_DEFAULT_TAX_MODE_SET_AS') + selectedType }); } else { app.helper.showErrorNotification({ "message": err }); } }); } }); }, registerEvents : function(){ this.registerChargesClickEvent(); this.registerRegionsClickEvent(); this.registerActions(); } });
[+]
..
[-] CompanyDetails.js
[edit]
[-] CustomRecordNumbering.js
[edit]
[-] List.js
[edit]
[-] ConfigEditorDetail.js
[edit]
[-] Tax.js
[edit]
[-] TermsAndConditionsEdit.js
[edit]
[-] OutgoingServer.js
[edit]
[-] Index.js
[edit]
[-] Detail.js
[edit]
[-] Edit.js
[edit]
[-] AnnouncementEdit.js
[edit]