public static void Main() { XmlConfigurator.Configure(); Invoice invoice = new Invoice(InvoiceType.PrinterError) { BillingAddress = new Address { AddressLine1 = "7110 Westhaven Circle", AddressLine2 = "Apt. 304", Contact = new Person { FirstName = "Shawn", LastName = "Hoffman", BirthDate = DateTime.Parse("10/09/1986"), Sex = PersonSex.Male, MiddleName = "P" }, City = "Zionsville", State = "IN", Zip = 46077, CountryCode = "USA" } }; invoice.AddPhoneNumber("317-604-0325", PhoneType.Mobile); invoice.AddPhoneNumber("765-453-6297", PhoneType.Emergency); invoice.AddPhoneNumber("123-456-7890", PhoneType.Fax); Logger.Debug(Extensions.SerializeObject(invoice)); #region Line Items LineItem line1 = new LineItem { Taxable = true, LineType = LineType.Job, LineChargeType = LineChargeType.Charge, Description = "MacBook Pro - w/Features", Quantity = 1, UnitPrice = 2800M, LineDiscount = 0M }; invoice.AddLineItem(line1); LineItem line2 = new LineItem { Taxable = true, LineType = LineType.WideFormat, LineChargeType = LineChargeType.Charge, Description = "External Super Drive", Quantity = 1, UnitPrice = 70M }; invoice.AddLineItem(line2); LineItem line3 = new LineItem { Taxable = true, LineType = LineType.PrintableFinishedGood, LineChargeType = LineChargeType.NoCharge, Description = "Student Discount / App Card", Quantity = 1, UnitPrice = 100M, LineDiscount = 1 }; invoice.AddLineItem(line3); LineItem line4 = (LineItem)line3.CloneBasic(); invoice.AddLineItem(line4); #endregion #region Invoice Detail Output ConsoleText.ConsoleText.WriteLine(String.Format("========= INVOICE DETAILS ========{5}" + "= Invoice Number: {0, -15} {5}" + "= Line Count: {1, -19} {5}" + "= Total: ${2, -23} {5}" + "= Subtotal: ${3, -20} {5}" + "= TaxTotal: ${4, -20} {5}" + "===================================\r\n", invoice.InvoiceNumber, invoice.LineCount, invoice.Total, invoice.Subtotal, invoice.Taxtotal, "=\r\n"), ConsoleColor.Gray); foreach (LineItem lineItem in invoice.LineItems) { Console.WriteLine( "Line Num: {4} | Qty: {0} | Description: {1} | Unit Price: ${2} | Line Price: ${3}", lineItem.Quantity, lineItem.Description, lineItem.UnitPrice, lineItem.LineTotal, lineItem.LineItemNum); } #endregion // Playing around with selecting random enum values. if (invoice.BillingAddress != null) invoice.BillingAddress.Contact.RandomState(); Invoice invoice2 = Extensions.DeserializeObject<Invoice>(Extensions.SerializeObject(invoice)); invoice2++; #region Invoice2 Detail Output ConsoleText.ConsoleText.WriteLine(String.Format("========= INVOICE DETAILS ========{5}" + "= Invoice Number: {0, -15} {5}" + "= Line Count: {1, -19} {5}" + "= Total: ${2, -23} {5}" + "= Subtotal: ${3, -20} {5}" + "= TaxTotal: ${4, -20} {5}" + "===================================\r\n", invoice2.InvoiceNumber, invoice2.LineCount, invoice2.Total, invoice2.Subtotal, invoice2.Taxtotal, "=\r\n"), ConsoleColor.Gray); foreach (LineItem lineItem in invoice2.LineItems) { Console.WriteLine( "Line Num: {4} | Qty: {0} | Description: {1} | Unit Price: ${2} | Line Price: ${3}", lineItem.Quantity, lineItem.Description, lineItem.UnitPrice, lineItem.LineTotal, lineItem.LineItemNum); } #endregion //const int w = 100; //const int s = 5; //const int t = 1; //Func<char, int, string> liner = (name, times) => new string(name, times); //Random r = new Random(); //Array v = Enum.GetValues(typeof(ConsoleColor)); //for (int j = 0; j < t; j++) //{ // for (int i = 0; i < w; i++) // { // ConsoleText.ConsoleText.WriteLine(liner('-', i), Rc(r, v)); // Thread.Sleep(s); // } // for (int i = 0; i < w; i++) // { // ConsoleText.ConsoleText.WriteLine(liner('-', w - i), Rc(r, v)); // Thread.Sleep(s); // } //} ConsoleText.ConsoleText.WriteObjXml(invoice, ConsoleColor.White); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Extensions.GetClassObjects(ref invoice); }
public void AddLineItem(LineItem lineItem) { if (LineItems.Count > 0) { lineItem.LineItemNum = LineItems.Max(line => line.LineItemNum) + 1; } else { lineItem.LineItemNum = 1; } LineItems.Add(lineItem); CalculateLineItemTax(); CalculateLineItemTotal(); Logger.Debug(String.Format("Line Item: {0} added to Invoice: {1}", lineItem.LineItemNum, InvoiceNumber)); }