示例#1
0
        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);
        }
示例#4
0
        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;
                }
            }
        }
示例#6
0
        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();
 }
示例#8
0
        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));
            }
        }
示例#9
0
        /// <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();
        }
示例#12
0
        /// <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);
        }
示例#13
0
        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);
        }
示例#14
0
 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);
        }
示例#21
0
        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);
        }
示例#22
0
        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);
        }
示例#23
0
        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);
        }
示例#27
0
        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);
        }