public static void ClassInit(TestContext context) { BillingSequenceNumbersMock invoiceDataManagerMock = new BillingSequenceNumbersMock(); BillingDataManager.Instance.SetBillingSequenceNumberCollaborator(invoiceDataManagerMock); BillingDataManager.Instance.InvoiceSequenceNumber=5000; invoicesManager = new InvoicesManager(); clubMembers = new Dictionary<string, ClubMember>() { {"00001", new ClubMember("00001", "Francisco", "Gómez-Caldito", "Viseas")}, {"00002", new ClubMember("00002", "Pedro", "Pérez", "Gómez")} }; creditor = new Creditor("G35008770", "Real Club Náutico de Gran Canaria"); creditorAgent = new CreditorAgent(new BankCode("2100", "CaixaBank","CAIXESBBXXX")); directDebitInitiationContract = new DirectDebitInitiationContract( new BankAccount(new InternationalAccountBankNumberIBAN("ES5621001111301111111111")), creditor.NIF, "777", creditorAgent); var directDebitmandateslist = new[] { new {clubMemberID = "00001", internalReference = 1234, ccc = "21002222002222222222" }, new {clubMemberID = "00002", internalReference = 1235, ccc = "21003333802222222222" } }; foreach (var ddM in directDebitmandateslist) { DirectDebitMandate directDebitMandate = new DirectDebitMandate( ddM.internalReference, new DateTime(2013,11,11), new BankAccount(new ClientAccountCodeCCC(ddM.ccc)), clubMembers[ddM.clubMemberID].FullName); clubMembers[ddM.clubMemberID].AddDirectDebitMandate(directDebitMandate); } var billsList = new[] { new {clubMemberID = "00001", Amount = 79, transactionDescription = "Cuota Social Octubre 2013" }, new {clubMemberID = "00002", Amount = 79, transactionDescription="Cuota Social Octubre 2013" }, new {clubMemberID = "00002", Amount = 79, transactionDescription="Cuota Social Noviembre 2013"} }; foreach (var bill in billsList) { List<Transaction> transaction = new List<Transaction>() { new Transaction(bill.transactionDescription,1,bill.Amount,new Tax("NoTAX",0),0) }; ClubMember clubMember = clubMembers[bill.clubMemberID]; InvoiceCustomerData invoiceCustomerData = new InvoiceCustomerData(clubMember); Invoice invoice = new Invoice(invoiceCustomerData, transaction, new DateTime(2013, 11, 11)); invoicesManager.AddInvoiceToClubMember(invoice, clubMember); } spanishBankCodes = new BankCodes(@"XMLFiles\SpanishBankCodes.xml", BankCodes.BankCodesFileFormat.XML); }
public void ADirectDebitMandateCanBeDeactivated() { ClientAccountCodeCCC ccc = new ClientAccountCodeCCC("12345678061234567890"); BankAccount bankAccount = new BankAccount(ccc); DirectDebitMandate directDebitMandate = new DirectDebitMandate(1, DateTime.Now.Date, bankAccount, "NoName"); Assert.AreEqual(DirectDebitMandate.DirectDebitmandateStatus.Active, directDebitMandate.Status); directDebitMandate.DeactivateMandate(); Assert.AreEqual(DirectDebitMandate.DirectDebitmandateStatus.Inactive, directDebitMandate.Status); }
public DirectDebitTransaction CreateANewEmptyDirectDebitTransaction(DirectDebitMandate directDebitmandate) { DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction( directDebitmandate.InternalReferenceNumber, directDebitmandate.BankAccount, directDebitmandate.AccountHolderName, directDebitmandate.DirectDebitMandateCreationDate); return directDebitTransaction; }
public DirectDebitTransaction CreateANewDirectDebitTransactionFromAGroupOfBills(DirectDebitMandate directDebitmandate, List<Bill> billsList) { DirectDebitTransaction directDebitTransaction = new DirectDebitTransaction( billsList, directDebitmandate.InternalReferenceNumber, directDebitmandate.BankAccount, directDebitmandate.AccountHolderName, directDebitmandate.DirectDebitMandateCreationDate); return directDebitTransaction; }
public void GivenAClubMemberWithADefaultPaymentMethod(Table clientsTable) { membersManagementContextData.clubMember = new ClubMember(clientsTable.Rows[0]["MemberID"], clientsTable.Rows[0]["Name"], clientsTable.Rows[0]["FirstSurname"], clientsTable.Rows[0]["SecondSurname"]); string electronicIBANString = clientsTable.Rows[0]["Spanish IBAN Bank Account"].Replace(" ","").Substring(4); InternationalAccountBankNumberIBAN iban = new InternationalAccountBankNumberIBAN(electronicIBANString); BankAccount bankAccount = new BankAccount(iban); string debtorName = membersManagementContextData.clubMember.FullName; DirectDebitMandate directDebitmandate = new DirectDebitMandate(2345, DateTime.Now.Date, bankAccount, debtorName); PaymentMethod paymentMethod = new DirectDebitPaymentMethod(directDebitmandate, null); membersManagementContextData.clubMember.AddDirectDebitMandate(directDebitmandate); membersManagementContextData.clubMember.SetDefaultPaymentMethod(paymentMethod); }
public void CantInitializeADirectDebitWithAnOutOfRangeSequenceNumber() { BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); try { DirectDebitMandate directDebitMandate = new DirectDebitMandate(100000, directDebitMandateCreationDate, bankAccount, "NoName"); } catch (ArgumentOutOfRangeException exception) { Assert.AreEqual("Direct Debit Sequence Number out of range (1-99999)", exception.GetMessageWithoutParamName()); throw exception; } }
public void GivenTheseDirectDebitMandates(Table directDebits) { directDebitContextData.directDebitMandates = new Dictionary<int, DirectDebitMandate>(); foreach (var row in directDebits.Rows) { int internalReferenceNumber = int.Parse(row["DirectDebitInternalReferenceNumber"]); string iBAN = (string)row["IBAN"]; DateTime creationDate = DateTime.Parse((string)row["RegisterDate"]).Date; BankAccount bankAccount = new BankAccount(new InternationalAccountBankNumberIBAN(iBAN)); string debtorName = membersManagementContextData.clubMember.FullName; DirectDebitMandate directDebitmandate = new DirectDebitMandate(internalReferenceNumber, creationDate, bankAccount, debtorName); directDebitContextData.directDebitMandates.Add(internalReferenceNumber, directDebitmandate); } }
public void WhenIAddANewDirectDebitMandateToTheMember() { ClubMember clubMember = (ClubMember)ScenarioContext.Current["Member1"]; DateTime creationDate = new DateTime(2013, 11, 11); BankAccount bankAccount = directDebitContextData.bankAccounts["ES6812345678061234567890"]; DirectDebitMandate directDebitMandate = new DirectDebitMandate(creationDate, bankAccount, clubMember.FullName); ScenarioContext.Current.Add("DirectDebitMandate", directDebitMandate); clubMember.AddDirectDebitMandate(directDebitMandate); }
public void AddDirectDebitMandate(DirectDebitMandate directDebitMandate) { directDebitmandates.Add(directDebitMandate.InternalReferenceNumber, directDebitMandate); }
public void ADirectDebitPaymentMethodIsCorrectlyCreated() { int internalReferenceNumber = 2645; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(internalReferenceNumber, directDebitMandateCreationDate, bankAccount, "NoName"); string directDebitTransactionPaymentIdentification = "201311110000123456"; DirectDebitPaymentMethod directDebitPaymentMethod = new DirectDebitPaymentMethod(directDebitMandate, directDebitTransactionPaymentIdentification); Assert.AreEqual(directDebitMandate, directDebitPaymentMethod.DirectDebitMandate); Assert.AreEqual("201311110000123456", directDebitPaymentMethod.DDTXPaymentIdentification); }
public void IfNoReferenceNumberIsProvidedASequenceNumberIsAssigned() { billDataManager.DirectDebitSequenceNumber = 5000; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(directDebitMandateCreationDate, bankAccount, "NoName"); Assert.AreEqual(5000, directDebitMandate.InternalReferenceNumber); }
public void WeCanSetTheDirectDebitSequenceNumberValue() { BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(2345, directDebitMandateCreationDate, bankAccount, "NoName"); Assert.AreEqual(2345, directDebitMandate.InternalReferenceNumber); }
public void TheBankAccountOfADirectDebitOrderCanBeChanged() { ClientAccountCodeCCC ccc = new ClientAccountCodeCCC("12345678061234567890"); BankAccount ephemeralBankAcount = new BankAccount(ccc); DateTime ephemeralBankAcountActivationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(1, ephemeralBankAcountActivationDate, ephemeralBankAcount, "NoName"); Assert.AreEqual(ephemeralBankAcount, directDebitMandate.BankAccount); InternationalAccountBankNumberIBAN iBAN = new InternationalAccountBankNumberIBAN("ES3011112222003333333333"); BankAccount newBankAccount = new BankAccount(iBAN); DateTime dateOfChange = new DateTime(2013, 11, 30); directDebitMandate.ChangeBankAccount(newBankAccount, dateOfChange); Assert.AreEqual(newBankAccount, directDebitMandate.BankAccount); Assert.AreEqual(dateOfChange, directDebitMandate.BankAccountActivationDate); Assert.AreEqual(ephemeralBankAcount, directDebitMandate.BankAccountHistory[dateOfChange].BankAccount); Assert.AreEqual(ephemeralBankAcountActivationDate, directDebitMandate.BankAccountHistory[dateOfChange].AccountActivationDate); Assert.AreEqual(dateOfChange, directDebitMandate.BankAccountHistory[dateOfChange].AccountDeactivationDate); }
public void ProvidingTheLastDirectDebitReferenceNumberWas100TheNextAssignedMustBe101() { billDataManager.DirectDebitSequenceNumber = 100; ClientAccountCodeCCC ccc = new ClientAccountCodeCCC("12345678061234567890"); BankAccount bankAccount = new BankAccount(ccc); DirectDebitMandate directDebitMandate = new DirectDebitMandate(DateTime.Now.Date, bankAccount, "NoName"); Assert.AreEqual((uint)101, billDataManager.DirectDebitSequenceNumber); }
public void GivenTheseClubMembers(Table membersTable) { Dictionary<string, ClubMember> membersCollection = new Dictionary<string, ClubMember>(); Dictionary<string, string> bICDictionary = new Dictionary<string, string>(); foreach (var row in membersTable.Rows) { BankAccount memberAccount = new BankAccount(new ClientAccountCodeCCC((string)row["Account"])); bICDictionary.Add(memberAccount.BankAccountFieldCodes.BankCode, row["BIC"]); ClubMember clubMember = new ClubMember( row["MemberID"], row["Name"], row["FirstSurname"], row["SecondSurname"]); DateTime mandateCreationDate = new DateTime(2009, 10, 30); int directDebitReferenceNumber = int.Parse(row["Reference"]); DirectDebitMandate directDebitMandate = new DirectDebitMandate( directDebitReferenceNumber, mandateCreationDate, memberAccount, clubMember.FullName); clubMember.AddDirectDebitMandate(directDebitMandate); membersCollection.Add(clubMember.MemberID, clubMember); } ScenarioContext.Current.Add("BICDictionary", bICDictionary); ScenarioContext.Current.Add("Members", membersCollection); }
public void WhenIAssignToBePaidWithADirectDebit() { int internalReferenceNumber = 2645; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); string debtorname = membersManagementContextData.clubMember.FullName; DirectDebitMandate directDebitMandate = new DirectDebitMandate(internalReferenceNumber, directDebitMandateCreationDate, bankAccount, debtorname); DirectDebitPaymentMethod directDebitPaymentMethod = new DirectDebitPaymentMethod(directDebitMandate, null); ScenarioContext.Current.Add("DirectDebitpaymentMethod", directDebitPaymentMethod); Invoice invoice = (Invoice)ScenarioContext.Current["Invoice"]; string billID= (string)ScenarioContext.Current["BillID"]; Bill bill = invoice.Bills[billID]; bill.AssignPaymentMethod(directDebitPaymentMethod); }
public void WhenABillIsPaidByDirectDebitTheDebtorAccountAndTheDirectDebitTransactionPaymentIdentificartionAreStored() { Bill bill = new Bill("MMM201300015/001", "An easy to pay bill", 1, DateTime.Now, DateTime.Now.AddYears(10)); int internalReferenceNumber = 2645; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(internalReferenceNumber, directDebitMandateCreationDate, bankAccount, "NoName"); string directDebitTransactionPaymentIdentification = "201311110000123456"; DirectDebitPaymentMethod directDebitTransfermethod = new DirectDebitPaymentMethod(directDebitMandate, directDebitTransactionPaymentIdentification); DateTime paymentDate = new DateTime(2013, 11, 11); Payment payment = new Payment(bill.Amount, paymentDate, directDebitTransfermethod); bill.PayBill(payment); Assert.AreEqual("12345678061234567890", ((DirectDebitPaymentMethod)bill.Payment.PaymentMethod).DirectDebitMandate.BankAccount.CCC.CCC); Assert.AreEqual("201311110000123456", ((DirectDebitPaymentMethod)bill.Payment.PaymentMethod).DDTXPaymentIdentification); }
public void WhenTheBillIsPaidByDirectDebit() { Invoice invoice = (Invoice)ScenarioContext.Current["Invoice"]; Bill bill = (Bill)ScenarioContext.Current["Bill"]; int internalReferenceNumber = 2645; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); string debtorname = membersManagementContextData.clubMember.FullName; DirectDebitMandate directDebitMandate = new DirectDebitMandate(internalReferenceNumber, directDebitMandateCreationDate, bankAccount, debtorname); string directDebitTransactionPaymentIdentification = "201311110000123456"; DirectDebitPaymentMethod directDebitPaymentMethod = new DirectDebitPaymentMethod(directDebitMandate, directDebitTransactionPaymentIdentification); DateTime paymentDate = new DateTime(2013, 11, 11); Payment payment = new Payment(bill.Amount, paymentDate, directDebitPaymentMethod); billsManager.PayBill(invoice, bill, payment); }
public void GivenAReferenceNumberADirectDebitMandateIsCorrectlyCreated() { int internalReferenceNumber = 2645; BankAccount bankAccount = new BankAccount(new ClientAccountCodeCCC("12345678061234567890")); DateTime directDebitMandateCreationDate = new DateTime(2013, 11, 11); DirectDebitMandate directDebitMandate = new DirectDebitMandate(internalReferenceNumber, directDebitMandateCreationDate, bankAccount, "NoName"); Assert.AreEqual(DirectDebitMandate.DirectDebitmandateStatus.Active, directDebitMandate.Status); Assert.AreEqual(internalReferenceNumber, directDebitMandate.InternalReferenceNumber); Assert.AreEqual(directDebitMandateCreationDate, directDebitMandate.DirectDebitMandateCreationDate); Assert.AreEqual(bankAccount, directDebitMandate.BankAccount); Assert.AreEqual(directDebitMandateCreationDate, directDebitMandate.BankAccountActivationDate); }