Exemplo n.º 1
0
    protected bool loadObject()
    {
        obj            = new ELeaveApplication();
        obj.LeaveAppID = CurLeaveAppID;
        if (!ELeaveApplication.db.select(dbConn, obj))
        {
            return(false);
        }

        if (obj.EmpID != UserID)
        {
            return(false);
        }
        Hashtable values = new Hashtable();

        ELeaveApplication.db.populate(obj, values);
        leaveApplicationBinding.toControl(values);
        //EEmpPersonalInfo EmpInfo = new EEmpPersonalInfo();
        //EmpInfo.EmpID = obj.EmpID;
        //if (EEmpPersonalInfo.db.select(dbConn, EmpInfo))
        //    EmpName.Text = EmpInfo.EmpNo + " - " + EmpInfo.EmpEngFullNameWithAlias;

        if (obj.LeaveAppUnit.Equals("D"))
        {
            TimeRow.Visible = false;
            LeaveAppDateToPlaceHolder.Visible = true;
        }
        else
        {
            TimeRow.Visible = true;
            LeaveAppDateToPlaceHolder.Visible = false;
        }

        string     leaveAuthorizedMessage = CONFIRM_MESSAGE;
        ELeaveCode leaveCode = new ELeaveCode();

        leaveCode.LeaveCodeID = obj.LeaveCodeID;
        if (ELeaveCode.db.select(dbConn, leaveCode))
        {
            LeaveCodeIsShowMedicalCertOptionPanel.Visible = leaveCode.LeaveCodeIsShowMedicalCertOption;

            if (leaveCode.LeaveTypeID.Equals(ELeaveType.COMPENSATION_LEAVE_TYPE(dbConn).LeaveTypeID))
            {
                HoursClaimPanel.Visible = true;
            }
            else
            {
                HoursClaimPanel.Visible = false;
            }
        }
        else
        {
            HoursClaimPanel.Visible = false;
        }



        return(true);
    }
    protected ELeaveType GetLeaveTypeFromLeaveCode(int LeaveCodeID)
    {
        ELeaveCode m_leaveCode = ELeaveCode.GetObject(dbConn, LeaveCodeID);

        ELeaveType m_leaveType = ELeaveType.GetObject(dbConn, m_leaveCode.LeaveTypeID);

        return(m_leaveType);
    }
Exemplo n.º 3
0
    protected void RefreshLeaveCodeID()
    {
        HoursClaimPanel.Visible = false;
        if (!string.IsNullOrEmpty(LeaveCodeID.SelectedValue))
        {
            int tmpLeaveCodeID = 0;
            if (int.TryParse(LeaveCodeID.SelectedValue, out tmpLeaveCodeID))
            {
                ELeaveCode leaveCode = new ELeaveCode();
                leaveCode.LeaveCodeID = tmpLeaveCodeID;
                if (ELeaveCode.db.select(dbConn, leaveCode))
                {
                    PayrollProcessPanel.Visible = !leaveCode.LeaveCodeIsSkipPayrollProcess;
                    LeaveCodeIsShowMedicalCertOptionPanel.Visible = leaveCode.LeaveCodeIsShowMedicalCertOption;
                    if (!leaveCode.LeaveCodeIsSkipPayrollProcess)
                    {
                        ELeaveApplication leaveApp = new ELeaveApplication();
                        leaveApp.LeaveAppID = CurID;
                        if (ELeaveApplication.db.select(dbConn, leaveApp))
                        {
                            ELeaveCode prevLeaveCode = new ELeaveCode();
                            prevLeaveCode.LeaveCodeID = leaveApp.LeaveCodeID;
                            if (ELeaveCode.db.select(dbConn, prevLeaveCode))
                            {
                                if (prevLeaveCode.LeaveCodeIsSkipPayrollProcess)
                                {
                                    LeaveAppNoPayProcess.Checked = false;
                                }
                            }
                        }
                    }

                    if (leaveCode.LeaveTypeID.Equals(ELeaveType.COMPENSATION_LEAVE_TYPE(dbConn).LeaveTypeID))
                    {
                        HoursClaimPanel.Visible = true;
                    }
                    else
                    {
                        HoursClaimPanel.Visible = false;
                    }
                }
            }
        }
        if (HoursClaimPanel.Visible)
        {
            LeaveAppDays.AutoPostBack = true;
            LeaveAppDays.TextChanged += new EventHandler(LeaveAppDays_TextChanged);
        }
        else
        {
            LeaveAppDays.AutoPostBack = false;
            LeaveAppDays.TextChanged -= new EventHandler(LeaveAppDays_TextChanged);
        }
    }
Exemplo n.º 4
0
    protected void Delete_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        ELeaveCode obj = new ELeaveCode();

        obj.LeaveCodeID = CurID;
        db.select(dbConn, obj);
        DBFilter leaveApplicationFilter = new DBFilter();

        leaveApplicationFilter.add(new Match("LeaveCodeID", obj.LeaveCodeID));
        leaveApplicationFilter.add("empid", true);
        ArrayList leaveApplicationList = ELeaveApplication.db.select(dbConn, leaveApplicationFilter);

        if (leaveApplicationList.Count > 0)
        {
            int curEmpID = 0;
            errors.addError(string.Format(HROne.Translation.PageErrorMessage.ERROR_CODE_USED_BY_EMPLOYEE, new string[] { HROne.Common.WebUtility.GetLocalizedString("Leave Code"), obj.LeaveCode }));
            foreach (ELeaveApplication leaveApplication in leaveApplicationList)
            {
                EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
                empInfo.EmpID = leaveApplication.EmpID;
                if (EEmpPersonalInfo.db.select(dbConn, empInfo))
                {
                    if (curEmpID != leaveApplication.EmpID)
                    {
                        errors.addError("- " + empInfo.EmpNo + ", " + empInfo.EmpEngFullName);
                        curEmpID = leaveApplication.EmpID;
                    }
                }
                else
                {
                    ELeaveApplication.db.delete(dbConn, leaveApplication);
                }
            }
            errors.addError(HROne.Translation.PageErrorMessage.ERROR_ACTION_ABORT);
            return;
        }
        else
        {
            WebUtils.StartFunction(Session, FUNCTION_CODE);
            db.delete(dbConn, obj);
            WebUtils.EndFunction(dbConn);
        }
        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "LeaveCode_List.aspx");
    }
    protected void Repeater_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(ELeaveApplication.db, Page.Master);

        int LeaveAppID = 0;

        if (int.TryParse(((Button)e.Item.FindControl("Cancel")).Attributes["LeaveAppID"], out LeaveAppID))
        {
            ELeaveApplication obj = new ELeaveApplication();
            obj.LeaveAppID = LeaveAppID;
            if (ELeaveApplication.db.select(dbConn, obj))
            {
                //if (obj.EmpPayrollID > 0 || obj.EmpPaymentID > 0)
                //{
                //    //  message prompt to user
                //}
                //else
                {
                    ELeaveCode leaveCode = new ELeaveCode();
                    leaveCode.LeaveCodeID = obj.LeaveCodeID;
                    if (ELeaveCode.db.select(dbConn, leaveCode))
                    {
                        if (leaveCode.LeaveCodeHideInESS)
                        {
                            //  message prompt to user
                        }
                        else
                        {
                            HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "ESS_EmpLeaveApplicationCancel.aspx?LeaveAppID=" + LeaveAppID);

                            //AppUtils.StartFunction(dbConn, 0, "PER009", obj.EmpID, true);
                            //ELeaveApplication.db.delete(dbConn, obj);
                            //AppUtils.EndFunction(dbConn);
                            //ESSAuthorizationProcess authorization = new ESSAuthorizationProcess(dbConn);
                            //authorization.CancelLeaveApplicatoin(obj);
                            //errors.addError(HROne.Common.WebUtility.GetLocalizedString("The leave application is cancelled"));
                        }
                    }
                    else
                    {
                        //  message prompt to user
                    }
                }
            }
        }
        view = loadData(info, db, Repeater);
    }
Exemplo n.º 6
0
    protected bool loadObject()
    {
        obj = new ELeaveCode();
        bool isNew = WebFormWorkers.loadKeys(db, obj, DecryptedRequest);

        if (!db.select(dbConn, obj))
        {
            return(false);
        }

        Hashtable values = new Hashtable();

        db.populate(obj, values);
        binding.toControl(values);


        return(true);
    }
Exemplo n.º 7
0
    private string getCurrentLeaveCodeDesc(DateTime periodFromDate, int dayIdx, int empID)
    {
        DateTime currentDate    = periodFromDate.AddDays(dayIdx);
        TimeSpan cutOffTimeSpan = getCurrentCutOffTimeSpan(periodFromDate, dayIdx, empID);

        // retrieve employee leave information of the day
        DBFilter          leaveAppFilter = new DBFilter();
        ELeaveApplication leaveAppData   = new ELeaveApplication();

        leaveAppFilter.add(new Match("EmpID", empID));
        leaveAppFilter.add(new Match("LeaveAppDateFrom", "<=", currentDate.Add(cutOffTimeSpan)));
        leaveAppFilter.add(new Match("LeaveAppDateTo", ">=", currentDate.Add(cutOffTimeSpan)));

        ArrayList leaveAppDataList = ELeaveApplication.db.select(dbConn, leaveAppFilter);
        string    s = "";

        foreach (ELeaveApplication itemData in leaveAppDataList)
        {
            if (s != "")
            {
                s = s + "<br>";
            }

            // get leave code master
            DBFilter   leaveCodeMasterFilter = new DBFilter();
            ELeaveCode leaveCodeMasterData   = new ELeaveCode();
            leaveCodeMasterFilter.add(new Match("leaveCodeID", itemData.LeaveCodeID));
            ArrayList leaveCodeMasterDataList = ELeaveCode.db.select(dbConn, leaveCodeMasterFilter);

            if (leaveCodeMasterDataList != null)
            {
                s = s + ((ELeaveCode)leaveCodeMasterDataList[0]).LeaveCode + " - " + ((ELeaveCode)leaveCodeMasterDataList[0]).LeaveCodeDesc;
            }
        }
        if (s != "")
        {
            s.Replace("<br>", "\n");
        }
        return(s);
    }
    protected void RequestLeaveCodeID_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(RequestLeaveCodeID.SelectedValue))
        {
            int tmpLeaveCodeID = 0;
            if (int.TryParse(RequestLeaveCodeID.SelectedValue, out tmpLeaveCodeID))
            {
                //RequestLeaveAppUnit.Items.Clear();

                ELeaveCode leaveCode = new ELeaveCode();
                leaveCode.LeaveCodeID = tmpLeaveCodeID;
                if (ELeaveCode.db.select(dbConn, leaveCode))
                {
                    LeaveCodeIsShowMedicalCertOptionPanel.Visible = leaveCode.LeaveCodeIsShowMedicalCertOption;
                    // Start 0000151, Ricky So, 2015-01-06
                    RequestLeaveAppHasMedicalCertificate.Checked = leaveCode.LeaveCodeIsShowMedicalCertOption;
                    // RequestLeaveAppHasMedicalCertificate.Checked = true;
                    // End 0000151, Ricky So, 2015-01-06
                }
            }
        }
    }
Exemplo n.º 9
0
    protected void LeaveCodeOverrideRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DataRowView row = (DataRowView)e.Item.DataItem;

            Label LeaveCodeID = (Label)e.Item.FindControl("LeaveCodeID");
            Label PayrollGroupLeaveCodeSetupLeaveDeductFormula       = (Label)e.Item.FindControl("PayrollGroupLeaveCodeSetupLeaveDeductFormula");
            Label PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID = (Label)e.Item.FindControl("PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID");
            Label PayrollGroupLeaveCodeSetupLeaveAllowFormula        = (Label)e.Item.FindControl("PayrollGroupLeaveCodeSetupLeaveAllowFormula");
            Label PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID  = (Label)e.Item.FindControl("PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID");
            WebFormUtils.LoadKeys(ELeaveCode.db, row, LeaveCodeID);

            Binding ebinding = new Binding(dbConn, EPayrollGroupLeaveCodeSetupOverride.db);
            ebinding.add(new LabelVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, LeaveCodeID, ELeaveCode.VLLeaveCode));
            ebinding.add(new BlankZeroLabelVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveDeductFormula, EPayrollProrataFormula.VLPayrollProrataFormula));
            ebinding.add(new BlankZeroLabelVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID, EPaymentCode.VLPaymentCode));
            ebinding.add(new BlankZeroLabelVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveAllowFormula, EPayrollProrataFormula.VLPayrollProrataFormula));
            ebinding.add(new BlankZeroLabelVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID, EPaymentCode.VLPaymentCode));
            ebinding.init(Request, Session);

            ELeaveCode leaveCode = new ELeaveCode();
            ELeaveCode.db.toObject(row.Row, leaveCode);
            //LeaveCodeID.Text = string.Format("{0}-{1}", new string[] { leaveCode.LeaveCode, leaveCode.LeaveCodeDesc });

            DBFilter payrollGroupLeaveCodeSetupOverrideFilter = new DBFilter();
            payrollGroupLeaveCodeSetupOverrideFilter.add(new Match("PayGroupID", CurID));
            payrollGroupLeaveCodeSetupOverrideFilter.add(new Match("LeaveCodeID", leaveCode.LeaveCodeID));
            ArrayList overrideList = EPayrollGroupLeaveCodeSetupOverride.db.select(dbConn, payrollGroupLeaveCodeSetupOverrideFilter);
            if (overrideList.Count > 0)
            {
                EPayrollGroupLeaveCodeSetupOverride setupOverride = (EPayrollGroupLeaveCodeSetupOverride)overrideList[0];
                Hashtable hashTable = new Hashtable();
                EPayrollGroupLeaveCodeSetupOverride.db.populate(setupOverride, hashTable);
                ebinding.toControl(hashTable);
            }
        }
    }
Exemplo n.º 10
0
    protected void Save_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        if (LeaveCodeIsSkipPayrollProcess.Checked)
        {
            DBFilter defaultPayrollProrataFormulaFilter = new DBFilter();
            defaultPayrollProrataFormulaFilter.add(new Match("PayFormCode", EPayrollProrataFormula.DEFAULT_FOEMULA_CODE));
            ArrayList defaultPayrollFormulaList = EPayrollProrataFormula.db.select(dbConn, defaultPayrollProrataFormulaFilter);
            if (defaultPayrollFormulaList.Count > 0)
            {
                int defaultPayrollFormulaID = ((EPayrollProrataFormula)defaultPayrollFormulaList[0]).PayFormID;
                LeaveCodeLeaveAllowFormula.SelectedValue  = defaultPayrollFormulaID.ToString();
                LeaveCodeLeaveDeductFormula.SelectedValue = defaultPayrollFormulaID.ToString();
                LeaveCodePayRatio.Text      = "1";
                LeaveCodePayAdvance.Checked = false;
            }
        }


        Hashtable values = new Hashtable();

        binding.toValues(values);

        db.validate(errors, values);

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


        ELeaveCode c = new ELeaveCode();

        db.parse(values, c);

        if (!c.LeaveCodeIsSkipPayrollProcess)
        {
            if (c.LeaveCodeLeaveAllowPaymentCodeID.Equals(0))
            {
                errors.addError(lblLeaveAllowPaymentCode.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }
            if (c.LeaveCodeLeaveDeductPaymentCodeID.Equals(0))
            {
                errors.addError(lblLeaveDeductPaymentCode.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }

            if (c.LeaveCodePayRatio.Equals(1))
            {
                EPaymentCode allowancePaymentCode = new EPaymentCode();
                allowancePaymentCode.PaymentCodeID = c.LeaveCodeLeaveAllowPaymentCodeID;
                if (EPaymentCode.db.select(dbConn, allowancePaymentCode))
                {
                    if (!allowancePaymentCode.PaymentCodeIsWages)
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_ALLOWANCE_SHOULD_BE_WAGES);
                    }
                }
                else
                {
                    if (!c.LeaveCodeLeaveAllowPaymentCodeID.Equals(c.LeaveCodeLeaveDeductPaymentCodeID))
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_ALLOWANCE_SHOULD_BE_WAGES);
                    }
                }
            }
            else if (!c.LeaveCodePayRatio.Equals(0))
            {
                EPaymentCode allowancePaymentCode = new EPaymentCode();
                allowancePaymentCode.PaymentCodeID = c.LeaveCodeLeaveAllowPaymentCodeID;
                if (EPaymentCode.db.select(dbConn, allowancePaymentCode))
                {
                    if (allowancePaymentCode.PaymentCodeIsWages)
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_ALLOWANCE_SHOULD_NOT_BE_WAGES);
                    }
                }
                else
                {
                    //if (!c.LeaveCodeLeaveAllowPaymentCodeID.Equals(c.LeaveCodeLeaveDeductPaymentCodeID))
                    errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_ALLOWANCE_SHOULD_NOT_BE_WAGES);
                }
            }
        }

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

        WebUtils.StartFunction(Session, FUNCTION_CODE);
        if (CurID < 0)
        {
//            Utils.MarkCreate(Session, c);

            db.insert(dbConn, c);
            CurID = c.LeaveCodeID;
//            url = Utils.BuildURL(-1, CurID);
        }
        else
        {
//            Utils.Mark(Session, c);
            db.update(dbConn, c);
        }
        WebUtils.EndFunction(dbConn);


        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "LeaveCode_View.aspx?LeaveCodeID=" + CurID);
    }
Exemplo n.º 11
0
        public override ReportDocument GenerateReport()
        {
            string HierarchyLevel1 = string.Empty;
            string HierarchyLevel2 = string.Empty;
            string HierarchyLevel3 = string.Empty;

            ArrayList HierarchyLevelList = EHierarchyLevel.db.select(dbConn, new DBFilter());

            foreach (EHierarchyLevel hLevel in HierarchyLevelList)
            {
                if (hLevel.HLevelSeqNo.Equals(1))
                {
                    HierarchyLevel1 = hLevel.HLevelDesc;
                }
                else if (hLevel.HLevelSeqNo.Equals(2))
                {
                    HierarchyLevel2 = hLevel.HLevelDesc;
                }
                else if (hLevel.HLevelSeqNo.Equals(3))
                {
                    HierarchyLevel3 = hLevel.HLevelDesc;
                }
            }

            if (EmpList.Count > 0)
            {
                DataSet.EmployeeDetail ds = new DataSet.EmployeeDetail();


                foreach (int EmpID in EmpList)
                {
                    EmployeeDetailProcess.ImportEmployeeDetailRow(dbConn, ds.employeedetail, EmpID, AppUtils.ServerDateTime().Date);

                    DBFilter filter = new DBFilter();
                    //filter.add(new Match("LeaveAppDateFrom", ">=", startDate));
                    //filter.add(new Match("LeaveAppDateFrom", "<=", AsOfDate));
                    filter.add(new Match("EmpID", EmpID));
                    if (!DateFrom.Ticks.Equals(0))
                    {
                        filter.add(new Match("LeaveAppDateFrom", "<=", DateTo));
                    }
                    if (!DateTo.Ticks.Equals(0))
                    {
                        filter.add(new Match("LeaveAppDateTo", ">=", DateFrom));
                    }
                    ArrayList leaveApplicationList = ELeaveApplication.db.select(dbConn, filter);
                    DataSet.EmployeeDetail.LeaveApplicationDataTable leaveApplicationTable = ds.LeaveApplication;
                    foreach (ELeaveApplication leaveApplication in leaveApplicationList)
                    {
                        DataSet.EmployeeDetail.LeaveApplicationRow row = leaveApplicationTable.NewLeaveApplicationRow();
                        row.EmpID            = leaveApplication.EmpID;
                        row.EmpPaymentID     = leaveApplication.EmpPaymentID;
                        row.LeaveAppDateFrom = leaveApplication.LeaveAppDateFrom;
                        row.LeaveAppDateTo   = leaveApplication.LeaveAppDateTo;
                        if (leaveApplication.LeaveAppUnit == "H")
                        {
                            row.LeaveAppDays = leaveApplication.LeaveAppHours;
                        }
                        else
                        {
                            row.LeaveAppDays = leaveApplication.LeaveAppDays;
                        }
                        row.LeaveAppID     = leaveApplication.LeaveAppID;
                        row.LeaveAppRemark = leaveApplication.LeaveAppRemark;
                        if (!leaveApplication.LeaveAppTimeFrom.Ticks.Equals(0))
                        {
                            row.LeaveAppTimeFrom = leaveApplication.LeaveAppTimeFrom;
                        }
                        if (!leaveApplication.LeaveAppTimeTo.Ticks.Equals(0))
                        {
                            row.LeaveAppTimeTo = leaveApplication.LeaveAppTimeTo;
                        }
                        row.LeaveAppUnit = leaveApplication.LeaveAppUnit;
                        row.LeaveCodeID  = leaveApplication.LeaveCodeID;
                        row.LeaveAppHasMedicalCertificate = leaveApplication.LeaveAppHasMedicalCertificate;
                        row.LeaveAppNoPayProcess          = leaveApplication.LeaveAppNoPayProcess;
                        ELeaveCode leaveCode = new ELeaveCode();
                        leaveCode.LeaveCodeID = leaveApplication.LeaveCodeID;
                        if (ELeaveCode.db.select(dbConn, leaveCode))
                        {
                            ELeaveType leaveType = new ELeaveType();
                            leaveType.LeaveTypeID = leaveCode.LeaveTypeID;
                            if (ELeaveType.db.select(dbConn, leaveType))
                            {
                                row.LeaveType     = leaveType.LeaveType;
                                row.LeaveTypeDesc = leaveType.LeaveTypeDesc;
                            }
                        }


                        leaveApplicationTable.AddLeaveApplicationRow(row);
                    }
                }
                if (reportDocument == null)
                {
                    reportDocument = new ReportTemplate.Report_Employee_LeaveApplicationList();
                }
                else
                {
                }

                reportDocument.SetDataSource(ds);
                for (int i = 0; i < reportDocument.ParameterFields.Count; i++)
                {
                    if (reportDocument.ParameterFields[i].Name == "HierarchyLevel1")
                    {
                        reportDocument.SetParameterValue("HierarchyLevel1", HierarchyLevel1);
                    }

                    if (reportDocument.ParameterFields[i].Name == "HierarchyLevel2")
                    {
                        reportDocument.SetParameterValue("HierarchyLevel2", HierarchyLevel2);
                    }
                }
                return(reportDocument);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 12
0
        public override ReportDocument GenerateReport()
        {
            if (values.Count > 0)
            {
                DateTime startDate = new DateTime(AsOfDate.Year, 1, 1);

                //System.Data.DataSet ds = new System.Data.DataSet();

                //System.Data.DataTable sum = ds.Tables.Add("LeaveBalance");
                //sum.Columns.Add("LeaveBalanceID", typeof(int));
                //sum.Columns.Add("EmpID", typeof(int));
                //sum.Columns.Add("LeaveBalanceEffectiveDate", typeof(DateTime));
                //sum.Columns.Add("LeaveBalanceBF", typeof(double));
                //sum.Columns.Add("LeaveBalanceEntitled", typeof(double));
                //sum.Columns.Add("LeaveBalanceForfeiture", typeof(double));
                //sum.Columns.Add("Taken", typeof(double));
                //sum.Columns.Add("Balance", typeof(double));
                //sum.Columns.Add("Adjust", typeof(double));
                //sum.Columns.Add("Reserved", typeof(double));
                //sum.Columns.Add("Name", typeof(string));
                //sum.Columns.Add("Description", typeof(string));
                //sum.Columns.Add("StringFormat", typeof(string));

                DataSet.EmployeeDetail ds = new DataSet.EmployeeDetail();
                //string select;
                //string from;
                //DBFilter filter;

                foreach (int EmpID in values)
                {
                    //from = "from EmpPersonalInfo P LEFT JOIN EmpPositionInfo EmpPos ON P.EmpID=EmpPos.EmpID AND EmpPos.EmpPosEffTo IS NULL LEFT JOIN Position Pos ON EmpPos.PositionID=Pos.PositionID";
                    //select = "P.*,EmpPos.*,Pos.*";
                    //filter = new DBFilter();
                    //filter.add(new Match("P.EmpID", EmpID));

                    //filter.loadData(ds, "employeedetail", null, select, from, null);

                    EmployeeDetailProcess.ImportEmployeeDetailRow(dbConn, ds.employeedetail, EmpID, AsOfDate);


                    //from = "from LeaveApplication P LEFT JOIN LeaveCode C ON P.LeaveCodeID=C.LeaveCodeID LEFT JOIN LeaveType T ON T.LeaveTypeID=C.LeaveTypeID";
                    //select = "P.*, T.LeaveType, T.LeaveTypeDesc";
                    //filter = new DBFilter();
                    //filter.add(new Match("LeaveAppDateFrom", ">=", startDate));
                    //filter.add(new Match("LeaveAppDateFrom", "<=", AsOfDate));
                    //filter.add(new Match("P.EmpID", EmpID));
                    //filter.loadData(ds, "LeaveApplication", null, select, from, null);
                    //try
                    //{
                    //    LeaveBalanceCalc calc = new LeaveBalanceCalc(EmpID, AsOfDate);
                    //    ArrayList balanceItems = calc.getCurrentBalanceList();
                    //    foreach (ELeaveBalance b in balanceItems)
                    //    {
                    //        System.Data.DataRow rr = sum.NewRow();
                    //        rr["LeaveBalanceID"] = b.LeaveBalanceID;
                    //        rr["EmpID"] = EmpID;
                    //        rr["LeaveBalanceEffectiveDate"] = b.LeaveBalanceEffectiveDate;
                    //        rr["LeaveBalanceBF"] = b.LeaveBalanceBF;
                    //        rr["LeaveBalanceEntitled"] = b.LeaveBalanceEntitled;
                    //        rr["LeaveBalanceForfeiture"] = b.LeaveBalanceForfeiture;
                    //        rr["Taken"] = b.Taken;
                    //        rr["Balance"] = b.Balance;
                    //        rr["Adjust"] = b.Adjust;
                    //        rr["Reserved"] = b.Reserved;
                    //        rr["Name"] = b.Name;
                    //        rr["Description"] = b.Description;
                    //        rr["StringFormat"] = b.StringFormat;


                    //        sum.Rows.Add(rr);


                    //    }
                    //}
                    //catch (Exception ex)
                    //{
                    //}

                    DBFilter filter = new DBFilter();
                    filter.add(new Match("LeaveAppDateFrom", ">=", startDate));
                    filter.add(new Match("LeaveAppDateFrom", "<=", AsOfDate));
                    filter.add(new Match("EmpID", EmpID));
                    ArrayList leaveApplicationList = ELeaveApplication.db.select(dbConn, filter);
                    DataSet.EmployeeDetail.LeaveApplicationDataTable leaveApplicationTable = ds.LeaveApplication;
                    foreach (ELeaveApplication leaveApplication in leaveApplicationList)
                    {
                        DataSet.EmployeeDetail.LeaveApplicationRow row = leaveApplicationTable.NewLeaveApplicationRow();
                        row.EmpID            = leaveApplication.EmpID;
                        row.EmpPaymentID     = leaveApplication.EmpPaymentID;
                        row.LeaveAppDateFrom = leaveApplication.LeaveAppDateFrom;
                        row.LeaveAppDateTo   = leaveApplication.LeaveAppDateTo;
                        row.LeaveAppDays     = leaveApplication.LeaveAppDays;
                        row.LeaveAppID       = leaveApplication.LeaveAppID;
                        row.LeaveAppRemark   = leaveApplication.LeaveAppRemark;
                        if (!leaveApplication.LeaveAppTimeFrom.Ticks.Equals(0))
                        {
                            row.LeaveAppTimeFrom = leaveApplication.LeaveAppTimeFrom;
                        }
                        if (!leaveApplication.LeaveAppTimeTo.Ticks.Equals(0))
                        {
                            row.LeaveAppTimeTo = leaveApplication.LeaveAppTimeTo;
                        }
                        row.LeaveAppUnit = leaveApplication.LeaveAppUnit;
                        row.LeaveCodeID  = leaveApplication.LeaveCodeID;

                        ELeaveCode leaveCode = new ELeaveCode();
                        leaveCode.LeaveCodeID = leaveApplication.LeaveCodeID;
                        if (ELeaveCode.db.select(dbConn, leaveCode))
                        {
                            ELeaveType leaveType = new ELeaveType();
                            leaveType.LeaveTypeID = leaveCode.LeaveTypeID;
                            if (ELeaveType.db.select(dbConn, leaveType))
                            {
                                row.LeaveType     = leaveType.LeaveType;
                                row.LeaveTypeDesc = leaveType.LeaveTypeDesc;
                            }
                        }
                        leaveApplicationTable.AddLeaveApplicationRow(row);
                    }

                    //try
                    //{
                    LeaveBalanceCalc calc         = new LeaveBalanceCalc(dbConn, EmpID, AsOfDate);
                    ArrayList        balanceItems = calc.getCurrentBalanceList();
                    foreach (ELeaveBalance b in balanceItems)
                    {
                        DataSet.EmployeeDetail.LeaveBalanceRow rr = ds.LeaveBalance.NewLeaveBalanceRow();
                        rr["LeaveBalanceID"]            = b.LeaveBalanceID;
                        rr["EmpID"]                     = EmpID;
                        rr["LeaveBalanceEffectiveDate"] = b.LeaveBalanceEffectiveDate;
                        rr["LeaveBalanceBF"]            = b.LeaveBalanceBF;
                        rr["LeaveBalanceEntitled"]      = b.LeaveBalanceEntitled;
                        rr["LeaveBalanceForfeiture"]    = b.LeaveBalanceForfeiture + b.ExpiryForfeit;
                        rr["Taken"]                     = b.Taken;
                        rr["Balance"]                   = b.getBalance();
                        rr["Adjust"]                    = b.Adjust;
                        rr["Reserved"]                  = b.Reserved;
                        rr["Name"]          = b.Name;
                        rr["Description"]   = b.Description;
                        rr["ExpiryForfeit"] = b.ExpiryForfeit;
                        if (!b.NextExpiryDate.Ticks.Equals(0))
                        {
                            rr["NextExpiryDate"] = b.NextExpiryDate;
                        }
                        rr["NextExpiryForfeit"] = b.NextExpiryForfeit;
                        rr["StringFormat"]      = b.StringFormat;


                        ds.LeaveBalance.Rows.Add(rr);
                    }
                    //}
                    //catch (Exception)
                    //{
                    //    //  fail to create leave balance record by some reason
                    //    //  no handling so far
                    //}
                }


                if (reportDocument == null)
                {
                    reportDocument = new ReportTemplate.Report_Employee_LeaveSummary();
                }
                else
                {
                }



                reportDocument.SetDataSource(ds);
                reportDocument.SetParameterValue("AsOfDate", AsOfDate);

                return(reportDocument);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 13
0
        public static DataTable Export(DatabaseConnection dbConn, ArrayList empList, bool IsIncludeCurrentPositionInfo, bool IsShowDescription, bool IsIncludeSyncID, DateTime ReferenceDateTime)
        {
            DataTable tmpDataTable = new DataTable(TABLE_NAME);

            //if (IsIncludeInternalID)
            //    tmpDataTable.Columns.Add(FIELD_INTERNAL_ID, typeof(string));
            tmpDataTable.Columns.Add(FIELD_EMP_NO, typeof(string));

            if (IsIncludeCurrentPositionInfo)
            {
                ImportEmpPersonalInfoProcess.AddEmployeeInfoHeader(tmpDataTable);
                ImportEmpPositionInfoProcess.AddEmployeePositionInfoHeader(dbConn, tmpDataTable);
            }

            tmpDataTable.Columns.Add(FIELD_FROM, typeof(DateTime));
            tmpDataTable.Columns.Add(FIELD_TO, typeof(DateTime));
            tmpDataTable.Columns.Add(FIELD_LEAVE_CODE, typeof(string));
            tmpDataTable.Columns.Add(FIELD_DAY_TAKEN, typeof(double));
            tmpDataTable.Columns.Add(FIELD_HOURS_CLAIM, typeof(double));
            tmpDataTable.Columns.Add(FIELD_TYPE, typeof(string));
            tmpDataTable.Columns.Add(FIELD_REMARK, typeof(string));
            tmpDataTable.Columns.Add(FIELD_NOPAYROLLPROCESS, typeof(string));
            tmpDataTable.Columns.Add(FIELD_MEDICIAL_CERTIFICATE, typeof(string));

            if (IsIncludeSyncID)
            {
                tmpDataTable.Columns.Add(FIELD_SYNC_ID, typeof(string));
            }

            foreach (EEmpPersonalInfo empInfo in empList)
            {
                if (EEmpPersonalInfo.db.select(dbConn, empInfo))
                {
                    DBFilter filter = new DBFilter();
                    filter.add(new Match("EmpID", empInfo.EmpID));
                    filter.add(getCreateModifiedRecordsAfterDBTerm(ReferenceDateTime));
                    ArrayList list = ELeaveApplication.db.select(dbConn, filter);
                    foreach (ELeaveApplication empLeaveApplication in list)
                    {
                        DataRow row = tmpDataTable.NewRow();
                        //if (IsIncludeInternalID)
                        //    row[FIELD_INTERNAL_ID] = ToHexDecWithCheckDigit(empLeaveApplication.LeaveAppID);
                        row[FIELD_EMP_NO] = empInfo.EmpNo;

                        if (IsIncludeCurrentPositionInfo)
                        {
                            ImportEmpPersonalInfoProcess.AddEmployeeInfo(dbConn, row, empInfo.EmpID);
                            ImportEmpPositionInfoProcess.AddEmployeePositionInfo(dbConn, row, empInfo.EmpID);
                        }

                        row[FIELD_FROM] = empLeaveApplication.LeaveAppDateFrom;
                        row[FIELD_TO]   = empLeaveApplication.LeaveAppDateTo;

                        ELeaveCode leaveCode = new ELeaveCode();
                        leaveCode.LeaveCodeID = empLeaveApplication.LeaveCodeID;
                        if (ELeaveCode.db.select(dbConn, leaveCode))
                        {
                            row[FIELD_LEAVE_CODE] = IsShowDescription ? leaveCode.LeaveCodeDesc : leaveCode.LeaveCode;
                        }

                        row[FIELD_DAY_TAKEN]   = empLeaveApplication.LeaveAppDays;
                        row[FIELD_HOURS_CLAIM] = empLeaveApplication.LeaveAppHours;

                        if (empLeaveApplication.LeaveAppUnit.Equals("H"))
                        {
                            row[FIELD_TYPE] = "Hour";
                        }
                        else if (empLeaveApplication.LeaveAppUnit.Equals("D"))
                        {
                            row[FIELD_TYPE] = "Day";
                        }
                        else if (empLeaveApplication.LeaveAppUnit.Equals("A"))
                        {
                            row[FIELD_TYPE] = "AM";
                        }
                        else if (empLeaveApplication.LeaveAppUnit.Equals("P"))
                        {
                            row[FIELD_TYPE] = "PM";
                        }

                        row[FIELD_MEDICIAL_CERTIFICATE] = empLeaveApplication.LeaveAppHasMedicalCertificate ? "Yes" : "No";
                        row[FIELD_REMARK]           = empLeaveApplication.LeaveAppRemark;
                        row[FIELD_NOPAYROLLPROCESS] = empLeaveApplication.LeaveAppNoPayProcess?"Yes":"No";

                        if (IsIncludeSyncID)
                        {
                            row[FIELD_SYNC_ID] = empLeaveApplication.SynID;
                        }

                        tmpDataTable.Rows.Add(row);
                    }
                }
            }

            if (IsIncludeCurrentPositionInfo)
            {
                ImportEmpPositionInfoProcess.RetriveHierarchyLevelHeader(dbConn, tmpDataTable);
            }
            return(tmpDataTable);
        }
Exemplo n.º 14
0
    protected bool loadObject()
    {
        DBFilter filterStatus = new DBFilter();

        filterStatus.add(new Match("EmpRequestRecordID", CurRequestID));
        filterStatus.add(new Match("EmpRequestType", EEmpRequest.TYPE_EELEAVEAPP));
        ArrayList empRequestList = EEmpRequest.db.select(dbConn, filterStatus);

        if (empRequestList.Count > 0)
        {
            EEmpRequest empRequest = (EEmpRequest)empRequestList[0];
            if (empRequest.EmpID == UserID)
            {
                string submitStatus = empRequest.EmpRequestStatus;
                if ((submitStatus.Equals(EEmpRequest.STATUS_SUBMITTED) || submitStatus.Equals(EEmpRequest.STATUS_ACCEPTED)) && !submitStatus.Equals(EEmpRequest.STATUS_APPROVED))
                {
                    btnCancel.Visible = true;
                    // Start 0000063, KuangWei, 2014-08-25
                    if (!string.IsNullOrEmpty(empRequest.EmpRequestRejectReason))
                    {
                        RejectReasonRow.Visible = true;
                        lblReject.Visible       = false;
                        lblAuthorize.Visible    = true;
                        lblRejectReason.Text    = empRequest.EmpRequestRejectReason;
                    }
                    else
                    {
                        RejectReasonRow.Visible = false;
                    }
                    // End 0000063, KuangWei, 2014-08-25
                }
                else
                {
                    btnCancel.Visible = false;
                    if (!string.IsNullOrEmpty(empRequest.EmpRequestRejectReason))
                    {
                        RejectReasonRow.Visible = true;
                        // Start 0000063, KuangWei, 2014-08-25
                        lblReject.Visible    = true;
                        lblAuthorize.Visible = false;
                        // End 0000063, KuangWei, 2014-08-25
                        lblRejectReason.Text = empRequest.EmpRequestRejectReason;
                    }
                    else
                    {
                        RejectReasonRow.Visible = false;
                    }
                }
            }
            else
            {
                btnCancel.Visible       = false;
                RejectReasonRow.Visible = false;
            }
            obj = new ERequestLeaveApplication();
            obj.RequestLeaveAppID = CurRequestID;
            if (!db.select(dbConn, obj))
            {
                return(false);
            }
            Emp_LeaveBalance_List1.EmpID    = obj.EmpID;
            Emp_LeaveBalance_List1.AsOfDate = obj.RequestLeaveAppDateFrom;

            Hashtable values = new Hashtable();
            db.populate(obj, values);
            binding.toControl(values);
            //EEmpPersonalInfo EmpInfo = new EEmpPersonalInfo();
            //EmpInfo.EmpID = obj.EmpID;
            //if (EEmpPersonalInfo.db.select(dbConn, EmpInfo))
            //    EmpName.Text = EmpInfo.EmpNo + " - " + EmpInfo.EmpEngFullNameWithAlias;

            if (obj.RequestLeaveAppUnit.Equals("D"))
            {
                TimeRow.Visible = false;
                LeaveAppDateToPlaceHolder.Visible = true;
            }
            else
            {
                TimeRow.Visible = true;
                LeaveAppDateToPlaceHolder.Visible = false;
            }

            string     leaveAuthorizedMessage = CONFIRM_MESSAGE;
            ELeaveCode leaveCode = new ELeaveCode();
            leaveCode.LeaveCodeID = obj.RequestLeaveCodeID;
            if (ELeaveCode.db.select(dbConn, leaveCode))
            {
                LeaveCodeIsShowMedicalCertOptionPanel.Visible = leaveCode.LeaveCodeIsShowMedicalCertOption;

                if (leaveCode.LeaveTypeID.Equals(ELeaveType.COMPENSATION_LEAVE_TYPE(dbConn).LeaveTypeID))
                {
                    HoursClaimPanel.Visible = true;
                }
                else
                {
                    HoursClaimPanel.Visible = false;
                }

                if (leaveCode.LeaveTypeID.Equals(ELeaveType.ANNUAL_LEAVE_TYPE(dbConn).LeaveTypeID))
                {
                    EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
                    empInfo.EmpID = obj.EmpID;
                    if (EEmpPersonalInfo.db.select(dbConn, empInfo))
                    {
                        if (AppUtils.ServerDateTime().Date <= empInfo.EmpProbaLastDate || obj.RequestLeaveAppDateFrom <= empInfo.EmpProbaLastDate)
                        {
                            leaveAuthorizedMessage = AL_AUTHORIZED_BEFORE_PROBATION_MESSAGE;
                        }
                    }
                }
            }
            else
            {
                HoursClaimPanel.Visible = false;
            }

            Authorize.Attributes.Add("onclick", "return confirm(\"" + HROne.Common.WebUtility.GetLocalizedString(leaveAuthorizedMessage) + "\");");
            Reject.Attributes.Add("onclick", "return confirm(\"" + HROne.Common.WebUtility.GetLocalizedString(CONFIRM_MESSAGE) + "\");");


            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemplo n.º 15
0
        public override ReportDocument GenerateReport()
        {
            string HierarchyLevel1 = string.Empty;
            string HierarchyLevel2 = string.Empty;
            string HierarchyLevel3 = string.Empty;

            ArrayList HierarchyLevelList = EHierarchyLevel.db.select(dbConn, new DBFilter());

            foreach (EHierarchyLevel hLevel in HierarchyLevelList)
            {
                if (hLevel.HLevelSeqNo.Equals(1))
                {
                    HierarchyLevel1 = hLevel.HLevelDesc;
                }
                else if (hLevel.HLevelSeqNo.Equals(2))
                {
                    HierarchyLevel2 = hLevel.HLevelDesc;
                }
                else if (hLevel.HLevelSeqNo.Equals(3))
                {
                    HierarchyLevel3 = hLevel.HLevelDesc;
                }
            }

            if (EmpList.Count > 0)
            {
                DataSet.EmployeeDetail ds = new DataSet.EmployeeDetail();


                foreach (int EmpID in EmpList)
                {
                    EmployeeDetailProcess.ImportEmployeeDetailRow(dbConn, ds.employeedetail, EmpID, AppUtils.ServerDateTime().Date);

                    DBFilter empRequestFilter = new DBFilter();
                    empRequestFilter.add(new Match("EmpID", EmpID));
                    //empRequestFilter.add(new Match("EmpRequestStatusCode", "<>", EEmpRequest.STATUS_APPROVED));
                    //empRequestFilter.add(new Match("EmpRequestStatusCode", "<>", EEmpRequest.STATUS_USRCANCEL));
                    //empRequestFilter.add(new Match("EmpRequestStatusCode", "<>", EEmpRequest.STATUS_FSTREJ));
                    //empRequestFilter.add(new Match("EmpRequestStatusCode", "<>", EEmpRequest.STATUS_SNDREJ));
                    empRequestFilter.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_CANCELLED));
                    empRequestFilter.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_REJECTED));
                    empRequestFilter.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_APPROVED));

                    ArrayList empRequestList = EEmpRequest.db.select(dbConn, empRequestFilter);
                    DataSet.EmployeeDetail.EmpRequestDataTable empRequestTable = ds.EmpRequest;
                    foreach (EEmpRequest empRequest in empRequestList)
                    {
                        DataSet.EmployeeDetail.EmpRequestRow row = empRequestTable.NewEmpRequestRow();

                        row.EmpID                = empRequest.EmpID;
                        row.EmpRequestID         = empRequest.EmpRequestID;
                        row.EmpRequestCreateDate = empRequest.EmpRequestCreateDate;
                        row.EmpRequestModifyDate = empRequest.EmpRequestModifyDate;
                        row.EmpRequestRecordID   = empRequest.EmpRequestRecordID;
                        //row.EmpRequestStatusCode = HROne.Common.WebUtility.GetLocalizedString(empRequest.EmpRequestStatusCode);
                        row.EmpRequestStatus = HROne.Common.WebUtility.GetLocalizedString(empRequest.EmpRequestStatus);
                        row.EmpRequestLastAuthorizationWorkFlowIndex = empRequest.EmpRequestLastAuthorizationWorkFlowIndex;
                        row.EmpRequestLastActionBy = empRequest.EmpRequestLastActionBy;
                        row.EmpRequestType         = HROne.Common.WebUtility.GetLocalizedString(empRequest.EmpRequestType);

                        if (empRequest.EmpRequestType.Equals(EEmpRequest.TYPE_EELEAVEAPP))
                        {
                            ERequestLeaveApplication requestLeaveApplication = new ERequestLeaveApplication();
                            requestLeaveApplication.RequestLeaveAppID = empRequest.EmpRequestRecordID;
                            if (ERequestLeaveApplication.db.select(dbConn, requestLeaveApplication))
                            {
                                ELeaveCode leaveCode = new ELeaveCode();
                                leaveCode.LeaveCodeID = requestLeaveApplication.RequestLeaveCodeID;
                                if (ELeaveCode.db.select(dbConn, leaveCode))
                                {
                                    row.EmpRequestType = leaveCode.LeaveCodeDesc;
                                }

                                row.DateFrom   = requestLeaveApplication.RequestLeaveAppDateFrom;
                                row.DateFromAM = requestLeaveApplication.RequestLeaveAppDateFromAM;
                                row.DateTo     = requestLeaveApplication.RequestLeaveAppDateTo;
                                row.DateToAM   = requestLeaveApplication.RequestLeaveAppDateToAM;
                                row.Unit       = requestLeaveApplication.RequestLeaveDays;
                                row.Remark     = requestLeaveApplication.RequestLeaveAppRemark;
                            }
                        }
                        empRequestTable.AddEmpRequestRow(row);
                    }
                }
                if (reportDocument == null)
                {
                    reportDocument = new ReportTemplate.Report_Employee_ESSRequest();
                }
                else
                {
                }

                reportDocument.SetDataSource(ds);
                reportDocument.SetParameterValue("HierarchyLevel1", HierarchyLevel1);
                return(reportDocument);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 16
0
        public DataTable UploadToTempDatabase(DataTable rawDataTable, int UserID)
        {
            if (rawDataTable == null)
            {
                return(GetImportDataFromTempDatabase(null));
            }

            int rowCount = 1;

            foreach (DataRow row in rawDataTable.Rows)
            {
                rowCount++;

                EUploadLeaveApplication uploadLeaveApp = new EUploadLeaveApplication();
                //ELeaveApplication lastLeaveApp = null;

                string EmpNo = row[FIELD_EMP_NO].ToString().Trim();
                uploadLeaveApp.EmpID = Parse.GetEmpID(dbConn, EmpNo, UserID);
                if (uploadLeaveApp.EmpID < 0)
                {
                    errors.addError(ImportErrorMessage.ERROR_ACCESS_DENIED_EMP_NO, new string[] { EmpNo, rowCount.ToString() });
                }

                uploadLeaveApp.UploadEmpID = ParseTemp.GetUploadEmpID(dbConn, EmpNo, m_SessionID);
                if (uploadLeaveApp.UploadEmpID == 0)
                {
                    if (uploadLeaveApp.EmpID == 0)
                    {
                        errors.addError(ImportErrorMessage.ERROR_INVALID_EMP_NO, new string[] { EmpNo, rowCount.ToString() });
                    }
                    else
                    {
                        uploadLeaveApp.UploadEmpID = ImportEmpPersonalInfoProcess.CreateDummyUploadEmployeeInfo(dbConn, uploadLeaveApp.EmpID, m_SessionID, UploadDateTime);
                    }
                }

                try
                {
                    uploadLeaveApp.LeaveAppDateFrom = Parse.toDateTimeObject(row[FIELD_FROM]);
                }
                catch
                {
                    uploadLeaveApp.LeaveAppDateFrom = new DateTime();
                    //errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_FROM + "=" + row[FIELD_FROM].ToString(), EmpNo, rowCount.ToString() });
                }
                if (uploadLeaveApp.LeaveAppDateFrom.Ticks.Equals(0))
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_FROM + "=" + row[FIELD_FROM].ToString(), EmpNo, rowCount.ToString() });
                }
                try
                {
                    uploadLeaveApp.LeaveAppDateTo = Parse.toDateTimeObject(row[FIELD_TO]);
                }
                catch
                {
                    uploadLeaveApp.LeaveAppDateTo = new DateTime();
                    //errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_TO + "=" + row[FIELD_TO].ToString(), EmpNo, rowCount.ToString() });
                }
                if (uploadLeaveApp.LeaveAppDateTo.Ticks.Equals(0))
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_TO + "=" + row[FIELD_TO].ToString(), EmpNo, rowCount.ToString() });
                }

                if (uploadLeaveApp.LeaveAppDateFrom > uploadLeaveApp.LeaveAppDateFrom)
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_TO + "=" + row[FIELD_TO].ToString(), EmpNo, rowCount.ToString() });
                }

                uploadLeaveApp.LeaveCodeID = Parse.GetLeaveCodeID(dbConn, row[FIELD_LEAVE_CODE].ToString(), false, UserID);

                if (uploadLeaveApp.LeaveCodeID == 0)
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_LEAVE_CODE + "=" + row[FIELD_LEAVE_CODE].ToString(), EmpNo, rowCount.ToString() });
                }

                double leaveDays;
                if (double.TryParse(row[FIELD_DAY_TAKEN].ToString(), out leaveDays))
                {
                    uploadLeaveApp.LeaveAppDays = leaveDays;
                }
                else
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_DAY_TAKEN + "=" + row[FIELD_DAY_TAKEN].ToString(), EmpNo, rowCount.ToString() });
                }
                if (rawDataTable.Columns.Contains(FIELD_HOURS_CLAIM))
                {
                    if (row[FIELD_HOURS_CLAIM] != DBNull.Value)
                    {
                        double hoursClaim;
                        if (double.TryParse(row[FIELD_HOURS_CLAIM].ToString(), out hoursClaim))
                        {
                            uploadLeaveApp.LeaveAppHours = hoursClaim;
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(row[FIELD_HOURS_CLAIM].ToString().Trim()))
                            {
                                errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_HOURS_CLAIM + "=" + row[FIELD_HOURS_CLAIM].ToString(), EmpNo, rowCount.ToString() });
                            }
                        }
                    }
                    else
                    {
                        uploadLeaveApp.LeaveAppHours = 0;
                    }
                }
                string tempString;
                if (rawDataTable.Columns.Contains(FIELD_TYPE))
                {
                    tempString = row[FIELD_TYPE].ToString().Replace(" ", "");
                    if (tempString.Equals("Days", StringComparison.CurrentCultureIgnoreCase) ||
                        tempString.Equals("Day", StringComparison.CurrentCultureIgnoreCase) ||
                        tempString.Equals("D", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "D";
                    }
                    else if (tempString.Equals("Hours", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("Hour", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("H", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "H";
                    }
                    else if (tempString.Equals("AM", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("A", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "A";
                    }
                    else if (tempString.Equals("PM", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("P", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "P";
                    }
                    else if (tempString.Equals(string.Empty))
                    {
                        uploadLeaveApp.LeaveAppUnit = string.Empty;
                    }
                    else
                    {
                        errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_TYPE + "=" + row[FIELD_TYPE].ToString(), EmpNo, rowCount.ToString() });
                    }
                }
                else if (rawDataTable.Columns.Contains(FIELD_UNIT))
                {
                    //  Obsolate, replaced by Type

                    tempString = row[FIELD_UNIT].ToString().Replace(" ", "");
                    if (tempString.Equals("Days", StringComparison.CurrentCultureIgnoreCase) ||
                        tempString.Equals("Day", StringComparison.CurrentCultureIgnoreCase) ||
                        tempString.Equals("D", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "D";
                    }
                    else if (tempString.Equals("Hours", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("Hour", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("H", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "H";
                    }
                    else if (tempString.Equals("AM", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("A", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "A";
                    }
                    else if (tempString.Equals("PM", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("P", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppUnit = "P";
                    }
                    else if (tempString.Equals(string.Empty))
                    {
                        uploadLeaveApp.LeaveAppUnit = string.Empty;
                    }
                    else
                    {
                        errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_UNIT + "=" + row[FIELD_UNIT].ToString(), EmpNo, rowCount.ToString() });
                    }
                }
                uploadLeaveApp.LeaveAppRemark = row[FIELD_REMARK].ToString();

                tempString = row[FIELD_NOPAYROLLPROCESS].ToString().Replace(" ", "");
                if (tempString.Equals("Yes", StringComparison.CurrentCultureIgnoreCase) ||
                    tempString.Equals("Y", StringComparison.CurrentCultureIgnoreCase))
                {
                    uploadLeaveApp.LeaveAppNoPayProcess = true;
                }
                else if (tempString.Equals("No", StringComparison.CurrentCultureIgnoreCase) ||
                         tempString.Equals("N", StringComparison.CurrentCultureIgnoreCase) ||
                         tempString.Equals(string.Empty))
                {
                    uploadLeaveApp.LeaveAppNoPayProcess = false;
                }
                else if (tempString.Equals(string.Empty))
                {
                    uploadLeaveApp.LeaveAppNoPayProcess = false;
                }
                else
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_NOPAYROLLPROCESS + "=" + row[FIELD_NOPAYROLLPROCESS].ToString(), EmpNo, rowCount.ToString() });
                }

                //  Enforce No Payroll Process flag to true if leave code is skip payroll process
                ELeaveCode leaveCode = new ELeaveCode();
                leaveCode.LeaveCodeID = uploadLeaveApp.LeaveCodeID;
                if (ELeaveCode.db.select(dbConn, leaveCode))
                {
                    if (leaveCode.LeaveCodeIsSkipPayrollProcess)
                    {
                        uploadLeaveApp.LeaveAppNoPayProcess = true;
                    }
                }
                if (rawDataTable.Columns.Contains(FIELD_MEDICIAL_CERTIFICATE))
                {
                    tempString = row[FIELD_MEDICIAL_CERTIFICATE].ToString().Replace(" ", "");
                    if (tempString.Equals("Yes", StringComparison.CurrentCultureIgnoreCase) ||
                        tempString.Equals("Y", StringComparison.CurrentCultureIgnoreCase))
                    {
                        uploadLeaveApp.LeaveAppHasMedicalCertificate = true;
                    }
                    else if (tempString.Equals("No", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals("N", StringComparison.CurrentCultureIgnoreCase) ||
                             tempString.Equals(string.Empty))
                    {
                        uploadLeaveApp.LeaveAppHasMedicalCertificate = false;
                    }
                    else if (tempString.Equals(string.Empty))
                    {
                        uploadLeaveApp.LeaveAppHasMedicalCertificate = false;
                    }
                    else
                    {
                        errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_NOPAYROLLPROCESS + "=" + row[FIELD_NOPAYROLLPROCESS].ToString(), EmpNo, rowCount.ToString() });
                    }
                }

                uploadLeaveApp.SessionID       = m_SessionID;
                uploadLeaveApp.TransactionDate = UploadDateTime;

                if (errors.List.Count <= 0 && uploadLeaveApp.EmpID != 0)
                {
                    //if (rawDataTable.Columns.Contains(FIELD_INTERNAL_ID))
                    //{
                    //    try
                    //    {
                    //        if (!row.IsNull(FIELD_INTERNAL_ID))
                    //        {
                    //            int tmpID = FromHexDecWithCheckDigit((string)row[FIELD_INTERNAL_ID]);
                    //            ELeaveApplication tmpObj = new ELeaveApplication();
                    //            tmpObj.LeaveAppID = tmpID;
                    //            if (ELeaveApplication.db.select(dbConn, tmpObj))
                    //                uploadLeaveApp.LeaveAppID = tmpID;
                    //            else
                    //            {
                    //                errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_INTERNAL_ID + "=" + row[FIELD_INTERNAL_ID].ToString(), EmpNo, rowCount.ToString() });
                    //                continue;
                    //            }
                    //        }
                    //    }
                    //    catch (Exception ex)
                    //    {
                    //        errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_INTERNAL_ID + "=" + row[FIELD_INTERNAL_ID].ToString(), EmpNo, rowCount.ToString() });
                    //        continue;
                    //    }
                    //}
                    if (rawDataTable.Columns.Contains(FIELD_SYNC_ID))
                    {
                        if (!row.IsNull(FIELD_SYNC_ID))
                        {
                            string strSynID = row[FIELD_SYNC_ID].ToString();
                            uploadLeaveApp.SynID = strSynID;
                            if (!string.IsNullOrEmpty(strSynID))
                            {
                                DBFilter synIDFilter = new DBFilter();
                                synIDFilter.add(new Match("SynID", strSynID));
                                ArrayList objSameSynIDList = ELeaveApplication.db.select(dbConn, synIDFilter);
                                if (objSameSynIDList.Count > 0)
                                {
                                    uploadLeaveApp.LeaveAppID = ((ELeaveApplication)objSameSynIDList[0]).LeaveAppID;
                                }
                            }
                        }
                    }

                    if (uploadLeaveApp.LeaveAppID == 0)
                    {
                        AND lastObjAndTerms = new AND();
                        lastObjAndTerms.add(new Match("LeaveAppDateTo", ">=", uploadLeaveApp.LeaveAppDateFrom));
                        lastObjAndTerms.add(new Match("LeaveAppDateFrom", "<=", uploadLeaveApp.LeaveAppDateTo));
                        if (!uploadLeaveApp.LeaveAppUnit.Equals("D"))
                        {
                            lastObjAndTerms.add(new Match("LeaveAppUnit", "D"));
                        }


                        ELeaveApplication lastObj = (ELeaveApplication)AppUtils.GetLastObj(dbConn, uploadDB, "LeaveAppDateFrom", uploadLeaveApp.EmpID, lastObjAndTerms);
                        if (lastObj != null)
                        {
                            errors.addError(ImportErrorMessage.ERROR_DATE_FROM_OVERLAP, new string[] { uploadLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd"), rowCount.ToString() });
                            continue;
                        }


                        //lastLeaveApp = (ELeaveApplication)AppUtils.GetLastObj(dbConn, uploadDB, "LeaveAppDateFrom", uploadLeaveApp.EmpID, new Match("LeaveAppDateFrom", "<=", uploadLeaveApp.LeaveAppDateFrom));
                        //if (lastLeaveApp != null)
                        //{

                        //    //if (uploadLeaveApp.LeaveCodeID == lastLeaveApp.LeaveCodeID
                        //    //    && uploadLeaveApp.LeaveAppRemark == lastLeaveApp.LeaveAppRemark
                        //    //    )
                        //    //{
                        //    //    continue;
                        //    //}
                        //    //else
                        //    {
                        //        //// add postion terms with new ID
                        //        //if (lastLeaveApp.LeaveAppDateFrom.Equals(uploadLeaveApp.LeaveAppDateFrom) && lastLeaveApp.LeaveAppUnit.Equals(uploadLeaveApp.LeaveAppUnit) && uploadLeaveApp.LeaveAppUnit.Equals("D"))
                        //        //{
                        //        //    if (lastLeaveApp.EmpPayrollID > 0)
                        //        //    {
                        //        //        errors.addError(ImportErrorMessage.ERROR_LEAVE_DATE_PROCESSED, new string[] { uploadLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd"), rowCount.ToString() });
                        //        //        continue;
                        //        //    }

                        //        //    uploadLeaveApp.LeaveAppID = lastLeaveApp.LeaveAppID;
                        //        //}
                        //        //else
                        //        {


                        //            AND lastObjAndTerms = new AND();
                        //            lastObjAndTerms.add(new Match("LeaveAppDateTo", ">=", uploadLeaveApp.LeaveAppDateFrom));
                        //            lastObjAndTerms.add(new Match("LeaveAppDateFrom", "<=", uploadLeaveApp.LeaveAppDateTo));
                        //            if (!uploadLeaveApp.LeaveAppUnit.Equals("D"))
                        //                lastObjAndTerms.add(new Match("LeaveAppUnit", "D"));


                        //            ELeaveApplication lastObj = (ELeaveApplication)AppUtils.GetLastObj(dbConn, uploadDB, "LeaveAppDateFrom", uploadLeaveApp.EmpID, lastObjAndTerms);
                        //            if (lastObj != null)
                        //            {
                        //                errors.addError(ImportErrorMessage.ERROR_DATE_FROM_OVERLAP, new string[] { uploadLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd"), rowCount.ToString() });
                        //                continue;
                        //            }
                        //        }
                        //    }
                        //}
                    }
                }

                if (uploadLeaveApp.LeaveAppID <= 0)
                {
                    uploadLeaveApp.ImportActionStatus = ImportDBObject.ImportActionEnum.INSERT;
                }
                else
                {
                    uploadLeaveApp.ImportActionStatus = ImportDBObject.ImportActionEnum.UPDATE;
                }

                Hashtable values = new Hashtable();
                tempDB.populate(uploadLeaveApp, values);
                PageErrors pageErrors = new PageErrors(EUploadEmpPersonalInfo.db);
                tempDB.validate(pageErrors, values);
                if (pageErrors.errors.Count == 0)
                {
                    tempDB.insert(dbConn, uploadLeaveApp);
                }
                else
                {
                    pageErrors.addError(rawDataTable.TableName);
                    throw new HRImportException(pageErrors.getPrompt() + "(line " + rowCount.ToString() + ")");
                }
            }
            if (errors.List.Count > 0)
            {
                ClearTempTable();
                throw (new HRImportException(rawDataTable.TableName + "\r\n" + errors.Message()));
            }
            return(GetImportDataFromTempDatabase(null));
        }
Exemplo n.º 17
0
        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            ERosterTable rosterTable = new ERosterTable();

            Binding ebinding = new Binding(dbConn, ERosterTable.db);

            ebinding.add(RosterTableID);
            ebinding.add(RosterTableDate);
            ebinding.add(EmpID);
            ebinding.add(new DropDownVLBinder(ERosterTable.db, RosterCodeID, ERosterCode.VLRosterCode));
            ebinding.add(RosterTableOverrideInTime);
            ebinding.add(RosterTableOverrideOutTime);

            Hashtable values = new Hashtable();

            ebinding.toValues(values);
            ERosterTable.db.parse(values, rosterTable);
            ERosterCode rosterCode = new ERosterCode();

            rosterCode.RosterCodeID = rosterTable.RosterCodeID;
            if (ERosterCode.db.select(dbConn, rosterCode))
            {
                if (rosterCode.RosterCodeInTime.TimeOfDay.Equals(rosterTable.RosterTableOverrideInTime.TimeOfDay))
                {
                    rosterTable.RosterTableOverrideInTime = new DateTime(0);
                }
                if (rosterCode.RosterCodeOutTime.TimeOfDay.Equals(rosterTable.RosterTableOverrideOutTime.TimeOfDay))
                {
                    rosterTable.RosterTableOverrideOutTime = new DateTime(0);
                }

                if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_LEAVE) && rosterCode.LeaveCodeID > 0)
                {
                    ELeaveCode leaveCode = new ELeaveCode();
                    leaveCode.LeaveCodeID = rosterCode.LeaveCodeID;
                    if (ELeaveCode.db.select(dbConn, leaveCode))
                    {
                        ELeaveApplication leaveApp = new ELeaveApplication();
                        leaveApp.LeaveAppDateFrom = rosterTable.RosterTableDate;
                        leaveApp.LeaveAppDateTo   = rosterTable.RosterTableDate;
                        leaveApp.LeaveAppDays     = 1;
                        leaveApp.LeaveAppUnit     = "D";
                        leaveApp.LeaveCodeID      = leaveCode.LeaveCodeID;
                        leaveApp.EmpID            = rosterTable.EmpID;

                        ELeaveApplication.db.insert(dbConn, leaveApp);

                        rosterTable.LeaveAppID = leaveApp.LeaveAppID;
                        //HROne.LeaveCalc.LeaveBalanceCalc leaaveBalCal = new HROne.LeaveCalc.LeaveBalanceCalc(dbConn, rosterTable.EmpID);
                        //leaaveBalCal.RecalculateAfter(rosterTable.RosterTableDate);
                    }
                    else
                    {
                        rosterTable.LeaveAppID = 0;
                    }
                }
            }
            ERosterTable oldRosterTable = new ERosterTable();

            oldRosterTable.RosterTableID = rosterTable.RosterTableID;
            if (ERosterTable.db.select(dbConn, oldRosterTable))
            {
                if (oldRosterTable.LeaveAppID > 0)
                {
                    ELeaveApplication leaveApp = new ELeaveApplication();
                    leaveApp.LeaveAppID = oldRosterTable.LeaveAppID;
                    if (ELeaveApplication.db.select(dbConn, leaveApp))
                    {
                        if (leaveApp.EmpPayrollID <= 0)
                        {
                            ELeaveApplication.db.delete(dbConn, leaveApp);
                            //HROne.LeaveCalc.LeaveBalanceCalc leaaveBalCal = new HROne.LeaveCalc.LeaveBalanceCalc(dbConn, oldRosterTable.EmpID);
                            //leaaveBalCal.RecalculateAfter(oldRosterTable.RosterTableDate);
                        }
                    }
                }
            }

            ERosterTable.db.update(dbConn, rosterTable);

            //// Create resource based on the selected user
            ////Resource user = new Resource("User", int.Parse(UserDropDown.SelectedValue), UserDropDown.SelectedItem.Text);
            //DateTime start = RadScheduler1.DisplayToUtc(StartTime.SelectedDate.Value);
            //DateTime end = RadScheduler1.DisplayToUtc(EndTime.SelectedDate.Value);

            //if (EditedAppointmentID == null)
            //{
            //    // Insert
            //    Appointment appointment = new Appointment(null, start, end, DescriptionText.Text);
            //    //appointment.Resources.Add(user);

            //    RadScheduler1.InsertAppointment(appointment);
            //}
            //else
            //{
            //    Appointment appointment = RadScheduler1.Appointments.FindByID(EditedAppointmentID);
            //    Appointment appointmentToUpdate = RadScheduler1.PrepareToEdit(appointment, RadScheduler1.EditingRecurringSeries);

            //    appointmentToUpdate.Subject = DescriptionText.Text;
            //    appointmentToUpdate.Start = start;
            //    appointmentToUpdate.End = end;

            //    // Remove the existing user resource, if any
            //    Resource existingUser = appointmentToUpdate.Resources.GetResourceByType("User");
            //    if (existingUser != null)
            //    {
            //        appointmentToUpdate.Resources.Remove(existingUser);
            //    }
            //    //appointmentToUpdate.Resources.Add(user);

            //    RadScheduler1.UpdateAppointment(appointmentToUpdate);
            //}
        }
    protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView       row = (DataRowView)e.Item.DataItem;
        ELeaveApplication obj = new ELeaveApplication();

        ELeaveApplication.db.toObject(row.Row, obj);

        Button cancelButton = (Button)e.Item.FindControl("Cancel");

        DBFilter requestLeaveAppCancelFilter = new DBFilter();

        requestLeaveAppCancelFilter.add(new Match("EmpID", CurID));
        requestLeaveAppCancelFilter.add(new Match("LeaveAppID", obj.LeaveAppID));

        DBFilter empRequestFilter = new DBFilter();

        empRequestFilter.add(new Match("EmpID", CurID));
        empRequestFilter.add(new Match("EmpRequestType", EEmpRequest.TYPE_EELEAVECANCEL));
        empRequestFilter.add(new IN("EmpRequestRecordID", "SELECT RequestLeaveAppCancelID FROM " + ERequestLeaveApplicationCancel.db.dbclass.tableName, requestLeaveAppCancelFilter));
        empRequestFilter.add(EEmpRequest.EndStatusDBTerms("EmpRequestStatus", true));

        if (obj.LeaveAppCancelID > 0 || EEmpRequest.db.count(dbConn, empRequestFilter) > 0)
        {
            cancelButton.Visible = false;
        }
        else
        {
            ELeaveCode leaveCode = new ELeaveCode();
            leaveCode.LeaveCodeID = obj.LeaveCodeID;
            if (ELeaveCode.db.select(dbConn, leaveCode))
            {
                if (leaveCode.LeaveCodeHideInESS)
                {
                    cancelButton.Visible = false;
                }
                else
                {
                    //  Temporary set to invisible to add more constraint before launch
                    cancelButton.Visible = isAllowLeaveCancel;
                    cancelButton.Attributes["LeaveAppID"] = obj.LeaveAppID.ToString();
                }
            }
            else
            {
                cancelButton.Visible = false;
            }
        }

        // Start 0000094, Ricky So, 2014-09-09
        Label RequestQty = (Label)e.Item.FindControl("LeaveAppDays");

        string m_unit = ((DataRowView)e.Item.DataItem)["LeaveAppUnit"].ToString();
        double m_appHours;
        double m_appDays;

        Double.TryParse(((DataRowView)e.Item.DataItem)["LeaveAppHours"].ToString(), out m_appHours);
        Double.TryParse(((DataRowView)e.Item.DataItem)["LeaveAppDays"].ToString(), out m_appDays);

        switch (m_unit)
        {
        case "H": RequestQty.Text = m_appHours.ToString("0.000");
            break;

        default: RequestQty.Text = m_appDays.ToString("0.000");
            break;
        }
        // End 0000094, Ricky So, 2014-09-09

        HROne.Common.WebUtility.WebControlsLocalization(Session, e.Item.Controls);
    }
Exemplo n.º 19
0
    protected void Save_Click(object sender, EventArgs e)
    {
        ELeaveApplication c = new ELeaveApplication();

        if (!LeaveAppUnit.SelectedValue.Equals("D"))
        {
            LeaveAppDateTo.Value = LeaveAppDateFrom.Value;
        }
        Hashtable values = new Hashtable();

        binding.toValues(values);

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

        errors.clear();


        db.validate(errors, values);

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


        db.parse(values, c);

        if (!c.LeaveAppUnit.Equals("D"))
        {
            //c.LeaveAppDateTo = c.LeaveAppDateFrom;
            if (c.LeaveAppTimeTo < c.LeaveAppTimeFrom)
            {
                errors.addError(HROne.Translation.PageErrorMessage.ERROR_INVALID_HOUR);
            }
        }
        else
        {
            EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
            empInfo.EmpID = c.EmpID;
            if (EEmpPersonalInfo.db.select(dbConn, empInfo))
            {
                if (c.LeaveAppDateTo < c.LeaveAppDateFrom)
                {
                    errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_TO_TOO_EARLY);
                }
                else
                {
                    if (c.LeaveAppDateFrom < empInfo.EmpDateOfJoin)
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_TOO_EARLY);
                    }
                    EEmpTermination empTerm = EEmpTermination.GetObjectByEmpID(dbConn, c.EmpID);
                    if (empTerm != null)
                    {
                        if (c.LeaveAppDateTo > empTerm.EmpTermLastDate)
                        {
                            errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_TOO_LATE);
                        }
                    }
                    TimeSpan ts = c.LeaveAppDateTo.Subtract(c.LeaveAppDateFrom);
                    if (c.LeaveAppDays > ts.Days + 1)
                    {
                        errors.addError(HROne.Translation.PageErrorMessage.ERROR_DAYS_TOO_LARGE);
                    }
                }
            }
        }

        if (c.LeaveAppDateFrom.Month != c.LeaveAppDateTo.Month || c.LeaveAppDateFrom.Year != c.LeaveAppDateTo.Year)
        {
            errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_APP_NOT_SAME_MTH);
        }

        if (HoursClaimPanel.Visible)
        {
            if (c.LeaveAppHours <= 0)
            {
                errors.addError(string.Format(HROne.Translation.PageErrorMessage.ERROR_FIELD_REQUIRED, new string[] { lblLeaveAppHours.Text }));
            }
        }
        //DBFilter overlapCheckingFilter = new DBFilter();
        //overlapCheckingFilter.add(new Match("EmpID", c.EmpID));
        //overlapCheckingFilter.add(new Match("LeaveAppID", "<>", c.LeaveAppID));
        //overlapCheckingFilter.add(new Match("LeaveAppDateFrom", "<=", c.LeaveAppDateTo));
        //overlapCheckingFilter.add(new Match("LeaveAppDateTo", ">=", c.LeaveAppDateFrom));
        //if (c.LeaveAppUnit.Equals("H"))
        //    overlapCheckingFilter.add(new Match("LeaveAppUnit", "D"));

        //if (overlapDailyLeaveAppList.Count > 0)
        //{
        //    errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_APP_OVERLAP);
        //    foreach (ELeaveApplication overlapDailyLeaveApp in overlapDailyLeaveAppList)
        //    {
        //        ELeaveCode leaveCode = new ELeaveCode();
        //        leaveCode.LeaveCodeID = overlapDailyLeaveApp.LeaveCodeID;
        //        if (ELeaveCode.db.select(dbConn, leaveCode))
        //        {
        //            errors.addError("- " + overlapDailyLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd") + (overlapDailyLeaveApp.LeaveAppDateFrom.Equals(overlapDailyLeaveApp.LeaveAppDateTo) ? "" : " To " + overlapDailyLeaveApp.LeaveAppDateTo.ToString("yyyy-MM-dd")) + " " + leaveCode.LeaveCodeDesc);
        //        }
        //    }
        //}
        //if (c.LeaveAppUnit.Equals("H"))
        //{
        //    DateTime newLeaveAppTimeFrom = c.LeaveAppDateFrom.Date.Add(new TimeSpan(c.LeaveAppTimeFrom.Hour, c.LeaveAppTimeFrom.Minute, c.LeaveAppTimeFrom.Second));
        //    DateTime newLeaveAppTimeTo = c.LeaveAppDateTo.Date.Add(new TimeSpan(c.LeaveAppTimeTo.Hour, c.LeaveAppTimeTo.Minute, c.LeaveAppTimeTo.Second));
        //    while (newLeaveAppTimeFrom > newLeaveAppTimeTo)
        //        newLeaveAppTimeTo.AddDays(1);

        //    overlapCheckingFilter = new DBFilter();
        //    overlapCheckingFilter.add(new Match("EmpID", c.EmpID));
        //    overlapCheckingFilter.add(new Match("LeaveAppID", "<>", c.LeaveAppID));
        //    overlapCheckingFilter.add(new Match("LeaveAppDateFrom", "<=", c.LeaveAppDateTo));
        //    overlapCheckingFilter.add(new Match("LeaveAppDateTo", ">=", c.LeaveAppDateFrom));
        //    overlapCheckingFilter.add(new Match("LeaveAppUnit", "H"));
        //    ArrayList leaveAppList = ELeaveApplication.db.select(dbConn, overlapCheckingFilter);
        //    foreach (ELeaveApplication oldLeaveApp in leaveAppList)
        //    {
        //        DateTime oldLeaveAppTimeFrom = oldLeaveApp.LeaveAppDateFrom.Date.Add(new TimeSpan(oldLeaveApp.LeaveAppTimeFrom.Hour, oldLeaveApp.LeaveAppTimeFrom.Minute, oldLeaveApp.LeaveAppTimeFrom.Second));
        //        DateTime oldLeaveAppTimeTo = oldLeaveApp.LeaveAppDateTo.Date.Add(new TimeSpan(oldLeaveApp.LeaveAppTimeTo.Hour, oldLeaveApp.LeaveAppTimeTo.Minute, oldLeaveApp.LeaveAppTimeTo.Second));
        //        while (oldLeaveAppTimeFrom > oldLeaveAppTimeTo)
        //            oldLeaveAppTimeTo.AddDays(1);

        //        if (!newLeaveAppTimeFrom.Equals(newLeaveAppTimeTo) && !oldLeaveAppTimeFrom.Equals(oldLeaveAppTimeTo))
        //            //  Only check if the following case exists
        //            // Time A From------- Time B From ---------- Time B To ------------Time A To
        //            if (newLeaveAppTimeFrom <= oldLeaveAppTimeFrom && oldLeaveAppTimeTo <= newLeaveAppTimeTo || oldLeaveAppTimeFrom <= newLeaveAppTimeFrom && newLeaveAppTimeTo <= oldLeaveAppTimeTo)
        //                errors.addError(HROne.Translation.PageErrorMessage.ERROR_LEAVE_APP_TIME_OVERLAP);
        //    }
        //}
        ArrayList overlapLeaveAppList = new ArrayList();

        if (c.IsOverlapLeaveApplication(dbConn, out overlapLeaveAppList))
        {
            string strDailyOverlapMessage  = string.Empty;
            string strHourlyOverlapMessage = string.Empty;

            foreach (ELeaveApplication overlapLeaveApp in overlapLeaveAppList)
            {
                if (overlapLeaveApp.LeaveAppUnit.Equals("D") || c.LeaveAppUnit.Equals("D"))
                {
                    if (string.IsNullOrEmpty(strDailyOverlapMessage))
                    {
                        strDailyOverlapMessage = HROne.Translation.PageErrorMessage.ERROR_LEAVE_APP_OVERLAP;
                    }
                    ELeaveCode errorLeaveCode = new ELeaveCode();
                    errorLeaveCode.LeaveCodeID = overlapLeaveApp.LeaveCodeID;
                    if (ELeaveCode.db.select(dbConn, errorLeaveCode))
                    {
                        // Start 0000201, Ricky So, 2015-06-02
                        //strDailyOverlapMessage += "\n- " + overlapLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd") +
                        //                                   (overlapLeaveApp.LeaveAppDateFrom.Equals(overlapLeaveApp.LeaveAppDateTo) ? "" : " To " +
                        //                                   overlapLeaveApp.LeaveAppDateTo.ToString("yyyy-MM-dd")) + " " +
                        //                                   errorLeaveCode.LeaveCodeDesc;
                        strDailyOverlapMessage += "\n- " + overlapLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd");

                        if (overlapLeaveApp.LeaveAppUnit == "A")
                        {
                            strDailyOverlapMessage += "AM";
                        }
                        else if (overlapLeaveApp.LeaveAppUnit == "P")
                        {
                            strDailyOverlapMessage += "PM";
                        }
                        else if (overlapLeaveApp.LeaveAppUnit == "D" && !string.IsNullOrEmpty(overlapLeaveApp.LeaveAppDateFromAM))
                        {
                            strDailyOverlapMessage += overlapLeaveApp.LeaveAppDateFromAM;
                        }
                        else

                        if (overlapLeaveApp.LeaveAppDateFrom.Equals(overlapLeaveApp.LeaveAppDateTo))
                        {
                            strDailyOverlapMessage += " To " + overlapLeaveApp.LeaveAppDateTo.ToString("yyyy-MM-dd");
                        }

                        if (overlapLeaveApp.LeaveAppUnit == "D" && !string.IsNullOrEmpty(overlapLeaveApp.LeaveAppDateToAM))
                        {
                            strDailyOverlapMessage += overlapLeaveApp.LeaveAppDateToAM;
                        }
                        else
                        {
                            strDailyOverlapMessage += "   " + errorLeaveCode.LeaveCodeDesc;
                        }
                        // End 0000201, Ricky So, 2015-06-02
                    }
                }
                else
                {
                    if (string.IsNullOrEmpty(strHourlyOverlapMessage))
                    {
                        strHourlyOverlapMessage = HROne.Translation.PageErrorMessage.ERROR_LEAVE_APP_TIME_OVERLAP;
                    }
                }
            }

            if (!string.IsNullOrEmpty(strDailyOverlapMessage))
            {
                errors.addError(strDailyOverlapMessage);
            }
            if (!string.IsNullOrEmpty(strHourlyOverlapMessage))
            {
                errors.addError(strHourlyOverlapMessage);
            }
        }

        ELeaveCode leaveCode = new ELeaveCode();

        leaveCode.LeaveCodeID = c.LeaveCodeID;
        if (ELeaveCode.db.select(dbConn, leaveCode))
        {
            if (leaveCode.LeaveCodeIsSkipPayrollProcess)
            {
                c.LeaveAppNoPayProcess = true;
            }
        }

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

        WebUtils.StartFunction(Session, FUNCTION_CODE, c.EmpID);
        //LeaveBalanceCalc leaaveBalCal = new LeaveBalanceCalc(dbConn, c.EmpID);

        if (CurID < 0)
        {
//            Utils.MarkCreate(Session, c);

            db.insert(dbConn, c);
            CurID = c.LeaveAppID;
            //leaaveBalCal.RecalculateAfter(c.LeaveAppDateFrom, leaveCode.LeaveTypeID);
//            url = Utils.BuildURL(-1, CurID);
        }
        else
        {
//            Utils.Mark(Session, c);
            //ELeaveApplication leaveBalApp = new ELeaveApplication();
            //leaveBalApp.LeaveAppID = CurID;
            //db.select(dbConn, leaveBalApp);
            db.update(dbConn, c);
            //leaaveBalCal.RecalculateAfter(leaveBalApp.LeaveAppDateFrom < c.LeaveAppDateFrom ? leaveBalApp.LeaveAppDateFrom : c.LeaveAppDateFrom);
        }
        WebUtils.EndFunction(dbConn);


        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "Emp_LeaveApplication_View.aspx?EmpID=" + c.EmpID + "&LeaveAppID=" + CurID);
    }
    protected bool loadObject()
    {
        obj = new ELeaveApplication();
        bool isNew = WebFormWorkers.loadKeys(db, obj, DecryptedRequest);

        DBFilter filter = new DBFilter();

        filter.add(new Match("EmpID", CurEmpID));
        filter.add(WebUtils.AddRankFilter(Session, "EmpID", true));
        if (EEmpPersonalInfo.db.count(dbConn, filter) == 0)
        {
            if (CurEmpID <= 0)
            {
                return(false);
            }
            else
            {
                HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/AccessDeny.aspx");
            }
        }

        if (!db.select(dbConn, obj))
        {
            if (CurID <= 0)
            {
                return(false);
            }
            else
            {
                HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/AccessDeny.aspx");
            }
        }

        if (obj.EmpID != CurEmpID)
        {
            if (CurID <= 0)
            {
                return(false);
            }
            else
            {
                HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/AccessDeny.aspx");
            }
        }

        Hashtable values = new Hashtable();

        db.populate(obj, values);

        //int empPayrollID = int.Parse((string)values["EmpPayrollID"]);
        if (obj.EmpPayrollID > 0)
        {
            EEmpPayroll empPayroll = new EEmpPayroll();
            empPayroll.EmpPayrollID = obj.EmpPayrollID;
            if (EEmpPayroll.db.select(dbConn, empPayroll))
            {
                values.Add("PayPeriodID", empPayroll.PayPeriodID.ToString());
            }
        }

        binding.toControl(values);
        if (obj.LeaveAppUnit.Equals("D"))
        {
            TimeRow.Visible = false;
            LeaveAppDateToPlaceHolder.Visible = true;
        }
        else
        {
            TimeRow.Visible = true;
            LeaveAppDateToPlaceHolder.Visible = false;
        }
        if (obj.EmpPaymentID != 0 || obj.EmpPayrollID != 0)
        {
            toolBar.EditButton_Visible    = false;
            toolBar.DeleteButton_Visible  = false;
            toolBar.CustomButton1_Visible = true;
            toolBar.CustomButton2_Visible = true;
        }
        else
        {
            toolBar.EditButton_Visible    = true;
            toolBar.DeleteButton_Visible  = true;
            toolBar.CustomButton1_Visible = false;
            toolBar.CustomButton2_Visible = false;
        }

        if (obj.LeaveAppCancelID > 0)
        {
            toolBar.EditButton_Visible    = false;
            toolBar.DeleteButton_Visible  = false;
            toolBar.CustomButton1_Visible = false;
            toolBar.CustomButton2_Visible = false;
        }

        ELeaveCode leaveCode = new ELeaveCode();

        leaveCode.LeaveCodeID = obj.LeaveCodeID;
        if (ELeaveCode.db.select(dbConn, leaveCode))
        {
            PayrollProcessPanel.Visible = !leaveCode.LeaveCodeIsSkipPayrollProcess;
            LeaveCodeIsShowMedicalCertOptionPanel.Visible = leaveCode.LeaveCodeIsShowMedicalCertOption;
            //if (!leaveCode.LeaveCodeIsSkipPayrollProcess)
            //{
            //    ELeaveApplication leaveApp = new ELeaveApplication();
            //    leaveApp.LeaveAppID = CurID;
            //    if (ELeaveApplication.db.select(dbConn, leaveApp))
            //    {
            //        ELeaveCode prevLeaveCode = new ELeaveCode();
            //        prevLeaveCode.LeaveCodeID = leaveApp.LeaveCodeID;
            //        if (ELeaveCode.db.select(dbConn, prevLeaveCode))
            //            if (prevLeaveCode.LeaveCodeIsSkipPayrollProcess)
            //                LeaveAppNoPayProcess.Checked = false;
            //    }
            //}

            if (leaveCode.LeaveTypeID.Equals(ELeaveType.COMPENSATION_LEAVE_TYPE(dbConn).LeaveTypeID))
            {
                HoursClaimPanel.Visible = true;
            }
            else
            {
                HoursClaimPanel.Visible = false;
            }
        }
        else
        {
            HoursClaimPanel.Visible = false;
        }
        CurEmpID = obj.EmpID;
        return(true);
    }
Exemplo n.º 21
0
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        const string FIELD_COMPANY               = "Company";
        const string FIELD_POSITION              = "Position";
        const string FIELD_PAYROLLGROUP          = "Payroll Group";
        const string FIELD_EMPNO                 = "EmployeeID";
        const string FIELD_EMPENGFULLNAME        = "English Name";
        const string FIELD_CHINESENAME           = "¤¤¤å©m¦W";
        const string FIELD_HKID                  = @"HKID/Passport";
        const string FIELD_PERIODFROM            = "From";
        const string FIELD_PERIODTO              = "To";
        const string FIELD_WAGESWORK             = "Wages Paid";
        const string FIELD_WORKHOURTOTAL         = "Total Working Hours";
        const string FIELD_RESTDAYTOTAL          = "No. of Rest Day";
        const string FIELD_STATUTORYHOLIDAYTOTAL = "No. of SH";
        const string FIELD_FULLPAIDLEAVETOTAL    = "No. of Full Paid Leave";
        const string FIELD_NONFULLPAIDLEAVETOTAL = "Non-Full Paid Leave";

        ArrayList list = new ArrayList();

        foreach (RepeaterItem i in Repeater.Items)
        {
            CheckBox cb = (CheckBox)i.FindControl("ItemSelect");
            if (cb.Checked)
            {
                EEmpPersonalInfo o = (EEmpPersonalInfo)EEmpPersonalInfo.db.createObject();
                WebFormUtils.GetKeys(EEmpPersonalInfo.db, o, cb);
                list.Add(o);
            }
        }

        ArrayList payPeriodList = Payroll_ConfirmedPeriod_List1.GetSelectedBaseObjectList();



        if (list.Count > 0 && payPeriodList.Count > 0)
        {
            //const string PAYMENTCODE_PREFIX = "[StatutoryMinimumWageSummary] ";
            string exportFileName = System.IO.Path.GetTempFileName();
            System.IO.File.Delete(exportFileName);
            exportFileName += ".xls";
            //System.IO.File.Copy(Server.MapPath("~/template/HistoryList_Template.xls"), exportFileName, true);
            HROne.Export.ExcelExport export = new HROne.Export.ExcelExport(exportFileName);
            DataSet   dataSet   = new DataSet(); //export.GetDataSet();
            DataTable dataTable = new DataTable("Payroll$");
            dataSet.Tables.Add(dataTable);
            dataTable.Columns.Add(FIELD_COMPANY, typeof(string));

            DBFilter  hierarchyLevelFilter    = new DBFilter();
            Hashtable hierarchyLevelHashTable = new Hashtable();
            hierarchyLevelFilter.add("HLevelSeqNo", true);
            ArrayList hierarchyLevelList = EHierarchyLevel.db.select(dbConn, hierarchyLevelFilter);
            foreach (EHierarchyLevel hlevel in hierarchyLevelList)
            {
                dataTable.Columns.Add(hlevel.HLevelDesc, typeof(string));
                hierarchyLevelHashTable.Add(hlevel.HLevelID, hlevel);
            }
            dataTable.Columns.Add(FIELD_POSITION, typeof(string));
            dataTable.Columns.Add(FIELD_PAYROLLGROUP, typeof(string));
            dataTable.Columns.Add(FIELD_EMPNO, typeof(string));
            dataTable.Columns.Add(FIELD_EMPENGFULLNAME, typeof(string));
            dataTable.Columns.Add(FIELD_CHINESENAME, typeof(string));
            dataTable.Columns.Add(FIELD_HKID, typeof(string));
            dataTable.Columns.Add(FIELD_PERIODFROM, typeof(DateTime));
            dataTable.Columns.Add(FIELD_PERIODTO, typeof(DateTime));

            dataTable.Columns.Add(FIELD_WAGESWORK, typeof(double));
            dataTable.Columns.Add(FIELD_WORKHOURTOTAL, typeof(double));
            dataTable.Columns.Add(FIELD_RESTDAYTOTAL, typeof(double));
            dataTable.Columns.Add(FIELD_STATUTORYHOLIDAYTOTAL, typeof(double));
            dataTable.Columns.Add(FIELD_FULLPAIDLEAVETOTAL, typeof(double));
            dataTable.Columns.Add(FIELD_NONFULLPAIDLEAVETOTAL, typeof(double));



            int firstSummaryColumnPos = dataTable.Columns.Count;
            int firstDetailColumnPos  = dataTable.Columns.Count;

            foreach (EPayrollPeriod payPeriod in payPeriodList)
            {
                if (EPayrollPeriod.db.select(dbConn, payPeriod))
                {
                    EPayrollGroup payrollGroup = new EPayrollGroup();
                    payrollGroup.PayGroupID = payPeriod.PayGroupID;
                    EPayrollGroup.db.select(dbConn, payrollGroup);

                    foreach (EEmpPersonalInfo empInfo in list)
                    {
                        EEmpPersonalInfo.db.select(dbConn, empInfo);
                        EEmpTermination empTerm = EEmpTermination.GetObjectByEmpID(dbConn, empInfo.EmpID);

                        DBFilter empPayrollFilter = new DBFilter();
                        empPayrollFilter.add(new Match("ep.EmpID", empInfo.EmpID));
                        empPayrollFilter.add(new Match("ep.PayPeriodID", payPeriod.PayPeriodID));
                        if (PayrollStatus.SelectedValue.Equals("T"))
                        {
                            empPayrollFilter.add(new Match("ep.EmpPayStatus", "=", "T"));
                        }
                        else
                        {
                            empPayrollFilter.add(new Match("ep.EmpPayStatus", "<>", "T"));
                        }

                        DataRow row = dataTable.NewRow();
                        row[FIELD_EMPNO]          = empInfo.EmpNo;
                        row[FIELD_EMPENGFULLNAME] = empInfo.EmpEngFullName;
                        row[FIELD_CHINESENAME]    = empInfo.EmpChiFullName;
                        row[FIELD_HKID]           = empInfo.EmpHKID;
                        row[FIELD_PERIODFROM]     = payPeriod.PayPeriodFr;
                        row[FIELD_PERIODTO]       = payPeriod.PayPeriodTo;
                        DBFilter empPosFilter = new DBFilter();

                        EEmpPositionInfo empPos = AppUtils.GetLastPositionInfo(dbConn, payPeriod.PayPeriodTo, empInfo.EmpID);
                        if (empPos != null)
                        {
                            ECompany company = new ECompany();
                            company.CompanyID = empPos.CompanyID;
                            if (ECompany.db.select(dbConn, company))
                            {
                                row[FIELD_COMPANY] = company.CompanyCode;
                            }

                            EPosition position = new EPosition();
                            position.PositionID = empPos.PositionID;
                            if (EPosition.db.select(dbConn, position))
                            {
                                row[FIELD_POSITION] = position.PositionDesc;
                            }

                            DBFilter empHierarchyFilter = new DBFilter();
                            empHierarchyFilter.add(new Match("EmpPosID", empPos.EmpPosID));
                            ArrayList empHierarchyList = EEmpHierarchy.db.select(dbConn, empHierarchyFilter);
                            foreach (EEmpHierarchy empHierarchy in empHierarchyList)
                            {
                                EHierarchyLevel hierarchyLevel = (EHierarchyLevel)hierarchyLevelHashTable[empHierarchy.HLevelID];
                                if (hierarchyLevel != null)
                                {
                                    EHierarchyElement hierarchyElement = new EHierarchyElement();
                                    hierarchyElement.HElementID = empHierarchy.HElementID;
                                    if (EHierarchyElement.db.select(dbConn, hierarchyElement))
                                    {
                                        row[hierarchyLevel.HLevelDesc] = hierarchyElement.HElementDesc;
                                    }
                                }
                            }

                            EPayrollGroup curentPayGroup = new EPayrollGroup();
                            curentPayGroup.PayGroupID = empPos.PayGroupID;
                            if (EPayrollGroup.db.select(dbConn, curentPayGroup))
                            {
                                row[FIELD_PAYROLLGROUP] = curentPayGroup.PayGroupDesc;
                            }
                        }

                        double netAmount = 0, releventIncome = 0, nonRelevantIncome = 0, taxableAmount = 0, nonTaxableAmount = 0;
                        double mcER = 0, mcEE = 0;
                        double vcER = 0, vcEE = 0;
                        double pFundER = 0, pFundEE = 0;

                        double   wagesByWork          = 0;
                        double   wagesByRest          = 0;
                        double   fullPaidLeaveDays    = 0;
                        double   nonFullPaidLeaveDays = 0;
                        DBFilter paymentRecordFilter  = new DBFilter();
                        paymentRecordFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from " + EEmpPayroll.db.dbclass.tableName + " ep ", empPayrollFilter));
                        paymentRecordFilter.add(new Match("PayRecStatus", "A"));
                        ArrayList paymentRecords = EPaymentRecord.db.select(dbConn, paymentRecordFilter);

                        foreach (EPaymentRecord paymentRecord in paymentRecords)
                        {
                            EPaymentCode payCode = new EPaymentCode();
                            payCode.PaymentCodeID = paymentRecord.PaymentCodeID;
                            EPaymentCode.db.select(dbConn, payCode);
                            //  Always Use Payment Code Description for grouping payment code with same description
                            //string fieldName = PAYMENTCODE_PREFIX + payCode.PaymentCodeDesc;
                            //if (dataTable.Columns[fieldName] == null)
                            //    dataTable.Columns.Add(new DataColumn(fieldName, typeof(double)));
                            //if (row[fieldName] == null || row[fieldName] == DBNull.Value)
                            //    row[fieldName] = 0;
                            //row[fieldName] = (double)row[fieldName] + paymentRecord.PayRecActAmount;


                            netAmount += paymentRecord.PayRecActAmount;
                            if (payCode.PaymentCodeIsMPF)
                            {
                                releventIncome += paymentRecord.PayRecActAmount;
                            }
                            else
                            {
                                nonRelevantIncome += paymentRecord.PayRecActAmount;
                            }

                            DBFilter taxPaymentMapFilter = new DBFilter();
                            taxPaymentMapFilter.add(new Match("PaymentCodeID", paymentRecord.PaymentCodeID));
                            if (ETaxPaymentMap.db.count(dbConn, taxPaymentMapFilter) > 0)
                            {
                                taxableAmount += paymentRecord.PayRecActAmount;
                            }
                            else
                            {
                                nonTaxableAmount += paymentRecord.PayRecActAmount;
                            }

                            if (payCode.PaymentCodeIsWages)
                            {
                                if (paymentRecord.PayRecIsRestDayPayment)
                                {
                                    wagesByRest += paymentRecord.PayRecActAmount;
                                }
                                else
                                {
                                    wagesByWork += paymentRecord.PayRecActAmount;
                                }
                            }
                        }


                        DBFilter mpfRecordFilter = new DBFilter();
                        mpfRecordFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from " + EEmpPayroll.db.dbclass.tableName + " ep ", empPayrollFilter));
                        ArrayList mpfRecords = EMPFRecord.db.select(dbConn, mpfRecordFilter);
                        foreach (EMPFRecord mpfRecord in mpfRecords)
                        {
                            vcER += mpfRecord.MPFRecActVCER;
                            mcER += +mpfRecord.MPFRecActMCER;
                            vcEE += mpfRecord.MPFRecActVCEE;
                            mcEE += mpfRecord.MPFRecActMCEE;
                        }
                        ArrayList orsoRecords = EORSORecord.db.select(dbConn, mpfRecordFilter);
                        foreach (EORSORecord orsoRecord in orsoRecords)
                        {
                            pFundER += orsoRecord.ORSORecActER;
                            pFundEE += orsoRecord.ORSORecActEE;
                        }
                        row[FIELD_WAGESWORK] = wagesByWork;

                        DBFilter workingSummaryFilter = new DBFilter();
                        workingSummaryFilter.add(new Match("EmpWorkingSummaryAsOfDate", ">=", payPeriod.PayPeriodFr < empInfo.EmpDateOfJoin ? empInfo.EmpDateOfJoin : payPeriod.PayPeriodFr));
                        if (empTerm != null)
                        {
                            workingSummaryFilter.add(new Match("EmpWorkingSummaryAsOfDate", "<=", payPeriod.PayPeriodTo > empTerm.EmpTermLastDate ? empTerm.EmpTermLastDate : payPeriod.PayPeriodTo));
                        }
                        else
                        {
                            workingSummaryFilter.add(new Match("EmpWorkingSummaryAsOfDate", "<=", payPeriod.PayPeriodTo));
                        }
                        workingSummaryFilter.add(new Match("EmpID", empInfo.EmpID));

                        ArrayList empWorkingSummaryList = EEmpWorkingSummary.db.select(dbConn, workingSummaryFilter);

                        double workHourTotal = 0, restDayTotal = 0;


                        foreach (EEmpWorkingSummary empWorkSummary in empWorkingSummaryList)
                        {
                            workHourTotal += empWorkSummary.EmpWorkingSummaryTotalWorkingHours;
                            restDayTotal  += empWorkSummary.EmpWorkingSummaryRestDayEntitled;
                        }

                        row[FIELD_WORKHOURTOTAL] = workHourTotal;
                        row[FIELD_RESTDAYTOTAL]  = restDayTotal;

                        DBFilter statutoryHolidayFilter = new DBFilter();
                        statutoryHolidayFilter.add(new Match("StatutoryHolidayDate", ">=", payPeriod.PayPeriodFr < empInfo.EmpDateOfJoin ? empInfo.EmpDateOfJoin : payPeriod.PayPeriodFr));
                        if (empTerm != null)
                        {
                            statutoryHolidayFilter.add(new Match("StatutoryHolidayDate", "<=", payPeriod.PayPeriodTo > empTerm.EmpTermLastDate ? empTerm.EmpTermLastDate : payPeriod.PayPeriodTo));
                        }
                        else
                        {
                            statutoryHolidayFilter.add(new Match("StatutoryHolidayDate", "<=", payPeriod.PayPeriodTo));
                        }

                        ArrayList statutoryHolidayList = EStatutoryHoliday.db.select(dbConn, statutoryHolidayFilter);

                        double restDayCount = 0;
                        foreach (EStatutoryHoliday statutoryHoliday in statutoryHolidayList)
                        {
                            restDayCount++;
                        }

                        row[FIELD_STATUTORYHOLIDAYTOTAL] = restDayCount;

                        DBFilter LeaveAppEmpPayrollFilter = new DBFilter();
                        LeaveAppEmpPayrollFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from " + EEmpPayroll.db.dbclass.tableName + " ep ", empPayrollFilter));
                        ArrayList LeaveAppEmpPayrollLists = ELeaveApplication.db.select(dbConn, LeaveAppEmpPayrollFilter);
                        foreach (ELeaveApplication leaveApp in LeaveAppEmpPayrollLists)
                        {
                            ELeaveCode leaveCode = new ELeaveCode();
                            leaveCode.LeaveCodeID = leaveApp.LeaveCodeID;
                            if (ELeaveCode.db.select(dbConn, leaveCode))
                            {
                                if (leaveCode.LeaveCodePayRatio >= 1)
                                {
                                    fullPaidLeaveDays += leaveApp.LeaveAppDays;
                                }
                                else
                                {
                                    nonFullPaidLeaveDays += leaveApp.LeaveAppDays;
                                }
                            }
                        }
                        row[FIELD_FULLPAIDLEAVETOTAL]    = fullPaidLeaveDays;
                        row[FIELD_NONFULLPAIDLEAVETOTAL] = nonFullPaidLeaveDays;

                        dataTable.Rows.Add(row);
                    }
                }
            }

            //DBFilter paymentCodeFilter = new DBFilter();
            //paymentCodeFilter.add("PaymentCodeDisplaySeqNo", false);
            //paymentCodeFilter.add("PaymentCode", false);
            //ArrayList paymentCodeList = EPaymentCode.db.select(dbConn, paymentCodeFilter);
            //foreach (EPaymentCode paymentCode in paymentCodeList)
            //{
            //    if (dataTable.Columns.Contains(PAYMENTCODE_PREFIX + paymentCode.PaymentCodeDesc))
            //    {
            //        DataColumn paymentColumn = dataTable.Columns[PAYMENTCODE_PREFIX + paymentCode.PaymentCodeDesc];
            //        paymentColumn.SetOrdinal(firstDetailColumnPos);
            //        if (!dataTable.Columns.Contains(paymentCode.PaymentCodeDesc))
            //            paymentColumn.ColumnName = paymentCode.PaymentCodeDesc;
            //        else
            //        {
            //            Console.Write("System reserved payment column is used");
            //        }
            //    }
            //}

            //for (int i = firstSummaryColumnPos; i < firstDetailColumnPos; i++)
            //    dataTable.Columns[firstSummaryColumnPos].SetOrdinal(dataTable.Columns.Count - 1);


            export.Update(dataSet);

            System.IO.FileStream             excelfileStream = new System.IO.FileStream(exportFileName, System.IO.FileMode.Open);
            NPOI.HSSF.UserModel.HSSFWorkbook workbook        = new NPOI.HSSF.UserModel.HSSFWorkbook(excelfileStream);
            NPOI.HSSF.UserModel.HSSFSheet    workSheet       = (NPOI.HSSF.UserModel.HSSFSheet)workbook.GetSheetAt(0);
            workSheet.ShiftRows(workSheet.FirstRowNum, workSheet.LastRowNum, 1);
            NPOI.HSSF.UserModel.HSSFRow excelRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.GetRow(0);
            if (excelRow == null)
            {
                excelRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.CreateRow(0);
            }
            NPOI.HSSF.UserModel.HSSFCell excelCell = (NPOI.HSSF.UserModel.HSSFCell)excelRow.GetCell(0);
            if (excelCell == null)
            {
                excelCell = (NPOI.HSSF.UserModel.HSSFCell)excelRow.CreateCell(0);
            }
            excelCell.SetCellValue("Statutory Minimum Wage Summary Report");

            excelfileStream = new System.IO.FileStream(exportFileName, System.IO.FileMode.Open);
            workbook.Write(excelfileStream);
            excelfileStream.Close();

            WebUtils.TransmitFile(Response, exportFileName, "StatutoryMinimumWageSummary_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
            return;
        }
        else
        {
            PageErrors errors = PageErrors.getErrors(db, Page.Master);
            errors.addError("Employee not selected");
        }
    }
Exemplo n.º 22
0
        protected RosterTableEventList GenerateEventList(ICollection DBObjectList)
        {
            RosterTableEventList tmpEventList = new RosterTableEventList();

            if (DBObjectList != null)
            {
                foreach (DBObject dbObject in DBObjectList)
                {
                    if (dbObject is ERosterTable)
                    {
                        ERosterTable rosterTable = (ERosterTable)dbObject;
                        ERosterCode  rosterCode  = new ERosterCode();
                        rosterCode.RosterCodeID = rosterTable.RosterCodeID;
                        bool hasRecord = ERosterCode.db.select(dbConn, rosterCode);
                        if (hasRecord || rosterCode.RosterCodeID == 0)
                        {
                            RosterTableEvent eventDetail = new RosterTableEvent();
                            eventDetail.Id = RosterTableEvent.ROSTER_TABLE_ID_PREFIX + "_" + rosterTable.RosterTableID;

                            //  Override Start/End time only when the roster code exists
                            if (rosterTable.RosterTableOverrideInTime.Ticks.Equals(0) || !hasRecord)
                            {
                                eventDetail.StartTime = rosterTable.RosterTableDate.Add(rosterCode.RosterCodeInTime.TimeOfDay);
                            }
                            else
                            {
                                eventDetail.StartTime = rosterTable.RosterTableDate.Add(rosterTable.RosterTableOverrideInTime.TimeOfDay);
                            }

                            if (rosterTable.RosterTableOverrideOutTime.Ticks.Equals(0) || !hasRecord)
                            {
                                eventDetail.EndTime = rosterTable.RosterTableDate.Add(rosterCode.RosterCodeOutTime.TimeOfDay);
                            }
                            else
                            {
                                eventDetail.EndTime = rosterTable.RosterTableDate.Add(rosterTable.RosterTableOverrideOutTime.TimeOfDay);
                            }
                            if (eventDetail.StartTime >= eventDetail.EndTime)
                            {
                                eventDetail.EndTime = eventDetail.EndTime.AddDays(1);

                                if (!DisplayOvernightToNextDay)
                                {
                                    eventDetail.EndTime = eventDetail.EndTime.Date;
                                }
                            }

                            EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
                            empInfo.EmpID = rosterTable.EmpID;
                            EEmpPersonalInfo.db.select(dbConn, empInfo);

                            eventDetail.Subject = (hasRecord ? rosterCode.RosterCode : "(unspecified)") + " - " + empInfo.EmpEngDisplayName;
                            eventDetail.ToolTip = eventDetail.Subject;
                            eventDetail.Label   = rosterCode.RosterClientSiteID;

                            eventDetail.RecurrenceInfo = string.Empty;
                            eventDetail.OwnerId        = rosterCode.RosterClientSiteID;

                            tmpEventList.Add(eventDetail);
                        }
                    }
                    else if (dbObject is ELeaveApplication)
                    {
                        ELeaveApplication leaveApplication = (ELeaveApplication)dbObject;
                        ELeaveCode        leaveCode        = new ELeaveCode();
                        leaveCode.LeaveCodeID = leaveApplication.LeaveCodeID;
                        bool hasRecord = ELeaveCode.db.select(dbConn, leaveCode);
                        if (hasRecord)
                        {
                            RosterTableEvent eventDetail = new RosterTableEvent();
                            eventDetail.Id = RosterTableEvent.LEAVEAPP_ID_PREFIX + "_" + leaveApplication.LeaveAppID;

                            if (leaveApplication.LeaveAppUnit.Equals(ELeaveApplication.LEAVEUNIT_DAYS))
                            {
                                eventDetail.StartTime = leaveApplication.LeaveAppDateFrom;
                                eventDetail.EndTime   = leaveApplication.LeaveAppDateTo.AddDays(1);
                            }
                            else
                            {
                                eventDetail.StartTime = leaveApplication.LeaveAppDateFrom;
                                eventDetail.EndTime   = leaveApplication.LeaveAppDateFrom;
                                if (!leaveApplication.LeaveAppTimeFrom.Ticks.Equals(0))
                                {
                                    eventDetail.StartTime = eventDetail.StartTime.Add(leaveApplication.LeaveAppTimeFrom.TimeOfDay);
                                }
                                if (!leaveApplication.LeaveAppTimeTo.Ticks.Equals(0))
                                {
                                    eventDetail.EndTime = eventDetail.EndTime.Add(leaveApplication.LeaveAppTimeTo.TimeOfDay);
                                }

                                if (leaveApplication.LeaveAppUnit.Equals(ELeaveApplication.LEAVEUNIT_AM))
                                {
                                    if (eventDetail.StartTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.StartTime = eventDetail.StartTime.Add(new TimeSpan(0, 0, 0));
                                    }
                                    if (eventDetail.EndTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.EndTime = eventDetail.EndTime.Add(new TimeSpan(13, 0, 0));
                                    }
                                }
                                if (leaveApplication.LeaveAppUnit.Equals(ELeaveApplication.LEAVEUNIT_PM))
                                {
                                    if (eventDetail.StartTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.StartTime = eventDetail.StartTime.Add(new TimeSpan(13, 0, 0));
                                    }
                                    if (eventDetail.EndTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.EndTime = eventDetail.EndTime.AddDays(1);
                                    }
                                }
                                else
                                {
                                    if (eventDetail.StartTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.StartTime = eventDetail.StartTime.Add(new TimeSpan(0, 0, 0));
                                    }
                                    if (eventDetail.EndTime.Equals(leaveApplication.LeaveAppDateFrom))
                                    {
                                        eventDetail.EndTime = eventDetail.EndTime.AddDays(1);
                                    }
                                }
                            }


                            EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
                            empInfo.EmpID = leaveApplication.EmpID;
                            EEmpPersonalInfo.db.select(dbConn, empInfo);

                            //eventDetail.Subject = (hasRecord ? leaveCode.LeaveCode : "(unspecified)") + " - " + empInfo.EmpEngDisplayName;

                            if (leaveApplication.LeaveAppDays < 0 || leaveApplication.LeaveAppHours < 0)
                            {
                                eventDetail.IsCancel = true;
                            }

                            string LeaveUnitDetail = string.Empty;
                            if (leaveApplication.LeaveAppUnit.Equals("D"))
                            {
                                LeaveUnitDetail = leaveApplication.LeaveAppDays + " " + "Day" + (leaveApplication.LeaveAppDays > 1 ? "s" : string.Empty);
                            }
                            else if (leaveApplication.LeaveAppUnit.Equals("H"))
                            {
                                if (leaveApplication.LeaveAppTimeFrom.Ticks.Equals(0) || leaveApplication.LeaveAppTimeTo.Ticks.Equals(0))
                                {
                                    LeaveUnitDetail = leaveApplication.LeaveAppHours + " " + "Hour" + (leaveApplication.LeaveAppHours > 1 ? "s" : string.Empty);
                                }
                                else
                                {
                                    LeaveUnitDetail = leaveApplication.LeaveAppTimeFrom.ToString("HH:mm") + "-" + leaveApplication.LeaveAppTimeTo.ToString("HH:mm");
                                }
                            }
                            else if (leaveApplication.LeaveAppUnit.Equals("A"))
                            {
                                if (leaveApplication.LeaveAppDays > 0)
                                {
                                    LeaveUnitDetail = "A.M.";
                                }
                                else
                                {
                                    LeaveUnitDetail = "-A.M.";
                                }
                            }
                            else if (leaveApplication.LeaveAppUnit.Equals("P"))
                            {
                                if (leaveApplication.LeaveAppDays > 0)
                                {
                                    LeaveUnitDetail = "P.M.";
                                }
                                else
                                {
                                    LeaveUnitDetail = "-P.M.";
                                }
                            }

                            eventDetail.Subject = (hasRecord ? leaveCode.LeaveCode : "(unspecified)")
                                                  + (string.IsNullOrEmpty(LeaveUnitDetail) ? string.Empty : ("(" + LeaveUnitDetail + ")"))
                                                  + " - " + empInfo.EmpEngDisplayName;
                            eventDetail.ToolTip = eventDetail.Subject;
                            //eventDetail.Label = rosterCode.RosterClientSiteID;

                            eventDetail.RecurrenceInfo = string.Empty;
                            //eventDetail.OwnerId = rosterCode.RosterClientSiteID;

                            tmpEventList.Add(eventDetail);
                        }
                    }
                    else if (dbObject is EPublicHoliday)
                    {
                        EPublicHoliday   holiday     = (EPublicHoliday)dbObject;
                        RosterTableEvent eventDetail = new RosterTableEvent();
                        eventDetail.Id = RosterTableEvent.PUBLICHOLIDAY_PREFIX + "_" + holiday.PublicHolidayID;

                        eventDetail.StartTime = holiday.PublicHolidayDate;
                        eventDetail.EndTime   = holiday.PublicHolidayDate.AddDays(1);



                        eventDetail.Subject = holiday.PublicHolidayDesc;
                        eventDetail.ToolTip = eventDetail.Subject;
                        //eventDetail.Label = rosterCode.RosterClientSiteID;

                        eventDetail.RecurrenceInfo = string.Empty;
                        //eventDetail.OwnerId = rosterCode.RosterClientSiteID;

                        tmpEventList.Add(eventDetail);
                    }
                    else if (dbObject is EStatutoryHoliday)
                    {
                        EStatutoryHoliday holiday     = (EStatutoryHoliday)dbObject;
                        RosterTableEvent  eventDetail = new RosterTableEvent();
                        eventDetail.Id = RosterTableEvent.STATUTORYHOLIDAY_PREFIX + "_" + holiday.StatutoryHolidayID;

                        eventDetail.StartTime = holiday.StatutoryHolidayDate;
                        eventDetail.EndTime   = holiday.StatutoryHolidayDate.AddDays(1);



                        eventDetail.Subject = holiday.StatutoryHolidayDesc;
                        eventDetail.ToolTip = eventDetail.Subject;
                        //eventDetail.Label = rosterCode.RosterClientSiteID;

                        eventDetail.RecurrenceInfo = string.Empty;
                        //eventDetail.OwnerId = rosterCode.RosterClientSiteID;

                        tmpEventList.Add(eventDetail);
                    }
                }
            }
            return(tmpEventList);
        }
Exemplo n.º 23
0
    protected void Save_Click(object sender, EventArgs e)
    {
        EPayrollGroup c = new EPayrollGroup();

        Hashtable values = new Hashtable();

        binding.toValues(values);

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

        errors.clear();


        db.validate(errors, values);

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


        db.parse(values, c);

        if (CurID < 0)
        {
            c.PayGroupIsPublic = true;  // new payroll group is default to public
        }
        if (!c.PayGroupIsSkipStatHol)
        {
            if (c.PayGroupStatHolAllowFormula <= 0)
            {
                errors.addError(lblPayGroupStatHolAllowFormula.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }
            if (c.PayGroupStatHolAllowPaymentCodeID <= 0)
            {
                errors.addError(lblPayGroupStatHolAllowPaymentCodeID.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }
            if (c.PayGroupStatHolDeductFormula <= 0)
            {
                errors.addError(lblPayGroupStatHolDeductFormula.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }
            if (c.PayGroupStatHolDeductPaymentCodeID <= 0)
            {
                errors.addError(lblPayGroupStatHolDeductPaymentCodeID.Text, HROne.Common.WebUtility.GetLocalizedString("validate.required.prompt"));
            }
        }
        c.PayGroupCode = c.PayGroupCode.ToUpper();
        if (!AppUtils.checkDuplicate(dbConn, db, c, errors, "PayGroupCode"))
        {
            return;
        }

        if (c.PayGroupNextEndDate < c.PayGroupNextStartDate)
        {
            errors.addError(lblPayGroupNextEndDate.Text, HROne.Translation.PageErrorMessage.ERROR_DATE_TO_TOO_EARLY);
        }
        if (c.PayGroupDefaultStartDay > 31 || c.PayGroupDefaultStartDay < 1)
        {
            errors.addError(lblPayGroupDefaultStartDay.Text, HROne.Translation.PageErrorMessage.ERROR_INVALID_START_DATE);
        }
        if (c.PayGroupLeaveDefaultCutOffDay > 31 || c.PayGroupLeaveDefaultCutOffDay < 1)
        {
            errors.addError(lblPayGroupLeaveDefaultCutOffDay.Text, HROne.Translation.PageErrorMessage.ERROR_INVALID_END_DATE);
        }

        if (c.PayGroupFreq.Equals("S", StringComparison.CurrentCultureIgnoreCase))
        {
            if (c.PayGroupDefaultNextStartDay > 31 || c.PayGroupDefaultNextStartDay < 1)
            {
                errors.addError(lblPayGroupDefaultNextStartDay.Text, HROne.Translation.PageErrorMessage.ERROR_INVALID_START_DATE);
            }
            if (c.PayGroupLeaveDefaultNextCutOffDay > 31 || c.PayGroupLeaveDefaultNextCutOffDay < 1)
            {
                errors.addError(lblPayGroupLeaveDefaultNextCutOffDay.Text, HROne.Translation.PageErrorMessage.ERROR_INVALID_END_DATE);
            }
        }

        if (c.PayGroupNextStartDate >= c.PayGroupNextEndDate)
        {
            errors.addError("PayGroupNextStartDate", HROne.Translation.PageErrorMessage.ERROR_INCORRECT_DATE_RANGE + ": " + lblPayGroupNextEndDate.Text);
        }
        else if (((TimeSpan)c.PayGroupNextEndDate.Subtract(c.PayGroupNextStartDate)).TotalDays > 31)
        {
            errors.addError("PayGroupNextStartDate", HROne.Translation.PageErrorMessage.ERROR_INCORRECT_DATE_RANGE + ": " + lblPayGroupNextEndDate.Text);
        }


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

//        WebUtils.StartFunction(Session, Functions.FUNC_EMP_EDIT , 0);
        WebUtils.StartFunction(Session, FUNCTION_CODE);
        if (CurID < 0)
        {
            //            Utils.MarkCreate(Session, c);

            db.insert(dbConn, c);
            CurID = c.PayGroupID;
            //            url = Utils.BuildURL(-1, CurID);
        }
        else
        {
            //            Utils.Mark(Session, c);
            db.update(dbConn, c);
        }
//        WebUtils.StartFunction(Session, Functions.FUNC_EMP_EDIT, 0);

        db.select(dbConn, c);
        if (c.CurrentPayPeriodID == 0)
        {
            HROne.Payroll.PayrollProcess payrollProcess = new HROne.Payroll.PayrollProcess(dbConn);
            payrollProcess.GenerateNextPayrollPeriod(c.PayGroupID);
        }

        foreach (RepeaterItem item in LeaveCodeOverrideRepeater.Items)
        {
            Label        LeaveCodeID = (Label)item.FindControl("LeaveCodeID");
            DropDownList PayrollGroupLeaveCodeSetupLeaveDeductFormula       = (DropDownList)item.FindControl("PayrollGroupLeaveCodeSetupLeaveDeductFormula");
            DropDownList PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID = (DropDownList)item.FindControl("PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID");
            DropDownList PayrollGroupLeaveCodeSetupLeaveAllowFormula        = (DropDownList)item.FindControl("PayrollGroupLeaveCodeSetupLeaveAllowFormula");
            DropDownList PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID  = (DropDownList)item.FindControl("PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID");

            ELeaveCode o = new ELeaveCode();
            WebFormUtils.GetKeys(ELeaveCode.db, o, LeaveCodeID);

            Binding ebinding = new Binding(dbConn, EPayrollGroupLeaveCodeSetupOverride.db);
            ebinding.add(new DropDownVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveDeductFormula, EPayrollProrataFormula.VLPayrollProrataFormula));
            ebinding.add(new DropDownVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID, EPaymentCode.VLPaymentCode));
            ebinding.add(new DropDownVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveAllowFormula, EPayrollProrataFormula.VLPayrollProrataFormula));
            ebinding.add(new DropDownVLBinder(EPayrollGroupLeaveCodeSetupOverride.db, PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID, EPaymentCode.VLPaymentCode));

            Hashtable hashTable = new Hashtable();
            ebinding.toValues(hashTable);
            EPayrollGroupLeaveCodeSetupOverride setupOverride = new EPayrollGroupLeaveCodeSetupOverride();
            EPayrollGroupLeaveCodeSetupOverride.db.parse(hashTable, setupOverride);
            setupOverride.PayGroupID  = c.PayGroupID;
            setupOverride.LeaveCodeID = o.LeaveCodeID;
            if (setupOverride.PayrollGroupLeaveCodeSetupLeaveAllowFormula <= 0 &&
                setupOverride.PayrollGroupLeaveCodeSetupLeaveAllowPaymentCodeID <= 0 &&
                setupOverride.PayrollGroupLeaveCodeSetupLeaveDeductFormula <= 0 &&
                setupOverride.PayrollGroupLeaveCodeSetupLeaveDeductPaymentCodeID <= 0)
            {
                DBFilter setupOverrideFilter = new DBFilter();
                setupOverrideFilter.add(new Match("LeaveCodeID", setupOverride.LeaveCodeID));
                setupOverrideFilter.add(new Match("PayGroupID", setupOverride.PayGroupID));
                ArrayList setupOverrideList = EPayrollGroupLeaveCodeSetupOverride.db.select(dbConn, setupOverrideFilter);
                foreach (EPayrollGroupLeaveCodeSetupOverride deletedSetupOverride in setupOverrideList)
                {
                    EPayrollGroupLeaveCodeSetupOverride.db.delete(dbConn, deletedSetupOverride);
                }
            }
            else
            {
                DBFilter setupOverrideFilter = new DBFilter();
                setupOverrideFilter.add(new Match("LeaveCodeID", setupOverride.LeaveCodeID));
                setupOverrideFilter.add(new Match("PayGroupID", setupOverride.PayGroupID));
                ArrayList setupOverrideList = EPayrollGroupLeaveCodeSetupOverride.db.select(dbConn, setupOverrideFilter);
                if (setupOverrideList.Count > 0)
                {
                    setupOverride.PayrollGroupLeaveCodeSetupOverrideID = ((EPayrollGroupLeaveCodeSetupOverride)setupOverrideList[0]).PayrollGroupLeaveCodeSetupOverrideID;
                    EPayrollGroupLeaveCodeSetupOverride.db.update(dbConn, setupOverride);
                }
                else
                {
                    EPayrollGroupLeaveCodeSetupOverride.db.insert(dbConn, setupOverride);
                }
            }
        }
        WebUtils.EndFunction(dbConn);

//        Response.Redirect(Request.Url.LocalPath + "?PayGroupID=" + CurID);
        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "Payroll_Group_View.aspx?PayGroupID=" + CurID);
    }
Exemplo n.º 24
0
        public static string GetValueFromID(DatabaseConnection dbConn, string fieldName, string fieldValue)
        {
            try
            {
                string tmpfieldName = fieldName;
                if (tmpfieldName.Equals("PreviousEmpID", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.Equals("NewEmpID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "EmpID";
                }
                if (tmpfieldName.EndsWith("PaymentCodeID", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.EndsWith("PayCodeID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "PaymentCodeID";
                }
                if (tmpfieldName.Equals("DefaultMPFPlanID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "MPFPlanID";
                }
                if (tmpfieldName.Equals("AttendanceFormulaPayFormID", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.Equals("ReferencePayFormID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "PayFormID";
                }
                if (tmpfieldName.StartsWith("LeaveCode", StringComparison.CurrentCultureIgnoreCase) && tmpfieldName.EndsWith("Formula", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "PayFormID";
                }
                if (tmpfieldName.StartsWith("PayGroup", StringComparison.CurrentCultureIgnoreCase) && tmpfieldName.EndsWith("Formula", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "PayFormID";
                }
                if (tmpfieldName.Equals("CurrentPayPeriodID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "PayPeriodID";
                }
                if (tmpfieldName.Equals("EmpPosDefaultRosterCodeID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "RosterCodeID";
                }
                if (tmpfieldName.Equals("RosterClientMappingSiteCodeToHLevelID", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "HLevelID";
                }
                if (tmpfieldName.Equals("EmpFirstAuthorizationGp", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.Equals("EmpSecondAuthorizationGp", StringComparison.CurrentCultureIgnoreCase))
                {
                    tmpfieldName = "AuthorizationGroupID";
                }



                if (tmpfieldName.StartsWith("A", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("ALProrataRoundingRuleID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EALProrataRoundingRule obj = new EALProrataRoundingRule();
                        obj.ALProrataRoundingRuleID = int.Parse(fieldValue);
                        if (EALProrataRoundingRule.db.select(dbConn, obj))
                        {
                            return(obj.ALProrataRoundingRuleCode + " - " + obj.ALProrataRoundingRuleDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("AttendancePlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EAttendancePlan obj = new EAttendancePlan();
                        obj.AttendancePlanID = int.Parse(fieldValue);
                        if (EAttendancePlan.db.select(dbConn, obj))
                        {
                            return(obj.AttendancePlanCode + " - " + obj.AttendancePlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("AuthorizationGroupID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EAuthorizationGroup obj = new EAuthorizationGroup();
                        obj.AuthorizationGroupID = int.Parse(fieldValue);
                        if (EAuthorizationGroup.db.select(dbConn, obj))
                        {
                            return(obj.AuthorizationCode + " - " + obj.AuthorizationDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("AVCPlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EAVCPlan obj = new EAVCPlan();
                        obj.AVCPlanID = int.Parse(fieldValue);
                        if (EAVCPlan.db.select(dbConn, obj))
                        {
                            return(obj.AVCPlanCode + " - " + obj.AVCPlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("C", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("CessationReasonID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ECessationReason obj = new ECessationReason();
                        obj.CessationReasonID = int.Parse(fieldValue);
                        if (ECessationReason.db.select(dbConn, obj))
                        {
                            return(obj.CessationReasonCode + " - " + obj.CessationReasonDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("CompanyID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ECompany obj = new ECompany();
                        obj.CompanyID = int.Parse(fieldValue);
                        if (ECompany.db.select(dbConn, obj))
                        {
                            return(obj.CompanyCode + " - " + obj.CompanyName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }


                    if (tmpfieldName.Equals("CostAllocationDetailID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ECostAllocationDetail obj = new ECostAllocationDetail();
                        obj.CostAllocationDetailID = int.Parse(fieldValue);
                        if (ECostAllocationDetail.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "PayCodeID", obj.PaymentCodeID.ToString()) + ", " + GetValueFromID(dbConn, "CostCenterID", obj.CostCenterID.ToString()));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("CostAllocationID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ECostAllocation obj = new ECostAllocation();
                        obj.CostAllocationID = int.Parse(fieldValue);
                        if (ECostAllocation.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "EmpPayrollID", obj.EmpPayrollID.ToString()));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("CostCenterID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ECostCenter obj = new ECostCenter();
                        obj.CostCenterID = int.Parse(fieldValue);
                        if (ECostCenter.db.select(dbConn, obj))
                        {
                            return(obj.CostCenterCode + " - " + obj.CostCenterDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("D", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("DocumentTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EDocumentType obj = new EDocumentType();
                        obj.DocumentTypeID = int.Parse(fieldValue);
                        if (EDocumentType.db.select(dbConn, obj))
                        {
                            return(obj.DocumentTypeCode + " - " + obj.DocumentTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("E", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("EmpAccID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpBankAccount obj = new EEmpBankAccount();
                        obj.EmpBankAccountID = int.Parse(fieldValue);
                        if (EEmpBankAccount.db.select(dbConn, obj))
                        {
                            return(obj.EmpBankCode + "-" + obj.EmpBranchCode + "-" + obj.EmpAccountNo);
                        }
                        //return obj.EmpBankCode + "-" + obj.EmpBranchCode + "-" + string.Empty.PadRight(obj.EmpAccountNo.Length, 'X');
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmpCostCenterID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpCostCenter obj = new EEmpCostCenter();
                        obj.EmpCostCenterID = int.Parse(fieldValue);
                        if (EEmpCostCenter.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "EmpID", obj.EmpID.ToString()));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmpExtraFieldID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpExtraField obj = new EEmpExtraField();
                        obj.EmpExtraFieldID = int.Parse(fieldValue);
                        if (EEmpExtraField.db.select(dbConn, obj))
                        {
                            return(obj.EmpExtraFieldName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmpID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpPersonalInfo obj = new EEmpPersonalInfo();
                        obj.EmpID = int.Parse(fieldValue);
                        if (EEmpPersonalInfo.db.select(dbConn, obj))
                        {
                            return(obj.EmpNo + " - " + obj.EmpEngFullName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmpPayrollID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpPayroll obj = new EEmpPayroll();
                        obj.EmpPayrollID = int.Parse(fieldValue);
                        if (EEmpPayroll.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "EmpID", obj.EmpID.ToString()) + " : " + GetValueFromID(dbConn, "PayPeriodID", obj.PayPeriodID.ToString()));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmpPosID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmpPositionInfo obj = new EEmpPositionInfo();
                        obj.EmpPosID = int.Parse(fieldValue);
                        if (EEmpPositionInfo.db.select(dbConn, obj))
                        {
                            return(obj.EmpPosEffFr.ToString("yyyy-MM-dd") + " - " + (obj.EmpPosEffTo.Ticks.Equals(0) ? "Present" : obj.EmpPosEffTo.ToString("yyyy-MM-dd")));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("EmploymentTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EEmploymentType obj = new EEmploymentType();
                        obj.EmploymentTypeID = int.Parse(fieldValue);
                        if (EEmploymentType.db.select(dbConn, obj))
                        {
                            return(obj.EmploymentTypeCode + " - " + obj.EmploymentTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("F", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("FunctionID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ESystemFunction obj = new ESystemFunction();
                        obj.FunctionID = int.Parse(fieldValue);
                        if (ESystemFunction.db.select(dbConn, obj))
                        {
                            return(obj.FunctionCode + " - " + obj.Description);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("H", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("HElementID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EHierarchyElement obj = new EHierarchyElement();
                        obj.HElementID = int.Parse(fieldValue);
                        if (EHierarchyElement.db.select(dbConn, obj))
                        {
                            return(obj.HElementCode + " - " + obj.HElementDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("HLevelID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EHierarchyLevel obj = new EHierarchyLevel();
                        obj.HLevelID = int.Parse(fieldValue);
                        if (EHierarchyLevel.db.select(dbConn, obj))
                        {
                            return(obj.HLevelCode + " - " + obj.HLevelDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("L", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("LeaveTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ELeaveType obj = new ELeaveType();
                        obj.LeaveTypeID = int.Parse(fieldValue);
                        if (ELeaveType.db.select(dbConn, obj))
                        {
                            return(obj.LeaveType + " - " + obj.LeaveTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("LeaveCodeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ELeaveCode obj = new ELeaveCode();
                        obj.LeaveCodeID = int.Parse(fieldValue);
                        if (ELeaveCode.db.select(dbConn, obj))
                        {
                            return(obj.LeaveCode + " - " + obj.LeaveCodeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("LeavePlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ELeavePlan obj = new ELeavePlan();
                        obj.LeavePlanID = int.Parse(fieldValue);
                        if (ELeavePlan.db.select(dbConn, obj))
                        {
                            return(obj.LeavePlanCode + " - " + obj.LeavePlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("M", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("MPFPlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EMPFPlan obj = new EMPFPlan();
                        obj.MPFPlanID = int.Parse(fieldValue);
                        if (EMPFPlan.db.select(dbConn, obj))
                        {
                            return(obj.MPFPlanCode + " - " + obj.MPFPlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }

                    if (tmpfieldName.Equals("MPFSchemeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EMPFScheme obj = new EMPFScheme();
                        obj.MPFSchemeID = int.Parse(fieldValue);
                        if (EMPFScheme.db.select(dbConn, obj))
                        {
                            return(obj.MPFSchemeCode + " - " + obj.MPFSchemeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("MPFSchemeCessationReasonID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EMPFSchemeCessationReason obj = new EMPFSchemeCessationReason();
                        obj.MPFSchemeCessationReasonID = int.Parse(fieldValue);
                        if (EMPFSchemeCessationReason.db.select(dbConn, obj))
                        {
                            return(obj.MPFSchemeCessationReasonCode + " - " + obj.MPFSchemeCessationReasonDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("O", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("ORSOPlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EORSOPlan obj = new EORSOPlan();
                        obj.ORSOPlanID = int.Parse(fieldValue);
                        if (EORSOPlan.db.select(dbConn, obj))
                        {
                            return(obj.ORSOPlanCode + " - " + obj.ORSOPlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("P", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("PayGroupID", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.Equals("PayrollGroupID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPayrollGroup obj = new EPayrollGroup();
                        obj.PayGroupID = int.Parse(fieldValue);
                        if (EPayrollGroup.db.select(dbConn, obj))
                        {
                            return(obj.PayGroupCode + " - " + obj.PayGroupDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PayFormID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPayrollProrataFormula obj = new EPayrollProrataFormula();
                        obj.PayFormID = int.Parse(fieldValue);
                        if (EPayrollProrataFormula.db.select(dbConn, obj))
                        {
                            return(obj.PayFormCode + " - " + obj.PayFormDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PaymentCodeID", StringComparison.CurrentCultureIgnoreCase) || tmpfieldName.Equals("PayCodeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPaymentCode obj = new EPaymentCode();
                        obj.PaymentCodeID = int.Parse(fieldValue);
                        if (EPaymentCode.db.select(dbConn, obj))
                        {
                            return(obj.PaymentCode + " - " + obj.PaymentCodeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PaymentTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPaymentType obj = new EPaymentType();
                        obj.PaymentTypeID = int.Parse(fieldValue);
                        if (EPaymentType.db.select(dbConn, obj))
                        {
                            return(obj.PaymentTypeCode + " - " + obj.PaymentTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PayPeriodID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPayrollPeriod obj = new EPayrollPeriod();
                        obj.PayPeriodID = int.Parse(fieldValue);
                        if (EPayrollPeriod.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "PayrollGroupID", obj.PayGroupID.ToString()) + ": " + obj.PayPeriodFr.ToString("yyyy-MM-dd") + " to " + obj.PayPeriodTo.ToString("yyyy-MM-dd"));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PermitTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPermitType obj = new EPermitType();
                        obj.PermitTypeID = int.Parse(fieldValue);
                        if (EPermitType.db.select(dbConn, obj))
                        {
                            return(obj.PermitTypeCode + " - " + obj.PermitTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("PositionID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EPosition obj = new EPosition();
                        obj.PositionID = int.Parse(fieldValue);
                        if (EPosition.db.select(dbConn, obj))
                        {
                            return(obj.PositionCode + " - " + obj.PositionDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("Q", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("QualificationID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EQualification obj = new EQualification();
                        obj.QualificationID = int.Parse(fieldValue);
                        if (EQualification.db.select(dbConn, obj))
                        {
                            return(obj.QualificationCode + " - " + obj.QualificationDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("R", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("RankID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ERank obj = new ERank();
                        obj.RankID = int.Parse(fieldValue);
                        if (ERank.db.select(dbConn, obj))
                        {
                            return(obj.RankCode + " - " + obj.RankDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("ReminderTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EReminderType obj = new EReminderType();
                        obj.ReminderTypeID = int.Parse(fieldValue);
                        if (EReminderType.db.select(dbConn, obj))
                        {
                            return(obj.ReminderTypeCode + " - " + obj.ReminderTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("RosterClientID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ERosterClient obj = new ERosterClient();
                        obj.RosterClientID = int.Parse(fieldValue);
                        if (ERosterClient.db.select(dbConn, obj))
                        {
                            return(obj.RosterClientCode + " - " + obj.RosterClientName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("RosterClientSiteID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ERosterClientSite obj = new ERosterClientSite();
                        obj.RosterClientSiteID = int.Parse(fieldValue);
                        if (ERosterClientSite.db.select(dbConn, obj))
                        {
                            return(obj.RosterClientSiteCode);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("RosterCodeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ERosterCode obj = new ERosterCode();
                        obj.RosterCodeID = int.Parse(fieldValue);
                        if (ERosterCode.db.select(dbConn, obj))
                        {
                            return(obj.RosterCode + " - " + obj.RosterCodeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("S", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("SkillID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ESkill obj = new ESkill();
                        obj.SkillID = int.Parse(fieldValue);
                        if (ESkill.db.select(dbConn, obj))
                        {
                            return(obj.SkillCode + " - " + obj.SkillDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("SkillLevelID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ESkillLevel obj = new ESkillLevel();
                        obj.SkillLevelID = int.Parse(fieldValue);
                        if (ESkillLevel.db.select(dbConn, obj))
                        {
                            return(obj.SkillLevelCode + " - " + obj.SkillLevelDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("StaffTypeID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EStaffType obj = new EStaffType();
                        obj.StaffTypeID = int.Parse(fieldValue);
                        if (EStaffType.db.select(dbConn, obj))
                        {
                            return(obj.StaffTypeCode + " - " + obj.StaffTypeDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("T", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("TaxCompID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETaxCompany obj = new ETaxCompany();
                        obj.TaxCompID = int.Parse(fieldValue);
                        if (ETaxCompany.db.select(dbConn, obj))
                        {
                            return(obj.TaxCompEmployerName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("TaxEmpID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETaxEmp obj = new ETaxEmp();
                        obj.TaxEmpID = int.Parse(fieldValue);
                        if (ETaxEmp.db.select(dbConn, obj))
                        {
                            return(obj.TaxEmpSurname + ", " + obj.TaxEmpOtherName + ", " + GetValueFromID(dbConn, "TaxFormID", obj.TaxFormID.ToString()));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("TaxFormID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETaxForm obj = new ETaxForm();
                        obj.TaxFormID = int.Parse(fieldValue);
                        if (ETaxForm.db.select(dbConn, obj))
                        {
                            return("Tax Year :" + obj.TaxFormYear + ", Form: IR56" + obj.TaxFormType);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("TaxPayID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETaxPayment obj = new ETaxPayment();
                        obj.TaxPayID = int.Parse(fieldValue);
                        if (ETaxPayment.db.select(dbConn, obj))
                        {
                            return(obj.TaxPayCode + " - " + obj.TaxPayDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("TrainingCourseID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETrainingCourse obj = new ETrainingCourse();
                        obj.TrainingCourseID = int.Parse(fieldValue);
                        if (ETrainingCourse.db.select(dbConn, obj))
                        {
                            return(obj.TrainingCourseCode + " - " + obj.TrainingCourseName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("TrainingSeminarID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        ETrainingSeminar obj = new ETrainingSeminar();
                        obj.TrainingSeminarID = int.Parse(fieldValue);
                        if (ETrainingSeminar.db.select(dbConn, obj))
                        {
                            return(GetValueFromID(dbConn, "TrainingCourseID", obj.TrainingCourseID.ToString()) + ": " + obj.TrainingSeminarDateFrom.ToString("yyyy-MM-dd") + " to " + obj.TrainingSeminarDateTo.ToString("yyyy-MM-dd"));
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("U", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("UserID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EUser obj = new EUser();
                        obj.UserID = int.Parse(fieldValue);
                        if (EUser.db.select(dbConn, obj))
                        {
                            return(obj.LoginID + " - " + obj.UserName);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                    if (tmpfieldName.Equals("UserGroupID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EUserGroup obj = new EUserGroup();
                        obj.UserGroupID = int.Parse(fieldValue);
                        if (EUserGroup.db.select(dbConn, obj))
                        {
                            return(obj.UserGroupName + " - " + obj.UserGroupDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }
                else if (tmpfieldName.StartsWith("Y", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpfieldName.Equals("YebPlanID", StringComparison.CurrentCultureIgnoreCase))
                    {
                        EYEBPlan obj = new EYEBPlan();
                        obj.YEBPlanID = int.Parse(fieldValue);
                        if (EYEBPlan.db.select(dbConn, obj))
                        {
                            return(obj.YEBPlanCode + " - " + obj.YEBPlanDesc);
                        }
                        else
                        {
                            return(string.Empty);
                        }
                    }
                }

                if (tmpfieldName.EndsWith("ID") && !tmpfieldName.EndsWith("HKID") && !tmpfieldName.EndsWith("LoginID") && !tmpfieldName.EndsWith("CurrencyID") && !tmpfieldName.EndsWith("LeaveAppID") && !tmpfieldName.EndsWith("EmpPaymentID") && !tmpfieldName.EndsWith("PayBatchID") && !tmpfieldName.EndsWith("PayRecID") && !tmpfieldName.EndsWith("RosterTableID") && !tmpfieldName.EndsWith("SynID") && !tmpfieldName.EndsWith("CNDImportBatchID"))
                {
                    if (ESystemParameter.getParameter(dbConn, "DebugMode").Equals("Y"))
                    {
                        throw new Exception("ID field not define:" + fieldName);
                    }
                }
                return(string.Empty);
            }
            catch (Exception ex)
            {
                if (ESystemParameter.getParameter(dbConn, "DebugMode").Equals("Y"))
                {
                    throw ex;
                }
                else
                {
                    return(string.Empty);
                }
            }
        }
    // End 0000008, Ricky So, 2014-11-21

    protected void Save_Click(object sender, EventArgs e)
    {
        // speciailzed for TakYue only
        double m;

        try
        {
            m = Convert.ToDouble(RequestLeaveDays.Text);
        }
        catch
        {
            PageErrors invalideInputError = PageErrors.getErrors(db, Page);
            invalideInputError.clear();
            invalideInputError.addError("Invalid Days Taken value.");
            return;
        }

        if (!applicableDays.Value.Equals("") && !applicableDays.Value.Contains(m.ToString("0.00")))
        {
            PageErrors invalideInputError = PageErrors.getErrors(db, Page);
            invalideInputError.clear();
            invalideInputError.addError("Days Taken must be in this range : " + applicableDays.Value);
            return;
        }
        // end specializations

        ERequestLeaveApplication c = new ERequestLeaveApplication();

        if (!RequestLeaveAppUnit.SelectedValue.Equals("D"))
        {
            RequestLeaveAppDateTo.Value = RequestLeaveAppDateFrom.Value;
        }

        Hashtable values = new Hashtable();

        binding.toValues(values);

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

        errors.clear();


        db.validate(errors, values);

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


        db.parse(values, c);

        if (c.RequestLeaveAppUnit.Equals("D"))
        {
            // the following 2 fields are not bind to controls
            c.RequestLeaveAppDateFromAM = this.RequestLeaveAppDateFromAM.SelectedValue;
            c.RequestLeaveAppDateToAM   = this.RequestLeaveAppDateToAM.SelectedValue;
        }

        if (!c.RequestLeaveAppUnit.Equals("D"))
        {
            //c.RequestLeaveAppDateTo = c.RequestLeaveAppDateFrom;
            if (c.RequestLeaveAppTimeTo < c.RequestLeaveAppTimeFrom)
            {
                errors.addError("RequestLeaveAppTimeFrom", "Invald hours");
            }
        }
        else
        {
            if (c.RequestLeaveAppDateTo < c.RequestLeaveAppDateFrom)
            {
                errors.addError("RequestLeaveAppDateFrom", "Date To cannot be earlier than Date From");
            }
            // Start 0000201, Ricky So, 2015-05-29
            else if (c.RequestLeaveAppDateTo == c.RequestLeaveAppDateFrom)
            {
                if (c.RequestLeaveAppDateFromAM.CompareTo(c.RequestLeaveAppDateToAM) > 0)
                {
                    errors.addError("RequestLeaveAppDateFrom", "Date To cannot be earlier/equal than Date From");
                }
                else if (c.RequestLeaveAppDateFromAM.CompareTo(c.RequestLeaveAppDateToAM) == 0)
                {
                    // Convert to Half Day application if only AM/PM is applied
                    c.RequestLeaveAppUnit       = c.RequestLeaveAppDateFromAM.Substring(0, 1);
                    c.RequestLeaveAppDateFromAM = null;
                    c.RequestLeaveAppDateToAM   = null;
                    c.RequestLeaveDays          = 0.5;
                }
            }
            // End 0000201, Ricky So, 2015-05-29
            else
            {
                TimeSpan ts = c.RequestLeaveAppDateTo.Subtract(c.RequestLeaveAppDateFrom);
                if (c.RequestLeaveDays > ts.Days + 1)
                {
                    errors.addError("RequestLeaveDays", "Days taken is too large");
                }
            }
        }
        if (c.RequestLeaveAppDateFrom.Month != c.RequestLeaveAppDateTo.Month || c.RequestLeaveAppDateFrom.Year != c.RequestLeaveAppDateTo.Year)
        {
            errors.addError("Leave application must be within the same month");
        }

        if (HoursClaimPanel.Visible)
        {
            if (c.RequestLeaveAppHours <= 0)
            {
                errors.addError(string.Format(HROne.Translation.PageErrorMessage.ERROR_FIELD_REQUIRED, new string[] { lblLeaveAppHours.Text }));
            }
        }

        ELeaveCode curreintLeaveCode = new ELeaveCode();

        curreintLeaveCode.LeaveCodeID = c.RequestLeaveCodeID;
        if (ELeaveCode.db.select(dbConn, curreintLeaveCode))
        {
            ELeaveType leaveType = new ELeaveType();
            leaveType.LeaveTypeID = curreintLeaveCode.LeaveTypeID;
            if (ELeaveType.db.select(dbConn, leaveType))
            {
                // Start 0000008, Ricky So, 2014-11-21
                double m_hours = 0;
                double m_days  = 0;
                GetPendingLeaveBalance(c.EmpID, leaveType.LeaveTypeID, out m_hours, out m_days);
                // End 0000008, Ricky So, 2014-11-21

                if (leaveType.LeaveTypeIsESSIgnoreEntitlement)
                {
                    HROne.LeaveCalc.LeaveBalanceCalc    calc           = new HROne.LeaveCalc.LeaveBalanceCalc(dbConn, c.EmpID);
                    HROne.LeaveCalc.LeaveBalanceProcess balanceProcess = calc.getLeaveBalanceProcess(leaveType.LeaveTypeID);
                    // assume as at today (since entitlement is ignored, as-at-date doesn't make any difference
                    balanceProcess.LoadData(AppUtils.ServerDateTime().Date);
                    ELeaveBalance balance = balanceProcess.getLatestLeaveBalance();

                    // Start 0000008, Ricky So, 2014-11-21
                    //if (balance == null
                    //    || (balance.getBalance() - balance.LeaveBalanceEntitled < c.RequestLeaveDays && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day)
                    //    || (balance.getBalance() - balance.LeaveBalanceEntitled < c.RequestLeaveAppHours && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                    //    )
                    if (balance == null ||
                        (balance.getBalance() - m_days - balance.LeaveBalanceEntitled < c.RequestLeaveDays && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                        (balance.getBalance() - m_hours - balance.LeaveBalanceEntitled < c.RequestLeaveAppHours && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        )
                    // Start 0000008, Ricky So, 2014-11-21
                    {
                        errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                    }
                }
                else if (leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfApplicationDateFrom ||
                         leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfApplicationDateTo ||
                         leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfEndOfLeaveYear ||
                         leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfToday)
                {
                    HROne.LeaveCalc.LeaveBalanceCalc    calc           = new HROne.LeaveCalc.LeaveBalanceCalc(dbConn, c.EmpID);
                    HROne.LeaveCalc.LeaveBalanceProcess balanceProcess = calc.getLeaveBalanceProcess(leaveType.LeaveTypeID);

                    if (leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfToday)
                    {
                        balanceProcess.LoadData(AppUtils.ServerDateTime().Date);
                        ELeaveBalance balance = balanceProcess.getLatestLeaveBalance();
                        // Start 0000093, Ricky So, 2014-09-06
                        if (balance == null)
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        // Start 0000008, Ricky So, 2014-11-21
                        //else if ((balance.getBalance() - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                        //          (balance.getBalance() - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //         )
                        else if ((balance.getBalance() - m_days - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                                 (balance.getBalance() - m_hours - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                                 )
                        // End 0000008, Ricky So, 2014-11-21
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }

                        //if (balance == null
                        //    || (balance.getBalance() < c.RequestLeaveDays && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day)
                        //    || (balance.getBalance() < c.RequestLeaveAppHours && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //    )
                        //{
                        //    errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        //}
                        // End 0000093, Ricky So, 2014-09-06
                    }
                    if (errors.isEmpty() && leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfApplicationDateFrom)
                    {
                        balanceProcess.LoadData(c.RequestLeaveAppDateFrom);
                        ELeaveBalance balance = balanceProcess.getLatestLeaveBalance();
                        // Start 0000093, Ricky So, 2014-09-06
                        if (balance == null)
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        // Start 0000008, Ricky So, 2014-11-21
                        //else if ((balance.getBalance() - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                        //          (balance.getBalance() - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //         )
                        else if ((balance.getBalance() - m_days - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                                 (balance.getBalance() - m_hours - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                                 )
                        // End 0000008, Ricky So, 2014-11-21
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }

                        //if (balance == null
                        //    || (balance.getBalance() < c.RequestLeaveDays && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day)
                        //    || (balance.getBalance() < c.RequestLeaveAppHours && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //    )
                        //{
                        //    errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        //}
                        // End 0000093, Ricky So, 2014-09-06
                    }
                    if (errors.isEmpty() && leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfApplicationDateTo)
                    {
                        balanceProcess.LoadData(c.RequestLeaveAppDateTo);
                        ELeaveBalance balance = balanceProcess.getLatestLeaveBalance();
                        // Start 0000093, Ricky So, 2014-09-06
                        if (balance == null)
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        // Start 0000008, Ricky So, 2014-11-21
                        //else if ((balance.getBalance() - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                        //          (balance.getBalance() - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //         )
                        else if ((balance.getBalance() - m_days - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                                 (balance.getBalance() - m_hours - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                                 )
                        // End 0000008, Ricky So, 2014-11-21
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        //if (balance == null
                        //    || (balance.getBalance() < c.RequestLeaveDays && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day)
                        //    || (balance.getBalance() < c.RequestLeaveAppHours && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //    )
                        //{
                        //    errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        //}
                        // End 0000093, Ricky So, 2014-09-06
                    }
                    if (errors.isEmpty() && leaveType.LeaveTypeIsESSRestrictNegativeBalanceAsOfEndOfLeaveYear)
                    {
                        balanceProcess.LoadData(AppUtils.ServerDateTime().Date);
                        ELeaveBalance balance = balanceProcess.getLatestLeaveBalance();

                        if (!balance.LeaveBalanceEffectiveEndDate.Ticks.Equals(0))
                        {
                            balanceProcess.LoadData(balance.LeaveBalanceEffectiveEndDate);
                            balance = balanceProcess.getLatestLeaveBalance();
                        }
                        // Start 0000093, Ricky So, 2014-09-06
                        if (balance == null)
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        // Start 0000008, Ricky So, 2014-11-21
                        //else if ((balance.getBalance() - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                        //          (balance.getBalance() - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //         )
                        else if ((balance.getBalance() - m_days - c.RequestLeaveDays < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day) ||
                                 (balance.getBalance() - m_hours - c.RequestLeaveAppHours < -1 * leaveType.LeaveTypeIsESSAllowableAdvanceBalance && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                                 )
                        // End 0000008, Ricky So, 2014-11-21
                        {
                            errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        }
                        //if (balance == null
                        //    || (balance.getBalance() < c.RequestLeaveDays  && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Day)
                        //    || (balance.getBalance() < c.RequestLeaveAppHours  && balanceProcess.BalanceUnit == ELeaveBalance.LeaveBalanceUnit.Hour)
                        //    )
                        //{
                        //    errors.addError(ERROR_MESSAGE_BALANCE_NOT_ENOUGH);
                        //}
                        // End 0000093, Ricky So, 2014-09-06
                    }
                }
            }
        }

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

        ArrayList overlapLeaveAppList = new ArrayList();

        if (c.IsOverlapLeaveApplication(dbConn, out overlapLeaveAppList))
        {
            string strDailyOverlapMessage  = string.Empty;
            string strHourlyOverlapMessage = string.Empty;

            foreach (BaseObject overlapLeaveApp in overlapLeaveAppList)
            {
                if (overlapLeaveApp is ELeaveApplication)
                {
                    ELeaveApplication previousLeaveApp = (ELeaveApplication)overlapLeaveApp;
                    if (previousLeaveApp.LeaveAppUnit.Equals("D") || c.RequestLeaveAppUnit.Equals("D"))
                    {
                        if (string.IsNullOrEmpty(strDailyOverlapMessage))
                        {
                            strDailyOverlapMessage = "Leave dates cannot overlap with previous leave applications";
                        }
                        ELeaveCode leaveCode = new ELeaveCode();
                        leaveCode.LeaveCodeID = previousLeaveApp.LeaveCodeID;
                        if (ELeaveCode.db.select(dbConn, leaveCode))
                        {
                            // Start 0000201, Ricky So, 2015-06-02
                            //strDailyOverlapMessage += "\r\n- " + previousLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd") + (previousLeaveApp.LeaveAppDateFrom.Equals(previousLeaveApp.LeaveAppDateTo) ? "" : " To " + previousLeaveApp.LeaveAppDateTo.ToString("yyyy-MM-dd")) + " " + leaveCode.LeaveCodeDesc;
                            strDailyOverlapMessage += "\r\n- " + previousLeaveApp.LeaveAppDateFrom.ToString("yyyy-MM-dd");

                            if (previousLeaveApp.LeaveAppUnit == "A")
                            {
                                strDailyOverlapMessage += "AM";
                            }
                            else if (previousLeaveApp.LeaveAppUnit == "P")
                            {
                                strDailyOverlapMessage += "PM";
                            }
                            else if (previousLeaveApp.LeaveAppUnit == "D" && !string.IsNullOrEmpty(previousLeaveApp.LeaveAppDateFromAM))
                            {
                                strDailyOverlapMessage += previousLeaveApp.LeaveAppDateFromAM;
                            }
                            else
                            if (previousLeaveApp.LeaveAppDateFrom.Equals(previousLeaveApp.LeaveAppDateTo))
                            {
                                strDailyOverlapMessage += " To " + previousLeaveApp.LeaveAppDateTo.ToString("yyyy-MM-dd");
                            }

                            if (previousLeaveApp.LeaveAppUnit == "D" && !string.IsNullOrEmpty(previousLeaveApp.LeaveAppDateToAM))
                            {
                                strDailyOverlapMessage += previousLeaveApp.LeaveAppDateToAM;
                            }
                            else
                            {
                                strDailyOverlapMessage += "   " + leaveCode.LeaveCodeDesc;
                            }
                            // End 0000201, Ricky So, 2015-06-02
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(strHourlyOverlapMessage))
                        {
                            strHourlyOverlapMessage = "Leave time cannot overlap with previous leave applications";
                        }
                    }
                }
                else if (overlapLeaveApp is ERequestLeaveApplication)
                {
                    ERequestLeaveApplication previousRequestLeaveApp = (ERequestLeaveApplication)overlapLeaveApp;

                    if (previousRequestLeaveApp.RequestLeaveAppUnit.Equals("D") || c.RequestLeaveAppUnit.Equals("D"))
                    {
                        if (string.IsNullOrEmpty(strDailyOverlapMessage))
                        {
                            strDailyOverlapMessage = "Leave dates cannot overlap with previous leave applications";
                        }
                        ELeaveCode leaveCode = new ELeaveCode();
                        leaveCode.LeaveCodeID = previousRequestLeaveApp.RequestLeaveCodeID;
                        if (ELeaveCode.db.select(dbConn, leaveCode))
                        {
                            // Start 0000201, Ricky So, 2015-06-02
                            //strDailyOverlapMessage += "\r\n- " + previousRequestLeaveApp.RequestLeaveAppDateFrom.ToString("yyyy-MM-dd") + (previousRequestLeaveApp.RequestLeaveAppDateFrom.Equals(previousRequestLeaveApp.RequestLeaveAppDateTo) ? "" : " To " + previousRequestLeaveApp.RequestLeaveAppDateTo.ToString("yyyy-MM-dd")) + " " + leaveCode.LeaveCodeDesc;
                            strDailyOverlapMessage += "\r\n- " + previousRequestLeaveApp.RequestLeaveAppDateFrom.ToString("yyyy-MM-dd");

                            if (previousRequestLeaveApp.RequestLeaveAppUnit == "A")
                            {
                                strDailyOverlapMessage += "AM";
                            }
                            else if (previousRequestLeaveApp.RequestLeaveAppUnit == "P")
                            {
                                strDailyOverlapMessage += "PM";
                            }
                            else if (previousRequestLeaveApp.RequestLeaveAppUnit == "D" && !string.IsNullOrEmpty(previousRequestLeaveApp.RequestLeaveAppDateFromAM))
                            {
                                strDailyOverlapMessage += previousRequestLeaveApp.RequestLeaveAppDateFromAM;
                            }
                            else
                            if (previousRequestLeaveApp.RequestLeaveAppDateFrom.Equals(previousRequestLeaveApp.RequestLeaveAppDateTo))
                            {
                                strDailyOverlapMessage += " To " + previousRequestLeaveApp.RequestLeaveAppDateTo.ToString("yyyy-MM-dd");
                            }

                            if (previousRequestLeaveApp.RequestLeaveAppUnit == "D" && !string.IsNullOrEmpty(previousRequestLeaveApp.RequestLeaveAppDateToAM))
                            {
                                strDailyOverlapMessage += previousRequestLeaveApp.RequestLeaveAppDateToAM;
                            }
                            else
                            {
                                strDailyOverlapMessage += "   " + leaveCode.LeaveCodeDesc;
                            }
                            // End 0000201, Ricky So, 2015-06-02
                        }
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(strHourlyOverlapMessage))
                        {
                            strHourlyOverlapMessage = "Leave time cannot overlap with previous leave applications";
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(strDailyOverlapMessage))
            {
                errors.addError(strDailyOverlapMessage);
            }
            if (!string.IsNullOrEmpty(strHourlyOverlapMessage))
            {
                errors.addError(strHourlyOverlapMessage);
            }
        }

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

        try
        {
            ESSAuthorizationProcess authorization = new ESSAuthorizationProcess(dbConn);
            authorization.SubmitLeaveApplication(c);
        }
        catch (Exception ex)
        {
            errors.addError(ex.Message);
        }

        if (!errors.isEmpty())
        {
            return;
        }
        if (c.RequestLeaveAppHasMedicalCertificate)
        {
            string message = ESystemParameter.getParameter(dbConn, ESystemParameter.PARAM_CODE_ESS_LEAVE_MEDICIAL_CERT_ALERT);
            if (!string.IsNullOrEmpty(message))
            {
                message = message.Replace("\r", "\\r").Replace("\n", "\\n");
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "leaveAppAlert", "alert(\"" + message + "\"); window.location=\"./ESS_EmpRequestStatus.aspx\";", true);
                //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "errorMessage", "popupDialog(\"testing\");", true);

                return;
            }
        }
        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/ESS_EmpRequestStatus.aspx");
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!WebUtils.CheckAccess(Response, Session))
        {
            return;
        }
        binding = new Binding(dbConn, db);
        binding.add(EmpID);

        DBFilter LeaveTypeFilter = new DBFilter();

        LeaveTypeFilter.add(new Match("lt.LeaveTypeIsDisabled", false));
        DBFilter leaveCodeFilter = new DBFilter();

        leaveCodeFilter.add(new Match("LeaveCodeHideInESS", false));
        leaveCodeFilter.add(new IN("LeaveTypeID", "SELECT lt.LeaveTypeID FROM " + ELeaveType.db.dbclass.tableName + " lt ", LeaveTypeFilter));

        binding.add(new DropDownVLBinder(db, RequestLeaveCodeID, ELeaveCode.VLLeaveCode, leaveCodeFilter));

        // Start 000053, Ricky So, 2014-06-26
        //binding.add(new DropDownVLBinder(db, RequestLeaveAppUnit, Values.VLLeaveUnit).setNotSelected(null));
        int m_leaveCodeID = -1;

        if (int.TryParse(RequestLeaveCodeID.SelectedValue, out m_leaveCodeID))
        {
            ELeaveCode m_leaveCode = ELeaveCode.GetObject(dbConn, m_leaveCodeID);

            if (m_leaveCode != null && m_leaveCode.LeaveAppUnit.Length > 0)
            {
                string m_keyList   = "";
                string m_valueList = "";
                foreach (string m_unit in m_leaveCode.LeaveAppUnit.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries))
                {
                    m_keyList   += ((m_keyList != "") ? "," : "") + m_unit.Substring(0, 1);
                    m_valueList += ((m_valueList != "") ? "," : "") + m_unit;
                }
                VLLeaveUnit = new AppUtils.NewWFTextList(m_keyList.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries),
                                                         m_valueList.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));

                binding.add(new DropDownVLBinder(db, RequestLeaveAppUnit, VLLeaveUnit).setNotSelected(null));
            }
        }
        else
        {
            binding.add(new DropDownVLBinder(db, RequestLeaveAppUnit, VLLeaveUnit).setNotSelected(null));
        }
        // End 0000053, Ricky So, 2014-06-26



        binding.add(new TextBoxBinder(db, RequestLeaveAppDateFrom.TextBox, RequestLeaveAppDateFrom.ID));
        binding.add(new TextBoxBinder(db, RequestLeaveAppDateTo.TextBox, RequestLeaveAppDateTo.ID));
        binding.add(RequestLeaveAppTimeFrom);
        binding.add(RequestLeaveAppTimeTo);
        binding.add(RequestLeaveDays);
        binding.add(RequestLeaveAppHours);
        binding.add(RequestLeaveAppRemark);
        binding.add(new CheckBoxBinder(db, RequestLeaveAppHasMedicalCertificate));
        binding.init(Request, Session);

        HROne.Common.WebUtility.WebControlsLocalization(Session, this.Controls);

        RequestLeaveCodeID.Items.Remove(RequestLeaveCodeID.Items[0]);

        EESSUser user = WebUtils.GetCurUser(Session);

        if (user != null)
        {
            CurEmpID    = user.EmpID;
            EmpID.Value = CurEmpID.ToString();
        }

        if (RequestLeaveAppDateFromAM.Items.Count <= 0)
        {
            RequestLeaveAppDateFromAM.Items.Add(new ListItem("AM", "AM"));
            RequestLeaveAppDateFromAM.Items.Add(new ListItem("PM", "PM"));

            RequestLeaveAppDateFromAM.SelectedIndex = 0;
        }
        if (RequestLeaveAppDateToAM.Items.Count <= 0)
        {
            RequestLeaveAppDateToAM.Items.Add(new ListItem("AM", "AM"));
            RequestLeaveAppDateToAM.Items.Add(new ListItem("PM", "PM"));

            RequestLeaveAppDateToAM.SelectedIndex = 0;
        }
    }
    private void GenerateRosterTableData(ArrayList EmpInfoList, int year, int month)
    {
        DateTime dateStart      = new DateTime(year, month, 1);
        DateTime dateEnd        = new DateTime(year, month, DateTime.DaysInMonth(year, month));
        string   exportFileName = System.IO.Path.GetTempFileName();

        System.IO.File.Delete(exportFileName);
        exportFileName += ".xls";

        const string FIELD_EMP_NO = "Emp. No";

        const int COLUMN_HEADER_ROW = 2;


        NPOI.HSSF.UserModel.HSSFWorkbook workBook  = new NPOI.HSSF.UserModel.HSSFWorkbook();
        NPOI.HSSF.UserModel.HSSFSheet    workSheet = (NPOI.HSSF.UserModel.HSSFSheet)workBook.CreateSheet("RosterTable");

        NPOI.HSSF.UserModel.HSSFCellStyle upperLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        upperLineStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle bottomLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        bottomLineStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle leftLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        leftLineStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle rightLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        rightLineStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle upperLeftLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        upperLeftLineStyle.BorderTop  = NPOI.SS.UserModel.BorderStyle.THIN;
        upperLeftLineStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle bottomLeftLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        bottomLeftLineStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
        bottomLeftLineStyle.BorderLeft   = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle upperRightLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        upperRightLineStyle.BorderTop   = NPOI.SS.UserModel.BorderStyle.THIN;
        upperRightLineStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.THIN;

        NPOI.HSSF.UserModel.HSSFCellStyle bottomRightLineStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        bottomRightLineStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.THIN;
        bottomRightLineStyle.BorderRight  = NPOI.SS.UserModel.BorderStyle.THIN;

        workSheet.CreateRow(0).CreateCell(0).SetCellValue("Year");
        workSheet.GetRow(0).CreateCell(1).SetCellValue(year);
        workSheet.CreateRow(1).CreateCell(0).SetCellValue("Month");
        workSheet.GetRow(1).CreateCell(1).SetCellValue(month);

        NPOI.HSSF.UserModel.HSSFRow headerRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.CreateRow(COLUMN_HEADER_ROW);
        DBFilter hLevelFilter = new DBFilter();

        hLevelFilter.add("HLevelSeqNo", true);

        int       HIERARCHYLEVEL_COLUMN = 0;
        ArrayList hLevelList            = EHierarchyLevel.db.select(dbConn, hLevelFilter);

        for (int levelIndex = 0; levelIndex < hLevelList.Count; levelIndex++)
        {
            EHierarchyLevel hLevel = (EHierarchyLevel)hLevelList[levelIndex];
            headerRow.CreateCell(HIERARCHYLEVEL_COLUMN + levelIndex).SetCellValue(hLevel.HLevelDesc);
        }

        int POSITION_COLUMN = headerRow.LastCellNum;

        headerRow.CreateCell(POSITION_COLUMN).SetCellValue(HROne.Common.WebUtility.GetLocalizedString("Position"));
        int EMPNO_COLUMN = headerRow.LastCellNum;

        headerRow.CreateCell(EMPNO_COLUMN).SetCellValue(FIELD_EMP_NO);
        headerRow.CreateCell(EMPNO_COLUMN + 1).SetCellValue(HROne.Common.WebUtility.GetLocalizedString("Name"));
        headerRow.CreateCell(EMPNO_COLUMN + 2).SetCellValue(HROne.Common.WebUtility.GetLocalizedString("Alias"));
        headerRow.CreateCell(EMPNO_COLUMN + 3).SetCellValue(HROne.Common.WebUtility.GetLocalizedString("Chinese Name"));

        NPOI.HSSF.UserModel.HSSFCellStyle sundayStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
        NPOI.HSSF.UserModel.HSSFFont      sundayFont  = (NPOI.HSSF.UserModel.HSSFFont)workBook.CreateFont();
        sundayFont.Color = NPOI.HSSF.Util.HSSFColor.RED.index;
        sundayStyle.SetFont(sundayFont);

        Hashtable styleList = new Hashtable();

        ArrayList availableRosterClientList     = new ArrayList();
        ArrayList availableRosterClientSiteList = new ArrayList();

        #region Create Column Header
        int ROSTER_DETAIL_COLUMN = headerRow.LastCellNum;

        for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
        {
            //workSheet.Cells.Add(HEADER_ROW, ROSTAER_DETAIL_COLUMN + i - 1,i);
            NPOI.HSSF.UserModel.HSSFCell headerCell = (NPOI.HSSF.UserModel.HSSFCell)headerRow.CreateCell(ROSTER_DETAIL_COLUMN + i - 1);
            headerCell.SetCellValue(i);
            if (new DateTime(year, month, i).DayOfWeek == DayOfWeek.Sunday)
            {
                headerCell.CellStyle = sundayStyle;
            }
        }
        #endregion
        #region Create Employee Roster Detail
        int recordCount = 0;
        foreach (EEmpPersonalInfo empInfo in EmpInfoList)
        {
            if (EEmpPersonalInfo.db.select(dbConn, empInfo))
            {
                recordCount++;

                //workSheet.Cells.Add(HEADER_ROW + recordCount, 1,empInfo.EmpNo);
                //workSheet.Cells.Add(HEADER_ROW + recordCount, 2,empInfo.EmpEngFullName);

                NPOI.HSSF.UserModel.HSSFRow detailRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.CreateRow(COLUMN_HEADER_ROW + recordCount);
                EEmpPositionInfo            empPos    = AppUtils.GetLastPositionInfo(dbConn, dateEnd, empInfo.EmpID);
                if (empPos != null)
                {
                    for (int levelIndex = 0; levelIndex < hLevelList.Count; levelIndex++)
                    {
                        EHierarchyLevel hLevel             = (EHierarchyLevel)hLevelList[levelIndex];
                        DBFilter        empHierarchyFilter = new DBFilter();
                        empHierarchyFilter.add(new Match("EmpPosID", empPos.EmpPosID));
                        empHierarchyFilter.add(new Match("HLevelID", hLevel.HLevelID));
                        ArrayList empHierarchyList = EEmpHierarchy.db.select(dbConn, empHierarchyFilter);
                        if (empHierarchyList.Count > 0)
                        {
                            EEmpHierarchy     empHierarchy = (EEmpHierarchy)empHierarchyList[0];
                            EHierarchyElement hElement     = new EHierarchyElement();
                            hElement.HElementID = empHierarchy.HElementID;
                            if (EHierarchyElement.db.select(dbConn, hElement))
                            {
                                detailRow.CreateCell(HIERARCHYLEVEL_COLUMN + levelIndex).SetCellValue(hElement.HElementDesc);
                            }
                        }
                    }

                    EPosition position = new EPosition();
                    position.PositionID = empPos.PositionID;
                    if (EPosition.db.select(dbConn, position))
                    {
                        detailRow.CreateCell(POSITION_COLUMN).SetCellValue(position.PositionDesc);
                    }
                }
                detailRow.CreateCell(EMPNO_COLUMN).SetCellValue(empInfo.EmpNo);
                detailRow.CreateCell(EMPNO_COLUMN + 1).SetCellValue(empInfo.EmpEngFullName);
                detailRow.CreateCell(EMPNO_COLUMN + 2).SetCellValue(empInfo.EmpAlias);
                detailRow.CreateCell(EMPNO_COLUMN + 3).SetCellValue(empInfo.EmpChiFullName);



                DBFilter rosterTableFilter = new DBFilter();
                rosterTableFilter.add(new Match("EmpID", empInfo.EmpID));
                rosterTableFilter.add(new Match("RosterTableDate", ">=", dateStart));
                rosterTableFilter.add(new Match("RosterTableDate", "<=", dateEnd));
                ArrayList rosterTableList = ERosterTable.db.select(dbConn, rosterTableFilter);
                foreach (ERosterTable rosterTable in rosterTableList)
                {
                    ERosterCode rosterCode = new ERosterCode();
                    rosterCode.RosterCodeID = rosterTable.RosterCodeID;
                    if (ERosterCode.db.select(dbConn, rosterCode))
                    {
                        string value = string.Empty;
                        //if (workSheet.Rows[(ushort)(HEADER_ROW + recordCount)].CellExists ((ushort)(ROSTAER_DETAIL_COLUMN + rosterTable.RosterTableDate.Day - 1)) )
                        //    value = workSheet.Rows[(ushort)(HEADER_ROW+ recordCount)].CellAtCol( (ushort)(ROSTAER_DETAIL_COLUMN + rosterTable.RosterTableDate.Day - 1)).Value.ToString();
                        //if (string.IsNullOrEmpty(value))
                        //    workSheet.Cells.Add(HEADER_ROW + recordCount, ROSTAER_DETAIL_COLUMN + rosterTable.RosterTableDate.Day - 1,rosterCode.RosterCode);
                        //else
                        //    workSheet.Cells.Add(HEADER_ROW + recordCount, ROSTAER_DETAIL_COLUMN + rosterTable.RosterTableDate.Day - 1,value + "|" + rosterCode.RosterCode);

                        int cellColIndex = ROSTER_DETAIL_COLUMN + rosterTable.RosterTableDate.Day - 1;
                        NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)detailRow.GetCell(cellColIndex);
                        if (rosterCell == null)
                        {
                            rosterCell = (NPOI.HSSF.UserModel.HSSFCell)detailRow.CreateCell(cellColIndex);
                        }
                        else
                        {
                            value = rosterCell.StringCellValue;
                        }
                        string rosterCodeValue = rosterCode.RosterCode;
                        if (!rosterTable.RosterTableOverrideInTime.Ticks.Equals(0) || !rosterTable.RosterTableOverrideOutTime.Ticks.Equals(0))
                        {
                            DateTime inTime  = rosterCode.RosterCodeInTime;
                            DateTime outTime = rosterCode.RosterCodeOutTime;
                            if (!rosterTable.RosterTableOverrideInTime.Ticks.Equals(0))
                            {
                                inTime = rosterTable.RosterTableOverrideInTime;
                            }
                            if (!rosterTable.RosterTableOverrideOutTime.Ticks.Equals(0))
                            {
                                outTime = rosterTable.RosterTableOverrideOutTime;
                            }
                            rosterCodeValue += "(" + inTime.ToString("HHmm") + "~" + outTime.ToString("HHmm") + ")";
                        }
                        if (string.IsNullOrEmpty(value))
                        {
                            rosterCell.SetCellValue(rosterCodeValue);
                            //if (!string.IsNullOrEmpty(rosterCode.RosterCodeColorCode))
                            //{
                            //    //System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(rosterCode.RosterCodeColorCode);
                            //    //System.Drawing.Color fontcolor = WebUtils.ComputeTextColor(color);
                            //    //rosterCell.CellStyle.FillForegroundColor = workBook.GetCustomPalette().FindSimilarColor(color.R, color.G, color.B).GetIndex();
                            //    //rosterCell.CellStyle.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
                            //    //rosterCell.CellStyle.FillBackgroundColor = workBook.GetCustomPalette().FindSimilarColor(fontcolor.R, fontcolor.G, fontcolor.B).GetIndex();
                            //    string styleCode = "RosterCode" + "_" + rosterCode.RosterCode;
                            //    if (styleList.Contains(styleCode))
                            //        rosterCell.CellStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)styleList[styleCode];
                            //    else
                            //    {
                            //        NPOI.HSSF.UserModel.HSSFCellStyle rosterCodeStyle = (NPOI.HSSF.UserModel.HSSFCellStyle)workBook.CreateCellStyle();
                            //        System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(rosterCode.RosterCodeColorCode);
                            //        System.Drawing.Color fontcolor = WebUtils.ComputeTextColor(color);
                            //        rosterCodeStyle.FillForegroundColor = workBook.GetCustomPalette().FindSimilarColor(color.R, color.G, color.B).GetIndex();
                            //        rosterCodeStyle.FillPattern = NPOI.SS.UserModel.FillPatternType.SOLID_FOREGROUND;
                            //        rosterCodeStyle.FillBackgroundColor = workBook.GetCustomPalette().FindSimilarColor(fontcolor.R, fontcolor.G, fontcolor.B).GetIndex();
                            //        styleList.Add(styleCode, rosterCodeStyle);
                            //        rosterCell.CellStyle = rosterCodeStyle;
                            //    }
                            //}
                        }
                        else
                        {
                            rosterCell.SetCellValue(value + "|" + rosterCodeValue);
                            //rosterCell.CellStyle=workBook.GetCellStyleAt(0);
                        }
                    }
                }
                for (DateTime dateIndex = dateStart; dateIndex <= dateEnd; dateIndex = dateIndex.AddDays(1))
                {
                    string value = string.Empty;
                    //if (workSheet.Rows[(ushort)(HEADER_ROW + recordCount)].CellExists((ushort)(ROSTAER_DETAIL_COLUMN + dateIndex.Day - 1)) )
                    //    value = workSheet.Rows[(ushort)(HEADER_ROW + recordCount)].CellAtCol((ushort)(ROSTAER_DETAIL_COLUMN + dateIndex.Day - 1)).Value.ToString();
                    int cellColIndex = ROSTER_DETAIL_COLUMN + dateIndex.Day - 1;
                    NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)detailRow.GetCell(cellColIndex);
                    if (rosterCell == null)
                    {
                        rosterCell = (NPOI.HSSF.UserModel.HSSFCell)detailRow.CreateCell(cellColIndex);
                    }
                    else
                    {
                        value = rosterCell.StringCellValue;
                    }

                    if (string.IsNullOrEmpty(value))
                    {
                        EEmpPositionInfo empPosInfo = AppUtils.GetLastPositionInfo(dbConn, dateIndex, empInfo.EmpID);
                        if (empPosInfo != null)
                        {
                            if ((empPosInfo.EmpPosEffTo.Ticks.Equals(0) || dateIndex <= empPosInfo.EmpPosEffTo))
                            {
                                EWorkHourPattern workPattern = new EWorkHourPattern();
                                workPattern.WorkHourPatternID = empPosInfo.WorkHourPatternID;
                                if (EWorkHourPattern.db.select(dbConn, workPattern))
                                {
                                    ERosterCode rosterCode = new ERosterCode();
                                    rosterCode.RosterCodeID = workPattern.GetDefaultRosterCodeID(dbConn, dateIndex);
                                    if (ERosterCode.db.select(dbConn, rosterCode))
                                    {
                                        //workSheet.Cells.Add(HEADER_ROW + recordCount, ROSTAER_DETAIL_COLUMN + dateIndex.Day - 1, rosterCode.RosterCode);
                                        rosterCell.SetCellValue(rosterCode.RosterCode);
                                    }
                                }

                                DBFilter empRosterTableGroupListFilter = new DBFilter();
                                empRosterTableGroupListFilter.add(new Match("EmpID", empInfo.EmpID));
                                empRosterTableGroupListFilter.add(new Match("empRosterTableGroupEffFr", "<=", dateIndex));
                                OR orEmpPosEffToTerms = new OR();
                                orEmpPosEffToTerms.add(new Match("empRosterTableGroupEffTo", ">=", dateIndex));
                                orEmpPosEffToTerms.add(new NullTerm("empRosterTableGroupEffTo"));
                                empRosterTableGroupListFilter.add(orEmpPosEffToTerms);
                                ArrayList empRosterTableGroupList = EEmpRosterTableGroup.db.select(dbConn, empRosterTableGroupListFilter);

                                foreach (EEmpRosterTableGroup empRosterTableGroup in empRosterTableGroupList)
                                {
                                    ERosterTableGroup rosterTableGroup = new ERosterTableGroup();
                                    rosterTableGroup.RosterTableGroupID = empRosterTableGroup.RosterTableGroupID;
                                    if (ERosterTableGroup.db.select(dbConn, rosterTableGroup))
                                    {
                                        if (rosterTableGroup.RosterClientSiteID > 0)
                                        {
                                            if (!availableRosterClientSiteList.Contains(rosterTableGroup.RosterClientSiteID))
                                            {
                                                availableRosterClientSiteList.Add(rosterTableGroup.RosterClientSiteID);
                                            }
                                        }
                                        else if (rosterTableGroup.RosterClientID > 0)
                                        {
                                            if (!availableRosterClientList.Contains(rosterTableGroup.RosterClientID))
                                            {
                                                availableRosterClientList.Add(rosterTableGroup.RosterClientID);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                DBFilter leaveAppFilter = new DBFilter();
                leaveAppFilter.add(new Match("EmpID", empInfo.EmpID));
                leaveAppFilter.add(new Match("LeaveAppDateTo", ">=", dateStart));
                leaveAppFilter.add(new Match("LeaveAppDateFrom", "<=", dateEnd));
                ArrayList leaveAppList = ELeaveApplication.db.select(dbConn, leaveAppFilter);
                foreach (ELeaveApplication leaveApp in leaveAppList)
                {
                    ELeaveCode leaveCode = new ELeaveCode();
                    leaveCode.LeaveCodeID = leaveApp.LeaveCodeID;
                    if (ELeaveCode.db.select(dbConn, leaveCode))
                    {
                        //if (leaveCode.LeaveCodeColorCode.Length == 6)
                        //{
                        //    try
                        //    {
                        //        int red = System.Int32.Parse(leaveCode.LeaveCodeColorCode.Substring(0, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
                        //        int green = System.Int32.Parse(leaveCode.LeaveCodeColorCode.Substring(2, 2), System.Globalization.NumberStyles.AllowHexSpecifier);
                        //        int blue = System.Int32.Parse(leaveCode.LeaveCodeColorCode.Substring(4, 2), System.Globalization.NumberStyles.AllowHexSpecifier);

                        //        string Color = System.Drawing.Color.FromArgb(red, green, blue).ToKnownColor().ToString();

                        //        for (DateTime dateIndex = leaveApp.LeaveAppDateFrom; dateIndex <= leaveApp.LeaveAppDateTo; dateIndex = dateIndex.AddDays(1))
                        //        {
                        //            org.in2bits.MyXls.Cell cell = workSheet.Rows[(ushort)(HEADER_ROW + recordCount)].CellAtCol((ushort)(ROSTAER_DETAIL_COLUMN + dateIndex.Day - 1));
                        //            //cell.Pattern = 1;
                        //            //cell.PatternColor = org.in2bits.MyXls.Colors.Yellow;

                        //        }
                        //    }
                        //    catch
                        //    {
                        //    }

                        //}
                    }
                }
            }
        }
        #endregion
        #region Create Roster Code Liet
        OR orRosterCodeTerm = new OR();
        foreach (int rosterClientID in availableRosterClientList)
        {
            AND andRosterCodeTerms = new AND();
            orRosterCodeTerm.add(new Match("RosterClientID", rosterClientID));
        }
        foreach (int rosterClientSiteID in availableRosterClientSiteList)
        {
            AND andRosterCodeTerms = new AND();
            orRosterCodeTerm.add(new Match("RosterClientSiteID", rosterClientSiteID));
        }
        orRosterCodeTerm.add(new Match("RosterClientID", 0));
        DBFilter rosterCodeListFilter = new DBFilter();
        rosterCodeListFilter.add(orRosterCodeTerm);
        rosterCodeListFilter.add("RosterCode", true);
        ArrayList rosterCodeList = ERosterCode.db.select(dbConn, rosterCodeListFilter);

        int ROSTER_CODE_START_ROW = COLUMN_HEADER_ROW + recordCount + 5;
        int rosterCodeCount       = 0;
        int maxColumnCount        = 3;
        int columnCellWidth       = 9;
        int maxRowCount           = (int)(rosterCodeList.Count / maxColumnCount) + (rosterCodeList.Count % maxColumnCount == 0 ? 0 : 1);
        foreach (ERosterCode rosterCode in rosterCodeList)
        {
            int currentRowNum    = rosterCodeCount % maxRowCount;
            int currentColumnNum = (rosterCodeCount / maxRowCount) * columnCellWidth;

            rosterCodeCount++;

            NPOI.HSSF.UserModel.HSSFRow rosterCodeRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.GetRow(ROSTER_CODE_START_ROW + currentRowNum);
            if (rosterCodeRow == null)
            {
                rosterCodeRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.CreateRow(ROSTER_CODE_START_ROW + currentRowNum);
            }

            NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(ROSTER_DETAIL_COLUMN + currentColumnNum);
            rosterCell.SetCellValue(rosterCode.RosterCode);

            rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(ROSTER_DETAIL_COLUMN + currentColumnNum + 1);
            rosterCell.SetCellValue(rosterCode.RosterCodeDesc);

            if (rosterCodeCount.Equals(1))
            {
                rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(ROSTER_DETAIL_COLUMN - 1);
                rosterCell.SetCellValue("Code:");
            }
        }

        for (int rowIdx = ROSTER_CODE_START_ROW - 1; rowIdx < ROSTER_CODE_START_ROW + maxRowCount + 1; rowIdx++)
        {
            NPOI.HSSF.UserModel.HSSFRow rosterCodeRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.GetRow(rowIdx);
            if (rosterCodeRow == null)
            {
                rosterCodeRow = (NPOI.HSSF.UserModel.HSSFRow)workSheet.CreateRow(rowIdx);
            }

            if (rowIdx == ROSTER_CODE_START_ROW - 1)
            {
                for (int colIdx = ROSTER_DETAIL_COLUMN - 1; colIdx < ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth; colIdx++)
                {
                    NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.GetCell(colIdx);
                    if (rosterCell == null)
                    {
                        rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(colIdx);
                    }
                    if (colIdx == ROSTER_DETAIL_COLUMN - 1)
                    {
                        rosterCell.CellStyle = upperLeftLineStyle;
                    }
                    else if (colIdx == ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth - 1)
                    {
                        rosterCell.CellStyle = upperRightLineStyle;
                    }
                    else
                    {
                        rosterCell.CellStyle = upperLineStyle;
                    }
                }
            }
            else if (rowIdx == ROSTER_CODE_START_ROW + maxRowCount)
            {
                for (int colIdx = ROSTER_DETAIL_COLUMN - 1; colIdx < ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth; colIdx++)
                {
                    NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.GetCell(colIdx);
                    if (rosterCell == null)
                    {
                        rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(colIdx);
                    }
                    if (colIdx == ROSTER_DETAIL_COLUMN - 1)
                    {
                        rosterCell.CellStyle = bottomLeftLineStyle;
                    }
                    else if (colIdx == ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth - 1)
                    {
                        rosterCell.CellStyle = bottomRightLineStyle;
                    }
                    else
                    {
                        rosterCell.CellStyle = bottomLineStyle;
                    }
                }
            }
            else
            {
                for (int colIdx = ROSTER_DETAIL_COLUMN - 1; colIdx < ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth; colIdx++)
                {
                    NPOI.HSSF.UserModel.HSSFCell rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.GetCell(colIdx);
                    if (rosterCell == null)
                    {
                        rosterCell = (NPOI.HSSF.UserModel.HSSFCell)rosterCodeRow.CreateCell(colIdx);
                    }
                    if (colIdx == ROSTER_DETAIL_COLUMN - 1)
                    {
                        rosterCell.CellStyle = leftLineStyle;
                    }
                    else if (colIdx == ROSTER_DETAIL_COLUMN + maxColumnCount * columnCellWidth - 1)
                    {
                        rosterCell.CellStyle = rightLineStyle;
                    }
                    //else
                    //    rosterCell.CellStyle = bottomLineStyle;
                }
            }
        }
        #endregion

        //doc.FileName = exportFileName;
        //doc.Save();
        System.IO.FileStream file = new System.IO.FileStream(exportFileName, System.IO.FileMode.Create);
        workBook.Write(file);
        file.Close();

        WebUtils.TransmitFile(Response, exportFileName, "RosterTable_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
        Response.End();
    }