123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- var Bizgaze;
- (function (Bizgaze) {
- let Apps;
- (function (Apps) {
- let Hrms;
- (function (Hrms) {
- let Payroll;
- (function (Payroll) {
- class CtcCalculation extends Unibase.Platform.Core.BaseComponent {
- jsFiles() {
- 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'];
- }
- getcomponentHtml() {
- 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>`;
- }
- itemobj(data) {
- var item = {
- payslipname: data.PaySlipName,
- calculationtypeid: data.CalculationTypeId,
- calculationtypename: data.CalculationTypeName,
- salarycomponentid: data.SalaryComponentId,
- earningtypeid: data.EarningTypeId == undefined ? 0 : data.EarningTypeId,
- amount: data.Amount == undefined ? 0 : data.Amount,
- rowindexid: data.ComponentTypeId == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings ? data.EarningTypeId : data.SalaryComponentId,
- maxamount: data.MaxAmount,
- templateid: data.TemplateId == undefined ? 0 : data.TemplateId,
- templateitemid: data.TemplateItemId == undefined ? 0 : data.TemplateItemId,
- monthlyamount: data.AmountMonthly == undefined ? 0 : data.AmountMonthly,
- annualamount: data.AmountAnnually == undefined ? 0 : data.AmountAnnually,
- componenttypeid: data.ComponentTypeId == undefined ? 0 : data.ComponentTypeId,
- issystemgenerated: data.IsSystemGenerated == undefined ? false : data.IsSystemGenerated,
- rowid: 0
- };
- if (data.CalculationTypeId == 1) {
- item.monthlyamount = data.Amount == undefined ? 0 : data.Amount;
- }
- if (data.ComponentTypeId == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements && item.templateid == 0) {
- item.monthlyamount = 0;
- item.amount = 0;
- }
- return item;
- }
- ctc_calculation(comp_obj) {
- var instance = this;
- var annualctc = Number($(".txt_annualctc").val());
- if (annualctc == 0) {
- }
- if (comp_obj != null) {
- for (var i = 0; i < comp_obj.length; i++) {
- let data = comp_obj[i];
- let amount = data.amount;
- let calculationtypeid = data.calculationtypeid;
- let earningtypeid = data.earningtypeid;
- let salarycomponentid = data.salarycomponentid;
- let monthlyamount = data.monthlyamount;
- if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
- let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
- obj.annualamount = Math.round(monthlyamount * 12);
- obj.monthlyamount = Math.round(monthlyamount);
- }
- if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfBasic) {
- let basicsalobj = comp_obj.find(x => x.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.Basic && x.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings);
- let basicanualamount = basicsalobj.annualamount;
- let annualamount = Math.round(basicanualamount * (amount / 100));
- let monthlyamount = Math.round(annualamount / 12);
- let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
- obj.annualamount = annualamount;
- obj.monthlyamount = monthlyamount;
- }
- if (calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfCTC) {
- let annualamount = Math.round(annualctc * (amount / 100));
- let monthlyamount = Math.round(annualamount / 12);
- let obj = comp_obj.find(x => x.salarycomponentid == salarycomponentid);
- obj.annualamount = annualamount;
- obj.monthlyamount = monthlyamount;
- }
- }
- instance.adjustmentfixedallowance(comp_obj);
- instance.bindctcdata(comp_obj);
- }
- }
- adjustmentfixedallowance(ctc_Array) {
- var instance = this;
- var total_annualamount = 0;
- var total_monthlyamount = 0;
- var annualctc = Number($(".txt_annualctc").val());
- 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; });
- 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; });
- let fixedAllowanceobj = ctc_Array.find(x => x.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance && x.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings);
- if (fixedAllowanceobj != undefined) {
- let balancemonthlyamount = (Math.round(annualctc / 12)) - Math.round(total_monthlyamount);
- let balanceannualamount = Math.round(annualctc) - Math.round(total_annualamount);
- fixedAllowanceobj.annualamount = Math.round(balanceannualamount);
- fixedAllowanceobj.monthlyamount = Math.round(balancemonthlyamount);
- }
- }
- bindcomponenthtml(data, ctc_Array, isfixedallowance) {
- var instance = this;
- let rowindexid = data.rowindexid;
- var txtsakaryComponet_html = "";
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
- 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>`;
- }
- else {
- 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>
- </div></div></td>`;
- }
- var CalculationType = "";
- 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">
- <span id="ddl_CalculationType_${rowindexid}" class="input-group-text w-100 justify-content-center">% of CTC</span> </div>`;
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
- 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">
- <option value="1" selected="">Fixed Amount</option><option value="2" selected="">% Basic</option>
- </select></div>`;
- }
- var monthlyamount = ` <input id="txt_AmountMonthly_${rowindexid}" data-trnsactid=${rowindexid} type="text" class="txt_AmountMonthly form-control text-right" value="0"> `;
- if (data.issystemgenerated == true && data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
- CalculationType = `<span id = "ddl_CalculationType_${rowindexid}" data-trnsactid=${rowindexid} class="ddl_CalculationType">Fixed amount</span>
- <div class="font-10"> </div>`;
- monthlyamount = ` <p id = "txt_AmountMonthly_${rowindexid}" class="mb-0" > 0 </p>`;
- }
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
- 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>`;
- }
- $('.pencil-edit').click(function () {
- $('txt_incometax').removeAttr('disabled');
- $(this).removeClass('fa-pencil').addClass('fa-close');
- });
- 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>`;
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings) {
- $("#salaryearningdetails_table:last").append(html1);
- if (Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
- var instance = this;
- instance.autocomplete(rowindexid);
- }
- }
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
- $('.tb_Deductions').removeClass('hidden');
- $("#salarydeductiondetails_table:last").append(html1);
- }
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements) {
- $('.tb_Reimbusments').removeClass('hidden');
- $("#salaryreimbursementdetails_table:last").append(html1);
- }
- $("#salaryearningdetails_table,#salarydeductiondetails_table,#salaryreimbursementdetails_table").find(".txt_CalculationAmount,.txt_AmountMonthly").unbind().blur(function () {
- let id = $(this).attr("data-trnsactid");
- instance.salaryitem_Calculation(Number(id), ctc_Array);
- });
- $('#ddl_CalculationType_' + rowindexid).change(function () {
- let id = $(this).val();
- $('#txt_CalculationAmount_' + rowindexid).val(0);
- instance.changecalculationtype(id, rowindexid, ctc_Array);
- });
- if (data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfBasic || data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.PercentageOfCTC) {
- $("#txt_AmountMonthly_" + rowindexid).attr("disabled", "disabled");
- $("#txt_AmountMonthly_" + rowindexid).css("color", "#495057");
- }
- $(".txt_AmountMonthly,.txt_CalculationAmount").on("keypress", function (event) {
- var charCode = (event.which) ? event.which : event.keyCode;
- if (charCode != 46 && charCode > 31
- && (charCode < 48 || charCode > 57))
- return false;
- return true;
- });
- instance.bindctcdata(ctc_Array);
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && data.earningtypeid == Bizgaze.Apps.Hrms.Enums.EarningTypes.Basic && isfixedallowance) {
- try {
- Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().SalaryEarningdetails(Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance);
- }
- catch (e) {
- }
- }
- if ($(window).width() < 767) {
- $('.salary_template_CreateForm_card').find('.salary_template_CreateForm_Table').removeClass('w-100').addClass('w-600p');
- $('#salaryearningdetails_table').find(`.CalculationType_${rowindexid} div`).removeClass('w-50').addClass('w-70');
- }
- else {
- $('.salary_template_CreateForm_card').find('.salary_template_CreateForm_Table').removeClass('w-600p').addClass('w-100');
- $('#salaryearningdetails_table').find(`.CalculationType_${rowindexid} div`).removeClass('w-70').addClass('w-50');
- }
- }
- autocomplete(earningtypeid) {
- var url = _appsettings.server_url() + '/apis/v4/bizgaze/hrms/payroll/salarycomponentsbyearningtypeidautocomplete/earningtypeid/' + earningtypeid;
- AutoCompleteHelper.getHelper().Create("#txtAutoComplete_Salary_" + earningtypeid, $("#hfAutoCompleteId_SalaryComponents_" + earningtypeid), url, null);
- $("#txtAutoComplete_Salary_" + earningtypeid).unbind().change(function () {
- let id = $(this).val();
- try {
- Bizgaze.Apps.Hrms.Payroll.Controls.SalaryTemplate.Instance().getsalarycomponentbyid(id);
- }
- catch (e) {
- Bizgaze.Apps.Hrms.Payroll.Controls.EmployeeSalary.EmployeeSalaryDetails.Instance().getsalarycomponentbyid(id);
- }
- });
- }
- changecalculationtype(id, rowindexid, ctc_Array) {
- var instance = this;
- if (id == 1) {
- $('#txt_CalculationAmount_' + rowindexid).addClass('hidden');
- }
- else {
- $('#txt_CalculationAmount_' + rowindexid).removeClass('hidden');
- }
- instance.salaryitem_Calculation(rowindexid, ctc_Array);
- }
- bindctcdata(obj) {
- var instance = this;
- instance.grandTotal(obj);
- for (var i = 0; i < obj.length; i++) {
- let data = obj[i];
- let amount = data.amount;
- let monthlyamount = data.monthlyamount;
- let annualamount = data.annualamount;
- let rowindexid = data.rowindexid;
- if (data.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
- $("#txt_CalculationAmount_" + rowindexid).addClass('hidden');
- $(".ddlCalculationType_" + rowindexid).addClass('w-100');
- $(".ddlCalculationType_" + rowindexid).removeClass('w-50');
- }
- else {
- $("#txt_CalculationAmount_" + rowindexid).removeClass('hidden');
- $(".ddlCalculationType_" + rowindexid).addClass('w-50');
- $(".ddlCalculationType_" + rowindexid).removeClass('w-100');
- }
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Earnings && Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance != rowindexid) {
- var reportColumnText1 = new Option(data.payslipname, data.earningtypeid, true);
- $("#txtAutoComplete_Salary_" + rowindexid).html(reportColumnText1);
- $("#txtAutoComplete_Salary_" + rowindexid).val(data.earningtypeid);
- $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypename);
- $('#ddl_CalculationType_' + rowindexid).text(data.calculationtypename);
- }
- else if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
- $("#txtAutoComplete_Salary_" + rowindexid).val(data.payslipname);
- $("#txtAutoComplete_Salary_" + rowindexid).text(data.payslipname);
- $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypeid);
- }
- else if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements || Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance == rowindexid) {
- $("#txtAutoComplete_Salary_" + rowindexid).val(data.payslipname);
- $("#txtAutoComplete_Salary_" + rowindexid).text(data.payslipname);
- $('#ddl_CalculationType_' + rowindexid).val(data.calculationtypename);
- $('#ddl_CalculationType_' + rowindexid).text(data.calculationtypename);
- $('#span_maxamount_' + rowindexid).text(data.maxamount);
- }
- if (Bizgaze.Apps.Hrms.Enums.EarningTypes.FixedAllowance == rowindexid)
- $('.div_componentname_' + rowindexid).text('Monthly CTC - Sum of all other components');
- if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements) {
- $('.div_componentname_' + rowindexid).html('Max Amount: <span id="span_maxamount_' + rowindexid + '"> ' + data.amount + ' </span>');
- $('#span_maxamount_' + rowindexid).text(data.maxamount);
- }
- $("#hf_earningtypeid_" + rowindexid).val(data.earningtypeid);
- $("#txt_AmountMonthly_" + rowindexid).val(monthlyamount);
- $("#txt_AmountMonthly_" + rowindexid).text(monthlyamount);
- $("#txt_AmountAnnually_" + rowindexid).val(annualamount);
- $("#txt_AmountAnnually_" + rowindexid).text(annualamount);
- $("#txt_CalculationAmount_" + rowindexid).val(amount);
- }
- }
- grandTotal(ctc_Array) {
- var instance = this;
- var monthlytotal = 0;
- var annuallytotal = 0;
- 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; });
- 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; });
- $(".total_monthly_amount").text(Math.round(monthlytotal));
- $(".total_annual_amount").text(Math.round(annuallytotal));
- }
- salaryitem_Calculation(rowindexid, ctc_Array) {
- var instance = this;
- var calculationAmount = $("#txt_CalculationAmount_" + rowindexid).val();
- var amountMonthly = $("#txt_AmountMonthly_" + rowindexid).val();
- if (calculationAmount == undefined) {
- calculationAmount = 0;
- }
- let id = rowindexid;
- let obj = ctc_Array.find(x => x.rowindexid == id);
- if (obj != undefined) {
- if (obj.calculationtypeid == Bizgaze.Apps.Hrms.Enums.CalculationType.FixedAmount) {
- obj.amount = Number(amountMonthly);
- }
- else
- obj.amount = Number(calculationAmount);
- obj.monthlyamount = Number(amountMonthly);
- if (Bizgaze.Apps.Hrms.Enums.ComponentTypes.Reimbursements == obj.componenttypeid) {
- if (obj.maxamount < Number(amountMonthly)) {
- obj.monthlyamount = obj.maxamount;
- obj.amount = obj.maxamount;
- }
- }
- else if (Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions == obj.componenttypeid) {
- if (Number($('#ddl_CalculationType_' + rowindexid).val()) != undefined) {
- obj.calculationtypeid = Number($('#ddl_CalculationType_' + rowindexid).val());
- }
- }
- instance.ctc_calculation(ctc_Array);
- }
- }
- }
- Payroll.CtcCalculation = CtcCalculation;
- })(Payroll = Hrms.Payroll || (Hrms.Payroll = {}));
- })(Hrms = Apps.Hrms || (Apps.Hrms = {}));
- })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
- })(Bizgaze || (Bizgaze = {}));
|