1 #include "invoice.h"
2 #include "itemiterator.h"
3 #include "invoiceprinter.h"
4
5 void Invoice::add(Item* it)
6 {
7 items.push_back(it);
8 }
9
10 ItemIterator Invoice::create_iterator()
11 {
12 return ItemIterator(items);
13 }
14
15 void Invoice::print(InvoicePrinter& printer)
16 {
17 printer.print_header("I N V O I C E");
18 printer.print_string("Description", true);
19 printer.print_string("Unit Price", false);
20 printer.print_string("Qty", false);
21 printer.print_string("Total Price", false);
22
23 double amount_due = 0;
24 for (ItemIterator iter = create_iterator();
25 !iter.is_done(); iter.next())
26 {
27 Item* it = iter.get();
28 printer.print_string(it->get_description(), true);
29 printer.print_number(it->get_unit_price(), 2);
30 printer.print_number(it->get_quantity(), 0);
31 printer.print_number(it->get_total_price(), 2);
32 amount_due = amount_due + it->get_total_price();
33 }
34
35 printer.print_footer("AMOUNT DUE:", amount_due);
36 }