Beispiel #1
0
        public override void Unpack(string data)
        {
            string[] datasWithR = data.Split('\n');
            string   datass     = "";

            foreach (string s in datasWithR)
            {
                datass += s;
            }
            string[] datas = datass.Split('\r');

            List <string> vs = new List <string>();

            int counter = 3;

            string infoString = "";

            this.iban = new Iban(datas[counter]);
            counter++;
            infoString = "";

            for (int i = counter; i < counter + 7; i++)
            {
                infoString += datas[i] + '\r';
            }
            counter      += 7;
            this.creditor = new Contact(infoString);


            if (datas[counter] != String.Empty)
            {
                infoString = String.Empty;
                for (int i = counter; i < counter + 7; i++)
                {
                    infoString += datas[i] + '\r';
                }
                this.ultimateCreditor = new Contact(infoString);
            }
            counter    += 7;
            this.amount = datas[counter] == String.Empty ? amount = null : Decimal.Parse(datas[counter].Replace('.', ','));
            counter++;

            switch (datas[counter])
            {
            case "EUR":
                this.currency = Currency.EUR;
                break;

            case "CHF":
                this.currency = Currency.CHF;
                break;
            }
            counter++;

            if (datas[counter] != String.Empty)
            {
                infoString = String.Empty;
                for (int i = counter; i < counter + 7; i++)
                {
                    infoString += datas[i] + '\r';
                }
                this.debitor = new Contact(infoString);
            }
            counter += 7;

            infoString = String.Empty;
            for (int i = counter; i < counter + 2; i++)
            {
                infoString += datas[i] + '\r';
            }
            this.reference = new Reference(infoString);
            if (reference.RefType == Reference.ReferenceType.QRR)
            {
                iban.TypeIban = Iban.IbanType.QrIban;
            }
            else
            {
                iban.TypeIban = Iban.IbanType.Iban;
            }
            if (!String.IsNullOrEmpty(reference.ReferenceText))
            {
                if (reference.ChecksumMod10(reference.ReferenceText))
                {
                    reference._ReferenceTextType = Reference.ReferenceTextType.QrReference;
                }
                else if (Regex.IsMatch(reference.ReferenceText, @"^[0-9]+$"))
                {
                    reference._ReferenceTextType = Reference.ReferenceTextType.CreditorReferenceIso11649;
                }
            }



            counter += 2;

            infoString = String.Empty;
            for (int i = counter; i < counter + 3; i++)
            {
                infoString += datas[i] + '\r';
            }
            this.additionalInformation = new AdditionalInformation(infoString);
            counter += 3;

            if (datas.Length - 1 >= counter)
            {
                alternativeProcedure1 = datas[counter];
            }
            counter++;

            if (datas.Length - 1 >= counter)
            {
                alternativeProcedure2 = datas[counter];
            }
        }