package org.estatio.dom.lease.invoicing;

import org.estatio.dom.lease.LeaseItemType;
import org.estatio.dom.utils.StringUtils;

import java.util.Arrays;
import java.util.List;

public enum InvoiceCalculationSelection {
    RENT_AND_SERVICE_CHARGE(
            LeaseItemType.RENT,
            LeaseItemType.SERVICE_CHARGE,
            LeaseItemType.SERVICE_CHARGE_INDEXABLE),
    RENT(
            LeaseItemType.RENT),
    RENT_FIXED(
            LeaseItemType.RENT_FIXED
    ),
    SERVICE_CHARGE(
            LeaseItemType.SERVICE_CHARGE,
            LeaseItemType.SERVICE_CHARGE_INDEXABLE),
    TURNOVER_RENT(
            LeaseItemType.TURNOVER_RENT),
    RENTAL_FEE(
            LeaseItemType.RENTAL_FEE),
    TAX(
            LeaseItemType.TAX),
    DISCOUNT(
            LeaseItemType.DISCOUNT),
    ENTRY_FEE(
            LeaseItemType.ENTRY_FEE),
    DEPOSIT(
            LeaseItemType.DEPOSIT),
    ALL(
            LeaseItemType.RENT,
            LeaseItemType.RENT_FIXED,
            LeaseItemType.SERVICE_CHARGE,
            LeaseItemType.SERVICE_CHARGE_INDEXABLE,
            LeaseItemType.TURNOVER_RENT,
            LeaseItemType.RENTAL_FEE,
            LeaseItemType.TAX,
            LeaseItemType.DISCOUNT,
            LeaseItemType.ENTRY_FEE,
            LeaseItemType.DEPOSIT);

    private LeaseItemType[] selectedTypes;

    private InvoiceCalculationSelection(LeaseItemType... selectedTypes) {
        this.selectedTypes = selectedTypes;
    }

    public List<LeaseItemType> selectedTypes() {
        return Arrays.asList(selectedTypes);
    }

    public String title() {
        return StringUtils.enumTitle(this.name());
    }
}

@@ -35,16 +35,65 @@
 icing;%0A%0A
+import java.util.Arrays;%0Aimport java.util.List;%0A%0A
 import o
@@ -175,57 +175,8 @@
 s;%0A%0A
-import java.util.Arrays;%0Aimport java.util.List;%0A%0A
 publ
@@ -266,32 +266,78 @@
 eItemType.RENT,%0A
+            LeaseItemType.DISCOUNT_INDEXABLE,%0A
             Leas
@@ -451,24 +451,70 @@
 temType.RENT
+,%0A            LeaseItemType.DISCOUNT_INDEXABLE
 ),%0A    RENT_
@@ -1378,16 +1378,62 @@
 .DEPOSIT
+,%0A            LeaseItemType.DISCOUNT_INDEXABLE
 );%0A%0A    

Update invoice calculation selection with discount Indexable