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 `
`;
}
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 = ` | `;
}
else {
txtsakaryComponet_html = ` | `;
}
var CalculationType = "";
CalculationType = `
% of CTC
`;
if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
CalculationType = ` `;
}
var monthlyamount = ` `;
if (data.issystemgenerated == true && data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.PreTaxDeductions || data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
CalculationType = `Fixed amount
`;
monthlyamount = ` 0
`;
}
if (data.componenttypeid == Bizgaze.Apps.Hrms.Enums.ComponentTypes.Taxes) {
monthlyamount = ` `;
}
$('.pencil-edit').click(function () {
$('txt_incometax').removeAttr('disabled');
$(this).removeClass('fa-pencil').addClass('fa-close');
});
var html1 = ` ${txtsakaryComponet_html} ${CalculationType} | ${monthlyamount} | | |
`;
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: ' + data.amount + ' ');
$('#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 = {}));