Exemple #1
0
        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");
        }
Exemple #2
0
        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);
        }