public override void Run(CalcBasicPayCmd request) { p_ProcessTracker.LogMessage("Calculate Basic Pay - Start"); var basicPayEarnRef = request.BasicPay; var basicPay = p_Processor.Run(new GetBasicPayQr ( request.m_NewMasterData.EmployeeID, request.m_NewMasterData.PlanYear, request.m_NewMasterData.PayRunID )); var earning = p_Processor.Run(new GetEarningQr(EarningCodeConstants.BasicPay)); var newCalcdEarning = new MasterEmployeeEarningBO { EarningID = earning.EarningID, Amount = basicPay.Amount, AmountBasis = basicPay.AmountBasis, IsAdjustIfAbsent = basicPayEarnRef.IsAdjustIfAbsent, IsComputed = basicPayEarnRef.IsComputed, IsDeMinimis = basicPayEarnRef.IsDeMinimis, IsNegativeComputation = basicPayEarnRef.IsNegativeComputation, IsPartOfBasicPay = basicPayEarnRef.IsPartOfBasicPay, IsReceivable = basicPayEarnRef.IsReceivable, IsTaxable = basicPayEarnRef.IsTaxable, ShortDesc = earning.ShortDesc, LongDesc = earning.LongDesc, AltDesc = earning.AltDesc }; var existingEarning = request.m_NewMasterData.MasterEmployeeEarnings .SingleOrDefault(a => a.EarningID == earning.EarningID); if (HasChanges(request.m_NewMasterData, existingEarning, newCalcdEarning)) { p_ProcessTracker.LogMessage("Calculate Basic Pay - Has Changes"); request.m_NewMasterData.AddNewEmployeeEarning(newCalcdEarning); } else { p_ProcessTracker.LogMessage("Calculate Basic Pay - No Change"); } p_ProcessTracker.LogMessage("Calculate Basic Pay - End"); }
public override bool Run(int key, MainCalcCmd request) { short planYear = p_ProcessTracker.PlanYear.GetValueOrDefault(); short payPeriodID = p_ProcessTracker.PayRunID.GetValueOrDefault(); bool isSuccess = false; try { p_PayPeriod = p_Processor.Run(new FindPayRunQr(planYear, payPeriodID)); if (p_PayPeriod == null) { throw new AerishException($"Invalid pay period ({planYear} - {payPeriodID}) for client: {p_AppSession.ClientID}"); } p_OldMasterData = p_Processor.Run(new GetPreviousMasterDataQr(p_PayPeriod.PlanYear, p_PayPeriod.PayRunID, key)); if (p_OldMasterData != null) { p_NewMasterData = CopyToNewCalc(p_OldMasterData, p_PayPeriod); } else { p_ProcessTracker.LogMessage("No existing records"); p_NewMasterData = new MasterDataBO { EmployeeID = key, ClientID = p_AppSession.ClientID, RecordStatus = RecordStatus.ModelledActive, }; } p_NewMasterData.ClearTracker(); p_NewMasterData.PlanYear = p_PayPeriod.PlanYear; p_NewMasterData.PayRunID = p_PayPeriod.PayRunID; CalcLastCalcID(); CalcBasicPay(); CalcDaysFactor(); CalcRates(); ValidateParameters(); CalcDeductions(); CalcLoans(); CalcEarnings(); CalcTotalTaxableIncome(); CalcTotalNonTaxableIncome(); CalcNetTaxableIncome(); CalcWitholdingTax(); CalcTotalDeduction(); CalcNetSalary(); if (p_NewMasterData.HasChanges()) { if (p_OldMasterData != null) { MarkOldCalcAsFrozen(p_OldMasterData); } p_NewMasterData.RecordStatus = RecordStatus.Active; var newMasterData = p_Mapper.Map <MasterDataBO, MasterEmployee>(p_NewMasterData); p_DbContext.MasterEmployees.Add(newMasterData); p_ProcessTracker.SaveContext = true; } else { p_ProcessTracker.SaveContext = false; } isSuccess = true; } catch (Exception ex) { p_ProcessTracker.LogError(ex); isSuccess = false; } return(isSuccess); }