public override void SaveRecord(SavingParemeter Paras) { DAL.tblNonCashBenefit SaveModel = null; if (Paras.SavingInterface == SavingParemeter.eSavingInterface.AddNew || EditRecordDataSource == null) { SaveModel = new DAL.tblNonCashBenefit(); } else { SaveModel = DALObject.FindSaveModelByPrimeKey(((NonCashBenefitEditListModel)EditRecordDataSource).NonCashBenefitID); if (SaveModel == null) { Paras.SavingResult = new SavingResult(); Paras.SavingResult.ExecutionResult = eExecutionResult.ValidationError; Paras.SavingResult.ValidationError = "Can not edit. Selected record not found, it may be deleted by another user."; return; } } SaveModel.NonCashBenefitName = txtNonCashBenefitName.Text; SaveModel.NonCashBenefitType = (byte)cmbBenifitType.SelectedIndex; SaveModel.KRAValueType = (byte)cmbKRAValueType.SelectedIndex; SaveModel.KRAValue = (decimal)txtKRAValue.EditValue; SaveModel.CostValueType = (byte)cmbCostValueType.SelectedIndex; SaveModel.CostValue = (decimal)txtCostValue.EditValue; SaveModel.VehicleType = txtVehicleType.Text; SaveModel.VehicleRegistrationNo = txtRegistrationNo.Text; SaveModel.VehicleMake = txtMake.Text; SaveModel.VehicleModel = txtModelNo.Text; SaveModel.VehicleEnginePower = txtEnginePowerCC.Text; SaveModel.EngineCCKRAValue = (decimal)txtEngineCCKRAValue.EditValue; SaveModel.VehicleCostKRAPerc = (decimal)txtVehicleCostKRAPerc.EditValue; Paras.SavingResult = DALObject.SaveNewRecord(SaveModel); base.SaveRecord(Paras); }
void CalculatePAYE() { if (EmployeeSaveModel == null) { return; } if (ServiceSaveModel == null) { return; } //-- #region NHIF, NSSF, PAYE & P.F. List <EmployeePayslip_EarningAndDeductionsViewModel> dsTaxableIncome = new List <EmployeePayslip_EarningAndDeductionsViewModel>() { new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Normal Overtime", ValueType = eEarningDeductionValueType.Fixed, Value = NormalOvertimeValue }, new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Double Overtime", ValueType = eEarningDeductionValueType.Fixed, Value = DoubleOvertimeValue }, new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Weekend Allowance", ValueType = eEarningDeductionValueType.Fixed, Value = WeekendWorkedValue }, new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Absent", ValueType = eEarningDeductionValueType.Fixed, Value = -AbsentValue }, new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Notice Pay", ValueType = eEarningDeductionValueType.Fixed, Value = NoticePayValue }, new EmployeePayslip_EarningAndDeductionsViewModel() { EarningAndDeductionName = "Leave Encashment", ValueType = eEarningDeductionValueType.Fixed, Value = LeaveEncashmentValue }, }; dsTaxableIncome.AddRange(dsEarningAndDeduction.Where(r => r.RecordType == eEarningDeductionType.Earning && r.Taxable)); PAYETaxableEarningBindingSource.DataSource = dsTaxableIncome; GrossTaxableIncome = BasicIncome + HRA + (dsTaxableIncome.Sum(r => (decimal?)r.Value) ?? 0); decimal taxableValue = 0; decimal TaxValue = 0; #region NHIF if (cmbNHIFApplicable.SelectedIndex == 1) { var dsNHIFTaxSlab = TaxSlabDALObj.GetLatestTaxSlab(Model.Settings.eTaxSlab_TaxType.NHIF, eIncomeType.Primary).OrderBy(r => r.TaxableSalaryFromValue); taxableValue = BasicIncome + HRA; var MatchingSlab = dsNHIFTaxSlab.Where(r => r.TaxableSalaryFromValue <= taxableValue).OrderByDescending(r => r.TaxableSalaryFromValue).FirstOrDefault(); if (MatchingSlab != null) { NHIFValue = MatchingSlab.TaxValueEmployee; } else { NHIFValue = 0; } //TaxValue = 0; //foreach (var r in dsNHIFTaxSlab) //{ // if (r.TaxableSalaryToValue <= taxableValue) // { // TaxValue += r.TaxValueEmployee; // } //} //NHIFValue = TaxValue; } else { NHIFValue = 0; } #endregion #region NSSF if (cmbNSSF.SelectedIndex == 1) { taxableValue = BasicIncome + HRA; var dsNSSFTaxSlab = TaxSlabDALObj.GetTaxSlab(Model.Settings.eTaxSlab_TaxType.NSSF, DateTo); var SelectedTaxSlab = dsNSSFTaxSlab.Where(r => r.TaxableSalaryFromValue <= taxableValue).OrderByDescending(r => r.TaxableSalaryFromValue).FirstOrDefault(); if (SelectedTaxSlab != null) { NSSFValue = Math.Round(Math.Min(taxableValue * SelectedTaxSlab.TaxPercEmployee, SelectedTaxSlab.MaxTaxValueEmployee), 2); } else { NSSFValue = 0; } } else { NSSFValue = 0; } #endregion #region P.F. if (EmployeeSaveModel != null && (Model.Employee.eProvidentFund)EmployeeSaveModel.ProvidentFund == eProvidentFund.Applicable) { PFValue = Math.Round(BasicIncome * Model.CommonProperties.LoginInfo.SoftwareSettings.PFContributionEmployee, 2); } else { PFValue = 0; } #endregion #region PAYE List <EmployeePayslip_NoncashBenefitViewModel> dsPAYENonCashBenefit = dsNonCashBenefit.Where(r => r.Selected).ToList(); PAYENoncashBenefitBindingSource.DataSource = dsPAYENonCashBenefit; decimal VehicleValue = 0; if (lookUpVehicle_NonCashBenefit.EditValue != null) { var VehicleSaveModel = NonCashBenefitDALObj.FindSaveModelByPrimeKey((int)lookUpVehicle_NonCashBenefit.EditValue); if (VehicleSaveModel != null) { PAYENoncashBenefitBindingSource.Add(new EmployeePayslip_NoncashBenefitViewModel() { NonCashBenefitID = VehicleSaveModel.NonCashBenefitID, NonCashBenefitName = VehicleSaveModel.NonCashBenefitName, CostValue = VehicleSaveModel.CostValue, KRAValue = VehicleSaveModel.KRAValue, KRAValuePercentage = VehicleSaveModel.VehicleCostKRAPerc, }); VehicleValue = VehicleSaveModel.KRAValue; } } List <EmployeePayslip_PAYEReliefeViewModel> dsPAYEpayeRelief = dsPAYERelief.Where(r => r.Selected && r.PAYEReliefAmt != 0).ToList(); dsPAYEpayeRelief.Add(new EmployeePayslip_PAYEReliefeViewModel() { PAYEReliefName = "NSSF", PAYEReliefAmt = NSSFValue }); dsPAYEpayeRelief.Add(new EmployeePayslip_PAYEReliefeViewModel() { PAYEReliefName = "Provident Fund", PAYEReliefAmt = PFValue }); PAYERelief_PersonalRelief = ((dsPAYEpayeRelief.Where(r => r.PAYEReliefType == Model.Settings.ePAYEReliefType.PersonalRelief).Sum(r => (decimal?)r.PAYEReliefAmt) ?? 0)); dsPAYEpayeRelief.RemoveAll(r => r.PAYEReliefType == Model.Settings.ePAYEReliefType.PersonalRelief); PAYEReliefeBindingSource.DataSource = dsPAYEpayeRelief; TaxableIncome = GrossTaxableIncome + (dsPAYENonCashBenefit.Sum(r => (decimal?)r.KRAValue) ?? 0); NetTaxableIncome = TaxableIncome - dsPAYEpayeRelief.Sum(r => r.PAYEReliefAmt); // PAYE Calculation var dsPAYEtaxSlab = TaxSlabDALObj.GetLatestTaxSlab(Model.Settings.eTaxSlab_TaxType.PAYE, EmployeeSaveModel.IncomeType ? eIncomeType.Primary : eIncomeType.Secondary).OrderBy(r => r.TaxableSalaryFromValue); taxableValue = NetTaxableIncome; var FirstSlab = dsPAYEtaxSlab.OrderBy(r => r.TaxableSalaryFromValue).FirstOrDefault(); if (FirstSlab == null || FirstSlab.TaxableSalaryToValue < taxableValue) { //-- foreach (var r in dsPAYEtaxSlab) { if (r.TaxableSalaryFromValue > taxableValue) { break; } decimal CalculateOnAmt = 0; if (r.TaxableSalaryToValue <= taxableValue) { CalculateOnAmt = r.TaxableSalaryToValue - r.TaxableSalaryFromValue; } else { CalculateOnAmt = taxableValue - r.TaxableSalaryFromValue; } TaxValue += Math.Round(CalculateOnAmt * r.TaxPercEmployee, 2); } GrossPAYEValue = TaxValue; PAYEValue = TaxValue - PAYERelief_PersonalRelief; } else { GrossPAYEValue = 0; PAYEValue = 0; } #endregion PAYE #endregion Taxes }