protected void Delete_Click(object sender, EventArgs e)
    {
        ArrayList list = new ArrayList();

        foreach (DataListItem item in Repeater.Items)
        {
            CheckBox        c = (CheckBox)item.FindControl("DeleteItem");
            HtmlInputHidden h = (HtmlInputHidden)item.FindControl("ORSORecordID");
            if (c.Checked)
            {
                EORSORecord obj = new EORSORecord();
                obj.ORSORecordID = Int32.Parse(h.Value);
                list.Add(obj);
            }
        }

        EEmpPayroll empPayroll = new EEmpPayroll();

        empPayroll.EmpPayrollID = int.Parse(EmpPayrollID.Value);
        if (EEmpPayroll.db.select(dbConn, empPayroll))
        {
            WebUtils.StartFunction(Session, m_FunctionCode, empPayroll.EmpID);
            foreach (EORSORecord obj in list)
            {
                if (db.select(dbConn, obj))
                {
                    db.delete(dbConn, obj);
                }
            }
            WebUtils.EndFunction(dbConn);
        }
        view = loadData(info, db, Repeater);
    }
Exemplo n.º 2
0
        private void LoadExistingMemberRowInfo(EEmpPersonalInfo empInfo, EORSORecord mpfRecord, DataSet.Payroll_ORSOStatement.ExistingMemberRow existingORSORow)
        {
            existingORSORow.EmpID          = empInfo.EmpID;
            existingORSORow.EmpNo          = empInfo.EmpNo;
            existingORSORow.HKID           = empInfo.EmpHKID.Length < 7 ? empInfo.EmpPassportNo : empInfo.EmpHKID;
            existingORSORow.EmpName        = empInfo.EmpEngFullName;
            existingORSORow.PeriodFrom     = mpfRecord.ORSORecPeriodFr;
            existingORSORow.PeriodTo       = mpfRecord.ORSORecPeriodTo;
            existingORSORow.ORSOPlanID     = mpfRecord.ORSOPlanID;
            existingORSORow.RelevantIncome = 0;
            existingORSORow.EE             = 0;
            existingORSORow.EE             = 0;
            existingORSORow.ER             = 0;
            existingORSORow.ER             = 0;

            DBFilter empTerminationFilter = new DBFilter();

            empTerminationFilter.add(new Match("EmpID", empInfo.EmpID));
            empTerminationFilter.add(new Match("EmpTermLastDate", "<=", mpfRecord.ORSORecPeriodTo));
            empTerminationFilter.add(new Match("EmpTermLastDate", ">=", mpfRecord.ORSORecPeriodFr));
            ArrayList empTerminations = EEmpTermination.db.select(dbConn, empTerminationFilter);

            if (empTerminations.Count > 0)
            {
                EEmpTermination empTermination = (EEmpTermination)empTerminations[0];
                existingORSORow.LastEmploymentDate = empTermination.EmpTermLastDate;

                ECessationReason cessationReason = new ECessationReason();
                cessationReason.CessationReasonID = empTermination.CessationReasonID;
                ECessationReason.db.select(dbConn, cessationReason);
                existingORSORow.TermCode = cessationReason.CessationReasonCode;
            }
        }
    protected void Add_Click(object sender, EventArgs e)
    {
        Repeater.EditItemIndex = -1;
        EORSORecord c = new EORSORecord();

        Hashtable values = new Hashtable();

        newBinding.toValues(values);

        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();


        db.validate(errors, values);

        if (!errors.isEmpty())
        {
            return;
        }


        db.parse(values, c);
        c.ORSORecType = "A";

        EEmpPayroll empPayroll = new EEmpPayroll();

        empPayroll.EmpPayrollID = c.EmpPayrollID;
        if (EEmpPayroll.db.select(dbConn, empPayroll))
        {
            EPayrollPeriod payPeriod = new EPayrollPeriod();
            payPeriod.PayPeriodID = empPayroll.PayPeriodID;

            if (EPayrollPeriod.db.select(dbConn, payPeriod))
            {
                if (c.ORSORecPeriodFr <= payPeriod.PayPeriodTo && c.ORSORecPeriodTo <= payPeriod.PayPeriodTo)
                {
                    WebUtils.StartFunction(Session, m_FunctionCode, empPayroll.EmpID);
                    db.insert(dbConn, c);
                    WebUtils.EndFunction(dbConn);
                }
                else
                {
                    errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_PERIOD);
                    return;
                }
            }
        }
        ORSORecPeriodFr.TextBox.Text = string.Empty;
        ORSORecPeriodTo.TextBox.Text = string.Empty;
        ORSORecActRI.Text            = string.Empty;
        ORSORecActER.Text            = string.Empty;
        ORSORecActEE.Text            = string.Empty;
        ORSOPlanID.SelectedIndex     = 0;

        view = loadData(info, db, Repeater);
        //Response.Redirect(Request.Url.LocalPath + "?" + Request.QueryString);
    }
    protected void Repeater_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        EORSORecord obj = new EORSORecord();

        db.toObject(((DataRowView)e.Item.DataItem).Row, obj);
        Hashtable values = new Hashtable();

        db.populate(obj, values);
        dblTotalORSORI += obj.ORSORecActRI;
        dblTotalORSOER += obj.ORSORecActER;
        dblTotalORSOEE += obj.ORSORecActEE;

        if (e.Item.ItemIndex == Repeater.EditItemIndex)
        {
            Binding eORSOBinding;
            eORSOBinding = new Binding(dbConn, db);
            eORSOBinding.add((HtmlInputHidden)e.Item.FindControl("ORSORecordID"));
            eORSOBinding.add(new TextBoxBinder(db, ((WebDatePicker)e.Item.FindControl("ORSORecPeriodFr")).TextBox, "ORSORecPeriodFr"));
            eORSOBinding.add(new TextBoxBinder(db, ((WebDatePicker)e.Item.FindControl("ORSORecPeriodTo")).TextBox, "ORSORecPeriodTo"));
            eORSOBinding.add((TextBox)e.Item.FindControl("ORSORecActRI"));
            eORSOBinding.add((TextBox)e.Item.FindControl("ORSORecActER"));
            eORSOBinding.add((TextBox)e.Item.FindControl("ORSORecActEE"));
            eORSOBinding.add(new DropDownVLBinder(db, (DropDownList)e.Item.FindControl("ORSOPlanID"), EORSOPlan.VLORSOPlan));



            eORSOBinding.init(Request, Session);

            eORSOBinding.toControl(values);
        }
        else
        {
            if (EmpPayStatus.Value == "C" && obj.ORSORecType != "A")
            {
                e.Item.FindControl("Edit").Visible       = false;
                e.Item.FindControl("DeleteItem").Visible = false;
            }
            else if (obj.ORSORecType != "A")
            {
                e.Item.FindControl("Edit").Visible       = true & IsAllowEdit;
                e.Item.FindControl("DeleteItem").Visible = true;
            }
            else
            {
                e.Item.FindControl("Edit").Visible       = true & IsAllowEdit;
                e.Item.FindControl("DeleteItem").Visible = true & IsAllowEdit;
            }

            HtmlInputHidden h = (HtmlInputHidden)e.Item.FindControl("ORSORecordID");
            h.Value = ((DataRowView)e.Item.DataItem)["ORSORecordID"].ToString();
        }
        HROne.Common.WebUtility.WebControlsLocalization(Session, e.Item.Controls);
    }
    protected void Repeater_ItemCommand(object source, DataListCommandEventArgs e)
    {
        Button b = (Button)e.CommandSource;



        if (b.ID.Equals("Edit"))
        {
            Repeater.EditItemIndex = e.Item.ItemIndex;
            //AddPanel.Visible = false;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, false);
        }
        else if (b.ID.Equals("Cancel"))
        {
            Repeater.EditItemIndex = -1;
            //AddPanel.Visible = IsAllowEdit;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, true);
        }
        else if (b.ID.Equals("Save"))
        {
            Binding eBinding;
            eBinding = new Binding(dbConn, db);
            eBinding.add(EmpPayrollID);
            eBinding.add((HtmlInputHidden)e.Item.FindControl("ORSORecordID"));
            eBinding.add(new TextBoxBinder(db, ((WebDatePicker)e.Item.FindControl("ORSORecPeriodFr")).TextBox, "ORSORecPeriodFr"));
            eBinding.add(new TextBoxBinder(db, ((WebDatePicker)e.Item.FindControl("ORSORecPeriodTo")).TextBox, "ORSORecPeriodTo"));
            eBinding.add((TextBox)e.Item.FindControl("ORSORecActRI"));
            eBinding.add((TextBox)e.Item.FindControl("ORSORecActER"));
            eBinding.add((TextBox)e.Item.FindControl("ORSORecActEE"));
            eBinding.add(new DropDownVLBinder(db, (DropDownList)e.Item.FindControl("ORSOPlanID"), EORSOPlan.VLORSOPlan));


            eBinding.init(Request, Session);


            EORSORecord obj    = new EORSORecord();
            Hashtable   values = new Hashtable();

            PageErrors errors = PageErrors.getErrors(db, Page.Master);
            errors.clear();


            eBinding.toValues(values);
            db.validate(errors, values);

            if (!errors.isEmpty())
            {
                return;
            }

            db.parse(values, obj);

            EEmpPayroll empPayroll = new EEmpPayroll();
            empPayroll.EmpPayrollID = obj.EmpPayrollID;
            if (EEmpPayroll.db.select(dbConn, empPayroll))
            {
                EPayrollPeriod payPeriod = new EPayrollPeriod();
                payPeriod.PayPeriodID = empPayroll.PayPeriodID;

                if (EPayrollPeriod.db.select(dbConn, payPeriod))
                {
                    if (obj.ORSORecPeriodFr <= payPeriod.PayPeriodTo && obj.ORSORecPeriodTo <= payPeriod.PayPeriodTo)
                    {
                        WebUtils.StartFunction(Session, m_FunctionCode, empPayroll.EmpID);
                        db.update(dbConn, obj);
                        WebUtils.EndFunction(dbConn);
                    }
                    else
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_PERIOD);
                        return;
                    }
                }
            }
            Repeater.EditItemIndex = -1;
            //AddPanel.Visible = IsAllowEdit;
            view = loadData(info, db, Repeater);
            WebUtils.SetEnabledControlSection(AddPanel, true);
        }
    }
        private void LoadExistingMemberRowInfo(EEmpPersonalInfo empInfo, EORSORecord mpfRecord, DataSet.Payroll_KTPFundStatement.ExistingMemberRow existingORSORow)
        {
            existingORSORow.EmpID    = empInfo.EmpID;
            existingORSORow.EmpNo    = empInfo.EmpNo;
            existingORSORow.MemberID = "";
            //existingORSORow.HKID = empInfo.EmpHKID.Length < 7 ? empInfo.EmpPassportNo : empInfo.EmpHKID;
            existingORSORow.EmpName        = empInfo.EmpEngFullName;
            existingORSORow.EmpSex         = empInfo.EmpGender;
            existingORSORow.EmpDOB         = empInfo.EmpDateOfBirth;
            existingORSORow.EmpDateJoin    = empInfo.EmpDateOfJoin;
            existingORSORow.PeriodFrom     = mpfRecord.ORSORecPeriodFr;
            existingORSORow.PeriodTo       = mpfRecord.ORSORecPeriodTo;
            existingORSORow.ORSOPlanID     = mpfRecord.ORSOPlanID;
            existingORSORow.RelevantIncome = 0;
            existingORSORow.EE             = 0;
            existingORSORow.EE             = 0;
            existingORSORow.ER             = 0;
            existingORSORow.ER             = 0;
            existingORSORow.MpfMCEE        = 0;
            existingORSORow.MpfMCER        = 0;
            existingORSORow.MpfVCEE        = 0;
            existingORSORow.MpfVCER        = 0;
            existingORSORow.TermCode       = "";


            DBFilter empTerminationFilter = new DBFilter();

            empTerminationFilter.add(new Match("EmpID", empInfo.EmpID));
            empTerminationFilter.add(new Match("EmpTermLastDate", "<=", mpfRecord.ORSORecPeriodTo));
            empTerminationFilter.add(new Match("EmpTermLastDate", ">=", mpfRecord.ORSORecPeriodFr));
            ArrayList empTerminations = EEmpTermination.db.select(dbConn, empTerminationFilter);

            if (empTerminations.Count > 0)
            {
                EEmpTermination empTermination = (EEmpTermination)empTerminations[0];
                existingORSORow.LastEmploymentDate = empTermination.EmpTermLastDate;

                ECessationReason cessationReason = new ECessationReason();
                cessationReason.CessationReasonID = empTermination.CessationReasonID;
                ECessationReason.db.select(dbConn, cessationReason);
                existingORSORow.TermCode = cessationReason.CessationReasonCode;
            }
            // get member ID

            DBFilter m_empFieldFilter = new DBFilter();

            m_empFieldFilter.add(new Match("EmpExtraFieldName", "P-Fund Member ID"));

            int       m_extraFieldID = 0;
            ArrayList m_fieldList    = EEmpExtraField.db.select(dbConn, m_empFieldFilter);

            if (m_fieldList.Count > 0)
            {
                m_extraFieldID = ((EEmpExtraField)m_fieldList[0]).EmpExtraFieldID;
            }

            if (m_extraFieldID > 0)
            {
                DBFilter m_empFieldValueFilter = new DBFilter();
                m_empFieldValueFilter.add(new Match("EmpID", empInfo.EmpID));
                m_empFieldValueFilter.add(new Match("EmpExtraFieldID", m_extraFieldID));

                ArrayList m_fieldValueList = EEmpExtraFieldValue.db.select(dbConn, m_empFieldValueFilter);
                if (m_fieldValueList.Count > 0)
                {
                    existingORSORow.MemberID = ((EEmpExtraFieldValue)m_fieldValueList[0]).EmpExtraFieldValue;
                }
            }

            // get P-Fund effective date (i.e. 1st contribution date)
            DBFilter m_empOrsoPlanFilter = new DBFilter();

            m_empOrsoPlanFilter.add(new Match("EmpID", empInfo.EmpID));
            m_empOrsoPlanFilter.add("EmpORSOEffFr", true);

            ArrayList m_orsoPlanList = EEmpORSOPlan.db.select(dbConn, m_empOrsoPlanFilter);

            if (m_orsoPlanList.Count > 0)
            {
                existingORSORow.OrsoEffDate = ((EEmpORSOPlan)m_orsoPlanList[0]).EmpORSOEffFr;
            }
        }
Exemplo n.º 7
0
        //private static double CalculateProrataFactor(int EmpID, EPayrollPeriod payrollPeriod)
        //{
        //    EEmpPersonalInfo oEmp = new EEmpPersonalInfo();
        //    oEmp.EmpID = EmpID;
        //    EEmpPersonalInfo.db.select(dbConn, oEmp);

        //    DateTime dt1AgeMin = oEmp.EmpDateOfBirth.AddYears(AGE_MINIMUM);
        //    DateTime dt1AgeMax = oEmp.EmpDateOfBirth.AddYears(AGE_MAXIMUM);

        //    EEmpTermination empTermination = EEmpTermination.GetObjectByEmpID(dbConn, EmpID);
        //    bool blnTerminated;
        //    if (empTermination != null)
        //    {
        //        if (empTermination.EmpTermLastDate <= payrollPeriod.PayPeriodTo && empTermination.EmpTermLastDate >= payrollPeriod.PayPeriodFr)
        //            blnTerminated = true;
        //        else
        //            blnTerminated = false;
        //    }
        //    else
        //        blnTerminated = false;

        //    double prorataFactor = 1;
        //    if (oEmp.EmpDateOfJoin < dt1AgeMin)
        //    {
        //        if (dt1AgeMin <= payrollPeriod.PayPeriodTo && dt1AgeMin >= payrollPeriod.PayPeriodFr)
        //        {
        //            if (blnTerminated)
        //                prorataFactor = (double)(empTermination.EmpTermLastDate.Subtract(dt1AgeMin).Days + 1) / (empTermination.EmpTermLastDate.Subtract(payrollPeriod.PayPeriodFr > oEmp.EmpDateOfJoin ? payrollPeriod.PayPeriodFr : oEmp.EmpDateOfJoin).Days + 1);
        //            else
        //                prorataFactor = (double)(payrollPeriod.PayPeriodTo.Subtract(dt1AgeMin).Days + 1) / (payrollPeriod.PayPeriodTo.Subtract(payrollPeriod.PayPeriodFr > oEmp.EmpDateOfJoin ? payrollPeriod.PayPeriodFr : oEmp.EmpDateOfJoin).Days + 1);
        //        }
        //        if (dt1AgeMin >= payrollPeriod.PayPeriodTo)
        //            prorataFactor = 0;
        //    }

        //    if (dt1AgeMax <= payrollPeriod.PayPeriodTo && dt1AgeMax >= payrollPeriod.PayPeriodFr)
        //    {
        //        if (blnTerminated)
        //        {
        //            if (empTermination.EmpTermLastDate < dt1AgeMax)
        //                prorataFactor = 1;
        //            else
        //                prorataFactor = 1.0 - (double)(empTermination.EmpTermLastDate.Subtract(dt1AgeMax).Days + 1) / (empTermination.EmpTermLastDate.Subtract(payrollPeriod.PayPeriodFr > oEmp.EmpDateOfJoin ? payrollPeriod.PayPeriodFr : oEmp.EmpDateOfJoin).Days + 1);
        //        }
        //        else
        //            prorataFactor = 1.0 - (double)(payrollPeriod.PayPeriodTo.Subtract(dt1AgeMax).Days + 1) / (payrollPeriod.PayPeriodTo.Subtract(payrollPeriod.PayPeriodFr > oEmp.EmpDateOfJoin ? payrollPeriod.PayPeriodFr : oEmp.EmpDateOfJoin).Days + 1);
        //    }
        //    if (dt1AgeMax <= payrollPeriod.PayPeriodFr)
        //        prorataFactor = 0;

        //    return prorataFactor;
        //}

        private static EORSORecord CreateORSORecord(DatabaseConnection dbConn, int EmpID, EPayrollPeriod payrollPeriod, ArrayList paymentRecords, DateTime ORSOJoinDate, ORSOJoinType ORSOJoinType, EMPFRecord mpfRecord)
        {
            //double RIProrateFactor = CalculateProrataFactor(EmpID, payrollPeriod);
            EORSORecord orsoRecord = new EORSORecord();

            switch (ORSOJoinType)
            {
            case ORSOJoinType.NewJoin:
                orsoRecord.ORSORecType = "N";
                break;

            case ORSOJoinType.Existing:
                orsoRecord.ORSORecType = "E";
                break;
                //case ORSOJoinType.Terminated:
                //    ORSORecord.ORSORecType = "T";
                //break;
            }
            orsoRecord.ORSORecCalRI = 0;
            orsoRecord.ORSOPlanID   = GetORSOPlanID(dbConn, EmpID, payrollPeriod.PayPeriodTo);

            if (orsoRecord.ORSOPlanID > 0)
            {
                EEmpPersonalInfo oEmp = new EEmpPersonalInfo();
                oEmp.EmpID = EmpID;
                EEmpPersonalInfo.db.select(dbConn, oEmp);

                //DateTime dt1Age18 = oEmp.EmpDateOfBirth.AddYears(18);
                //DateTime dt1Age65 = oEmp.EmpDateOfBirth.AddYears(65);

                EEmpTermination empTermination = EEmpTermination.GetObjectByEmpID(dbConn, EmpID);

                orsoRecord.ORSORecPeriodFr = payrollPeriod.PayPeriodFr;
                orsoRecord.ORSORecPeriodTo = payrollPeriod.PayPeriodTo;

                if (orsoRecord.ORSORecPeriodFr > oEmp.EmpDateOfJoin && orsoRecord.ORSORecPeriodTo < oEmp.EmpDateOfJoin)
                {
                    orsoRecord.ORSORecPeriodFr = oEmp.EmpDateOfJoin;
                }
                //if (ORSORecord.ORSORecPeriodFr > dt1Age18 && ORSORecord.ORSORecPeriodTo < dt1Age18)
                //    ORSORecord.ORSORecPeriodFr = dt1Age18;
                if (empTermination != null)
                {
                    // Start 0000186, Ricky So, 2016/04/15
                    // incomplete month --> no orso contribution
                    if (orsoRecord.ORSORecPeriodTo > empTermination.EmpTermLastDate && orsoRecord.ORSORecPeriodFr <= empTermination.EmpTermLastDate)
                    {
                        orsoRecord.ORSORecPeriodTo = empTermination.EmpTermLastDate;
                        orsoRecord.ORSORecActEE    = 0;
                        orsoRecord.ORSORecActER    = 0;
                        orsoRecord.ORSORecActRI    = 0;
                        orsoRecord.ORSORecCalEE    = 0;
                        orsoRecord.ORSORecCalER    = 0;
                        orsoRecord.ORSORecCalRI    = 0;
                        return(orsoRecord);
                    }
                    // End 0000186, Ricky So, 2016/04/15
                    if (orsoRecord.ORSORecPeriodTo < empTermination.EmpTermLastDate && orsoRecord.ORSORecPeriodFr >= empTermination.EmpTermLastDate)
                    {
                        orsoRecord.ORSORecPeriodTo = empTermination.EmpTermLastDate;
                    }
                }
                //if (ORSORecord.ORSORecPeriodTo < dt1Age65 && ORSORecord.ORSORecPeriodFr > dt1Age65)
                //    ORSORecord.ORSORecPeriodTo = dt1Age65;


                foreach (EPaymentRecord paymentRecord in paymentRecords)
                {
                    EPaymentCode paymentCode = new EPaymentCode();
                    paymentCode.PaymentCodeID = paymentRecord.PaymentCodeID;
                    EPaymentCode.db.select(dbConn, paymentCode);
                    if (paymentCode.PaymentCodeIsORSO)
                    {
                        orsoRecord.ORSORecCalRI += paymentRecord.PayRecActAmount;
                    }
                }
                orsoRecord.ORSORecActRI = orsoRecord.ORSORecCalRI;

                if (orsoRecord.ORSOPlanID > 0)
                {
                    DBFilter oldORSORecordFilter = new DBFilter();

                    DBFilter empIDFilter = new DBFilter();
                    empIDFilter.add(new Match("EmpID", EmpID));

                    oldORSORecordFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from EMPPayroll ", empIDFilter));
                    oldORSORecordFilter.add(new Match("ORSORecPeriodFr", "<=", orsoRecord.ORSORecPeriodTo));
                    oldORSORecordFilter.add(new Match("ORSORecPeriodTo", ">=", orsoRecord.ORSORecPeriodFr));
                    ArrayList oldORSORecords = EORSORecord.db.select(dbConn, oldORSORecordFilter);

                    EORSORecord oldTotalORSORecord = new EORSORecord();
                    EORSORecord newTotalORSORecord = new EORSORecord();

                    foreach (EORSORecord oldORSORecord in oldORSORecords)
                    {
                        oldTotalORSORecord.ORSORecActRI += oldORSORecord.ORSORecActRI;
                        oldTotalORSORecord.ORSORecActER += oldORSORecord.ORSORecActER;
                        oldTotalORSORecord.ORSORecActEE += oldORSORecord.ORSORecActEE;
                    }


                    newTotalORSORecord.ORSORecCalRI = oldTotalORSORecord.ORSORecActRI + orsoRecord.ORSORecCalRI;

                    newTotalORSORecord.ORSORecCalER = CalculateERAmount(dbConn, oEmp, orsoRecord.ORSOPlanID, newTotalORSORecord.ORSORecCalRI, payrollPeriod, mpfRecord);
                    newTotalORSORecord.ORSORecCalEE = CalculateEEAmount(dbConn, oEmp, orsoRecord.ORSOPlanID, newTotalORSORecord.ORSORecCalRI, payrollPeriod, ORSOJoinDate, mpfRecord);

                    orsoRecord.ORSORecCalER = newTotalORSORecord.ORSORecCalER - oldTotalORSORecord.ORSORecActER;
                    orsoRecord.ORSORecCalEE = newTotalORSORecord.ORSORecCalEE - oldTotalORSORecord.ORSORecActEE;



                    orsoRecord.ORSORecActER = Math.Round(orsoRecord.ORSORecCalER, 2, MidpointRounding.AwayFromZero);
                    orsoRecord.ORSORecActEE = Math.Round(orsoRecord.ORSORecCalEE, 2, MidpointRounding.AwayFromZero);

                    EORSOPlan orsoPlan = new EORSOPlan();
                    orsoPlan.ORSOPlanID = orsoRecord.ORSOPlanID;
                    if (EORSOPlan.db.select(dbConn, orsoPlan))
                    {
                        if (string.IsNullOrEmpty(orsoPlan.ORSOPlanEmployerRoundingRule))
                        {
                            orsoPlan.ORSOPlanEmployerRoundingRule = Values.ROUNDING_RULE_ROUND_TO;
                            orsoPlan.ORSOPlanEmployerDecimalPlace = 2;
                        }
                        if (orsoPlan.ORSOPlanEmployerRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_TO))
                        {
                            orsoRecord.ORSORecActER = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(orsoRecord.ORSORecCalER, orsoPlan.ORSOPlanEmployerDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }
                        else if (orsoPlan.ORSOPlanEmployerRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_UP))
                        {
                            orsoRecord.ORSORecActER = HROne.CommonLib.GenericRoundingFunctions.RoundingUp(orsoRecord.ORSORecCalER, orsoPlan.ORSOPlanEmployerDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }
                        else if (orsoPlan.ORSOPlanEmployerRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_DOWN))
                        {
                            orsoRecord.ORSORecActER = HROne.CommonLib.GenericRoundingFunctions.RoundingDown(orsoRecord.ORSORecCalER, orsoPlan.ORSOPlanEmployerDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }

                        if (string.IsNullOrEmpty(orsoPlan.ORSOPlanEmployeeRoundingRule))
                        {
                            orsoPlan.ORSOPlanEmployeeRoundingRule = Values.ROUNDING_RULE_ROUND_TO;
                            orsoPlan.ORSOPlanEmployeeDecimalPlace = 2;
                        }
                        if (orsoPlan.ORSOPlanEmployeeRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_TO))
                        {
                            orsoRecord.ORSORecActEE = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(orsoRecord.ORSORecCalEE, orsoPlan.ORSOPlanEmployeeDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }
                        else if (orsoPlan.ORSOPlanEmployeeRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_UP))
                        {
                            orsoRecord.ORSORecActEE = HROne.CommonLib.GenericRoundingFunctions.RoundingUp(orsoRecord.ORSORecCalEE, orsoPlan.ORSOPlanEmployeeDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }
                        else if (orsoPlan.ORSOPlanEmployeeRoundingRule.Equals(Values.ROUNDING_RULE_ROUND_DOWN))
                        {
                            orsoRecord.ORSORecActEE = HROne.CommonLib.GenericRoundingFunctions.RoundingDown(orsoRecord.ORSORecCalEE, orsoPlan.ORSOPlanEmployeeDecimalPlace, ExchangeCurrency.DefaultCurrencyDecimalPlaces());
                        }
                    }
                }

                return(orsoRecord);
            }
            else
            {
                return(null);
            }
        }