Пример #1
0
    protected void Delete_Click(object sender, EventArgs e)
    {
        ArrayList list = new ArrayList();

        foreach (RepeaterItem i in Repeater.Items)
        {
            CheckBox cb = (CheckBox)i.FindControl("ItemSelect");
            if (cb.Checked)
            {
                EEmpMPFPlan o = new EEmpMPFPlan();
                WebFormUtils.GetKeys(sdb, o, cb);
                list.Add(o);
            }
        }
        if (list.Count > 0)
        {
            WebUtils.StartFunction(Session, FUNCTION_CODE, CurID);
            foreach (BaseObject o in list)
            {
                if (sdb.select(dbConn, o))
                {
                    sdb.delete(dbConn, o);
                }
            }
            WebUtils.EndFunction(dbConn);
        }
        loadData(info, sdb, Repeater);
    }
Пример #2
0
    protected void Delete_Click(object sender, EventArgs e)
    {
        EEmpMPFPlan c = new EEmpMPFPlan();

        c.EmpMPFID = CurID;
        db.select(dbConn, c);
        WebUtils.StartFunction(Session, FUNCTION_CODE, c.EmpID);
        db.delete(dbConn, c);
        WebUtils.EndFunction(dbConn);
        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "EmpTab_Pension_View.aspx?EmpID=" + EmpID.Value);
    }
Пример #3
0
    protected bool loadObject()
    {
        obj = new EEmpMPFPlan();
        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);
        binding.toControl(values);


        return(true);
    }
Пример #4
0
    protected void Page_PreRender(object sender, EventArgs e)
    {
        BOCIAVCPanel.Visible = false;

        DBFilter empMPFPlanFilter = new DBFilter();

        empMPFPlanFilter.add(new Match("EmpID", CurEmpID));
        empMPFPlanFilter.add("EmpMPFEffFr", false);

        DateTime dateFrom = new DateTime();

        if (DateTime.TryParse(EmpAVCEffFr.Value, out dateFrom))
        {
            empMPFPlanFilter.add(new Match("EmpMPFEffFr", "<=", dateFrom));
        }

        ArrayList empMPFPlanList = EEmpMPFPlan.db.select(dbConn, empMPFPlanFilter);


        EMPFPlan mpfPlan = new EMPFPlan();

        if (empMPFPlanList.Count > 0)
        {
            EEmpMPFPlan empMPFPlan = (EEmpMPFPlan)empMPFPlanList[0];
            mpfPlan.MPFPlanID = empMPFPlan.MPFPlanID;
        }
        else if (!DefaultMPFPlanID.SelectedValue.Equals(string.Empty))
        {
            mpfPlan.MPFPlanID = int.Parse(DefaultMPFPlanID.SelectedValue);
        }
        if (EMPFPlan.db.select(dbConn, mpfPlan))
        {
            EMPFScheme mpfScheme = new EMPFScheme();
            mpfScheme.MPFSchemeID = mpfPlan.MPFSchemeID;
            if (EMPFScheme.db.select(dbConn, mpfScheme))
            {
                if (mpfScheme.MPFSchemeTrusteeCode.Equals("BOCI"))
                {
                    BOCIAVCPanel.Visible = true;
                }

                else
                {
                    BOCIAVCPanel.Visible = false;
                }
            }
        }
    }
Пример #5
0
        public void ImportToDatabase(int UploadEmpID)
        {
            DBFilter sessionFilter = new DBFilter();

            sessionFilter.add(new Match("SessionID", m_SessionID));
            if (UploadEmpID > 0)
            {
                sessionFilter.add(new Match("UploadEmpID", UploadEmpID));
            }
            ArrayList uploadEmpMPFList = tempDB.select(dbConn, sessionFilter);

            foreach (EUploadEmpMPFPlan obj in uploadEmpMPFList)
            {
                EEmpMPFPlan empMPFPlan = new EEmpMPFPlan();

                if (obj.ImportActionStatus != ImportDBObject.ImportActionEnum.INSERT)
                {
                    empMPFPlan.EmpMPFID = obj.EmpMPFID;
                    uploadDB.select(dbConn, empMPFPlan);
                }

                obj.ExportToObject(empMPFPlan);

                if (obj.ImportActionStatus == ImportDBObject.ImportActionEnum.INSERT)
                {
                    empMPFPlan.EmpID = ParseTemp.GetEmpIDFromUploadEmpID(dbConn, obj.UploadEmpID);
                    DBFilter    emplastPosFilter = new DBFilter();
                    EEmpMPFPlan lastObj          = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, uploadDB, "EmpMPFEffFr", empMPFPlan.EmpID, new Match("EmpMPFEffFr", "<", empMPFPlan.EmpMPFEffFr));
                    if (lastObj != null)
                    {
                        if (lastObj.EmpMPFEffTo.Ticks == 0)
                        {
                            lastObj.EmpMPFEffTo = empMPFPlan.EmpMPFEffFr.AddDays(-1);
                            uploadDB.update(dbConn, lastObj);
                        }
                    }
                    uploadDB.insert(dbConn, empMPFPlan);
                }
                else if (obj.ImportActionStatus == ImportDBObject.ImportActionEnum.UPDATE)
                {
                    uploadDB.update(dbConn, empMPFPlan);
                }
                tempDB.delete(dbConn, obj);
            }
        }
Пример #6
0
    protected bool loadObject()
    {
        obj = new EEmpMPFPlan();
        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);
        binding.toControl(values);

        HSBCMPFPanel.Visible = false;
        AIAMPFPanel.Visible  = false;
        SCBMPFPanel.Visible  = false;
        EMPFPlan mpfPlan = new EMPFPlan();

        mpfPlan.MPFPlanID = obj.MPFPlanID;
        if (EMPFPlan.db.select(dbConn, mpfPlan))
        {
            EMPFScheme mpfScheme = new EMPFScheme();
            mpfScheme.MPFSchemeID = mpfPlan.MPFSchemeID;
            if (EMPFScheme.db.select(dbConn, mpfScheme))
            {
                if (mpfScheme.MPFSchemeTrusteeCode.Equals("HSBC") ||
                    mpfScheme.MPFSchemeTrusteeCode.Equals("HangSeng")
                    )
                {
                    HSBCMPFPanel.Visible = true;
                }
                else if (mpfScheme.MPFSchemeTrusteeCode.Equals("AIA"))
                {
                    AIAMPFPanel.Visible = true;
                }
                else if (mpfScheme.MPFSchemeCode.Equals("MT00415") ||
                         mpfScheme.MPFSchemeCode.Equals("MT00423"))
                {
                    SCBMPFPanel.Visible = true;
                }
            }
        }


        return(true);
    }
Пример #7
0
        public DataTable UploadToTempDatabase(DataTable rawDataTable, int UserID)
        {
            if (rawDataTable == null)
            {
                return(GetImportDataFromTempDatabase(null));
            }

            int rowCount = 1;

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

                EUploadEmpMPFPlan uploadEmpMPF        = new EUploadEmpMPFPlan();
                EEmpMPFPlan       lastEmpMPF          = null;
                ArrayList         uploadHierarchyList = new ArrayList();

                string EmpNo = row[FIELD_EMP_NO].ToString().Trim();
                uploadEmpMPF.EmpID = Parse.GetEmpID(dbConn, EmpNo, UserID);
                if (uploadEmpMPF.EmpID < 0)
                {
                    errors.addError(ImportErrorMessage.ERROR_ACCESS_DENIED_EMP_NO, new string[] { EmpNo, rowCount.ToString() });
                }
                try
                {
                    uploadEmpMPF.EmpMPFEffFr = Parse.toDateTimeObject(row[FIELD_FROM]);
                }
                catch
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_FROM + "=" + row[FIELD_FROM].ToString(), EmpNo, rowCount.ToString() });
                }
                try
                {
                    uploadEmpMPF.EmpMPFEffTo = Parse.toDateTimeObject(row[FIELD_TO]);
                }
                catch
                {
                    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_TO + "=" + row[FIELD_TO].ToString(), EmpNo, rowCount.ToString() });
                }
                uploadEmpMPF.MPFPlanID = Parse.GetMPFPlanID(dbConn, row[FIELD_MPFPLAN].ToString(), false, UserID);

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


                uploadEmpMPF.SessionID       = m_SessionID;
                uploadEmpMPF.TransactionDate = UploadDateTime;


                if (uploadEmpMPF.EmpID != 0 && errors.List.Count <= 0)
                {
                    //if (rawDataTable.Columns.Contains(FIELD_INTERNAL_ID))
                    //{
                    //    try
                    //    {
                    //        if (!row.IsNull(FIELD_INTERNAL_ID))
                    //        {
                    //            int tmpID = FromHexDecWithCheckDigit((string)row[FIELD_INTERNAL_ID]);
                    //            EEmpMPFPlan tmpObj = new EEmpMPFPlan();
                    //            tmpObj.EmpMPFID = tmpID;
                    //            if (EEmpMPFPlan.db.select(dbConn, tmpObj))
                    //                uploadEmpMPF.EmpMPFID = 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();
                            uploadEmpMPF.SynID = strSynID;
                            if (!string.IsNullOrEmpty(strSynID))
                            {
                                DBFilter synIDFilter = new DBFilter();
                                synIDFilter.add(new Match("SynID", strSynID));
                                ArrayList objSameSynIDList = EEmpMPFPlan.db.select(dbConn, synIDFilter);
                                if (objSameSynIDList.Count > 0)
                                {
                                    uploadEmpMPF.EmpMPFID = ((EEmpMPFPlan)objSameSynIDList[0]).EmpMPFID;
                                }
                            }
                        }
                    }


                    if (uploadEmpMPF.EmpMPFID == 0)
                    {
                        lastEmpMPF = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, uploadDB, "EmpMPFEffFr", uploadEmpMPF.EmpID, new Match("EmpMPFEffFr", "<=", uploadEmpMPF.EmpMPFEffFr));
                        if (lastEmpMPF != null)
                        {
                            if (uploadEmpMPF.MPFPlanID == lastEmpMPF.MPFPlanID && uploadEmpMPF.EmpMPFEffTo == lastEmpMPF.EmpMPFEffTo)
                            {
                                continue;
                            }
                            else
                            {
                                // add postion terms with new ID
                                if (lastEmpMPF.EmpMPFEffFr.Equals(uploadEmpMPF.EmpMPFEffFr))
                                {
                                    uploadEmpMPF.EmpMPFID = lastEmpMPF.EmpMPFID;
                                    if (uploadEmpMPF.EmpMPFEffTo.Ticks == 0 && lastEmpMPF.EmpMPFEffTo.Ticks != 0)
                                    {
                                        EEmpMPFPlan afterEmpMPF = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, uploadDB, "EmpMPFEffFr", uploadEmpMPF.EmpID, new Match("EmpMPFEffFr", ">", lastEmpMPF.EmpMPFEffTo));
                                        if (afterEmpMPF != null)
                                        {
                                            uploadEmpMPF.EmpMPFEffTo = afterEmpMPF.EmpMPFEffFr.AddDays(-1);
                                        }
                                    }
                                }
                                else
                                {
                                    AND lastObjAndTerms = new AND();
                                    lastObjAndTerms.add(new Match("EmpMPFEffFr", ">", uploadEmpMPF.EmpMPFEffFr));
                                    if (!uploadEmpMPF.EmpMPFEffTo.Ticks.Equals(0))
                                    {
                                        lastObjAndTerms.add(new Match("EmpMPFEffFr", "<=", uploadEmpMPF.EmpMPFEffTo));
                                    }

                                    EEmpMPFPlan lastObj = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, uploadDB, "EmpMPFEffFr", uploadEmpMPF.EmpID, lastObjAndTerms);
                                    if (lastObj != null)
                                    {
                                        if (!lastObj.EmpMPFEffTo.Ticks.Equals(0))
                                        {
                                            errors.addError(ImportErrorMessage.ERROR_DATE_FROM_OVERLAP, new string[] { uploadEmpMPF.EmpMPFEffFr.ToString("yyyy-MM-dd"), rowCount.ToString() });
                                            continue;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }

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

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

                Hashtable values = new Hashtable();
                tempDB.populate(uploadEmpMPF, values);
                PageErrors pageErrors = new PageErrors(EUploadEmpPersonalInfo.db);
                tempDB.validate(pageErrors, values);
                if (pageErrors.errors.Count == 0)
                {
                    tempDB.insert(dbConn, uploadEmpMPF);
                }
                else
                {
                    pageErrors.addError(rawDataTable.TableName);
                    throw new HRImportException(pageErrors.getPrompt() + "(line " + rowCount.ToString() + ")");

                    //if (EmpID == 0)
                    //    errors.addError(ImportErrorMessage.ERROR_INVALID_EMP_NO, new string[] { EmpNo, rowCount.ToString() });
                    //else if (PayCodeID == 0)
                    //    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_PAYMENT_CODE + "=" + PaymentCode, EmpNo, rowCount.ToString() });
                    //else if (PayCodeID == 0)
                    //    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_PAYMENT_CODE + "=" + PaymentCode, EmpNo, rowCount.ToString() });
                    //else if (EffDate.Ticks == 0)
                    //    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_EFFECTIVE_DATE + "=" + EffDateString, EmpNo, rowCount.ToString() });
                    //else if (double.TryParse(amountString, out amount))
                    //    errors.addError(ImportErrorMessage.ERROR_INVALID_FIELD_VALUE, new string[] { FIELD_AMOUNT + "=" + amountString, EmpNo, rowCount.ToString() });
                }
            }
            if (errors.List.Count > 0)
            {
                ClearTempTable();
                throw (new HRImportException(rawDataTable.TableName + "\r\n" + errors.Message()));
            }
            return(GetImportDataFromTempDatabase(null));
        }
Пример #8
0
    protected void Save_Click(object sender, EventArgs e)
    {
        if (!HSBCMPFPanel.Visible)
        {
            EmpMPFPlanClassName.Text = string.Empty;
        }
        EEmpMPFPlan c = new EEmpMPFPlan();

        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.EmpMPFEffTo.Ticks > 0 && c.EmpMPFEffTo < c.EmpMPFEffFr)
        {
            errors.addError("EmpMPFEffTo", HROne.Translation.PageErrorMessage.ERROR_DATE_TO_TOO_EARLY);
            return;
        }

        if (c.EmpMPFEffFr < new DateTime(2000, 12, 1))
        {
            errors.addError("EmpMPFEffFr", HROne.Translation.PageErrorMessage.ERROR_MPF_DATE_TO_TOO_EARLY);
            return;
        }

        AND andTerms = new AND();

        andTerms.add(new Match("EmpMPFID", "<>", c.EmpMPFID));
        andTerms.add(new Match("EmpMPFEffFr", "<=", c.EmpMPFEffFr));

        EEmpMPFPlan lastObj = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, db, "EmpMPFEffFr", c.EmpID, andTerms);

        if (lastObj != null && (c.EmpMPFEffFr <= lastObj.EmpMPFEffTo || c.EmpMPFEffFr == lastObj.EmpMPFEffFr))
        {
            errors.addError("EmpMPFEffFr", HROne.Translation.PageErrorMessage.ERROR_DATE_FROM_OVERLAP);
            return;
        }

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

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

        if (lastObj != null)
        {
            if (lastObj.EmpMPFEffTo < lastObj.EmpMPFEffFr)
            {
                lastObj.EmpMPFEffTo = c.EmpMPFEffFr.AddDays(-1);
                db.update(dbConn, lastObj);
            }
        }
        WebUtils.EndFunction(dbConn);

        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "Emp_MPFPlan_View.aspx?EmpMPFID=" + CurID + "&EmpID=" + c.EmpID);
    }
Пример #9
0
    protected bool loadObject()
    {
        obj = new EEmpAVCPlan();
        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);
        binding.toControl(values);

        BOCIAVCPanel.Visible = false;

        DBFilter empMPFPlanFilter = new DBFilter();

        empMPFPlanFilter.add(new Match("EmpID", CurEmpID));
        empMPFPlanFilter.add("EmpMPFEffFr", false);

        if (!obj.EmpAVCEffFr.Ticks.Equals(0))
        {
            empMPFPlanFilter.add(new Match("EmpMPFEffFr", "<=", obj.EmpAVCEffFr));
        }

        ArrayList empMPFPlanList = EEmpMPFPlan.db.select(dbConn, empMPFPlanFilter);


        EMPFPlan mpfPlan = new EMPFPlan();

        if (empMPFPlanList.Count > 0)
        {
            EEmpMPFPlan empMPFPlan = (EEmpMPFPlan)empMPFPlanList[0];
            mpfPlan.MPFPlanID = empMPFPlan.MPFPlanID;
        }
        else
        {
            mpfPlan.MPFPlanID = obj.DefaultMPFPlanID;
        }
        if (EMPFPlan.db.select(dbConn, mpfPlan))
        {
            EMPFScheme mpfScheme = new EMPFScheme();
            mpfScheme.MPFSchemeID = mpfPlan.MPFSchemeID;
            if (EMPFScheme.db.select(dbConn, mpfScheme))
            {
                if (mpfScheme.MPFSchemeTrusteeCode.Equals("BOCI"))
                {
                    BOCIAVCPanel.Visible = true;
                }

                else
                {
                    BOCIAVCPanel.Visible = false;
                }
            }
        }

        return(true);
    }
Пример #10
0
        protected string GenerateBankFileDetailWithContributionDetail(GenericBankFileDetail bankFileDetail, System.Collections.ArrayList contributionList, out string FirstContributionString)
        {
            EEmpPersonalInfo empInfo = new EEmpPersonalInfo();

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

            string HKIDPassport;

            if (empInfo.EmpHKID.Length < 7)
            {
                HKIDPassport = empInfo.EmpPassportNo.Trim();
                //HKIDType = IDENTITY_TYPE_ENUM.PASSPORT;
            }
            else
            {
                HKIDPassport = empInfo.EmpHKID.Trim();
                //HKIDType = IDENTITY_TYPE_ENUM.HKID;
            }
            if (string.IsNullOrEmpty(HKIDPassport.Replace("()", "").Trim()))
            {
                throw new Exception(HROne.Common.WebUtility.GetLocalizedStringByCode("ERROR_HKID_PASSPORT_REQUIRED", "Either HKID or Passport Number is required") + "(" + HROne.Common.WebUtility.GetLocalizedString("EmpNo") + ": " + empInfo.EmpNo + ")");
            }

            string      defaultPFundType = "2";
            EEmpMPFPlan empMPFPlan       = (EEmpMPFPlan)AppUtils.GetLastObj(dbConn, EEmpMPFPlan.db, "EmpMPFEffFr", empInfo.EmpID);

            if (empMPFPlan != null)
            {
                string pFundType = HROne.CommonLib.Utility.GetXMLElementFromXmlString(empMPFPlan.EmpMPFPlanExtendData, "EmpMPFPlanExtendData", EmpMPFPlanSCBPFundTypeNodeName);
                if (!string.IsNullOrEmpty(pFundType.Trim()))
                {
                    defaultPFundType = pFundType;
                }
            }

            string[] bankFileDetailPaymentRecord = new string[22];
            bankFileDetailPaymentRecord[0] = bankFileDetail.EmpNo.PadRight(10).Substring(0, 10);
            bankFileDetailPaymentRecord[1] = bankFileDetail.EmpName.ToUpper().PadRight(20).Substring(0, 20);
            bankFileDetailPaymentRecord[2] = HKIDPassport.PadRight(15).Substring(0, 15);
            bankFileDetailPaymentRecord[3] = defaultPFundType;
            if (!string.IsNullOrEmpty(bankFileDetail.BankCode) || !string.IsNullOrEmpty(bankFileDetail.BranchCode) || !string.IsNullOrEmpty(bankFileDetail.AccountNo))
            {
                bankFileDetailPaymentRecord[4] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3) + bankFileDetail.AccountNo.PadRight(11).Substring(0, 11);
            }
            else
            {
                bankFileDetailPaymentRecord[4] = string.Empty.PadRight(18);
            }

            GenerateMPFDetail(empInfo, bankFileDetail.Amount, bankFileDetailPaymentRecord, contributionList, out FirstContributionString);
            //bankFileDetailPaymentRecord[15] = bankFileDetail.Amount.ToString("0.00").PadLeft(12);
            //bankFileDetailPaymentRecord[16] = bankFileDetail.Amount.ToString("0.00").PadLeft(12);


            string bankFileDetailData = String.Join(FIELD_DELIMITER, bankFileDetailPaymentRecord);

            if (bankFileDetailData.Length != 236)
            {
                throw new Exception("Incorrect Bank File Detail Length:\r\n" + bankFileDetailData);
            }

            return(bankFileDetailData);
        }