public override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { if (paymentType != ISO20022PaymentTypes.DOMESTIC && (companyBankEnum == CompanyBankENUM.Nordea_DK || companyBankEnum == CompanyBankENUM.Nordea_NO)) { int maxLines = 3; int maxStrLen = 34; string adrText = string.Concat(creditor._Address1, " ", creditor._Address2, " ", creditor._Address3, " ", creditor._ZipCode, " ", creditor._City); if (adrText.Length > maxLines * maxStrLen) { adrText = adrText.Substring(0, maxLines * maxStrLen); } var resultList = adrText.Select((x, i) => i) .Where(i => i % maxStrLen == 0) .Select(i => adrText.Substring(i, adrText.Length - i >= maxStrLen ? maxStrLen : adrText.Length - i)).ToArray(); var len = resultList.Length; creditor._Address1 = len > 0 ? resultList[0].Trim() : null; creditor._Address2 = len > 1 ? resultList[1].Trim() : null; creditor._Address3 = len > 2 ? resultList[2].Trim() : null; unstructured = true; } return(base.CreditorAddress(creditor, creditorAddress, unstructured)); }
/// <summary> /// Creditor Address /// </summary> public virtual PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { var adr1 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address1, allowedCharactersRegEx, replaceCharactersRegEx); var adr2 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address2, allowedCharactersRegEx, replaceCharactersRegEx); var adr3 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address3, allowedCharactersRegEx, replaceCharactersRegEx); var zipCode = StandardPaymentFunctions.RegularExpressionReplace(creditor._ZipCode, allowedCharactersRegEx, replaceCharactersRegEx); var city = StandardPaymentFunctions.RegularExpressionReplace(creditor._City, allowedCharactersRegEx, replaceCharactersRegEx); if (creditor._ZipCode != null && !unstructured) { creditorAddress.ZipCode = zipCode; creditorAddress.CityName = city; creditorAddress.StreetName = adr1; } else { creditorAddress.AddressLine1 = adr1; creditorAddress.AddressLine2 = adr2; creditorAddress.AddressLine3 = adr3; creditorAddress.Unstructured = true; } creditorAddress.CountryId = ((CountryISOCode)creditor._Country).ToString(); return(creditorAddress); }
public override void SetParameter(IEnumerable <ValuePair> Parameters) { foreach (var rec in Parameters) { if (rec.Name == null || rec.Name == "Master") { DCAccount master; if (rec.Value == "Debtor") { master = new Uniconta.DataModel.Debtor(); } else if (rec.Value == "Creditor") { master = new Uniconta.DataModel.Creditor(); } else { continue; } master.SetMaster(api.CompanyEntity); dgContactGrid.UpdateMaster(master as UnicontaBaseEntity); var header = string.Concat(Uniconta.ClientTools.Localization.lookup("Contacts"), ": ", Uniconta.ClientTools.Localization.lookup(master.GetType().Name)); SetHeader(header); } } base.SetParameter(Parameters); }
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); }
async private void BindContact(Uniconta.DataModel.Creditor creditor) { if (creditor == null) { return; } var cache = api.GetCache(typeof(Contact)) ?? await api.LoadCache(typeof(Contact)); if (cache == null || cache.Count == 0) { return; } cmbContactName.ItemsSource = new ContactCacheFilter(cache, 2, creditor._Account); cmbContactName.DisplayMember = "KeyName"; if (editrow != null && editrow._ContactRef != 0) { var contact = cache.Get(editrow._ContactRef); cmbContactName.SelectedItem = contact; if (contact == null) { editrow._ContactRef = 0; editrow.ContactName = null; } } }
public override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { if (companyBankEnum == CompanyBankENUM.CreditSuisse) { return(base.CreditorAddress(creditor, creditorAddress, unstructured)); } return(null); }
public CreditorStatement(SynchronizeEntity syncEntity) : base(syncEntity, true) { _master = syncEntity.Row as Uniconta.DataModel.Creditor; if (_master != null) { FromAccount = _master._Account; ToAccount = _master._Account; } Init(); SetHeader(); }
public override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { switch (companyBankEnum) { case CompanyBankENUM.Deutsche_Kreditwirtschaft: case CompanyBankENUM.Volks_Raiffeisenbanken: case CompanyBankENUM.Commerzbank: return(null); default: return(base.CreditorAddress(creditor, creditorAddress)); } }
/// <summary> /// LT: Only two Addresslines are accepted /// </summary> public override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { if (CredPaymFormat.Bank == ltBank.Standard) { return(null); } var adr1 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address1, allowedCharactersRegEx, replaceCharactersRegEx); var adr2 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address2, allowedCharactersRegEx, replaceCharactersRegEx); var adr3 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address3, allowedCharactersRegEx, replaceCharactersRegEx); var zipCode = StandardPaymentFunctions.RegularExpressionReplace(creditor._ZipCode, allowedCharactersRegEx, replaceCharactersRegEx); var city = StandardPaymentFunctions.RegularExpressionReplace(creditor._City, allowedCharactersRegEx, replaceCharactersRegEx); unstructured = false; switch (CredPaymFormat.Bank) { case ltBank.Swedbank: case ltBank.SEB: case ltBank.Luminor: unstructured = false; break; default: unstructured = false; break; } if (unstructured) { var strB = StringBuilderReuse.Create(); var adr1_result = strB.Append(adr1).Append(AddSeparator(adr2)).Append(adr2).ToString(); creditorAddress.AddressLine1 = adr1_result.Length > 70 ? adr1_result.Substring(0, 70) : adr1_result; strB.Clear(); var adr2_result = strB.Append(adr3).Append(AddSeparator(zipCode)).Append(zipCode).Append(AddSeparator(city)).Append(city).ToString(); creditorAddress.AddressLine2 = adr2_result.Length > 70 ? adr2_result.Substring(0, 70) : adr2_result; creditorAddress.Unstructured = true; strB.Release(); } else { creditorAddress.ZipCode = zipCode; creditorAddress.CityName = city; creditorAddress.StreetName = adr1; } creditorAddress.CountryId = ((CountryISOCode)creditor._Country).ToString(); return(creditorAddress); }
protected override void SyncEntityMasterRowChanged(UnicontaBaseEntity args) { _master = args as Uniconta.DataModel.Creditor; if (_master != null) { FromAccount = _master._Account; ToAccount = _master._Account; } SetHeader(); if (_master != null) { cmbFromAccount.EditValue = _master._Account; cmbToAccount.EditValue = _master._Account; LoadDCTrans(); } }
async void SetValuesFromMaster(Uniconta.DataModel.Creditor creditor) { if (creditor == null) { return; } var loadedOrder = LoadedRow as DCOrder; if (loadedOrder?._DCAccount == creditor._Account) { return; } editrow.SetMaster(creditor); layoutItems.DataContext = null; layoutItems.DataContext = editrow; if (!RecordLoadedFromTemplate || creditor._DeliveryAddress1 != null) { editrow.DeliveryName = creditor._DeliveryName; editrow.DeliveryAddress1 = creditor._DeliveryAddress1; editrow.DeliveryAddress2 = creditor._DeliveryAddress2; editrow.DeliveryAddress3 = creditor._DeliveryAddress3; editrow.DeliveryCity = creditor._DeliveryCity; if (editrow.DeliveryZipCode != creditor._DeliveryZipCode) { lookupZipCode = false; editrow.DeliveryZipCode = creditor._DeliveryZipCode; } if (creditor._DeliveryCountry != 0) { editrow.DeliveryCountry = creditor._DeliveryCountry; } else { editrow.DeliveryCountry = null; } } TableField.SetUserFieldsFromRecord(creditor, editrow); BindContact(creditor); await api.Read(creditor); editrow.RefreshBalance(); }
/// <summary> /// Creditor Address /// </summary> public override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { var adr1 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address1, allowedCharactersRegEx, replaceCharactersRegEx); var adr2 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address2, allowedCharactersRegEx, replaceCharactersRegEx); var adr3 = StandardPaymentFunctions.RegularExpressionReplace(creditor._Address3, allowedCharactersRegEx, replaceCharactersRegEx); var zipCode = StandardPaymentFunctions.RegularExpressionReplace(creditor._ZipCode, allowedCharactersRegEx, replaceCharactersRegEx); var city = StandardPaymentFunctions.RegularExpressionReplace(creditor._City, allowedCharactersRegEx, replaceCharactersRegEx); if (creditor._ZipCode != null) { creditorAddress.ZipCode = zipCode; creditorAddress.CityName = city; creditorAddress.StreetName = adr1; } else { if (companyBankEnum == CompanyBankENUM.Rabobank) //Rabobank: Only two Addresslines are accepted { var strB = StringBuilderReuse.Create(); var adr1_result = strB.Append(adr1).Append(AddSeparator(adr2)).Append(adr2).ToString(); creditorAddress.AddressLine1 = adr1_result.Length > 70 ? adr1_result.Substring(0, 70) : adr1_result; strB.Clear(); var adr2_result = strB.Append(adr3).Append(AddSeparator(zipCode)).Append(zipCode).Append(AddSeparator(city)).Append(city).ToString(); creditorAddress.AddressLine2 = adr2_result.Length > 70 ? adr2_result.Substring(0, 70) : adr2_result; creditorAddress.Unstructured = true; strB.Release(); } else { creditorAddress.AddressLine1 = adr1; creditorAddress.AddressLine2 = adr2; creditorAddress.AddressLine3 = adr3; creditorAddress.Unstructured = true; } } creditorAddress.CountryId = ((CountryISOCode)creditor._Country).ToString(); return(creditorAddress); }
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 override PostalAddress CreditorAddress(Uniconta.DataModel.Creditor creditor, PostalAddress creditorAddress, bool unstructured = false) { return(null); }
public CreditorStatementList(Uniconta.DataModel.Creditor cred) { this.cred = cred ?? new Uniconta.DataModel.Creditor(); }
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 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 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 static string InternalMessage(string messageFormat, CreditorTransPayment rec, Company company, Uniconta.DataModel.Creditor creditor) { var sbAdvText = StringBuilderReuse.Create(); var advText = string.Empty; var country = company._CountryId; var tuple = MessageLabel(country); if (messageFormat != null) { sbAdvText.Append(messageFormat); if (rec.invoiceNumbers != null && rec.MergePaymId != MERGEID_SINGLEPAYMENT) { sbAdvText.Remove("Fak:%1").Trim(); //Removes invoicenumbers for merge payment due to limitation of characters sbAdvText.Remove("Fak: %1").Trim(); sbAdvText.Remove("%1").Trim(); } sbAdvText.Replace("%1", "{0}").Replace("%2", "{1}").Replace("%3", "{2}").Replace("%4", "{3}").Replace("%5", "{4}"); advText = string.Format(sbAdvText.ToStringAndRelease(), rec.InvoiceAN, creditor?._Account, creditor?._Name, NumberConvert.ToStringNull(rec.Voucher), NumberConvert.ToStringNull(rec.PaymentRefId)); } else //Default message { BuildBankAdviceText(sbAdvText, NumberConvert.ToString(rec.PaymentEndToEndId), tuple.Item3); if (rec.invoiceNumbers == null || rec.MergePaymId == MERGEID_SINGLEPAYMENT) { BuildBankAdviceText(sbAdvText, rec.InvoiceAN ?? string.Empty, tuple.Item2); } BuildBankAdviceText(sbAdvText, creditor?._Account, tuple.Item1); advText = sbAdvText.ToStringAndRelease(); } return(advText); }
public static string ExternalMessage(string messageFormat, CreditorTransPayment rec, Company company, Uniconta.DataModel.Creditor creditor, bool UIMessage = false) { var sbAdvText = StringBuilderReuse.Create(); string advText; var country = creditor == null || creditor._Country == CountryCode.Unknown ? company._CountryId : creditor._Country; var tuple = MessageLabel(country); if (UIMessage == false && rec.invoiceNumbers != null && rec.MergePaymId != MERGEID_SINGLEPAYMENT) { var invNumbers = rec.invoiceNumbers.ToString(); var invNumbersCheck = Regex.Replace(invNumbers, "[^1-9]", ""); BuildBankAdviceText(sbAdvText, creditor?._OurAccount, tuple.Item1); BuildBankAdviceText(sbAdvText, invNumbersCheck == string.Empty ? invNumbersCheck : invNumbers, tuple.Item2); if (sbAdvText.Length == 0) { sbAdvText.Append(company.Name); } advText = sbAdvText.ToStringAndRelease(); } else { if (!string.IsNullOrEmpty(rec._Message)) { sbAdvText.Release(); return(rec._Message); } if (messageFormat != null) { sbAdvText.Append(messageFormat); if (rec.InvoiceAN == null && sbAdvText.IndexOf("%1") >= 0) { MessageFormatRemove(sbAdvText, "%1"); } if (company.Name == null && sbAdvText.IndexOf("%2") >= 0) { MessageFormatRemove(sbAdvText, "%2"); } if (rec.CashDiscount == 0 && sbAdvText.IndexOf("%3") >= 0) { MessageFormatRemove(sbAdvText, "%3"); } if (creditor?._OurAccount == null && sbAdvText.IndexOf("%4") >= 0) { MessageFormatRemove(sbAdvText, "%4"); } if (rec.TransType == null && sbAdvText.IndexOf("%5") >= 0) { MessageFormatRemove(sbAdvText, "%5"); } advText = string.Format(sbAdvText.Replace("%1", "{0}").Replace("%2", "{1}").Replace("%3", "{2}").Replace("%4", "{3}").Replace("%5", "{4}").ToStringAndRelease(), rec.InvoiceAN, company.Name, rec.CashDiscount, creditor?._OurAccount, rec.TransType); } else if (UIMessage == false) //Default message { BuildBankAdviceText(sbAdvText, creditor?._OurAccount, tuple.Item1); BuildBankAdviceText(sbAdvText, rec.InvoiceAN, tuple.Item2); BuildBankAdviceText(sbAdvText, company.Name); advText = sbAdvText.ToStringAndRelease(); } else { sbAdvText.Release(); advText = string.Empty; } } return(advText); }
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 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); }
private async void ReadFromBilagscan(UnicontaBaseEntity selectedItem) { #if !SILVERLIGHT if (!readingFromBilagscan) { readingFromBilagscan = true; bool processLines = false; var accessToken = await Bilagscan.Account.GetBilagscanAccessToken(api); var noOfVouchers = 0; var companySettings = await api.Query <CompanySettingsClient>(); var orgNo = companySettings.FirstOrDefault()._OrgNumber; var journal = dgGldailyJournal.SelectedItem as GLDailyJournalClient; // UnicontaBaseEntity[] baseEntityArray = new UnicontaBaseEntity[1] { selectedItem }; using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); var response = await client.GetAsync($"https://api.bilagscan.dk/v1/organizations/" + orgNo.ToString() + "/vouchers?seen=false&count=100&offset=0&sorts=-upload_date&status=successful"); var content = await response.Content.ReadAsStringAsync(); var vouchers = Bilagscan.Voucher.GetVouchers(content); var credCache = api.CompanyEntity.GetCache(typeof(Uniconta.DataModel.Creditor)) ?? await api.CompanyEntity.LoadCache(typeof(Uniconta.DataModel.Creditor), api); var offsetCache = api.CompanyEntity.GetCache(typeof(Uniconta.DataModel.GLAccount)) ?? await api.CompanyEntity.LoadCache(typeof(Uniconta.DataModel.GLAccount), api); var vouchersSeen = new CommaDelimitedStringCollection(); var master = new List <UnicontaBaseEntity> { journal }; var newLines = new List <UnicontaBaseEntity>(); var updateCreditor = new List <UnicontaBaseEntity>(); if (vouchers?.data != null) { var creditors = credCache.GetKeyStrRecords as Uniconta.DataModel.Creditor[]; foreach (var voucher in vouchers.data) { vouchersSeen.Add(NumberConvert.ToString(voucher.id)); var journalLine = new GLDailyJournalLineClient() { Approved = false, ForceSettlement = false }; var postingType = BilagscanVoucherType.Invoice; var hint = Bilagscan.Voucher.GetHint(voucher.note); var bilagscanRefID = voucher.id; journalLine.ReferenceNumber = bilagscanRefID != 0 ? NumberConvert.ToString(bilagscanRefID) : null; var bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "voucher_number", true) == 0).FirstOrDefault(); if (bsItem != null) { journalLine.Invoice = bsItem.value; } bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "voucher_type", true) == 0).FirstOrDefault(); if (bsItem != null) { switch (bsItem.value) { case "invoice": postingType = BilagscanVoucherType.Invoice; break; case "creditnote": postingType = BilagscanVoucherType.Creditnote; break; case "receipt": postingType = BilagscanVoucherType.Receipt; break; } } var creditorCVR = string.Empty; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "company_vat_reg_no", true) == 0).FirstOrDefault(); if (bsItem != null) { creditorCVR = bsItem.value; } bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "total_amount_incl_vat", true) == 0).FirstOrDefault(); if (bsItem != null) { journalLine.Amount = Math.Abs(NumberConvert.ToDoubleNoThousandSeperator(bsItem.value)); if (postingType != BilagscanVoucherType.Creditnote) { journalLine.Amount = -journalLine.Amount; } } CountryCode countryCode = CountryCode.Denmark; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "country", true) == 0).FirstOrDefault(); if (bsItem != null) { CountryISOCode countryISO; countryCode = CountryCode.Denmark; //default if (Enum.TryParse(bsItem.value, true, out countryISO)) { countryCode = (CountryCode)countryISO; } } bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "invoice_date", true) == 0).FirstOrDefault(); if (bsItem != null) { var invoiceDate = bsItem.value == string.Empty ? GetSystemDefaultDate() : StringSplit.DateParse(bsItem.value, DateFormat.ymd); journalLine.Date = invoiceDate; if (journalLine.Date == DateTime.MinValue) { journalLine.Date = GetSystemDefaultDate(); } } bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_date", true) == 0).FirstOrDefault(); if (bsItem != null) { var paymentDate = bsItem.value == string.Empty ? DateTime.MinValue : StringSplit.DateParse(bsItem.value, DateFormat.ymd); journalLine._DueDate = paymentDate; } bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "currency", true) == 0).FirstOrDefault(); if (bsItem != null) { Currencies currencyISO; if (!Enum.TryParse(bsItem.value, true, out currencyISO)) { currencyISO = Currencies.DKK; //default } journalLine._Currency = (byte)currencyISO; } string bbanAcc = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_account_number", true) == 0).FirstOrDefault(); if (bsItem != null) { bbanAcc = bsItem.value; } string bbanRegNum = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_reg_number", true) == 0).FirstOrDefault(); if (bsItem != null) { bbanRegNum = bsItem.value; } string ibanNo = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_iban", true) == 0).FirstOrDefault(); if (bsItem != null) { ibanNo = bsItem.value; } string swiftNo = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_swift_bic", true) == 0).FirstOrDefault(); if (bsItem != null) { swiftNo = bsItem.value; } string paymentCodeId = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_code_id", true) == 0).FirstOrDefault(); if (bsItem != null) { paymentCodeId = bsItem.value; } string paymentId = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "payment_id", true) == 0).FirstOrDefault(); if (bsItem != null) { paymentId = bsItem.value; } string jointPaymentId = null; bsItem = voucher.header_fields.Where(hf => string.Compare(hf.code, "joint_payment_id", true) == 0).FirstOrDefault(); if (bsItem != null) { jointPaymentId = bsItem.value; } var paymentMethod = PaymentTypes.VendorBankAccount; switch (paymentCodeId) { case "71": paymentMethod = PaymentTypes.PaymentMethod3; break; case "73": paymentMethod = PaymentTypes.PaymentMethod4; break; case "75": paymentMethod = PaymentTypes.PaymentMethod5; break; case "04": case "4": paymentMethod = PaymentTypes.PaymentMethod6; break; } if (paymentMethod != PaymentTypes.VendorBankAccount && (paymentId != null || jointPaymentId != null)) { journalLine._PaymentMethod = paymentMethod; journalLine._PaymentId = string.Format("{0} +{1}", paymentId, jointPaymentId); } else if (bbanRegNum != null && bbanAcc != null) { journalLine._PaymentMethod = PaymentTypes.VendorBankAccount; journalLine._PaymentId = string.Format("{0}-{1}", bbanRegNum, bbanAcc); } else if (swiftNo != null && ibanNo != null) { journalLine._PaymentMethod = PaymentTypes.IBAN; journalLine._PaymentId = ibanNo; } journalLine.SettleValue = "Voucher"; Uniconta.DataModel.Creditor creditor = null; if (hint != null) { journalLine._DocumentRef = hint.RowId; //if (hint.CreditorAccount != null) // creditor = (Uniconta.DataModel.Creditor)credCache.Get(hint.CreditorAccount); //if (hint.Amount != 0) // journalLine.Amount = hint.Amount; //if (hint.Currency != null && hint.Currency != "-") // journalLine.Currency = hint.Currency; //if (hint.PaymentId != null) //{ // journalLine._PaymentId = hint.PaymentId; // journalLine.PaymentMethod = hint.PaymentMethod; //} } journalLine._AccountType = 2; var creditorCVRNum = Regex.Replace(creditorCVR, "[^0-9]", string.Empty); if (creditorCVRNum != string.Empty) { creditor = creditors.Where(s => (Regex.Replace(s._LegalIdent ?? string.Empty, "[^0-9.]", "") == creditorCVRNum)).FirstOrDefault(); } if (creditorCVRNum == string.Empty) { journalLine.Text = Uniconta.ClientTools.Localization.lookup("NotValidVatNo"); } else if (creditor == null) { var newCreditor = new CreditorClient() { _Account = creditorCVR, _LegalIdent = creditorCVR, _PaymentMethod = journalLine._PaymentMethod, _PaymentId = journalLine._PaymentId, _SWIFT = swiftNo }; CompanyInfo companyInformation = null; try { companyInformation = await CVR.CheckCountry(creditorCVR, countryCode); } catch (Exception ex) { UnicontaMessageBox.Show(ex); return; } if (companyInformation != null) { if (companyInformation.life != null) { newCreditor._Name = companyInformation.life.name; } if (companyInformation.address != null) { newCreditor._Address1 = companyInformation.address.CompleteStreet; newCreditor._ZipCode = companyInformation.address.zipcode; newCreditor._City = companyInformation.address.cityname; newCreditor._Country = companyInformation.address.Country; } if (companyInformation.contact != null) { newCreditor._Phone = companyInformation.contact.phone; newCreditor._ContactEmail = companyInformation.contact.email; } journalLine.Text = newCreditor.Name; } else { newCreditor.Name = Uniconta.ClientTools.Localization.lookup("NotValidVatNo"); } await api.Insert(newCreditor); journalLine.Account = creditorCVR; } else { if (!string.IsNullOrEmpty(creditor._PostingAccount)) { var account = (GLAccountClient)offsetCache.Get(creditor._PostingAccount); if (!string.IsNullOrEmpty(account.Vat)) { var dailyJournal = (GLDailyJournalClient)master[0]; if (dailyJournal.TwoVatCodes) { journalLine._OffsetVat = account.Vat; } else { journalLine._Vat = account.Vat; } } journalLine._OffsetAccount = creditor._PostingAccount; } else { journalLine.Vat = creditor._Vat; } if (journalLine._DueDate == DateTime.MinValue && creditor._Payment != string.Empty) { var paymentTermsCache = api.GetCache(typeof(PaymentTerm)) ?? await api.LoadCache(typeof(PaymentTerm)); var paymentTerm = (PaymentTerm)paymentTermsCache.Get(creditor._Payment); if (paymentTerm != null) { journalLine._DueDate = paymentTerm.GetDueDate(journalLine.DueDate); } } journalLine.Account = creditor._Account; journalLine.Text = creditor._Name; if (creditor._SWIFT == null && swiftNo != null) { creditor._SWIFT = swiftNo; updateCreditor.Add(creditor); } } journalLine.SetMaster(master[0]); newLines.Add(journalLine); noOfVouchers += 1; } } var errorCode = await api.Insert(newLines); api.UpdateNoResponse(updateCreditor); if (vouchersSeen.Count != 0) { // Mark voucher as seen string serializedRequest = "{ \"vouchers\": [ " + vouchersSeen.ToString() + " ] }"; var vContent = new StringContent(serializedRequest, Encoding.UTF8, "application/json"); response = await client.PostAsync($"https://api.bilagscan.dk/v1/organizations/" + NumberConvert.ToString(orgNo) + "/vouchers/seen", vContent); var res = await response.Content.ReadAsStringAsync(); } } if (noOfVouchers == 0) { UnicontaMessageBox.Show(string.Format(Uniconta.ClientTools.Localization.lookup("StillProcessingTryAgain"), Uniconta.ClientTools.Localization.lookup("Bilagscan")), Uniconta.ClientTools.Localization.lookup("Bilagscan"), MessageBoxButton.OK, MessageBoxImage.Information); } else { var messageText = string.Concat(string.Format("{0} {1}", Uniconta.ClientTools.Localization.lookup("NumberOfImportedVouchers"), noOfVouchers), Environment.NewLine, Environment.NewLine, string.Format(Uniconta.ClientTools.Localization.lookup("GoTo"), Uniconta.ClientTools.Localization.lookup("Journallines")), "?"); if (UnicontaMessageBox.Show(messageText, Uniconta.ClientTools.Localization.lookup("BilagscanRead"), MessageBoxButton.OKCancel, MessageBoxImage.Information) == MessageBoxResult.OK) { AddDockItem(TabControls.GL_DailyJournalLine, journal, null, null, true); } } readingFromBilagscan = false; } #endif }
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 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 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); }