// Assumption: Subtotal and Discount have been calculated for each line item
 static void calculateCommission(Invoice inv)
 {
     decimal commission;
     commission = inv.LineItems.Sum(x => getCommissionForItem(x, COMMISSION_RATE));
     // This rounding looks odd... This is to round to the nearest 50 cents, so I double it, round to the nearest whole dollar, then cut it back in half.  Simple
     inv.Commission = Math.Round(commission * 2.0m, 0) / 2.0m;
 }
 public static void ExerciseOne(Invoice inv)
 {
     foreach (InvoiceItem item in inv.LineItems)
     {
         calculateSubTotalForItem(item);
         calculateTotalForItem(item, inv.TaxRate);
     }
 }
 //invoice item Total
 public void CalculateTotal(Invoice inv)
 {
     Total = Taxable ? ((SubTotal - getDiscount(SubTotal)) * inv.TaxRate) + (SubTotal - getDiscount(SubTotal)) : (SubTotal - getDiscount(SubTotal));
 }
 public void assignInvoiceNumber(Invoice inv)
 {
     InvoiceId = inv.Id;
 }
Example #5
0
 public void PerformCalculations(IInvoice item, Invoice inv)
 {
     item.CalculateSubTotal();
     item.CalculateTotal(inv);
     item.CalculateCommission();
 }
 // Assumption: Total has been calculated
 static void calculateTotal(Invoice inv)
 {
     inv.Total = inv.SubTotal + inv.Shipping;// +inv.Commission;
 }
 // Assumption: Line item totals have been calculated
 static void calculateSubTotal(Invoice inv)
 {
     inv.SubTotal = inv.LineItems.Sum(x => { calculateTotalForItem(x, inv.TaxRate); return x.Total; });
 }
 public static void ExerciseTwo(Invoice inv)
 {
     calculateSubTotal(inv);
     calculateTotal(inv);
 }
 public static void ExerciseThree(Invoice inv)
 {
     calculateCommission(inv);
 }