Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Transaction"/> class.
 /// </summary>
 /// <param name="account">The account of the other party.</param>
 /// <param name="transactionDate">The date where the transaction is executed.</param>
 /// <param name="valutaDate">The date where the valuta is changed.</param>
 /// <param name="amount">The amount that has been transfered.</param>
 /// <param name="message">A message that is included in the transaction.</param>
 /// <param name="structuredMessage">A structured message.</param>
 /// <param name="sepaDirectDebit">The sepa direct debit information.</param>
 public Transaction(AccountOtherParty account, DateTime transactionDate, DateTime valutaDate, decimal amount, string message, string structuredMessage, SepaDirectDebit sepaDirectDebit)
 {
     Account           = account;
     TransactionDate   = transactionDate;
     ValutaDate        = valutaDate;
     Amount            = amount;
     Message           = message;
     StructuredMessage = structuredMessage;
     SepaDirectDebit   = sepaDirectDebit;
 }
Beispiel #2
0
        /// <summary>
        /// Parse the relevant lines into a <see cref="Transaction"/>.
        /// </summary>
        /// <param name="lines">The lines to parse.</param>
        /// <returns>A single <see cref="Transaction"/>.</returns>
        public Transaction Parse(IEnumerable <ILine> lines)
        {
            var transactionPart1Line = Helpers.GetFirstLineOfType <TransactionPart1Line>(lines);

            var             transactionDate = new DateTime(1, 1, 1);
            var             valutaDate      = new DateTime(1, 1, 1);
            var             amount          = 0.0m;
            SepaDirectDebit sepaDirectDebit = null;

            if (transactionPart1Line != null)
            {
                valutaDate      = transactionPart1Line.ValutaDate.Value;
                transactionDate = transactionPart1Line.TransactionDate.Value;
                amount          = transactionPart1Line.Amount.Value;
                if (transactionPart1Line.MessageOrStructuredMessage.StructuredMessage != null)
                {
                    sepaDirectDebit = transactionPart1Line.MessageOrStructuredMessage.StructuredMessage.SepaDirectDebit;
                }
            }

            var informationPart1Line = Helpers.GetFirstLineOfType <InformationPart1Line>(lines);

            var structuredMessage = "";

            if (!string.IsNullOrEmpty(transactionPart1Line?.MessageOrStructuredMessage.StructuredMessage?.Value))
            {
                structuredMessage = transactionPart1Line.MessageOrStructuredMessage.StructuredMessage.Value;
            }
            else if (!string.IsNullOrEmpty(informationPart1Line?.MessageOrStructuredMessage.StructuredMessage?.Value))
            {
                structuredMessage = informationPart1Line.MessageOrStructuredMessage.StructuredMessage.Value;
            }

            var linesWithAccountInfo = Helpers.FilterLinesOfTypes(
                lines,
                new[]
            {
                LineType.TransactionPart2,
                LineType.TransactionPart3
            });

            var accountOtherPartyParser = new AccountOtherPartyParser();
            var account = accountOtherPartyParser.Parse(linesWithAccountInfo);

            var message = ConstructMessage(lines);

            return(new Transaction(
                       account,
                       transactionDate,
                       valutaDate,
                       amount,
                       message,
                       structuredMessage,
                       sepaDirectDebit));
        }
        public StructuredMessage(string value, TransactionCode transactionCode)
        {
            Helpers.ValidateStringMultipleLengths(value, new[] { 53, 73 }, "StructuredMessage");

            StructuredMessageType = value.Substring(0, 3);
            StructuredMessageFull = value.Substring(3);

            if (StructuredMessageType == "101" || StructuredMessageType == "102")
            {
                Value = StructuredMessageFull.Substring(0, 12);
            }
            else if (StructuredMessageType == "105" && StructuredMessageFull.Length >= 57)
            {
                Value = StructuredMessageFull.Substring(45, 12); // is start position 42 or 45?
            }
            else if (StructuredMessageType == "127" && transactionCode.Family.Value == "05")
            {
                SepaDirectDebit = new SepaDirectDebit(StructuredMessageFull);
            }
        }