Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

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 = {}));