Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ctccalculation.js 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Hrms;
  6. (function (Hrms) {
  7. let Payroll;
  8. (function (Payroll) {
  9. class CtcCalculation extends Unibase.Platform.Core.BaseComponent {
  10. jsFiles() {
  11. return ['platform/core/helpers/numberhelper/numberhelper.js', 'apps/hrms/enums/componenttypes.js', 'apps/hrms/enums/earningtypes.js', 'apps/hrms/enums/calculationtype.js', '/apps/hrms/payroll/controls/salarytemplate.component.js', 'apps/hrms/payroll/controls/employeesalary/employeesalarydetails.component.js'];
  12. }
  13. getcomponentHtml() {
  14. return `<div class="salary_template_CreateForm_card font-14 overflow-auto"><input type = "hidden" id = "hdn_salarycomponentcontrol" class="value-control" value = "Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().salarycomponentObj();"> <div class="d-flex justify-content-between salarytemplate_hdr"> <h5 class="font-weight-600">Earnings</h5><a class="btn btn-primary btn-sm pull-right" href="javascript:;" onclick="Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().popup();" id="btnAddNew">Add Component</a> </div> <table class="w-100 salary_template_CreateForm_Table" style="border-collapse:inherit;border-spacing:0 25px"> <thead> <tr> <th>Salary Components <th class="text-center">Calculation Type </th> <th>Monthly Amount <th class="text-right">Annual Amount </th><th></th></thead> <tbody class="Components-list tbl-body" id="salaryearningdetails_table"> </tbody> <thead class="tb_Deductions hidden"> <tr> <th colspan="4"><div class="d-flex justify-content-between"><h5 class="font-weight-600">Deductions</h5><a class="btn btn-primary btn-sm pull-right" href="javascript:;" onclick = " Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().refreshsystemcalculations();" id="refreshsystemcalculations">Refresh</a></div></th> </tr> </thead> <tbody class="Components-list tbl-body" id="salarydeductiondetails_table"> </tbody> <thead class="tb_Reimbusments hidden"> <tr> <th colspan="4"><h5 class="font-weight-600">Reimbursements</h5></th> </tr> </thead> <tbody class="Components-list tbl-body" id="salaryreimbursementdetails_table"> </tbody> <tfoot class="font-16 font-weight-600"><tr><td colspan="2">Cost to Company </td><td class=""><div class="text-right w-50 total_monthly_amount"></div></td><td class="text-right"><div class="total_annual_amount"></div></td></tr></tfoot></table> </div>`;
  15. }
  16. itemobj(data) {
  17. var item = {
  18. payslipname: data.PaySlipName,
  19. calculationtypeid: data.CalculationTypeId,
  20. calculationtypename: data.CalculationTypeName,
  21. salarycomponentid: data.SalaryComponentId,
  22. earningtypeid: data.EarningTypeId == undefined ? 0 : data.EarningTypeId,
  23. amount: data.Amount == undefined ? 0 : data.Amount,
  24. rowindexid: data.ComponentTypeId == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings ? data.EarningTypeId : data.SalaryComponentId,
  25. maxamount: data.MaxAmount,
  26. templateid: data.TemplateId == undefined ? 0 : data.TemplateId,
  27. templateitemid: data.TemplateItemId == undefined ? 0 : data.TemplateItemId,
  28. monthlyamount: data.AmountMonthly == undefined ? 0 : data.AmountMonthly,
  29. annualamount: data.AmountAnnually == undefined ? 0 : data.AmountAnnually,
  30. componenttypeid: data.ComponentTypeId == undefined ? 0 : data.ComponentTypeId,
  31. issystemgenerated: data.IsSystemGenerated == undefined ? false : data.IsSystemGenerated,
  32. rowid: 0
  33. };
  34. if (data.CalculationTypeId == 1) {
  35. item.monthlyamount = data.Amount == undefined ? 0 : data.Amount;
  36. }
  37. if (data.ComponentTypeId == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements && item.templateid == 0) {
  38. item.monthlyamount = 0;
  39. item.amount = 0;
  40. }
  41. return item;
  42. }
  43. ctc_calculation(comp_obj) {
  44. var instance = this;
  45. var annualctc = Number($(".txt_annualctc").val());
  46. if (annualctc == 0) {
  47. }
  48. if (comp_obj != null) {
  49. for (var i = 0; i < comp_obj.length; i++) {
  50. let data = comp_obj[i];
  51. let amount = data.amount;
  52. let calculationtypeid = data.calculationtypeid;
  53. let earningtypeid = data.earningtypeid;
  54. let salarycomponentid = data.salarycomponentid;
  55. let monthlyamount = data.monthlyamount;
  56. if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
  57. let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
  58. obj.annualamount = Math.round(monthlyamount * 12);
  59. obj.monthlyamount = Math.round(monthlyamount);
  60. }
  61. if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfBasic) {
  62. let basicsalobj = comp_obj.find(x => x.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.Basic && x.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings);
  63. let basicanualamount = basicsalobj.annualamount;
  64. let annualamount = Math.round(basicanualamount * (amount / 100));
  65. let monthlyamount = Math.round(annualamount / 12);
  66. let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
  67. obj.annualamount = annualamount;
  68. obj.monthlyamount = monthlyamount;
  69. }
  70. if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfCTC) {
  71. let annualamount = Math.round(annualctc * (amount / 100));
  72. let monthlyamount = Math.round(annualamount / 12);
  73. let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
  74. obj.annualamount = annualamount;
  75. obj.monthlyamount = monthlyamount;
  76. }
  77. }
  78. instance.adjustmentfixedallowance(comp_obj);
  79. instance.bindctcdata(comp_obj);
  80. }
  81. }
  82. adjustmentfixedallowance(ctc_Array) {
  83. var instance = this;
  84. var total_annualamount = 0;
  85. var total_monthlyamount = 0;
  86. var annualctc = Number($(".txt_annualctc").val());
  87. ctc_Array.filter(x => x.earningtypeid != Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes).forEach(x => { total_monthlyamount += x.monthlyamount; });
  88. ctc_Array.filter(x => x.earningtypeid != Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes).forEach(x => { total_annualamount += x.annualamount; });
  89. let fixedAllowanceobj = ctc_Array.find(x => x.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance && x.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings);
  90. if (fixedAllowanceobj != undefined) {
  91. let balancemonthlyamount = (Math.round(annualctc / 12)) - Math.round(total_monthlyamount);
  92. let balanceannualamount = Math.round(annualctc) - Math.round(total_annualamount);
  93. fixedAllowanceobj.annualamount = Math.round(balanceannualamount);
  94. fixedAllowanceobj.monthlyamount = Math.round(balancemonthlyamount);
  95. }
  96. }
  97. bindcomponenthtml(data, ctc_Array, isfixedallowance) {
  98. var instance = this;
  99. let rowindexid = data.rowindexid;
  100. var txtsakaryComponet_html = "";
  101. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
  102. txtsakaryComponet_html = `<td> <div class="input-group"> <select id = "txtAutoComplete_Salary_${rowindexid}" class="txtAutoComplete_Salary custom-select border-top-0 border-right-0 border-left-0 rounded-0"> </select> <input type="hidden" id="hf_earningtypeid_${rowindexid}" > </div> </td>`;
  103. }
  104. else {
  105. txtsakaryComponet_html = `<td><div class=""><span id="txtAutoComplete_Salary_${rowindexid}" class="txtAutoComplete_Salary"> </span><div class="font-10 div_componentname_${rowindexid}"><span id="span_maxamount_${rowindexid}"> </span>
  106. </div></div></td>`;
  107. }
  108. var CalculationType = "";
  109. CalculationType = ` <input data-trnsactid=${rowindexid} id="txt_CalculationAmount_${rowindexid}" type="text" class=" txt_CalculationAmount hidden form-control text-right" value="0"><div class="input-group-prepend ddlCalculationType_${rowindexid} w-100">
  110. <span id="ddl_CalculationType_${rowindexid}" class="input-group-text w-100 justify-content-center">% of CTC</span> </div>`;
  111. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
  112. CalculationType = ` <input data-trnsactid=${rowindexid} id="txt_CalculationAmount_${rowindexid}" type = "text" class="txt_CalculationAmount hidden form-control text-right" value = "0" ><div class="input-group-prepend w-50" ><select id="ddl_CalculationType_${rowindexid}" class="custom-select rounded-0">
  113. <option value="1" selected="">Fixed Amount</option><option value="2" selected="">% Basic</option>
  114. </select></div>`;
  115. }
  116. var monthlyamount = ` <input id="txt_AmountMonthly_${rowindexid}" data-trnsactid=${rowindexid} type="text" class="txt_AmountMonthly form-control text-right" value="0"> `;
  117. if (data.issystemgenerated == true && data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
  118. CalculationType = `<span id = "ddl_CalculationType_${rowindexid}" data-trnsactid=${rowindexid} class="ddl_CalculationType">Fixed amount</span>
  119. <div class="font-10"> </div>`;
  120. monthlyamount = ` <p id = "txt_AmountMonthly_${rowindexid}" class="mb-0" > 0 </p>`;
  121. }
  122. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
  123. monthlyamount = ` <input id="txt_AmountMonthly_${rowindexid}" data-trnsactid=${rowindexid} type="text" class="txt_AmountMonthly txt_incometax form-control text-right" value="0" > <i class="btn fa fa-pencil pencil-edit"></i>`;
  124. }
  125. $('.pencil-edit').click(function () {
  126. $('txt_incometax').removeAttr('disabled');
  127. $(this).removeClass('fa-pencil').addClass('fa-close');
  128. });
  129. var html1 = `<tr class="salaryearningdetails_item_row_${rowindexid}"> ${txtsakaryComponet_html} <td align="center" class="CalculationType_${rowindexid}"> <div class="input-group justify-content-end w-50 rounded-0 "> ${CalculationType} </div> </td> <td class="input-group-append w-50"> ${monthlyamount} </td> <td align="right"> <p id = "txt_AmountAnnually_${rowindexid}" class="mb-0"> </p> </td><td class="pl-4 "><a class="removeComponent" href="javascript:;" onclick = " Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().removeComponent(${rowindexid});"><i class="fa fa-close text-danger"></i></a></td> </tr>`;
  130. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings) {
  131. $("#salaryearningdetails_table:last").append(html1);
  132. if (Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
  133. var instance = this;
  134. instance.autocomplete(rowindexid);
  135. }
  136. }
  137. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
  138. $('.tb_Deductions').removeClass('hidden');
  139. $("#salarydeductiondetails_table:last").append(html1);
  140. }
  141. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements) {
  142. $('.tb_Reimbusments').removeClass('hidden');
  143. $("#salaryreimbursementdetails_table:last").append(html1);
  144. }
  145. $("#salaryearningdetails_table,#salarydeductiondetails_table,#salaryreimbursementdetails_table").find(".txt_CalculationAmount,.txt_AmountMonthly").unbind().blur(function () {
  146. let id = $(this).attr("data-trnsactid");
  147. instance.salaryitem_Calculation(Number(id), ctc_Array);
  148. });
  149. $('#ddl_CalculationType_' + rowindexid).change(function () {
  150. let id = $(this).val();
  151. $('#txt_CalculationAmount_' + rowindexid).val(0);
  152. instance.changecalculationtype(id, rowindexid, ctc_Array);
  153. });
  154. if (data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfBasic || data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfCTC) {
  155. $("#txt_AmountMonthly_" + rowindexid).attr("disabled", "disabled");
  156. $("#txt_AmountMonthly_" + rowindexid).css("color", "#495057");
  157. }
  158. $(".txt_AmountMonthly,.txt_CalculationAmount").on("keypress", function (event) {
  159. var charCode = (event.which) ? event.which : event.keyCode;
  160. if (charCode != 46 && charCode > 31
  161. && (charCode < 48 || charCode > 57))
  162. return false;
  163. return true;
  164. });
  165. instance.bindctcdata(ctc_Array);
  166. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && data.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.Basic && isfixedallowance) {
  167. try {
  168. Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().SalaryEarningdetails(Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance);
  169. }
  170. catch (e) {
  171. }
  172. }
  173. if ($(window).width() < 767) {
  174. $('.salary_template_CreateForm_card').find('.salary_template_CreateForm_Table').removeClass('w-100').addClass('w-600p');
  175. $('#salaryearningdetails_table').find(`.CalculationType_${rowindexid} div`).removeClass('w-50').addClass('w-70');
  176. }
  177. else {
  178. $('.salary_template_CreateForm_card').find('.salary_template_CreateForm_Table').removeClass('w-600p').addClass('w-100');
  179. $('#salaryearningdetails_table').find(`.CalculationType_${rowindexid} div`).removeClass('w-70').addClass('w-50');
  180. }
  181. }
  182. autocomplete(earningtypeid) {
  183. var url = _appsettings.server_url() + '/apis/v4/bizgaze/hrms/payroll/salarycomponentsbyearningtypeidautocomplete/earningtypeid/' + earningtypeid;
  184. AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Salary_" + earningtypeid, $("#hfAutoCompleteId_SalaryComponents_" + earningtypeid), url, null);
  185. $("#txtAutoComplete_Salary_" + earningtypeid).unbind().change(function () {
  186. let id = $(this).val();
  187. try {
  188. Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().getsalarycomponentbyid(id);
  189. }
  190. catch (e) {
  191. Bizgaze.Apps.Hrms.Payroll.Controls.EmployeeSalary.EmployeeSalaryDetails.Instance().getsalarycomponentbyid(id);
  192. }
  193. });
  194. }
  195. changecalculationtype(id, rowindexid, ctc_Array) {
  196. var instance = this;
  197. if (id == 1) {
  198. $('#txt_CalculationAmount_' + rowindexid).addClass('hidden');
  199. }
  200. else {
  201. $('#txt_CalculationAmount_' + rowindexid).removeClass('hidden');
  202. }
  203. instance.salaryitem_Calculation(rowindexid, ctc_Array);
  204. }
  205. bindctcdata(obj) {
  206. var instance = this;
  207. instance.grandTotal(obj);
  208. for (var i = 0; i < obj.length; i++) {
  209. let data = obj[i];
  210. let amount = data.amount;
  211. let monthlyamount = data.monthlyamount;
  212. let annualamount = data.annualamount;
  213. let rowindexid = data.rowindexid;
  214. if (data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
  215. $("#txt_CalculationAmount_" + rowindexid).addClass('hidden');
  216. $(".ddlCalculationType_" + rowindexid).addClass('w-100');
  217. $(".ddlCalculationType_" + rowindexid).removeClass('w-50');
  218. }
  219. else {
  220. $("#txt_CalculationAmount_" + rowindexid).removeClass('hidden');
  221. $(".ddlCalculationType_" + rowindexid).addClass('w-50');
  222. $(".ddlCalculationType_" + rowindexid).removeClass('w-100');
  223. }
  224. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
  225. var reportColumnText1 = new Option(data.payslipname, data.earningtypeid, true);
  226. $("#txtAutoComplete_Salary_" + rowindexid).html(reportColumnText1);
  227. $("#txtAutoComplete_Salary_" + rowindexid).val(data.earningtypeid);
  228. $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypename);
  229. $('#ddl_CalculationType_' + rowindexid).text(data.calculationtypename);
  230. }
  231. else if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
  232. $("#txtAutoComplete_Salary_" + rowindexid).val(data.payslipname);
  233. $("#txtAutoComplete_Salary_" + rowindexid).text(data.payslipname);
  234. $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypeid);
  235. }
  236. else if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements || Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance == rowindexid) {
  237. $("#txtAutoComplete_Salary_" + rowindexid).val(data.payslipname);
  238. $("#txtAutoComplete_Salary_" + rowindexid).text(data.payslipname);
  239. $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypename);
  240. $('#ddl_CalculationType_' + rowindexid).text(data.calculationtypename);
  241. $('#span_maxamount_' + rowindexid).text(data.maxamount);
  242. }
  243. if (Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance == rowindexid)
  244. $('.div_componentname_' + rowindexid).text('Monthly CTC - Sum of all other components');
  245. if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements) {
  246. $('.div_componentname_' + rowindexid).html('Max Amount: <span id="span_maxamount_' + rowindexid + '"> ' + data.amount + ' </span>');
  247. $('#span_maxamount_' + rowindexid).text(data.maxamount);
  248. }
  249. $("#hf_earningtypeid_" + rowindexid).val(data.earningtypeid);
  250. $("#txt_AmountMonthly_" + rowindexid).val(monthlyamount);
  251. $("#txt_AmountMonthly_" + rowindexid).text(monthlyamount);
  252. $("#txt_AmountAnnually_" + rowindexid).val(annualamount);
  253. $("#txt_AmountAnnually_" + rowindexid).text(annualamount);
  254. $("#txt_CalculationAmount_" + rowindexid).val(amount);
  255. }
  256. }
  257. grandTotal(ctc_Array) {
  258. var instance = this;
  259. var monthlytotal = 0;
  260. var annuallytotal = 0;
  261. ctc_Array.filter(x => x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes).forEach(x => { annuallytotal += x.annualamount; });
  262. ctc_Array.filter(x => x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions && x.componenttypeid != Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes).forEach(x => { monthlytotal += x.monthlyamount; });
  263. $(".total_monthly_amount").text(Math.round(monthlytotal));
  264. $(".total_annual_amount").text(Math.round(annuallytotal));
  265. }
  266. salaryitem_Calculation(rowindexid, ctc_Array) {
  267. var instance = this;
  268. var calculationAmount = $("#txt_CalculationAmount_" + rowindexid).val();
  269. var amountMonthly = $("#txt_AmountMonthly_" + rowindexid).val();
  270. if (calculationAmount == undefined) {
  271. calculationAmount = 0;
  272. }
  273. let id = rowindexid;
  274. let obj = ctc_Array.find(x => x.rowindexid == id);
  275. if (obj != undefined) {
  276. if (obj.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
  277. obj.amount = Number(amountMonthly);
  278. }
  279. else
  280. obj.amount = Number(calculationAmount);
  281. obj.monthlyamount = Number(amountMonthly);
  282. if (Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements == obj.componenttypeid) {
  283. if (obj.maxamount < Number(amountMonthly)) {
  284. obj.monthlyamount = obj.maxamount;
  285. obj.amount = obj.maxamount;
  286. }
  287. }
  288. else if (Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions == obj.componenttypeid) {
  289. if (Number($('#ddl_CalculationType_' + rowindexid).val()) != undefined) {
  290. obj.calculationtypeid = Number($('#ddl_CalculationType_' + rowindexid).val());
  291. }
  292. }
  293. instance.ctc_calculation(ctc_Array);
  294. }
  295. }
  296. }
  297. Payroll.CtcCalculation = CtcCalculation;
  298. })(Payroll = Hrms.Payroll || (Hrms.Payroll = {}));
  299. })(Hrms = Apps.Hrms || (Apps.Hrms = {}));
  300. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  301. })(Bizgaze || (Bizgaze = {}));