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 AnInvoiceIsCorrectlyCancelled()
 {
     clubMemberDataManager.MemberIDSequenceNumber = 5;
     ClubMember clubMember = new ClubMember("Francisco", "Gomez-Caldito", "Viseas");
     InvoiceCustomerData invoiceCustomerData = new InvoiceCustomerData(clubMember);
     Invoice invoice = new Invoice(
         new InvoiceCustomerData(clubMember),
         new List<Transaction>() { new Transaction("Kajak Rent", 1, 50, new Tax("No Tax", 0), 0) },
         DateTime.Now);
     InvoicesManager invoicesManager = new InvoicesManager();
     invoicesManager.AddInvoiceToClubMember(invoice, clubMember);
     invoicesManager.CancelInvoice(invoice, clubMember);
     Assert.AreEqual(Invoice.InvoicePaymentState.Cancelled, invoice.InvoiceState);
 }
        public void AnInvoiceIsCorrectlyAdded()
        {
            clubMemberDataManager.MemberIDSequenceNumber = 5;
            ClubMember clubMember = new ClubMember("Francisco", "Gomez-Caldito", "Viseas");
            Assert.AreEqual(0, clubMember.InvoicesList.Count);

            InvoiceCustomerData invoiceCustomerData = new InvoiceCustomerData(clubMember);
            Invoice invoice = new Invoice(
                new InvoiceCustomerData(clubMember),
                new List<Transaction>() { new Transaction("Kajak Rent", 1, 50, new Tax("No Tax", 0), 0) },
                DateTime.Now);
            InvoicesManager invoicesManager = new InvoicesManager();
            invoicesManager.AddInvoiceToClubMember(invoice, clubMember);
            Assert.IsNotNull(clubMember.InvoicesList[invoice.InvoiceID]);
        }
 public void WhenCancellingAnInvoiceAnAmendingInvoiceIsCreatedAndAssignedToTheDebtor()
 {
     clubMemberDataManager.MemberIDSequenceNumber = 5;
     billDataManager.InvoiceSequenceNumber = 5;
     ClubMember clubMember = new ClubMember("Francisco", "Gomez-Caldito", "Viseas");
     InvoiceCustomerData invoiceCustomerData = new InvoiceCustomerData(clubMember);
     Invoice invoice = new Invoice(
         new InvoiceCustomerData(clubMember),
         new List<Transaction>() { new Transaction("Kajak Rent", 1, 50, new Tax("No Tax", 0), 0) },
         DateTime.Now);
     InvoicesManager invoicesManager = new InvoicesManager();
     invoicesManager.AddInvoiceToClubMember(invoice, clubMember);
     Assert.AreEqual(0, clubMember.AmendingInvoicesList.Count);
     invoicesManager.CancelInvoice(invoice, clubMember);
     Assert.IsNotNull(clubMember.AmendingInvoicesList["AMN2013000005"]);
 }