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); }
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); }
protected override string GenerateBankFileDetail(GenericBankFileDetail bankFileDetail) { if (BankFileFormat.Equals(BankFileFormatEnum.EXCEL)) { return(string.Empty); } else { return(GenerateBankFileDetailText(bankFileDetail)); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); } }