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); }
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); }
/// <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 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); }
/// <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); }
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); }
/// <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); } } }
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); }
public void ShouldRemoveSpaceInIban() { var data = new SepaIbanData { Bic = Bic, Iban = IbanWithSpace, Name = Name }; Assert.True(data.IsValid); Assert.AreEqual(Iban, data.Iban); }
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!"); } }
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; } }