public void ShouldNotBeValidIfBicIsNull()
        {
            var data = new SepaIbanData
            {
                Iban = Iban,
                Name = Name
            };

            Assert.False(data.IsValid);
        }
        public void ShouldNotBeValidIfNameIsNull()
        {
            var data = new SepaIbanData
            {
                Bic  = Bic,
                Iban = Iban
            };

            Assert.False(data.IsValid);
        }
Beispiel #3
0
        public void ShouldNotBeValidIfIbanIsNull()
        {
            var data = new SepaIbanData
                {
                    Bic = Bic,
                    Name = Name
                };

            Assert.False(data.IsValid);
        }
        public void ShouldBeValidIfAllDataIsNotNullAndBicIsUnknown()
        {
            var data = new SepaIbanData
            {
                UnknownBic = true,
                Iban       = Iban,
                Name       = Name
            };

            Assert.True(data.IsValid);
        }
        public void ShouldBeValidIfAllDataIsNotNull()
        {
            var data = new SepaIbanData
            {
                Bic  = Bic,
                Iban = Iban,
                Name = Name
            };

            Assert.True(data.IsValid);
        }
Beispiel #6
0
 /// <summary>
 ///     Create a BIC
 /// </summary>
 /// <param name="element">The Xml element</param>
 /// <param name="iban">The iban</param>
 /// <returns></returns>
 public static void CreateBic(XmlElement element, SepaIbanData iban)
 {
     if (iban.UnknownBic)
     {
         element.NewElement("FinInstnId").NewElement("BIC").NewElement("Othr").NewElement("Id", "NOTPROVIDED");
     }
     else
     {
         element.NewElement("FinInstnId").NewElement("BIC", iban.Bic);
     }
 }
Beispiel #7
0
        public void ShouldBeValidIfAllDataIsNotNullAndBicIsUnknown()
        {
            var data = new SepaIbanData
            {
                UnknownBic = true,
                Iban = Iban,
                Name = Name
            };

            Assert.True(data.IsValid);
        }
Beispiel #8
0
        public void ShouldBeValidIfAllDataIsNotNull()
        {
            var data = new SepaIbanData
                {
                    Bic = Bic,
                    Iban = Iban,
                    Name = Name
                };

            Assert.True(data.IsValid);
        }
Beispiel #9
0
 /// <summary>
 ///     Create a BIC
 /// </summary>
 /// <param name="element">The Xml element</param>
 /// <param name="iban">The iban</param>
 /// <returns></returns>
 public static void CreateBic(XmlElement element, SepaIbanData iban)
 {
     if (iban.UnknownBic)
     {
         element.NewElement("FinInstnId").NewElement("BIC").NewElement("Othr").NewElement("Id", "NOTPROVIDED");
     }
     else
     {
         element.NewElement("FinInstnId").NewElement("BIC", iban.Bic);
     }
 }
        public void ShouldRemoveSpaceInIban()
        {
            var data = new SepaIbanData
            {
                Bic  = Bic,
                Iban = IbanWithSpace,
                Name = Name
            };

            Assert.True(data.IsValid);
            Assert.AreEqual(Iban, data.Iban);
        }
        public void ShouldKeepNameIfLessThan70Chars()
        {
            var data = new SepaIbanData
            {
                Bic  = Bic,
                Iban = Iban,
                Name = Name
            };

            Assert.AreEqual(Bic, data.Bic);
            Assert.AreEqual(Name, data.Name);
            Assert.AreEqual(Iban, data.Iban);
        }
        public void ShouldReduceNameIfGreaterThan70Chars()
        {
            const string longName     = "12345678901234567890123456789012345678901234567890123456789012345678901234567890";
            const string expectedName = "1234567890123456789012345678901234567890123456789012345678901234567890";
            var          data         = new SepaIbanData
            {
                Bic  = Bic,
                Iban = Iban,
                Name = longName
            };

            Assert.AreEqual(expectedName, data.Name);
        }
Beispiel #13
0
        public void ShouldKeepNameIfLessThan70Chars()
        {
            var data = new SepaIbanData
                {
                    Bic = Bic,
                    Iban = Iban,
                    Name = Name
                };

            Assert.AreEqual(Bic, data.Bic);
            Assert.AreEqual(Name, data.Name);
            Assert.AreEqual(Iban, data.Iban);
        }
Beispiel #14
0
        /// <summary>
        ///     Create a BIC
        /// </summary>
        /// <param name="element">The Xml element</param>
        /// <param name="iban">The iban</param>
        /// <returns></returns>
        public static void CreateBic(XmlElement element, SepaIbanData iban)
        {
            if (iban.UnknownBic)
            {
                element.NewElement("FinInstnId").NewElement("Othr").NewElement("Id", "NOTPROVIDED");
            }
            else
            {
                var finInstnId = element.NewElement("FinInstnId");
                finInstnId.NewElement("BIC", iban.Bic);

                if (iban.AgentAddress != null)
                {
                    AddPostalAddressElements(finInstnId, iban.AgentAddress);
                }
            }
        }
Beispiel #15
0
        public void ShouldReduceNameIfGreaterThan70Chars()
        {
            const string longName = "12345678901234567890123456789012345678901234567890123456789012345678901234567890";
            const string expectedName = "1234567890123456789012345678901234567890123456789012345678901234567890";
            var data = new SepaIbanData
                {
                    Bic = Bic,
                    Iban = Iban,
                    Name = longName
                };

            Assert.AreEqual(expectedName, data.Name);
        }
Beispiel #16
0
        public void ShouldRemoveSpaceInIban()
        {
            var data = new SepaIbanData
            {
                Bic = Bic,
                Iban = IbanWithSpace,
                Name = Name
            };

            Assert.True(data.IsValid);
            Assert.AreEqual(Iban, data.Iban);
        }
Beispiel #17
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            int skipped = 0;

            pBar.MarqueeAnimationSpeed = 25;
            pBar.Visible = true;
            if (txtSource.Text.Equals("") | txtTarget.Text.Equals("") | txtCreditorBic.Text.Equals("") | txtCreditorID.Text.Equals("") | txtCreditorIBAN.Text.Equals("") | txtCreditorName.Text.Equals("") | cbDebtIBAN.SelectedIndex < 0 | cbDebtName1.SelectedIndex < 0 | (rbVariableAmount.Checked && cbAmount.SelectedIndex < 0) | txtUsage.Text.Equals(""))
            {
                pBar.MarqueeAnimationSpeed = 0;
                MessageBox.Show("Bitte überprüfen Sie ihre Eingaben!");
                return;
            }
            else if (!System.IO.File.Exists(txtSource.Text))
            {
                pBar.MarqueeAnimationSpeed = 0;
                MessageBox.Show("Auf die Quell-datei konnte nicht zugegriffen werden!");
                return;
            }
            try
            {
                SepaDebitTransfer transfer = new SepaDebitTransfer();

                SepaIbanData creditor = new SepaIbanData();
                creditor.Bic  = txtCreditorBic.Text;
                creditor.Iban = txtCreditorIBAN.Text;
                creditor.Name = NormalizeString(txtCreditorName.Text);

                transfer.Creditor = creditor;
                transfer.PersonId = txtCreditorID.Text;
                transfer.MessageIdentification  = dtDate.Value.Year.ToString() + dtDate.Value.Month.ToString() + dtDate.Value.Day.ToString() + "-" + txtCreditorName.Text;
                transfer.InitiatingPartyName    = txtCreditorName.Text;
                transfer.RequestedExecutionDate = dtDate.Value;



                StreamReader _sr  = new StreamReader(txtSource.Text);
                string       line = _sr.ReadLine();
                if (columnHeaders.Checked)
                {
                    line = _sr.ReadLine(); //Remove first line if there are headings
                }
                List <string> skippedCreditors = new List <string>();
                while (line != null)
                {
                    line = line.Replace("\"", "");
                    string[] debitorData = line.Split(';');
                    string   name        = "";
                    if (!debitorData[((Column)cbDebtIBAN.SelectedItem).Index].Equals("") && !debitorData[((Column)cbDebtName1.SelectedItem).Index].Equals("") && !debitorData[((Column)cbDebtIBAN.SelectedItem).Index].Equals(""))
                    {
                        SepaDebitTransferTransaction transaction = new SepaDebitTransferTransaction();
                        SepaIbanData debtor = new SepaIbanData();
                        debtor.Bic  = debitorData[((Column)cbDebtBIC.SelectedItem).Index];
                        debtor.Iban = debitorData[((Column)cbDebtIBAN.SelectedItem).Index];
                        if (cbDebtName2.SelectedIndex < 0)
                        {
                            name = debitorData[((Column)cbDebtName1.SelectedItem).Index];
                        }
                        else
                        {
                            name = debitorData[((Column)cbDebtName1.SelectedItem).Index] + " " + debitorData[((Column)cbDebtName2.SelectedItem).Index];
                        }
                        debtor.Name = Regex.Replace(NormalizeString(name), REGEX_PATTERN, String.Empty);
                        if (!debtor.IsValid)
                        {
                            skippedCreditors.Add(debtor.Name);
                        }
                        else
                        {
                            transaction.Debtor = debtor;
                            transaction.MandateIdentification = Regex.Replace(NormalizeString(ReplaceWithColumnValues(txtReference.Text, debitorData)).Replace(" ", ""), REGEX_PATTERN, String.Empty);
                            transaction.RemittanceInformation = Regex.Replace(NormalizeString(ReplaceWithColumnValues(txtUsage.Text, debitorData)), REGEX_PATTERN, String.Empty);
                            if (cbDtOfSgntr.SelectedIndex >= 0)
                            {
                                transaction.DateOfSignature = DateTime.Parse(debitorData[((Column)cbDtOfSgntr.SelectedItem).Index]);
                            }
                            if (rbFixedAmount.Checked)
                            {
                                transaction.Amount = numAmount.Value;
                            }
                            else if (rbVariableAmount.Checked)
                            {
                                transaction.Amount = (Decimal)ToDouble(debitorData[((Column)cbAmount.SelectedItem).Index]);
                            }
                            transfer.AddDebitTransfer(transaction);
                        }
                    }
                    else
                    {
                        skippedCreditors.Add(name);
                        skipped++;
                    }
                    line = _sr.ReadLine();
                }
                using (StreamWriter sw = new StreamWriter(new FileStream(txtTarget.Text, FileMode.Create), new System.Text.UTF8Encoding(false)))
                {
                    sw.Write(transfer.AsXmlString());
                }
                if (skippedCreditors.Count > 0)
                {
                    CreateErrorReport(skippedCreditors, txtTarget.Text + ".ErrorReport.txt");
                    MessageBox.Show("Es wurde erfolgreich eine SEPA-Datei erstellt! Dabei wurden jedoch " + skippedCreditors.Count.ToString() + " Datensätze übersprungen!\r\nEine Reportdatei wurde unter folgenden Pfad erstellt:\r\n" + txtTarget.Text + ".ErrorReport.txt", "Erfolgreich mit Warnungen!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    MessageBox.Show("Es wurde erfolgreich eine SEPA-Datei erstellt!", "Erfolgreich!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception exc)
            {
                if (File.Exists(txtTarget.Text))
                {
                    System.IO.File.Delete(txtTarget.Text);
                }
                MessageBox.Show("Fehler: \r\n" + exc.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                pBar.MarqueeAnimationSpeed = 0;
                pBar.Visible = false;
                MessageBox.Show("Fertig!\r\n Es wurden " + skipped.ToString() + " Datensätz übersprungen!");
            }
        }
Beispiel #18
0
        private void btnGenerate_Click(object sender, EventArgs e)
        {
            frmLogin            login          = new frmLogin();
            int                 GruppierungsID = 0; //<-------------------------------------WICHTIG!!
            List <NaMiMitglied> skipped        = new List <NaMiMitglied>();
            Connector           con            = new Connector();
            SaveFileDialog      sfd            = new SaveFileDialog();

            try
            {
                if (!isVaildInput())
                {
                    MessageBox.Show("Die angegebenen Daten sind unvollständig oder Falsch!", "Unvollständige oder Falsche Daten!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                sfd.Filter = "XML-Dateien|*.xml";
                if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }

                login.ShowDialog();
                if (login.Password.Equals("") || login.Mitgliedsnummer.Equals(""))
                {
                    MessageBox.Show("Es wurde keine Datei erstellt!", "Keine Eingaben ermittelt", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                if (!con.Login(login.Mitgliedsnummer, login.Password))
                {
                    MessageBox.Show("Falscher Benutzername oder Falsches Kennwort!", "Fehler bei der Anmeldung", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                pbFortschritt.Visible = true;
                pbFortschritt.MarqueeAnimationSpeed = 25;

                GruppierungsID = con.GetRootGruppierung().id;

                Task <List <NaMiMitglied> > task = Task <List <NaMiMitglied> > .Factory.StartNew(() => GetAktiveMitglieder(con, GruppierungsID));

                while (task.Status != TaskStatus.RanToCompletion)
                {
                    Application.DoEvents();
                }

                Dictionary <string, int> mPIban = GetMitgliederPerIBAN(task.Result);

                SepaDebitTransfer transfer = new SepaDebitTransfer();

                SepaIbanData creditor = new SepaIbanData();
                creditor.Bic  = txtBIC.Text;
                creditor.Iban = txtIBAN.Text;
                creditor.Name = NormalizeString(txtName.Text);

                transfer.Creditor = creditor;
                transfer.RequestedExecutionDate = dTExecutionDate.Value;
                transfer.PersonId = txtGlaeubigerID.Text;
                transfer.MessageIdentification = creditor.Bic + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString();
                transfer.InitiatingPartyName   = creditor.Name;
                if (!creditor.IsValid)
                {
                    MessageBox.Show("Fehler ihre Bankdaten scheinen Ungültig zu sein!", "Fehler in den Bankdaten!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                List <string> transactions = new List <string>();
                transactions.Add("Debtor;IBAN;Mandatsreferenz;Verwendungszweck;Betrag");
                foreach (NaMiMitglied m in task.Result)
                {
                    if (!(m.kontoverbindung.iban == null || m.kontoverbindung.bic == null || m.kontoverbindung.kontoinhaber == null))
                    {
                        if (!(m.kontoverbindung.iban.Equals("") || m.kontoverbindung.bic.Equals("") || m.kontoverbindung.kontoinhaber.Equals("")))
                        {
                            SepaDebitTransferTransaction transaction = new SepaDebitTransferTransaction();
                            SepaIbanData debtor = new SepaIbanData();
                            debtor.Name = m.kontoverbindung.kontoinhaber.ToString();
                            debtor.Iban = m.kontoverbindung.iban.ToString();
                            debtor.Bic  = m.kontoverbindung.bic.ToString();
                            if (!debtor.IsValid)
                            {
                                skipped.Add(m);
                            }
                            else
                            {
                                transaction.Debtor = debtor;
                                transaction.MandateIdentification = NormalizeString(m.kontoverbindung.mitgliedsNummer.ToString() + m.vorname + m.nachname).Replace(" ", "");
                                transaction.RemittanceInformation = "DPSG Beitrag fuer " + NormalizeString(m.vorname) + " " + NormalizeString(m.nachname);
                                transaction.Amount = GetAmount(mPIban[transaction.Debtor.Iban], m);
                                transfer.AddDebitTransfer(transaction);
                                transactions.Add(String.Format("{0};{1};{2};{3};{4}", transaction.Debtor.Name, transaction.Debtor.Iban, transaction.MandateIdentification, transaction.RemittanceInformation, transaction.Amount.ToString()));
                            }
                        }
                        else
                        {
                            skipped.Add(m);
                        }
                    }
                }
                using (StreamWriter sw = new StreamWriter(new FileStream(sfd.FileName, FileMode.Create), new System.Text.UTF8Encoding(false)))
                {
                    sw.Write(transfer.AsXmlString());
                }
                using (StreamWriter sw = new StreamWriter(new FileStream(sfd.FileName + ".Transactions.csv", FileMode.Create), new System.Text.UTF8Encoding(false)))
                {
                    foreach (string line in transactions)
                    {
                        sw.WriteLine(line);
                    }
                }
                if (skipped.Count > 0)
                {
                    CreateErrorReport(skipped, sfd.FileName + ".ErrorReport.txt");
                    MessageBox.Show("Es wurde erfolgreich eine SEPA-Datei erstellt! Dabei wurden jedoch " + skipped.Count.ToString() + " Datensätze übersprungen!\r\nEine Reportdatei wurde unter folgenden Pfad erstellt:\r\n" + sfd.FileName + ".ErrorReport.txt", "Erfolgreich mit Warnungen!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    MessageBox.Show("Es wurde erfolgreich eine SEPA-Datei erstellt!", "Erfolgreich!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (NaMiNotLoggedInException ex)
            {
                MessageBox.Show("Fehler:\r\n" + ex.Message, "Fehler: Nicht Eingeloggt!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (NaMiException <List <NaMiObjekt> > ex)
            {
                MessageBox.Show("Fehler:\r\n" + ex.Message, "Fehler im NaMiRequest!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (NaMiException <NaMiMitglied> ex)
            {
                MessageBox.Show("Fehler:\r\n" + ex.Message, "Fehler im NaMiRequest!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fehler:\r\n" + ex.Message, "Unbekannter Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                con.Logout();
                pbFortschritt.Visible = false;
                pbFortschritt.MarqueeAnimationSpeed = 0;
            }
        }