public DanishFormatFieldBase SecondaryCreateDomesticFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Company company, bool glJournalGenerated = false) { var danishFields = new BankDataFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); DomesticPaymentType(danishFields, tran); danishFields.TransTypeCommand = BankDataPayFormat.TRANSTYPE_IB030202000005; danishFields.Index = BankDataPayFormat.INDEX02; danishFields.SenderName = NETSNorge.processString(company._Name, 35, false); danishFields.SenderAddress1 = NETSNorge.processString(company._Address1, 35, false); danishFields.SenderAddress2 = NETSNorge.processString(company._Address2, 35, false); danishFields.SenderAddress3 = NETSNorge.processString(company._Address3, 35, false); danishFields.ReservetForXML = new List <string> { NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 48, false), NETSNorge.processString(string.Empty, 255, false), NETSNorge.processString(string.Empty, 255, false) }; return(danishFields); }
public DanishFormatFieldBase CreateDomesticFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new SDCFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); DomesticPaymentType(danishFields, tran); danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_3; var paymentAmount = Math.Round(tran.PaymentAmount, 2); var paymentAmountSTR = paymentAmount.ToString("F"); danishFields.AmountSTR = NETSNorge.processString(paymentAmountSTR, 15, true); danishFields.Receipt = "N"; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = NETSNorge.processString(internalAdvText, 20, false); var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); danishFields.Blanks = NETSNorge.processString(string.Empty, 4, false); danishFields.BeneficiaryAdviceText = NETSNorge.processString(externalAdvText, 20, false); danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public void DomesticPaymentType(DanishFormatFieldBase _field, CreditorTransPayment tran) { var field = _field as BankDataFormatFields; field.SwiftAddress = string.Empty; field.CountryCode = string.Empty; field.FormType = "Vendor Bank Account"; var bban = tran.PaymentId ?? string.Empty; bban = Regex.Replace(bban, "[^0-9]", ""); string regNum = bban.Substring(0, 4); bban = bban.Remove(0, 4); bban = bban.PadLeft(10, '0'); field.ToAccountRegNr = NETSNorge.processString(regNum, 4, false); field.ToAccountNumber = NETSNorge.processString(bban, 10, false); }
public DanishFormatFieldBase CreateIndbetalingskortFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new BankDataFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = BankDataPayFormat.TRANSTYPE_IB030207000002; danishFields.Index = BankDataPayFormat.INDEX01; var lineamountint = NumberConvert.ToLong(tran.PaymentAmount * 100d); danishFields.AmountLong = lineamountint; danishFields.FromAccountType = 2; danishFields.GiroReg = NETSNorge.processString(string.Empty, 4, false); if (danishFields.FormType == BankFormatBase.FIK04) { danishFields.ToAccountGiro = NETSNorge.processString(danishFields.ToAccountNumber, 10, false); danishFields.ToAccountCreditor = NETSNorge.processString(string.Empty, 8, false); } else { danishFields.ToAccountGiro = NETSNorge.processString(string.Empty, 10, false); danishFields.ToAccountCreditor = NETSNorge.processString(danishFields.ToAccountNumber, 8, false); } string credName = glJournalGenerated ? string.Empty : tran.Creditor.Name; danishFields.NameOfReceiver = NETSNorge.processString(credName, 32, false); danishFields.AlternativSender = NETSNorge.processString(string.Empty, 32, false); var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = NETSNorge.processString(internalAdvText, 35, false); danishFields.SenderName = NETSNorge.processString(company._Name, 35, false); danishFields.SenderAddress1 = NETSNorge.processString(company._Address1, 35, false); danishFields.SenderAddress2 = NETSNorge.processString(company._Address2, 35, false); danishFields.SenderAddress3 = NETSNorge.processString(company._Address3, 35, false); danishFields.Blanks = NETSNorge.processString(string.Empty, 35, false); if (danishFields.FormType == BankFormatBase.FIK73 || danishFields.FormType == BankFormatBase.FIK75) { var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; message = NETSNorge.processString(message, 210, false); int maxStrLen = 35; int maxLines = 6; List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.ReceiverAccountInfo = messageList; } else { danishFields.ReceiverAccountInfo = new List <string>() { NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), }; } danishFields.Blanks2 = NETSNorge.processString(string.Empty, 16, false); danishFields.Reserved = NETSNorge.processString(string.Empty, 215, false); danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public void StreamToIndbetalingskortFile(List <DanishFormatFieldBase> listOfDanskeBankPayments, StreamWriter sw) { char seperator = ','; var type = (BankDataFormatFields)listOfDanskeBankPayments[0]; foreach (var dFFdB in listOfDanskeBankPayments) { var bp = (BankDataFormatFields)dFFdB; bool firstColumn = true; int countOffields = 0; if (bp.Index == BankDataPayFormat.INDEX01 && bp.TransTypeCommand == BankDataPayFormat.TRANSTYPE_IB030207000002) { var outputFields = new[] { "TransTypeCommand", "Index", "TransferDate", "AmountLong", "FromAccountType", "FromAccountNumber", "FormType", "PaymentId", "GiroReg", "ToAccountGiro", "ToAccountCreditor", "NameOfReceiver", "AlternativSender", "OwnVoucherNumber", "SenderName", "SenderAddress1", "SenderAddress2", "SenderAddress3", "Blanks", "ReceiverAccountInfo", "Blanks2", "Reserved" }; var fields = outputFields.Select(fld => type.GetType().GetField(fld)).ToList(); foreach (FieldInfo field in fields) { bool secondBool = true; countOffields++; var val = field.GetValue(bp); string value; if (val is DateTime) { value = ((DateTime)val).ToString("yyyyMMdd"); } else { value = Convert.ToString(val); } if (!firstColumn) { sw.Write(seperator); } else { firstColumn = false; } switch (field.Name) { case "AmountLong": sw.Write("\"{0:D13}+\"", val); break; case "FromAccountNumber": string realAcc = "0" + value; realAcc = NETSNorge.processString(realAcc, 15, false); sw.Write('"'); sw.Write(realAcc); sw.Write('"'); break; case "PaymentId": string paymId = string.Empty; paymId = NETSNorge.processString(value, 19, false); sw.Write('"'); sw.Write(paymId); sw.Write('"'); break; case "ReceiverAccountInfo": foreach (var ra in bp.ReceiverAccountInfo) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = ra; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; default: value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); break; } } sw.WriteLine(); } } }
public DanishFormatFieldBase CreateFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new NordeaFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); danishFields.RecordType = "0"; danishFields.NotUsed = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.BankCode = string.Empty; switch (tran._PaymentMethod) { case PaymentTypes.PaymentMethod3: //FIK71 SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = NordeaPaymentFormat.TRANSTYPE_46; break; case PaymentTypes.PaymentMethod4: //FIK73 SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = NordeaPaymentFormat.TRANSTYPE_46; break; case PaymentTypes.PaymentMethod5: //FIK75 SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = NordeaPaymentFormat.TRANSTYPE_46; break; case PaymentTypes.PaymentMethod6: //FIK04 SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = NordeaPaymentFormat.TRANSTYPE_46; break; case PaymentTypes.VendorBankAccount: BBANIBANPaymentType(danishFields, tran); break; case PaymentTypes.IBAN: BBANIBANPaymentType(danishFields, tran); danishFields.ToAccountNumber = danishFields.ReceiverIBAN; break; } danishFields.NameOfReceiver = glJournalGenerated ? string.Empty : ShortenWordToCriteria(tran.Creditor.Name, 35); var address = string.Empty; if (glJournalGenerated == false) { List <addressFormat> listAddress = new List <addressFormat>() { new addressFormat() { AddressStr = tran.Creditor.Address1 }, new addressFormat() { AddressStr = tran.Creditor.Address2 }, new addressFormat() { AddressStr = tran.Creditor.Address3 }, }; address = string.Join(", ", listAddress.Where(l => !string.IsNullOrEmpty(l.AddressStr)).Select(l => l.AddressStr.Trim())); } danishFields.AddressOfReceiver = glJournalGenerated ? string.Empty : ShortenWordToCriteria(string.Format("{0}", address), 35); danishFields.AddressOfReceiver2 = glJournalGenerated ? string.Empty : ShortenWordToCriteria(string.Format("{0} {1}", tran.Creditor.ZipCode, tran.Creditor.City), 35); danishFields.AddressOfReceiver3 = glJournalGenerated ? string.Empty : ShortenWordToCriteria(string.Format("{0}", tran.Creditor.Country), 35); danishFields.NotUsed02 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty }; if (danishFields.TransferDate.DayOfWeek == DayOfWeek.Saturday) { danishFields.TransferDate = danishFields.TransferDate.AddDays(2); } else if (danishFields.TransferDate.DayOfWeek == DayOfWeek.Sunday) { danishFields.TransferDate = danishFields.TransferDate.AddDays(1); } var invoiceNumber = tran.invoiceNumbers == null?tran.Invoice.ToString() : tran.invoiceNumbers.ToString(); invoiceNumber = invoiceNumber == "0" ? string.Empty : string.Format("Faknr:{0}", invoiceNumber); var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; //Extended notification if (danishFields.TransTypeCommand != NordeaPaymentFormat.TRANSTYPE_49) { if (paymentFormat._ExtendedText) { if (message == null || message.Length <= 20) { message = string.Empty; } } else { message = string.Empty; } } int maxStrLen = 35; int maxLines = 4; if (tran._PaymentMethod == PaymentTypes.PaymentMethod4 || tran._PaymentMethod == PaymentTypes.PaymentMethod5 || tran._PaymentMethod == PaymentTypes.VendorBankAccount || tran._PaymentMethod == PaymentTypes.IBAN) { message = NETSNorge.processString(message, maxStrLen * maxLines, false); } else { message = NETSNorge.processString(string.Empty, maxStrLen * maxLines, false); } List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.Messages = messageList; danishFields.NotUsed03 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.Blanks = string.Empty; danishFields.Amount = Math.Round(tran.PaymentAmount, 2); danishFields.NotUsed04 = new List <string>() { string.Empty, string.Empty }; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = ShortenWordToCriteria(internalAdvText, 20); danishFields.NotUsed05 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.NotUsed06 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.TextCode = danishFields.TransTypeCommand == NordeaPaymentFormat.TRANSTYPE_45 ? NordeaPaymentFormat.TEXTCODE_SHORTADVICE : string.Empty; danishFields.Blanks2 = string.Empty; danishFields.TextToBeneficiary = danishFields.TransTypeCommand == NordeaPaymentFormat.TRANSTYPE_45 ? ShortenWordToCriteria(externalAdvText, 20) : string.Empty; maxStrLen = 35; maxLines = 37; var longAdvice = NETSNorge.processString(string.Empty, maxStrLen * maxLines, false); List <string> longAdviceList = new List <string>(); if (longAdvice != string.Empty) { if (longAdvice.Length > maxLines * maxStrLen) { longAdvice = longAdvice.Substring(0, maxLines * maxStrLen); } longAdviceList = longAdvice.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => longAdvice.Substring(i, longAdvice.Length - i >= maxStrLen ? maxStrLen : longAdvice.Length - i)).ToList <string>(); } danishFields.LongAdviceText = longAdviceList; danishFields.PromptAdvice = danishFields.TransTypeCommand == NordeaPaymentFormat.TRANSTYPE_45 ? "0" : string.Empty; danishFields.Blanks3 = string.Empty; danishFields.UniquePaymRef = danishFields.TransTypeCommand == NordeaPaymentFormat.TRANSTYPE_45 ? tran.PaymentEndToEndId.ToString() : string.Empty; danishFields.ExpenseCode = danishFields.TransTypeCommand == NordeaPaymentFormat.TRANSTYPE_49 ? NordeaPaymentFormat.EXPENSECODE_BOTH : string.Empty; return(danishFields); }
public DanishFormatFieldBase CreateForeignFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new BankDataFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedForeignReceiverBankInfo(danishFields, tran); var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; message = NETSNorge.processString(message, 140, false); int maxStrLen = 35; int maxLines = 4; List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.DescriptionOfPayment = messageList; danishFields.TransTypeCommand = BankDataPayFormat.TRANSTYPE_IB030204000003; danishFields.Index = BankDataPayFormat.INDEX01; var lineamountint = NumberConvert.ToLong(tran.PaymentAmount * 100d); danishFields.AmountLong = lineamountint; danishFields.FromAccountType = 2; danishFields.TransferCoin = new string(' ', 3); var paymentType = ISOPaymentType(tran.CurrencyLocalStr, bankAccount, danishFields.ReceiverIBAN, company); danishFields.TransferType = paymentType == UnicontaISO20022CreditTransfer.ISO20022PaymentTypes.SEPA ? BankDataPayFormat.FOREIGN_SEPATRANSFER : BankDataPayFormat.FOREIGN_STANDARDTRANSFER; if (glJournalGenerated) { danishFields.NameOfReceiver = NETSNorge.processString(string.Empty, 35, false); danishFields.AddressOfReceiver = NETSNorge.processString(string.Empty, 35, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(string.Empty, 35, false); } else { danishFields.NameOfReceiver = NETSNorge.processString(tran.Creditor.Name, 35, false); danishFields.AddressOfReceiver = NETSNorge.processString(tran.Creditor.Address1 + ", " + tran.Creditor.ZipCode + " " + tran.Creditor.City, 35, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(tran.Creditor.Address2, 35, false); } danishFields.OtherTransfers = new List <string>() { NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 4, false), NETSNorge.processString(string.Empty, 6, false), NETSNorge.processString(string.Empty, 2, false), NETSNorge.processString(string.Empty, 75, false), NETSNorge.processString(string.Empty, 75, false), NETSNorge.processString(string.Empty, 75, false), NETSNorge.processString(string.Empty, 24, false), NETSNorge.processString(string.Empty, 215, false) }; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public void StreamToForeignFile(List <DanishFormatFieldBase> listOfBankDataPayments, StreamWriter sw) { char seperator = ','; var type = (BankDataFormatFields)listOfBankDataPayments[0]; foreach (var dFFdB in listOfBankDataPayments) { var bp = (BankDataFormatFields)dFFdB; bool firstColumn = true; if (bp.Index == BankDataPayFormat.INDEX01 && bp.TransTypeCommand == BankDataPayFormat.TRANSTYPE_IB030204000003) { var outputFields = new[] { "TransTypeCommand", "Index", "TransferDate", "AmountLong", "FromAccountType", "FromAccountNumber", "Currency", "TransferCoin", "TransferType", "DescriptionOfPayment", "NameOfReceiver", "AddressOfReceiver", "AddressOfReceiver2", "OtherTransfers" }; var fields = outputFields.Select(fld => type.GetType().GetField(fld)).ToList(); foreach (FieldInfo field in fields) { bool secondBool = true; if (!firstColumn) { sw.Write(seperator); } else { firstColumn = false; } string value = string.Empty; var val = field.GetValue(bp); switch (field.Name) { case "AmountLong": sw.Write("\"{0:D13}+\"", val); break; case "FromAccountNumber": value = "0" + val; value = NETSNorge.processString(value, 15, false); sw.Write('"'); sw.Write(value); sw.Write('"'); break; case "DescriptionOfPayment": foreach (var dp in bp.DescriptionOfPayment) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = dp; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(NETSNorge.processString(value, 35, false)); sw.Write('"'); } break; case "OtherTransfers": foreach (var ot in bp.OtherTransfers) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = ot; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; default: if (val is DateTime) { value = ((DateTime)val).ToString("yyyyMMdd"); } else { value = Convert.ToString(val); } value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); break; } } sw.WriteLine(); } else if (bp.Index == BankDataPayFormat.INDEX02 && bp.TransTypeCommand == BankDataPayFormat.TRANSTYPE_IB030204000003) { var outputFields = new[] { "TransTypeCommand", "Index", "TransferType", "Blanks", "SwiftAddress", "ReceiverBankInfo", "ToAccountNumber", "ReceiverIBAN", "TransferTypeForeign", "Blanks2", "Messages", "OwnVoucherNumber", "SenderInformation" }; var fields = outputFields.Select(fld => type.GetType().GetField(fld)).ToList(); foreach (FieldInfo field in fields) { bool secondBool = true; var val = field.GetValue(bp); string value; if (val is DateTime) { value = ((DateTime)val).ToString("yyyyMMdd"); } else { value = Convert.ToString(val); } if (!firstColumn) { sw.Write(seperator); } else { firstColumn = false; } switch (field.Name) { case "ReceiverBankInfo": foreach (var rb in bp.ReceiverBankInfo) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = rb; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; case "Messages": foreach (var m in bp.Messages) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = m; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; case "SenderInformation": foreach (var si in bp.SenderInformation) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = si; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; default: value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); break; } } sw.WriteLine(); } } }
public DanishFormatFieldBase SecondaryCreateForeignFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false ) { var danishFields = new BankDataFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedForeignReceiverBankInfo(danishFields, tran); danishFields.TransTypeCommand = BankDataPayFormat.TRANSTYPE_IB030204000003; danishFields.Index = BankDataPayFormat.INDEX02; danishFields.Blanks = NETSNorge.processString(string.Empty, 1, false); danishFields.SwiftAddress = NETSNorge.processString(danishFields.SwiftAddress, 11, false); danishFields.ReceiverBankInfo = new List <string>() { NETSNorge.processString("Bank", 35, false), //Dummy text - ask bank if correct Bank name is needed NETSNorge.processString("Address", 35, false), //Dummy text - ask bank if correct Bank address is needed NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(danishFields.CountryCode, 35, false), NETSNorge.processString(string.Empty, 33, false) //BankCode }; danishFields.ToAccountNumber = NETSNorge.processString(danishFields.ToAccountNumber, 34, false); danishFields.ReceiverIBAN = NETSNorge.processString(danishFields.ReceiverIBAN, 35, false); var paymentType = ISOPaymentType(tran.CurrencyLocalStr, bankAccount, danishFields.ReceiverIBAN, company); danishFields.TransferType = paymentType == UnicontaISO20022CreditTransfer.ISO20022PaymentTypes.SEPA ? 1 : 0;; danishFields.TransferTypeForeign = 1; //Cross border payments always paid by receiver danishFields.Blanks2 = NETSNorge.processString(string.Empty, 15, false); danishFields.Messages = new List <string>() { NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false) }; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = NETSNorge.processString(internalAdvText, 35, false); danishFields.SenderInformation = new List <string>() { NETSNorge.processString(string.Empty, 15, false), NETSNorge.processString(string.Empty, 13, false), NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 7, false), NETSNorge.processString(string.Empty, 15, false), NETSNorge.processString(string.Empty, 13, false), NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 7, false), NETSNorge.processString(string.Empty, 15, false), NETSNorge.processString(string.Empty, 13, false), NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 7, false), NETSNorge.processString(string.Empty, 15, false), NETSNorge.processString(string.Empty, 13, false), NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 7, false), NETSNorge.processString(string.Empty, 15, false), NETSNorge.processString(string.Empty, 13, false), NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 7, false), NETSNorge.processString(string.Empty, 169, false), }; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public DanishFormatFieldBase CreateForeignFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new SDCFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedForeignReceiverBankInfo(danishFields, tran); danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_K037; danishFields.TransferTypeStr = "001"; danishFields.ToAccountNumber = danishFields.ToAccountNumber == string.Empty ? danishFields.ReceiverIBAN : danishFields.ToAccountNumber; danishFields.ToAccountNumber = NETSNorge.processString(danishFields.ToAccountNumber, 35, false); var paymentAmount = Math.Round(tran.PaymentAmount, 2); var paymentAmountSTR = paymentAmount.ToString("F"); danishFields.AmountSTR = NETSNorge.processString(paymentAmountSTR, 14, true); danishFields.TransferCurrency = danishFields.Currency; danishFields.Blanks = NETSNorge.processString(string.Empty, 14, false); if (glJournalGenerated) { danishFields.NameOfReceiver = NETSNorge.processString(string.Empty, 35, false); danishFields.AddressOfReceiver = NETSNorge.processString(string.Empty, 35, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(string.Empty, 35, false); } else { danishFields.NameOfReceiver = NETSNorge.processString(tran.Creditor.Name, 35, false); danishFields.AddressOfReceiver = NETSNorge.processString(tran.Creditor.Address1 + ", " + tran.Creditor.ZipCode + " " + tran.Creditor.City, 35, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(tran.Creditor.Address2, 35, false); } danishFields.Blanks2 = NETSNorge.processString(string.Empty, 35, false); danishFields.ReceiverAccountInfo = new List <string>() { NETSNorge.processString(danishFields.SwiftAddress, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false) }; var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = NETSNorge.processString(externalAdvText, 140, false); int maxStrLen = 35; int maxLines = 4; List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.DescriptionOfPayment = messageList; danishFields.Messages = new List <string>() { NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false), NETSNorge.processString(string.Empty, 35, false) }; danishFields.ExchRateType = "N"; //N=Noteringskurs, A=Aftaltkurs, T=Terminkurs danishFields.ExchRateTermContract = NETSNorge.processString(string.Empty, 10, false); danishFields.ExchRateTerm = NETSNorge.processString(string.Empty, 14, false); danishFields.ChargeAccountSeparate = "N"; danishFields.ChargeAccount = NETSNorge.processString(string.Empty, 14, false); danishFields.ChargeType = "1"; // 1 = betales i DK af afsender, i udlandet af modtager(SHA). 2 = betales af afsender (OUR), 3 = betales af modtager(BEN) danishFields.EmptyFields = new List <string>() { NETSNorge.processString(string.Empty, 1, false), NETSNorge.processString(string.Empty, 2, false), NETSNorge.processString(string.Empty, 4, false), NETSNorge.processString(string.Empty, 6, false), NETSNorge.processString(string.Empty, 140, false), }; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public DanishFormatFieldBase CreateDanishFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new DanskBankFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); danishFields.TransTypeCommand = DanskeBankPayFormat.TRANSTYPE_CMBO; switch (tran._PaymentMethod) { case PaymentTypes.PaymentMethod3: //FIK71 SharedFIKPayment(danishFields, tran); danishFields.ToAccountNumber = string.Format("IK{0}", danishFields.ToAccountNumber); danishFields.PaymentId = danishFields.PaymentId.PadLeft(15, '0'); break; case PaymentTypes.PaymentMethod4: //FIK73 SharedFIKPayment(danishFields, tran); danishFields.ToAccountNumber = string.Format("IK{0}", danishFields.ToAccountNumber); break; case PaymentTypes.PaymentMethod5: //FIK75 SharedFIKPayment(danishFields, tran); danishFields.ToAccountNumber = string.Format("IK{0}", danishFields.ToAccountNumber); danishFields.PaymentId = danishFields.PaymentId.PadLeft(16, '0'); break; case PaymentTypes.PaymentMethod6: //FIK04 SharedFIKPayment(danishFields, tran); danishFields.ToAccountNumber = string.Format("IK{0}", danishFields.ToAccountNumber); danishFields.PaymentId = danishFields.PaymentId.PadLeft(16, '0'); break; case PaymentTypes.VendorBankAccount: BBANIBANPaymentType(danishFields, tran); break; case PaymentTypes.IBAN: BBANIBANPaymentType(danishFields, tran); danishFields.ToAccountNumber = danishFields.ReceiverIBAN; break; } danishFields.Amount = Math.Round(tran.PaymentAmount, 2); danishFields.ClearingTypeChannel = "N"; danishFields.NotUsed = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.LetterToSend = "N"; danishFields.NotUsed02 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.TextToSender = internalAdvText.Length > 20 ? internalAdvText.Substring(0, 20) : internalAdvText; danishFields.Blanks = string.Empty; danishFields.DebtorId = string.Empty; danishFields.OwnVoucherNumber = danishFields.TextToSender; var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; danishFields.TextToBeneficiary = message.Length > 20 ? message.Substring(0, 20) : message; //Extended notification if (paymentFormat._ExtendedText) { if (message == null || message.Length <= 20) { message = string.Empty; } } else { message = string.Empty; } int maxStrLen = 35; int maxLines = 41; if (tran._PaymentMethod == PaymentTypes.PaymentMethod4 || tran._PaymentMethod == PaymentTypes.PaymentMethod5 || tran._PaymentMethod == PaymentTypes.VendorBankAccount) { message = NETSNorge.processString(message, maxStrLen * maxLines, false); } else { message = NETSNorge.processString(string.Empty, maxStrLen * maxLines, false); } List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.Messages = messageList; danishFields.NotUsed03 = new List <string>() { string.Empty, string.Empty, string.Empty }; if (glJournalGenerated == true) { danishFields.ZipCodeOfReceiver = string.Empty; danishFields.CityOfReceiver = string.Empty; } else { var credZip = tran.Creditor.ZipCode ?? string.Empty; var credCity = tran.Creditor.City ?? string.Empty; danishFields.ZipCodeOfReceiver = credZip.Length > 4 ? credZip.Substring(0, 4) : credZip; danishFields.CityOfReceiver = credCity.Length > 28 ? credCity.Substring(0, 28) : credCity; } danishFields.NotUsed04 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.DebtorsIdentificationOfThePayment = string.Empty; danishFields.Reference = tran.PaymentEndToEndId.ToString(); danishFields.Orderingofelectronicaladvice = string.Empty; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public DanishFormatFieldBase CreateFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new BECFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); switch (tran._PaymentMethod) { case PaymentTypes.VendorBankAccount: danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH356; BBANIBANPaymentType(danishFields, tran); break; case PaymentTypes.IBAN: danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH400; BBANIBANPaymentType(danishFields, tran); danishFields.ToAccountNumber = danishFields.ToAccountNumber != string.Empty ? danishFields.ToAccountNumber : danishFields.ReceiverIBAN; danishFields.PaymentId = danishFields.SwiftAddress; break; case PaymentTypes.PaymentMethod3: SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH351; danishFields.PaymentId = string.Format("{0}{1}", BankFormatBase.FIK71, danishFields.PaymentId); danishFields.ToAccountNumber = string.Format("{0} {1}", BankFormatBase.FI, danishFields.ToAccountNumber); break; case PaymentTypes.PaymentMethod4: SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH357; danishFields.PaymentId = string.Format("{0}{1}", BankFormatBase.FIK73, danishFields.PaymentId); danishFields.ToAccountNumber = string.Format("{0} {1}", BankFormatBase.FI, danishFields.ToAccountNumber); break; case PaymentTypes.PaymentMethod5: SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH358; danishFields.PaymentId = string.Format("{0}{1}", BankFormatBase.FIK75, danishFields.PaymentId); danishFields.ToAccountNumber = string.Format("{0} {1}", BankFormatBase.FI, danishFields.ToAccountNumber); break; case PaymentTypes.PaymentMethod6: SharedFIKPayment(danishFields, tran); danishFields.TransTypeCommand = BECPayFormat.TRANSTYPE_ERH352; danishFields.PaymentId = string.Format("{0}{1}", BankFormatBase.FIK04, danishFields.PaymentId); danishFields.ToAccountNumber = string.Format("{0} {1}", BankFormatBase.GIRO, danishFields.ToAccountNumber); break; default: break; } danishFields.BeneficiaryName = glJournalGenerated ? string.Empty : ShortenWordToCriteria(tran.Creditor.Name, 35); var paymentAmount = Math.Round(tran.PaymentAmount, 2); if (danishFields.TransTypeCommand == BECPayFormat.TRANSTYPE_ERH400) { danishFields.Column06 = ShortenWordToCriteria(string.Format("{0}, {1} {2}", tran.Creditor.Address1, tran.Creditor.ZipCode, tran.Creditor.City), 35); //Modtager adresse1 danishFields.Column07 = ShortenWordToCriteria(tran.Creditor.Address2, 35); //Modtager adresse2 danishFields.Column08 = ShortenWordToCriteria(tran.Creditor.Address3, 35); //Modtager adresse3 danishFields.AmountForeignStr = paymentAmount.ToString("F"); danishFields.CurrencyCode = danishFields.Currency.ToString(); danishFields.ReferenceToPrimaryDoc = "02"; danishFields.ExpenseCode = "S"; } else { danishFields.Column06 = string.Empty; //Frekvens danishFields.Column07 = string.Empty; //Antal gange danishFields.Column08 = string.Empty; //Slutdato danishFields.AmountLocalStr = paymentAmount.ToString("F"); danishFields.CurrencyCode = String.Empty; danishFields.ReferenceToPrimaryDoc = "N"; danishFields.ExpenseCode = string.Empty; } var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = ShortenWordToCriteria(internalAdvText, 20); danishFields.ClearingCode = string.Empty; danishFields.Blanks2 = string.Empty; danishFields.NotUsed = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.NotUsed02 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; if (tran._PaymentMethod == PaymentTypes.VendorBankAccount || tran._PaymentMethod == PaymentTypes.PaymentMethod4) { danishFields.SenderName = ShortenWordToCriteria(company._Name, 35); danishFields.SenderAddress1 = ShortenWordToCriteria(company._Address1, 35); danishFields.SenderAddress2 = ShortenWordToCriteria(company._Address2, 35); danishFields.SenderAddress3 = ShortenWordToCriteria(company._Address3, 35); } else { danishFields.SenderName = string.Empty; danishFields.SenderAddress1 = string.Empty; danishFields.SenderAddress2 = string.Empty; danishFields.SenderAddress3 = string.Empty; } danishFields.Blanks = string.Empty; var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; if (tran._PaymentMethod == PaymentTypes.VendorBankAccount && danishFields.TransTypeCommand != BECPayFormat.TRANSTYPE_ERH400) { danishFields.PaymentId = ShortenWordToCriteria(message, 20); } //Extended notification if (danishFields.TransTypeCommand != BECPayFormat.TRANSTYPE_ERH400) { if (paymentFormat._ExtendedText) { if (message == null || message.Length <= 20) { message = string.Empty; } } else { message = string.Empty; } } int maxStrLen = 35; int maxLines = 6; if (tran._PaymentMethod == PaymentTypes.PaymentMethod4 || tran._PaymentMethod == PaymentTypes.PaymentMethod5 || tran._PaymentMethod == PaymentTypes.VendorBankAccount || tran._PaymentMethod == PaymentTypes.IBAN) { message = NETSNorge.processString(message, maxStrLen * maxLines, false); } else { message = NETSNorge.processString(string.Empty, maxStrLen * maxLines, false); } List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.Messages = messageList; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public DanishFormatFieldBase CreateDomesticFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new BankDataFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); DomesticPaymentType(danishFields, tran); danishFields.TransTypeCommand = BankDataPayFormat.TRANSTYPE_IB030202000005; danishFields.Index = BankDataPayFormat.INDEX01; var lineamountint = NumberConvert.ToLong(tran.PaymentAmount * 100d); danishFields.AmountLong = lineamountint; danishFields.FromAccountType = 2; danishFields.TransferType = 2; danishFields.ClearingTypeChannel = "0"; if (glJournalGenerated) { danishFields.NameOfReceiver = NETSNorge.processString(string.Empty, 32, false); danishFields.AddressOfReceiver = NETSNorge.processString(string.Empty, 32, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(string.Empty, 32, false); danishFields.ZipCodeOfReceiver = NETSNorge.processString(string.Empty, 4, false); danishFields.CityOfReceiver = NETSNorge.processString(string.Empty, 32, false); } else { danishFields.NameOfReceiver = NETSNorge.processString(tran.Creditor.Name, 32, false); danishFields.AddressOfReceiver = NETSNorge.processString(tran.Creditor.Address1, 32, false); danishFields.AddressOfReceiver2 = NETSNorge.processString(tran.Creditor.Address2, 32, false); danishFields.ZipCodeOfReceiver = NETSNorge.processString(tran.Creditor.ZipCode, 4, false); danishFields.CityOfReceiver = NETSNorge.processString(tran.Creditor.City, 32, false); } var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = NETSNorge.processString(internalAdvText, 35, false); //Message to Beneficiary >> var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; danishFields.ReceiverAccountStatement = NETSNorge.processString(externalAdvText, 35, false); //Extended notification if (paymentFormat._ExtendedText) { if (message == null || message.Length <= 35) { message = string.Empty; } } else { message = string.Empty; } message = NETSNorge.processString(message, 315, false); int maxStrLen = 35; int maxLines = 9; List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } //danishFields.ReceiverAccountStatement = NETSNorge.processString(message, 35, false); danishFields.AdviceText = messageList; //Message to Beneficiary << danishFields.Blanks = NETSNorge.processString(string.Empty, 1, false); danishFields.Blanks2 = NETSNorge.processString(string.Empty, 215, false); danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public void StreamToDomesticFile(List <DanishFormatFieldBase> listOfDanskeBankPayments, StreamWriter sw) { char seperator = ','; var type = (BankDataFormatFields)listOfDanskeBankPayments[0]; foreach (var dFFdB in listOfDanskeBankPayments) { var bp = (BankDataFormatFields)dFFdB; bool firstColumn = true; if (bp.Index == BankDataPayFormat.INDEX01 && bp.TransTypeCommand == BankDataPayFormat.TRANSTYPE_IB030202000005) { var outputFields = new[] { "TransTypeCommand", "Index", "TransferDate", "AmountLong", "Currency", "FromAccountType", "FromAccountNumber", "TransferType", "ToAccountRegNr", "ToAccountNumber", "ClearingTypeChannel", "ReceiverAccountStatement", "NameOfReceiver", "AddressOfReceiver", "AddressOfReceiver2", "ZipCodeOfReceiver", "CityOfReceiver", "OwnVoucherNumber", "AdviceText", "Blanks", "Blanks2" }; var fields = outputFields.Select(fld => type.GetType().GetField(fld)).ToList(); foreach (FieldInfo field in fields) { bool secondBool = true; var val = field.GetValue(bp); string value; if (val is DateTime) { value = ((DateTime)val).ToString("yyyyMMdd"); } else { value = Convert.ToString(val); } if (!firstColumn) { sw.Write(seperator); } else { firstColumn = false; } switch (field.Name) { case "AmountLong": sw.Write("\"{0:D13}+\"", val); break; case "FromAccountNumber": string realAcc = "0" + value; realAcc = NETSNorge.processString(realAcc, 15, false); sw.Write('"'); sw.Write(realAcc); sw.Write('"'); break; case "AdviceText": foreach (var a in bp.AdviceText) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = a; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; default: value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); break; } } sw.WriteLine(); } else if (bp.Index == BankDataPayFormat.INDEX02 && bp.TransTypeCommand == BankDataPayFormat.TRANSTYPE_IB030202000005) { var outputFields = new[] { "TransTypeCommand", "Index", "SenderName", "SenderAddress1", "SenderAddress2", "SenderAddress3", "ReservetForXML" }; var fields = outputFields.Select(fld => type.GetType().GetField(fld)).ToList(); foreach (FieldInfo field in fields) { bool secondBool = true; var val = field.GetValue(bp); string value; if (val is DateTime) { value = ((DateTime)val).ToString("yyyyMMdd"); } else { value = Convert.ToString(val); } if (!firstColumn) { sw.Write(seperator); } else { firstColumn = false; } switch (field.Name) { case "ReservetForXML": foreach (var r in bp.ReservetForXML) { if (!secondBool) { sw.Write(seperator); } else { secondBool = false; } value = r; value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); } break; default: value = Regex.Replace(value, "[\"\';]", " "); sw.Write('"'); sw.Write(value); sw.Write('"'); break; } } sw.WriteLine(); } } }
public DanishFormatFieldBase CreateForeignFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new DanskBankFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedForeignReceiverBankInfo(danishFields, tran); danishFields.TransTypeCommand = DanskeBankPayFormat.TRANSTYPE_CMUO; danishFields.ToAccountNumber = danishFields.ToAccountNumber == string.Empty ? danishFields.ReceiverIBAN : danishFields.ToAccountNumber; danishFields.Amount = Math.Round(tran.PaymentAmount, 2); danishFields.CurencyOfEquivalentAmount = string.Empty; danishFields.TransferType = 1; //Changed from formtype if (glJournalGenerated) { danishFields.NameOfReceiver = ShortenWordToCriteria(string.Empty, 35); danishFields.AddressOfReceiver = ShortenWordToCriteria(string.Empty, 35); danishFields.AddressOfReceiver2 = ShortenWordToCriteria(string.Empty, 35); } else { danishFields.NameOfReceiver = ShortenWordToCriteria(tran.Creditor.Name, 35); danishFields.AddressOfReceiver = ShortenWordToCriteria(string.Format("{0}, {1} {2}", tran.Creditor.Address1, tran.Creditor.ZipCode, tran.Creditor.City), 35); danishFields.AddressOfReceiver2 = ShortenWordToCriteria(tran.Creditor.Address2, 35); } danishFields.Blanks = string.Empty; danishFields.ReceiverBankInfo = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.CostAccountTransfer = 1; //1=To be shared var invoiceNumber = tran.invoiceNumbers == null?tran.Invoice.ToString() : tran.invoiceNumbers.ToString(); invoiceNumber = invoiceNumber == "0" ? string.Empty : string.Format("INV:{0}", invoiceNumber); var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); var message = externalAdvText; int maxStrLen = 35; int maxLines = 4; message = NETSNorge.processString(message, maxStrLen * maxLines, false); List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.Messages = messageList; danishFields.NotUsed = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.TextToSender = internalAdvText.Length > 20 ? internalAdvText.Substring(0, 20) : internalAdvText; danishFields.NotUsed02 = new List <string>() { string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty }; danishFields.ExchangeRateType = string.Empty; danishFields.Branch = string.Empty; danishFields.NotUsed03 = new List <string>() { string.Empty, string.Empty, string.Empty }; danishFields.NotUsed04 = new List <string>() { string.Empty, string.Empty }; danishFields.Blanks2 = string.Empty; danishFields.Blanks3 = string.Empty; danishFields.Reference = tran.PaymentEndToEndId.ToString(); danishFields.Orderingofelectronicaladvice = string.Empty; danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }
public DanishFormatFieldBase CreateFIKFormatField(CreditorTransPayment tran, CreditorPaymentFormat paymentFormat, BankStatement bankAccount, Uniconta.DataModel.Creditor creditor, Company company, bool glJournalGenerated = false) { var danishFields = new SDCFormatFields(); SharedCodeForCreateBankFormatFields(company, tran, paymentFormat, bankAccount, danishFields); SharedFIKPayment(danishFields, tran); switch (tran._PaymentMethod) { case PaymentTypes.PaymentMethod3: //FIK71 danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_K020; danishFields.ToAccountNumber = danishFields.ToAccountNumber.PadLeft(8, '0'); danishFields.PaymentId = danishFields.PaymentId.PadLeft(15, '0'); break; case PaymentTypes.PaymentMethod4: //FIK73 danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_K073; danishFields.ToAccountNumber = danishFields.ToAccountNumber.PadLeft(8, '0'); break; case PaymentTypes.PaymentMethod5: //FIK75 danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_K075; danishFields.ToAccountNumber = danishFields.ToAccountNumber.PadLeft(8, '0'); danishFields.PaymentId = danishFields.PaymentId.PadLeft(16, '0'); break; case PaymentTypes.PaymentMethod6: //FIK04 danishFields.TransTypeCommand = SDCPayFormat.RECORDTYPE_K006; danishFields.ToAccountNumber = danishFields.ToAccountNumber.PadLeft(10, '0'); danishFields.PaymentId = danishFields.PaymentId.PadLeft(19, '0'); break; } var paymentAmount = Math.Round(tran.PaymentAmount, 2); var paymentAmountSTR = paymentAmount.ToString("F"); danishFields.AmountSTR = NETSNorge.processString(paymentAmountSTR, 15, true);; danishFields.Receipt = "N"; var internalAdvText = StandardPaymentFunctions.InternalMessage(paymentFormat._OurMessage, tran, company, creditor); danishFields.OwnVoucherNumber = NETSNorge.processString(internalAdvText, 20, false); if (danishFields.FormType == BankFormatBase.FIK04 || danishFields.FormType == BankFormatBase.FIK73) { danishFields.OtherSender = new List <string>() { NETSNorge.processString("N", 1, false), NETSNorge.processString(string.Empty, 18, false), NETSNorge.processString(string.Empty, 32, false), NETSNorge.processString(string.Empty, 32, false), NETSNorge.processString(string.Empty, 4, false), }; } if (danishFields.FormType == BankFormatBase.FIK73 || danishFields.FormType == BankFormatBase.FIK75 || danishFields.FormType == BankFormatBase.FIK04) { //Message to Beneficiary >> var externalAdvText = StandardPaymentFunctions.ExternalMessage(paymentFormat._Message, tran, company, creditor); danishFields.ReceiverAccountStatement = NETSNorge.processString(externalAdvText, 35, false); var message = externalAdvText; var maxStrLen = 35; var numLines = message.Length / (double)maxStrLen; var maxLines = (int)Math.Ceiling(numLines); maxLines = maxLines > 40 ? 40 : maxLines; message = NETSNorge.processString(message, maxLines * maxStrLen, false); List <string> messageList = new List <string>(); if (message != string.Empty) { if (message.Length > maxLines * maxStrLen) { message = message.Substring(0, maxLines * maxStrLen); } messageList = message.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => message.Substring(i, message.Length - i >= maxStrLen ? maxStrLen : message.Length - i)).ToList <string>(); } danishFields.AdviceText = messageList; var maxLinesSTR = maxLines.ToString(); danishFields.AdviceTextLines = maxLinesSTR.PadLeft(3, '0'); //Message to Beneficiary << } else { danishFields.AdviceTextLines = string.Empty; } danishFields.UniquePaymRef = tran.PaymentEndToEndId.ToString(); return(danishFields); }