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 AnInvoiceIsCorrectlyAddedToClubMember()
        {
            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);
            clubMember.AddInvoice(invoice);
            Assert.IsNotNull(clubMember.InvoicesList[invoice.InvoiceID]);
        }
 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 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"]);
 }
        public static void ClassInit(TestContext context)
        {
            BillingSequenceNumbersMock invoiceDataManagerMock = new BillingSequenceNumbersMock();
            BillingDataManager.Instance.SetBillingSequenceNumberCollaborator(invoiceDataManagerMock);

            transactionList = new List<Transaction>()
            {
                {new Transaction("Monthly Fee",1,80,new Tax("NOIGIC",0),0)},
                {new Transaction("Renting a Kajak",1,50,new Tax("NOIGIC",0),0)},
                {new Transaction("Blue cup",2,10,new Tax("NOIGIC",0),0)},
                {new Transaction("BIG Mouring",1,500,new Tax("NOIGIC",0),0)}
            };

            clubMember = new ClubMember("0002", "Francisco", "Gomez", "");
            invoiceCustomerData = new InvoiceCustomerData(clubMember);
        }
 public ProFormaInvoice(InvoiceCustomerData invoiceCustomerData, List<Transaction> transactionsList, DateTime issueDate)
     : base(transactionsList, issueDate)
 {
     InitializeProformaInvoice(invoiceCustomerData);
 }
 private void InitializeProformaInvoice(InvoiceCustomerData invoiceCustomerData)
 {
     CheckProFormaInvoiceDetail();
     this.customerData = invoiceCustomerData;
 }
 public void GivenTheseBills(Table billsTable)
 {
     invoiceContextData.billDataManager.InvoiceSequenceNumber = 5000;
     Dictionary<string, ClubMember> membersCollection = (Dictionary<string, ClubMember>)ScenarioContext.Current["Members"];
     foreach (var row in billsTable.Rows)
     {
         string description = row["TransactionConcept"];
         double amount = double.Parse(row["Amount"]);
         List<Transaction> transaction = new List<Transaction>()
         {
             new Transaction(description,1,amount,new Tax("NoTAX",0),0)
         };
         ClubMember clubMember = membersCollection[row["MemberID"]];
         InvoiceCustomerData invoiceCustomerData = new InvoiceCustomerData(clubMember);
         Invoice invoice = new Invoice(invoiceCustomerData, transaction, new DateTime(2013, 11, 11));
         invoicesManager.AddInvoiceToClubMember(invoice, clubMember);
     }
 }
 public Invoice(string invoiceID, InvoiceCustomerData invoiceCustomerData, List<Transaction> transactionsList, List<Bill> billsList, DateTime issueDate)
     : base(invoiceID,transactionsList, issueDate)
 {
     InitializeInvoice(invoiceCustomerData, billsList);
 }
 public Invoice(string invoiceID, InvoiceCustomerData invoiceCustomerData, List<Transaction> transactionsList, DateTime issueDate)
     : this(invoiceID, invoiceCustomerData, transactionsList, null, issueDate)
 {
 }
 private void InitializeInvoice(InvoiceCustomerData invoiceCustomerData, List<Bill> billsList)
 {
     this.customerData = invoiceCustomerData;
     CheckInvoiceDetail();
     invoiceBills = new Dictionary<string, Bill>();
     if (billsList == null) billsList = new List<Bill> { CreateASingleBillForInvoiceTotal() };
     AddBillsToInvoice(billsList);
     invoiceState = InvoicePaymentState.ToBePaid;
     paymentAgreements = new Dictionary<DateTime,PaymentAgreement>();
 }
        public void Setup()
        {
            taxesDictionary = new Dictionary<string, Tax>{
                {"No IGIC", new Tax("No IGIC",0)},
                {"IGIC Reducido 1", new Tax("IGIC Reducido 1",2.75)},
                {"IGIC Reducido 2", new Tax("IGIC Reducido 2",3)},
                {"IGIC General", new Tax("IGIC General",7)},
                {"IGIC Incrementado 1", new Tax("IGIC Incrementado 1",9.50)},
                {"IGIC Incrementado 2", new Tax("IGIC Incrementado 2",13.50)},
                {"IGIC Especial", new Tax("IGIC Especial",20)}};

            transactionsList = new List<Transaction>()
            {
                {new Transaction("Monthly Fee",1,80,taxesDictionary["No IGIC"],0)},
                {new Transaction("Renting a Kajak",1,50,taxesDictionary["No IGIC"],0)},
                {new Transaction("Blue cup",2,10,taxesDictionary["No IGIC"],0)},
                {new Transaction("BIG Mouring",1,500,taxesDictionary["No IGIC"],0)}
            };

            clubMember = new ClubMember("0002", "Francisco", "Gomez", "");
            invoiceCustomerData= new InvoiceCustomerData(clubMember);
            invoicesManager = new InvoicesManager();
        }