コード例 #1
0
ファイル: HSBCBankFile.cs プロジェクト: dhamotharang/H-R-One
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailRecord = new string[10];

            bankFileDetailRecord[0] = " ";
            bankFileDetailRecord[1] = bankFileDetail.EmpNo.PadRight(12).Substring(0, 12);
            bankFileDetailRecord[2] = bankFileDetail.EmpBankAccountHolderName.PadRight(20).Substring(0, 20);
            bankFileDetailRecord[3] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3);
            bankFileDetailRecord[4] = bankFileDetail.BranchCode.PadRight(3).Substring(0, 3);
            bankFileDetailRecord[5] = bankFileDetail.AccountNo.PadRight(9).Substring(0, 9);
            bankFileDetailRecord[6] = bankFileDetail.Amount.ToString("00000000.00").Replace(".", "");
            if (m_PlanCode == "F" || m_PlanCode == "G")
            {
                bankFileDetailRecord[7] = string.Empty.PadLeft(4, ' ');
            }
            else
            {
                bankFileDetailRecord[7] = ValueDate.ToString("ddMM");
            }

            bankFileDetailRecord[8] = bankFileDetail.EmpNo.PadRight(20).Substring(12, 6);
            bankFileDetailRecord[9] = string.Empty.PadLeft(12, ' ');

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

            if (bankFileDetailData.Length != 80)
            {
                throw (new Exception("Incorrect Detail Length of Payment for " + bankFileDetail.EmpBankAccountHolderName + ":" + bankFileDetailData.Length));
            }
            return(bankFileDetailData);
        }
コード例 #2
0
        private GenericBankFileDetail CreateBankFileDetail(int EmpID)
        {
            GenericBankFileDetail bankFileDetail = new GenericBankFileDetail();
            EEmpPersonalInfo      empInfo        = new EEmpPersonalInfo();

            empInfo.EmpID = EmpID;
            if (EEmpPersonalInfo.db.select(dbConn, empInfo))
            {
                bankFileDetail.EmpID   = empInfo.EmpID;
                bankFileDetail.EmpNo   = empInfo.EmpNo;
                bankFileDetail.EmpName = empInfo.EmpEngFullName;
            }

            DBFilter empPosFilter = new DBFilter();

            empPosFilter.add(new Match("EmpID", EmpID));
            empPosFilter.add("EmpPosEffFr", false);
            ArrayList empPosList = EEmpPositionInfo.db.select(dbConn, empPosFilter);

            if (empPosList.Count > 0)
            {
                EEmpPositionInfo empPos  = (EEmpPositionInfo)empPosList[0];
                ECompany         company = new ECompany();
                company.CompanyID = empPos.CompanyID;
                ECompany.db.select(dbConn, company);
                bankFileDetail.CompanyID   = company.CompanyID;
                bankFileDetail.CompanyName = company.CompanyName;
            }


            return(bankFileDetail);
        }
コード例 #3
0
ファイル: CitiBankFile.cs プロジェクト: dhamotharang/H-R-One
 protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
 {
     if (BankFileFormat.Equals(BankFileFormatEnum.EXCEL))
     {
         return(string.Empty);
     }
     else
     {
         return(GenerateBankFileDetailText(bankFileDetail));
     }
 }
コード例 #4
0
        protected virtual string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailRecord = new string[4];

            bankFileDetailRecord[0] = bankFileDetail.EmpNo;
            bankFileDetailRecord[1] = bankFileDetail.EmpBankAccountHolderName;
            bankFileDetailRecord[2] = bankFileDetail.BankCode + bankFileDetail.BranchCode + bankFileDetail.AccountNo;
            bankFileDetailRecord[3] = bankFileDetail.Amount.ToString("0.00");
            string bankFileDetailData = String.Join(FIELD_DELIMITER, bankFileDetailRecord);

            return(bankFileDetailData);
        }
コード例 #5
0
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            EBankList banklist = new EBankList();

            banklist.BankCode = bankFileDetail.BankCode;
            if (EBankList.db.select(dbConn, banklist))
            {
                BankName = banklist.BankName;
            }

            string[] bankFileDetailRecord = new string[45];
            bankFileDetailRecord[0] = "TRN";
            bankFileDetailRecord[1] = "PAYROL"; //  PAYROL - Hong Kong Payroll ACH Payment (AUTOPAY)
            //bankFileDetailRecord[2] = "omit";.Substring(0, 3)
            bankFileDetailRecord[4] = "6055";   //  6055 -  BOA Hong Kong, HK
            bankFileDetailRecord[5] = AccountNo.PadRight(31).Substring(0, 31).TrimEnd();
            //bankFileDetailRecord[6] = "";//bankFileDetail.BranchCode;//.Substring(0, 9);
            bankFileDetailRecord[7] = "HKD";
            bankFileDetailRecord[8] = "PAY"; //  PAY - Payment
            bankFileDetailRecord[9] = "D";   //  D - Payment Only
            //bankFileDetailRecord[10] = FIELD_POSTINGINDICATOR;//.Substring(0, 1);
            //bankFileDetailRecord[11] = "";//.Substring(0, 16);
            //bankFileDetailRecord[12] = FIELD_PRIORITYINDICATOR;//.Substring(0, 1);
            bankFileDetailRecord[13] = AppUtils.ServerDateTime().ToString("MMddHHmmss") + TransactionID.ToString("000000");
            //bankFileDetailRecord[14] = "";//.Substring(0, 2);
            bankFileDetailRecord[15] = AccountHolderName.ToUpper().PadRight(35).Substring(0, 35).Trim();
            //bankFileDetailRecord[16] = "";.Substring(0, 15);


            bankFileDetailRecord[17] = PostalAddress1.PadRight(35).Substring(0, 35).Trim();
            bankFileDetailRecord[18] = PostalAddress2.PadRight(35).Substring(0, 35).Trim();
            bankFileDetailRecord[19] = PostalCityName.PadRight(30).Substring(0, 30).Trim();
            bankFileDetailRecord[22] = "HK";
            bankFileDetailRecord[23] = bankFileDetail.EmpName.ToUpper().PadRight(70).Substring(0, 70).Trim();
            //bankFileDetailRecord[25] = "ADDRESS LINE 1"+" " ";
            //bankFileDetailRecord[27] = "HONG KONG";
            bankFileDetailRecord[30] = "HK";
            bankFileDetailRecord[31] = bankFileDetail.ValueDate.ToString("yyyyMMdd");
            bankFileDetailRecord[33] = "HKD";
            bankFileDetailRecord[34] = bankFileDetail.Amount.ToString("0.00");
            bankFileDetailRecord[37] = BankName.ToUpper().PadRight(33).Substring(0, 33).Trim();
            bankFileDetailRecord[39] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3);
            bankFileDetailRecord[41] = bankFileDetail.AccountNo.PadRight(9).Substring(0, 9).Trim();
            bankFileDetailRecord[43] = "HONG KONG";
            bankFileDetailRecord[44] = "HK";
            string bankFileDetailData = "\"" + String.Join(FIELD_DELIMITER, bankFileDetailRecord) + "\"";

            bankFileDetailData = bankFileDetailData.Replace("\"\"", string.Empty);
            //if (bankFileDetailData.Length > 715)
            //    throw (new Exception("Incorrect Detail Length of Payment for " + bankFileDetail.EmpBankAccountHolderName + ":" + bankFileDetailData.Length));
            return(bankFileDetailData);
        }
コード例 #6
0
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailPaymentRecord = new string[5];
            bankFileDetailPaymentRecord[0] = bankFileDetail.EmpNo.PadRight(10).Substring(0, 10);
            bankFileDetailPaymentRecord[1] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20);
            bankFileDetailPaymentRecord[2] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3) + bankFileDetail.AccountNo.PadRight(11).Substring(0, 11);
            bankFileDetailPaymentRecord[3] = bankFileDetail.Amount.ToString("0.00").PadLeft(12);
            bankFileDetailPaymentRecord[4] = m_CustomerReference.PadRight(18).Substring(0, 18);

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

            if (bankFileDetailData.Length != 78)
            {
                throw new Exception("Incorrect Bank File Detail Length:\r\n" + bankFileDetailData);
            }
            return(bankFileDetailData);
        }
コード例 #7
0
ファイル: ANZBankFile.cs プロジェクト: dhamotharang/H-R-One
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailRecord = new string[81];

            bankFileDetailRecord[0] = "D";
            bankFileDetailRecord[1] = string.Empty.PadRight(20);
            bankFileDetailRecord[2] = "PAYROLL".PadRight(20).Substring(0, 20);
            bankFileDetailRecord[3] = string.Empty.PadRight(10).Substring(0, 10);
            bankFileDetailRecord[4] = string.Empty.PadRight(10);
            //  Trim the account holder name to 20 character even though the max length is 140 characters
            bankFileDetailRecord[5] = bankFileDetail.EmpBankAccountHolderName.PadRight(20).Substring(0, 20).PadRight(140).Substring(0, 140);
            bankFileDetailRecord[6] = string.Empty.PadRight(20);
            bankFileDetailRecord[7] = string.Empty.PadRight(255);

            //  Bank Branch Search - unknown but Mandatory
            bankFileDetailRecord[8]  = ((string)(bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3))).PadRight(11).Substring(0, 11);
            bankFileDetailRecord[9]  = string.Empty.PadRight(40);
            bankFileDetailRecord[10] = string.Empty.PadRight(40);
            bankFileDetailRecord[11] = string.Empty.PadRight(11);
            bankFileDetailRecord[12] = string.Empty.PadRight(150);
            bankFileDetailRecord[13] = string.Empty.PadRight(30);
            bankFileDetailRecord[14] = bankFileDetail.AccountNo.PadRight(9).Substring(0, 9).PadRight(34).Substring(0, 34);
            bankFileDetailRecord[15] = "HKD";
            //  The file spec skip content for line 17 (bankFileDetailRecord[16])
            bankFileDetailRecord[17] = "HONG KONG".PadRight(150).Substring(0, 150);; //  Address
            bankFileDetailRecord[18] = "HONG KONG".PadRight(30).Substring(0, 30);;   //  Country
            bankFileDetailRecord[19] = string.Empty.PadRight(1337);
            bankFileDetailRecord[57] = "HKD";
            bankFileDetailRecord[58] = " ";
            bankFileDetailRecord[59] = string.Empty.PadRight(10);
            bankFileDetailRecord[60] = "P";
            bankFileDetailRecord[61] = bankFileDetail.Amount.ToString(string.Empty.PadLeft(13, '0') + ".00").Replace(".", string.Empty);
            //  The size of Line 68 Cheque Number is changed from 6 to 10
            bankFileDetailRecord[62] = string.Empty.PadRight(237);
            bankFileDetailRecord[77] = string.Empty.PadRight(140);  //  Credit Details
            bankFileDetailRecord[78] = string.Empty.PadRight(1250);

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

            if (bankFileDetailData.Length != 3969)
            {
                throw (new Exception("Incorrect Detail Length of Payment for " + bankFileDetail.EmpBankAccountHolderName + ":" + bankFileDetailData.Length));
            }
            return(bankFileDetailData);
        }
コード例 #8
0
ファイル: BOCBankFile.cs プロジェクト: dhamotharang/H-R-One
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailRecord = new string[8];
            bankFileDetailRecord[0] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3);
            bankFileDetailRecord[1] = bankFileDetail.BranchCode.PadRight(3).Substring(0, 3);
            bankFileDetailRecord[2] = bankFileDetail.AccountNo.PadRight(9).Substring(0, 9);
            bankFileDetailRecord[3] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20);
            bankFileDetailRecord[4] = bankFileDetail.Amount.ToString("0.00").PadLeft(12);
            bankFileDetailRecord[5] = string.Empty.PadLeft(18);
            bankFileDetailRecord[6] = string.Empty.PadLeft(6);
            bankFileDetailRecord[7] = string.Empty.PadLeft(1);

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

            if (bankFileDetailData.Length != 72)
            {
                throw (new Exception("Incorrect Detail Length of Payment for " + bankFileDetail.EmpBankAccountHolderName + ":" + bankFileDetailData.Length));
            }
            return(bankFileDetailData);
        }
コード例 #9
0
ファイル: DBSBankFile.cs プロジェクト: dhamotharang/H-R-One
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailPaymentRecord = new string[4];
            bankFileDetailPaymentRecord[0] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.AccountNo.PadRight(9).Substring(0, 9).Trim();
            bankFileDetailPaymentRecord[1] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20).Trim();
            bankFileDetailPaymentRecord[2] = bankFileDetail.Amount.ToString("0.00");
            string detailSecondPartyReference = m_SecondPartyReference;

            if (m_IsSecondPartyReferenceIncludeEmpNo)
            {
                detailSecondPartyReference = bankFileDetail.EmpNo + " " + detailSecondPartyReference;
            }
            bankFileDetailPaymentRecord[3] = detailSecondPartyReference.PadRight(18).Substring(0, 18).Trim();

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

            //if (bankFileDetailData.Length != 78)
            //    throw new Exception("Incorrect Bank File Detail Length:\r\n" + bankFileDetailData);
            return(bankFileDetailData);
        }
コード例 #10
0
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailPaymentRecord = new string[31];

            // Record Type 9(1)
            bankFileDetailPaymentRecord[0] = "2";
            // Receiving Bank Code 9(3)
            bankFileDetailPaymentRecord[1] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3);
            // Receiving Branch Code 9(3)
            bankFileDetailPaymentRecord[2] = bankFileDetail.BranchCode.PadRight(3).Substring(0, 3);
            // Receiving Account Code 9(11)
            bankFileDetailPaymentRecord[3] = bankFileDetail.AccountNo.PadRight(11).Substring(0, 11);
            // Receiving A/c Name X(20)
            bankFileDetailPaymentRecord[4] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20);
            // Transaction Code 9(2)
            bankFileDetailPaymentRecord[5] = ((int)TransactionType).ToString("00");
            // Amount 9(9)V9(2)
            string m_amount = bankFileDetail.Amount.ToString("0.00").Replace(".", "");

            bankFileDetailPaymentRecord[6] = m_amount.PadLeft(11);
            // Particulars X(6)
            bankFileDetailPaymentRecord[7] = Particulars.PadRight(6).Substring(0, 6);
            // Reference X(18)
            bankFileDetailPaymentRecord[8] = "".PadRight(18);
            // Print Payment Advice Indicator X(1)
            bankFileDetailPaymentRecord[9] = "N";
            // Delivery Mode (Print) X(1)
            bankFileDetailPaymentRecord[10] = "".PadRight(1);
            // Delivery Mode (Email) X(1)
            bankFileDetailPaymentRecord[11] = "".PadRight(1);
            // Delivery Mode (Fax) X(1)
            bankFileDetailPaymentRecord[12] = "".PadRight(1);
            // Delivery Mode (-) X(1)
            bankFileDetailPaymentRecord[13] = "".PadRight(1);
            // Advice Format X(1)
            bankFileDetailPaymentRecord[14] = "".PadRight(1);
            // Beneficiary ID X(20)
            bankFileDetailPaymentRecord[15] = "".PadRight(20);
            // Beneficiary Name (line 1) X(35)
            bankFileDetailPaymentRecord[16] = "".PadRight(35);
            // Beneficiary Name (line 2) X(35)
            bankFileDetailPaymentRecord[17] = "".PadRight(35);
            // Beneficiary Name (Address 1) X(35)
            bankFileDetailPaymentRecord[18] = "".PadRight(35);
            // Beneficiary Name (Address 2) X(35)
            bankFileDetailPaymentRecord[19] = "".PadRight(35);
            // Beneficiary Name (Address 3) X(35)
            bankFileDetailPaymentRecord[20] = "".PadRight(35);
            // Beneficiary Name (Address 4) X(35)
            bankFileDetailPaymentRecord[21] = "".PadRight(35);
            // Beneficiary City X(17)
            bankFileDetailPaymentRecord[22] = "".PadRight(17);
            // Beneficiary Country Code X(3)
            bankFileDetailPaymentRecord[23] = "".PadRight(3);
            // Beneficiary Postal Code X(15)
            bankFileDetailPaymentRecord[24] = "".PadRight(15);
            // Email Address of Beneficiary X(50)
            bankFileDetailPaymentRecord[25] = "".PadRight(50);
            // Facsimile Number of Beneficiary X(20)
            bankFileDetailPaymentRecord[26] = "".PadRight(20);
            // Payer's name (line 1) X(35)
            bankFileDetailPaymentRecord[27] = "".PadRight(35);
            // Payer's name (line 2) X(35)
            bankFileDetailPaymentRecord[28] = "".PadRight(35);
            // Payer/Customer Reference X(30)
            bankFileDetailPaymentRecord[29] = "".PadRight(30);
            // Filler X(84)
            bankFileDetailPaymentRecord[30] = "".PadRight(84);


            //bankFileDetailPaymentRecord[0] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.AccountNo.PadRight(9).Substring(0,9).Trim();
            //bankFileDetailPaymentRecord[1] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20).Trim();
            //bankFileDetailPaymentRecord[2] = bankFileDetail.Amount.ToString("0.00");
            //string detailSecondPartyReference = m_SecondPartyReference;
            //if (m_IsSecondPartyReferenceIncludeEmpNo)
            //    detailSecondPartyReference = bankFileDetail.EmpNo + " " + detailSecondPartyReference;
            //bankFileDetailPaymentRecord[3] = detailSecondPartyReference.PadRight(18).Substring(0, 18).Trim();

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

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

            m_totalCreditAmount += bankFileDetail.Amount;
            m_detailCount++;

            return(bankFileDetailData);
        }
コード例 #11
0
ファイル: CitiBankFile.cs プロジェクト: dhamotharang/H-R-One
        public string GenerateBankFileDetailText(GenericBankFileDetail bankFileDetail)
        {
            if (string.IsNullOrEmpty(ProductCode) && !bankFileDetail.IsChequePayment)
            {
                return(string.Empty);
            }
            string[] bankFileDetailPaymentRecord = new string[113];
            if (bankFileDetail.IsChequePayment)
            {
                bankFileDetailPaymentRecord[0]  = "PLC";
                bankFileDetailPaymentRecord[19] = bankFileDetail.EmpName;
                bankFileDetailPaymentRecord[33] = string.Empty;
            }
            else
            {
                bankFileDetailPaymentRecord[0]  = m_ProductCode;
                bankFileDetailPaymentRecord[19] = bankFileDetail.EmpBankAccountHolderName.ToUpper().PadRight(20).Substring(0, 20).Trim();
                bankFileDetailPaymentRecord[33] = bankFileDetail.BankCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.BranchCode.PadRight(3).Substring(0, 3) + "-" + bankFileDetail.AccountNo;;
            }
            bankFileDetailPaymentRecord[1]  = "HK";
            bankFileDetailPaymentRecord[2]  = m_BranchCode + m_AccountNo;
            bankFileDetailPaymentRecord[3]  = "HKD";
            bankFileDetailPaymentRecord[4]  = bankFileDetail.Amount.ToString("0.00");
            bankFileDetailPaymentRecord[5]  = string.Empty;
            bankFileDetailPaymentRecord[6]  = m_ValueDate.ToString("yyyyMMdd");
            bankFileDetailPaymentRecord[7]  = bankFileDetail.EmpNo.PadRight(15).Substring(0, 15).Trim();
            bankFileDetailPaymentRecord[8]  = string.Empty;
            bankFileDetailPaymentRecord[9]  = string.Empty;
            bankFileDetailPaymentRecord[10] = string.Empty;
            bankFileDetailPaymentRecord[11] = string.Empty;
            bankFileDetailPaymentRecord[12] = string.Empty;
            bankFileDetailPaymentRecord[13] = m_AccountHolderName.ToUpper().PadRight(20).Substring(0, 20).Trim();
            bankFileDetailPaymentRecord[14] = string.Empty;
            bankFileDetailPaymentRecord[15] = string.Empty;
            bankFileDetailPaymentRecord[16] = string.Empty;
            bankFileDetailPaymentRecord[17] = string.Empty;
            bankFileDetailPaymentRecord[18] = string.Empty;
            bankFileDetailPaymentRecord[20] = string.Empty;
            bankFileDetailPaymentRecord[21] = string.Empty;
            bankFileDetailPaymentRecord[22] = string.Empty;
            bankFileDetailPaymentRecord[23] = string.Empty;
            bankFileDetailPaymentRecord[24] = string.Empty;
            bankFileDetailPaymentRecord[25] = string.Empty;
            bankFileDetailPaymentRecord[26] = string.Empty;
            bankFileDetailPaymentRecord[27] = string.Empty;
            bankFileDetailPaymentRecord[28] = string.Empty;
            bankFileDetailPaymentRecord[29] = string.Empty;
            bankFileDetailPaymentRecord[30] = string.Empty;
            bankFileDetailPaymentRecord[31] = string.Empty;
            bankFileDetailPaymentRecord[32] = string.Empty;
            bankFileDetailPaymentRecord[35] = m_PaymentDetails;

            //bankFileDetailInvoiceRecord[0] = "I";
            //bankFileDetailInvoiceRecord[1] = string.Empty;
            //bankFileDetailInvoiceRecord[2] = string.Empty;
            //bankFileDetailInvoiceRecord[3] = string.Empty;
            //bankFileDetailInvoiceRecord[4] = bankFileDetail.Amount.ToString("0.00");


            string bankFileDetailData = String.Join(FIELD_DELIMITER, bankFileDetailPaymentRecord); //+ FIELD_DELIMITER + RECORD_DELIMITER + String.Join(FIELD_DELIMITER, bankFileDetailInvoiceRecord) + FIELD_DELIMITER;

            return(bankFileDetailData);
        }
コード例 #12
0
        protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail)
        {
            string[] bankFileDetailPaymentRecord = new string[63];

            bankFileDetailPaymentRecord[0] = "P";
            bankFileDetailPaymentRecord[1] = "PAY";
            bankFileDetailPaymentRecord[2] = "BA";
            bankFileDetailPaymentRecord[3] = "";

            string PaymentReference = m_PaymentCustomerReference.Contains(FIELD_DELIMITER) ? QUOTATION_DELIMITER + m_PaymentCustomerReference + QUOTATION_DELIMITER : m_PaymentCustomerReference;

            if (PaymentReference.Length > 16)
            {
                bankFileDetailPaymentRecord[4] = PaymentReference.Substring(0, 16);
            }
            else
            {
                bankFileDetailPaymentRecord[4] = PaymentReference;
            }

            string PaymentMemo = m_PaymentCustomerMemo.Contains(FIELD_DELIMITER) ? QUOTATION_DELIMITER + m_PaymentCustomerMemo + QUOTATION_DELIMITER : m_PaymentCustomerMemo;

            if (PaymentMemo.Length > 255)
            {
                bankFileDetailPaymentRecord[5] = PaymentMemo.Substring(0, 255);
            }
            else
            {
                bankFileDetailPaymentRecord[5] = PaymentMemo;
            }

            //P7
            bankFileDetailPaymentRecord[6] = "HK";
            //P8
            bankFileDetailPaymentRecord[7] = "HKG";
            //P9
            bankFileDetailPaymentRecord[8] = this.m_BranchCode + this.m_AccountNo;
            //P10
            bankFileDetailPaymentRecord[9] = m_ValueDate.ToString("dd/MM/yyyy");
            //P11
            if (bankFileDetail.EmpBankAccountHolderName.Length > 35)
            {
                bankFileDetailPaymentRecord[10] = bankFileDetail.EmpBankAccountHolderName.ToUpper().Substring(0, 35);
            }
            else
            {
                bankFileDetailPaymentRecord[10] = bankFileDetail.EmpBankAccountHolderName.ToUpper();
            }
            //P12
            bankFileDetailPaymentRecord[11] = "";
            //P13
            bankFileDetailPaymentRecord[12] = "";
            //P14
            bankFileDetailPaymentRecord[13] = "";
            //P15
            bankFileDetailPaymentRecord[14] = "";
            //P16
            if (!string.IsNullOrEmpty(bankFileDetail.BankCode))
            {
                EBankSwift m_swiftObj = EBankSwift.GetObjectByBankCode(dbConn, bankFileDetail.BankCode);
                if (m_swiftObj != null)
                {
                    bankFileDetailPaymentRecord[15] = m_swiftObj.SwiftCode;
                    //P17
                    bankFileDetailPaymentRecord[16] = m_swiftObj.LocalClearingCode;
                }
                else
                {
                    bankFileDetailPaymentRecord[15] = "";
                    //P17
                    bankFileDetailPaymentRecord[16] = "";
                }
            }
            else
            {
                bankFileDetailPaymentRecord[15] = "";
                //P17
                bankFileDetailPaymentRecord[16] = "";
            }
            //P18
            bankFileDetailPaymentRecord[17] = "";
            //P19 - kay insist P19 is empty
            bankFileDetailPaymentRecord[18] = "";
            //P20
            bankFileDetailPaymentRecord[19] = bankFileDetail.BranchCode + bankFileDetail.AccountNo;
            //P21
            bankFileDetailPaymentRecord[20] = "";
            //P22
            bankFileDetailPaymentRecord[21] = "";
            for (int i = 22; i <= 36; i++)
            {
                bankFileDetailPaymentRecord[i] = "";
            }
            bankFileDetailPaymentRecord[37] = "HKD";
            bankFileDetailPaymentRecord[38] = bankFileDetail.Amount.ToString("0.00");
            for (int j = 39; j <= 62; j++)
            {
                bankFileDetailPaymentRecord[j] = "";
            }

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

            //if (bankFileDetailData.Length != 262)
            //    throw new Exception("Incorrect Bank File Detail Length:\r\n" + bankFileDetailData);
            return(bankFileDetailData);
        }
コード例 #13
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);
        }
コード例 #14
0
        public override FileInfo GenerateBankFile()
        {
            payrollMPFRecordCount             = 0;
            NewJoinRecordCount                = 0;
            NewJoinEECount                    = 0;
            totalFirstContributionRecordCount = 0;
            totalFirstContributionAmount      = 0;


            string[] bankFileHeader = new string[12];
            bankFileHeader[0] = ERCMGReference.PadRight(20).Substring(0, 20);
            bankFileHeader[1] = m_AccountHolderName.ToUpper().PadRight(40).Substring(0, 40);
            string companyAccountNo = m_AccountNo.PadRight(8).Substring(0, 8);

            companyAccountNo  = companyAccountNo.Substring(0, 3) + "-" + companyAccountNo.Substring(3, 4) + "-" + companyAccountNo.Substring(7);
            bankFileHeader[2] = m_BranchCode.PadRight(3).Substring(0, 3) + "-" + companyAccountNo;
            if (contributionList.Count > 0)
            {
                bankFileHeader[3] = "0";
            }
            else
            {
                bankFileHeader[3] = "1";
            }

            bankFileHeader[4] = m_ValueDate.ToString("yyyyMMdd");
            bankFileHeader[5] = m_PayPeriodTo.ToString("yyyyMMdd");
            if (ContributionDueDate.Ticks.Equals(0))
            {
                bankFileHeader[6] = ContributionDueDate.ToString("yyyyMMdd");
            }
            else
            {
                bankFileHeader[6] = string.Empty.PadRight(8);
            }

            bankFileHeader[7]  = m_BatchDescription.PadRight(16).Substring(0, 16);
            bankFileHeader[8]  = RecordCount.ToString("00000000");
            bankFileHeader[9]  = ((double)(m_TotalAmount + totalMCEE + totalVCEE)).ToString("0000000000.00");
            bankFileHeader[10] = m_TotalAmount.ToString("0000000000.00");
            bankFileHeader[11] = ((double)(totalMCEE + totalVCEE + totalMCER + totalVCER)).ToString("0000000000.00");

            string bankFileHeaderDetail = string.Join(FIELD_DELIMITER, bankFileHeader);

            if (bankFileHeaderDetail.Length != 162)
            {
                throw new Exception("Incorrect Bank File Header Length:\r\n" + bankFileHeaderDetail);
            }
            string bankFileData = bankFileHeaderDetail + RECORD_DELIMITER;
            string firstRemittanceStatementData = string.Empty;


            foreach (GenericBankFileDetail bankFileDetail in BankFileDetails)
            {
                string FirstContributionString;
                bankFileData += GenerateBankFileDetailWithContributionDetail(bankFileDetail, contributionList, out FirstContributionString) + RECORD_DELIMITER;

                if (!string.IsNullOrEmpty(FirstContributionString))
                {
                    firstRemittanceStatementData += FirstContributionString;
                }
                payrollMPFRecordCount++;
            }
            System.Collections.ArrayList remainContributionList = (System.Collections.ArrayList)contributionList.Clone();
            foreach (MPFFile.GenericMPFFileDetail mpfDetail in remainContributionList)
            {
                GenericBankFileDetail bankFileDetail = new GenericBankFileDetail();
                bankFileDetail.EmpID   = mpfDetail.EmpID;
                bankFileDetail.EmpName = mpfDetail.EmpName;
                bankFileDetail.EmpNo   = mpfDetail.EmpNo;
                bankFileDetail.EmpBankAccountHolderName = mpfDetail.EmpName;
                bankFileDetail.BankCode   = string.Empty;
                bankFileDetail.BranchCode = string.Empty;
                bankFileDetail.AccountNo  = string.Empty;
                bankFileDetail.Amount     = 0;
                string FirstContributionString;

                bankFileData += GenerateBankFileDetailWithContributionDetail(bankFileDetail, contributionList, out FirstContributionString) + RECORD_DELIMITER;

                if (!string.IsNullOrEmpty(FirstContributionString))
                {
                    firstRemittanceStatementData += FirstContributionString;
                }
                payrollMPFRecordCount++;
            }

            if (!string.IsNullOrEmpty(firstRemittanceStatementData))
            {
                string[] firstRemittanceFileHeader = new string[8];
                firstRemittanceFileHeader[0] = bankFileHeader[0];
                firstRemittanceFileHeader[1] = bankFileHeader[1];
                firstRemittanceFileHeader[2] = bankFileHeader[2];
                firstRemittanceFileHeader[3] = bankFileHeader[4];
                firstRemittanceFileHeader[4] = m_PayPeriodFr.ToString("yyyyMMdd");
                firstRemittanceFileHeader[5] = m_PayPeriodTo.ToString("yyyyMMdd");
                firstRemittanceFileHeader[6] = totalFirstContributionRecordCount.ToString("00000000");
                firstRemittanceFileHeader[7] = totalFirstContributionAmount.ToString("0000000000.00");
                string firstRemittanceFileHeaderDetail = string.Join(FIELD_DELIMITER, firstRemittanceFileHeader);
                if (firstRemittanceFileHeaderDetail.Length != 119)
                {
                    throw new Exception("Incorrect first contribution remittance File Header Length:\r\n" + firstRemittanceFileHeaderDetail);
                }
                firstRemittanceStatementData = firstRemittanceFileHeaderDetail + RECORD_DELIMITER + firstRemittanceStatementData + char.ConvertFromUtf32(26);
            }
            bankFileData += char.ConvertFromUtf32(26);

            FileInfo     bankFileInfo = GenerateTempFileName();
            StreamWriter writer       = new StreamWriter(bankFileInfo.OpenWrite());

            writer.Write(bankFileData);
            writer.Close();

            //SaveSequenceNo(m_SequenceNo + 1);

            FileInfo zipFileInfo = new FileInfo(Path.GetTempFileName());

            zipFileInfo.MoveTo(zipFileInfo.FullName + ".zip");
            DirectoryInfo zipFolderInfo = zipFileInfo.Directory.CreateSubdirectory("SCBBankMPFFile" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmssfff"));

            System.Collections.Generic.List <FileInfo> fileInfoList = new System.Collections.Generic.List <FileInfo>();
            {
                bankFileInfo.MoveTo(System.IO.Path.Combine(zipFolderInfo.FullName, ActualBankMPFFileName()));
                fileInfoList.Add(bankFileInfo);

                if (!string.IsNullOrEmpty(firstRemittanceStatementData))
                {
                    FileInfo firstContributionFileInfo = GenerateTempFileName();
                    writer = new StreamWriter(firstContributionFileInfo.OpenWrite());
                    writer.Write(firstRemittanceStatementData);
                    writer.Close();
                    firstContributionFileInfo.MoveTo(System.IO.Path.Combine(zipFolderInfo.FullName, ActualMPFTerminationFileName()));
                    fileInfoList.Add(firstContributionFileInfo);
                }
            }
            zip.Compress(zipFolderInfo.FullName, "*", zipFileInfo.FullName);
            foreach (FileInfo fileInfo in fileInfoList)
            {
                fileInfo.Delete();
            }
            zipFolderInfo.Delete(true);
            return(zipFileInfo);
        }
コード例 #15
0
ファイル: HSBCBankFile.cs プロジェクト: dhamotharang/H-R-One
        public void LoadBankFileDetail(string BankFileFullPath)
        {
            m_TotalAmount = 0;

            int      tmpHeaderRecordCount = -1;
            double   tmpHeaderTotalAmount = -1;
            DateTime currentDateTime      = AppUtils.ServerDateTime();

            //int RecordCount = 0;
            //double TotalAmount = 0;

            FileInfo fileInfo = new FileInfo(BankFileFullPath);

            if (fileInfo.Length % 80 != 0)
            {
                throw new Exception("Incorrect file size");
            }

            StreamReader bankFileStream = fileInfo.OpenText();

            char[] charRead = new char[80];

            int lineNo = 0;

            try
            {
                while (bankFileStream.Read(charRead, 0, 80) > 0)
                {
                    string line = new string(charRead);
                    lineNo++;

                    if (lineNo == 1)
                    {
                        string[] bankFileHeader = new string[13];
                        bankFileHeader[0]  = line.Substring(0, 1);
                        bankFileHeader[1]  = line.Substring(1, 12);
                        bankFileHeader[2]  = line.Substring(13, 3);
                        bankFileHeader[3]  = line.Substring(16, 12);
                        bankFileHeader[4]  = line.Substring(28, 6);
                        bankFileHeader[5]  = line.Substring(34, 1);
                        bankFileHeader[6]  = line.Substring(35, 8);
                        bankFileHeader[7]  = line.Substring(43, 5);
                        bankFileHeader[8]  = line.Substring(48, 10);
                        bankFileHeader[9]  = line.Substring(58, 7);
                        bankFileHeader[10] = line.Substring(65, 12);
                        bankFileHeader[11] = line.Substring(77, 2);
                        bankFileHeader[12] = line.Substring(79, 1);

                        m_PlanCode            = bankFileHeader[0];
                        m_BranchCode          = bankFileHeader[1].Substring(0, 3).Trim();
                        m_AccountNo           = bankFileHeader[1].Substring(3, 9).Trim();
                        m_BankPaymentCode     = bankFileHeader[2].Trim();
                        m_FirstPartyReference = bankFileHeader[3].Trim();
                        if (m_PlanCode == "F" || m_PlanCode == "G")
                        {
                            if (!DateTime.TryParseExact(bankFileHeader[4], "ddMMyy", null, System.Globalization.DateTimeStyles.None, out m_ValueDate))
                            {
                                throw new Exception("Invalid value date on file header");
                            }
                        }
                        if (!bankFileHeader[5].Equals("K"))
                        {
                            throw new Exception("Invalid media indicator");
                        }
                        if (!bankFileHeader[6].Equals(string.Empty.PadLeft(8, '*')))
                        {
                            throw new Exception("Invalid filename on file header");
                        }
                        {
                            if (!bankFileHeader[7].Trim().Equals(string.Empty) && !bankFileHeader[8].Trim().Equals(string.Empty))
                            {
                                if (!int.TryParse(bankFileHeader[7], out tmpHeaderRecordCount) || !double.TryParse(bankFileHeader[8].Insert(8, "."), out tmpHeaderTotalAmount))
                                {
                                    tmpHeaderRecordCount = -1;
                                    tmpHeaderTotalAmount = -1;
                                }
                            }
                            if (!bankFileHeader[9].Trim().Equals(string.Empty) && !bankFileHeader[10].Trim().Equals(string.Empty))
                            {
                                if (tmpHeaderRecordCount > 0 && tmpHeaderTotalAmount > 0)
                                {
                                    throw new Exception("Invalid Record Count/Total Amount on file header");
                                }
                                if (!int.TryParse(bankFileHeader[9], out tmpHeaderRecordCount) || !double.TryParse(bankFileHeader[10].Insert(10, "."), out tmpHeaderTotalAmount))
                                {
                                    throw new Exception("Invalid Record Count/Total Amount on file header");
                                }
                            }
                        }
                        if (!bankFileHeader[12].Equals("1"))
                        {
                            throw new Exception("Invalid end mark on file header");
                        }
                    }
                    else
                    {
                        string[] bankFileDetailRecord = new string[10];

                        bankFileDetailRecord[0] = line.Substring(0, 1);
                        bankFileDetailRecord[1] = line.Substring(1, 12);
                        bankFileDetailRecord[2] = line.Substring(13, 20);
                        bankFileDetailRecord[3] = line.Substring(33, 3);
                        bankFileDetailRecord[4] = line.Substring(36, 3);
                        bankFileDetailRecord[5] = line.Substring(39, 9);
                        bankFileDetailRecord[6] = line.Substring(48, 10);
                        bankFileDetailRecord[7] = line.Substring(58, 4);
                        bankFileDetailRecord[8] = line.Substring(62, 6);
                        bankFileDetailRecord[9] = line.Substring(68, 12);

                        GenericBankFileDetail bankFileDetail = new GenericBankFileDetail();
                        if (!bankFileDetailRecord[0].Equals(" "))
                        {
                            throw new Exception("Invalid record header on record detail" + " (line " + lineNo + ")");
                        }

                        bankFileDetail.EmpNo = bankFileDetailRecord[1] + bankFileDetailRecord[8];
                        bankFileDetail.EmpNo = bankFileDetail.EmpNo.Trim();
                        bankFileDetail.EmpBankAccountHolderName = bankFileDetailRecord[2].Trim();
                        bankFileDetail.BankCode   = bankFileDetailRecord[3].Trim();
                        bankFileDetail.BranchCode = bankFileDetailRecord[4].Trim();
                        bankFileDetail.AccountNo  = bankFileDetailRecord[5].Trim();
                        double tmpRecordAmount = 0;
                        if (!double.TryParse(bankFileDetailRecord[6].Insert(8, "."), out tmpRecordAmount))
                        {
                            throw new Exception("Invalid amount on record detail" + " (line " + lineNo + ")");
                        }
                        bankFileDetail.Amount = tmpRecordAmount;

                        int valueDateNumeric = 0;
                        if (m_PlanCode == "F" || m_PlanCode == "G")
                        {
                            if (!bankFileDetailRecord[7].Trim().Equals(string.Empty))
                            {
                                throw new Exception("Invalid value date on record detail" + " (line " + lineNo + ")");
                            }
                        }
                        else
                        {
                            if (!int.TryParse(bankFileDetailRecord[7], out valueDateNumeric))
                            {
                                throw new Exception("Invalid value date on record detail" + " (line " + lineNo + ")");
                            }
                            int days  = valueDateNumeric / 100;
                            int month = valueDateNumeric % 100;
                            bankFileDetail.ValueDate = new DateTime(currentDateTime.Year, month, days);
                            //  find a value date which is nearest to the current date
                            if (bankFileDetail.ValueDate < currentDateTime.AddDays(-180))
                            {
                                //  to prevent 29 Feb issue, use "new DateTime" to re-assign the value
                                bankFileDetail.ValueDate = new DateTime(currentDateTime.Year + 1, month, days);
                            }
                            if (bankFileDetail.ValueDate.Day != days && bankFileDetail.ValueDate.Month != month)
                            {
                                throw new Exception("Invalid value date on record detail" + " (line " + lineNo + ")");
                            }
                        }
                        m_TotalAmount += bankFileDetail.Amount;
                        BankFileDetails.Add(bankFileDetail);
                    }
                }

                if (m_TotalAmount - tmpHeaderTotalAmount >= 0.01 || RecordCount != tmpHeaderRecordCount)
                {
                    throw new Exception("Total Amount / Record Count does not match with File Header");
                }
            }
            finally
            {
                bankFileStream.Close();
            }
        }