Subversion Repositories SmartDukaan

Rev

Rev 34406 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.enumuration.catalog;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public enum SchemeType {
    BASE(StockTransactionType.IN, AmountType.PERCENTAGE, "Base Payout"),
    CASH_DISCOUNT(StockTransactionType.IN, AmountType.PERCENTAGE, "Cash Discount"),
    CASH_DISCOUNT1(StockTransactionType.IN, AmountType.PERCENTAGE, "Cash Discount1"),
    UPFRONT(StockTransactionType.IN, AmountType.PERCENTAGE, "Upfront Payout"),
    SELLIN(StockTransactionType.IN, AmountType.FIXED, "Sellin Support"),

    INVESTMENT(StockTransactionType.OUT, AmountType.PERCENTAGE, "Investment Payout"),
    CATEGORY(StockTransactionType.OUT, AmountType.PERCENTAGE, "Category Payout"),
    HYGIENE(StockTransactionType.OUT, AmountType.PERCENTAGE, "Hygiene Payout"),
    TERTIARY(StockTransactionType.OUT, AmountType.PERCENTAGE, "Tertiary Payout"),
    SPECIAL_SUPPORT(StockTransactionType.OUT, AmountType.FIXED, "Special Support"),
    SELLOUT(StockTransactionType.OUT, AmountType.FIXED, "Sellout Support"),
    //No longer being used
    SELLOUT_PERCENTAGE(StockTransactionType.OUT, AmountType.PERCENTAGE, "Sellout Support %"),
    ;

    public static List<SchemeType> FIXED_TYPES = Arrays.stream(SchemeType.values()).filter(x -> x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
    public static List<SchemeType> PERCENTAGE_TYPES = Arrays.stream(SchemeType.values()).filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE)).collect(Collectors.toList());
    public static List<SchemeType> OUT_TYPES = Arrays.stream(SchemeType.values()).filter(x -> x.getTransactionType().equals(StockTransactionType.OUT)).collect(Collectors.toList());
    public static final List<SchemeType> IN_TYPES = Arrays.stream(SchemeType.values()).filter(x -> x.getTransactionType().equals(StockTransactionType.IN)).collect(Collectors.toList());
    public static List<SchemeType> RESTRICTED_SCHEMES_TYPES = Arrays.asList(SELLIN, SELLOUT, SPECIAL_SUPPORT);
    public static List<SchemeType> OUT_TYPE_PERCENTAGE = OUT_TYPES.stream().filter(x -> x.getAmountType().equals(AmountType.PERCENTAGE)).collect(Collectors.toList());
    public static List<SchemeType> OUT_TYPE_FIXED = OUT_TYPES.stream().filter(x -> x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
    public static List<SchemeType> OUT_SCHEME_TYPES = Arrays.asList(SchemeType.CATEGORY, SchemeType.HYGIENE, SchemeType.TERTIARY, SchemeType.SELLOUT, SchemeType.SELLOUT_PERCENTAGE);
    private StockTransactionType stockTransactionType;
    public static final List<SchemeType> CDS = Arrays.asList(CASH_DISCOUNT, CASH_DISCOUNT1);
    private AmountType amountType;
    private String value;

    SchemeType(StockTransactionType stockTransactionType, AmountType amountType, String value) {
        this.amountType = amountType;
        this.stockTransactionType = stockTransactionType;
        this.value = value;
    }

    public static List<SchemeType> getFixedTypes() {
        return Arrays.stream(SchemeType.values()).filter(x -> x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
    }

    public String getValue() {
        return value;
    }

    public StockTransactionType getTransactionType() {
        return stockTransactionType;
    }

    public AmountType getAmountType() {
        return amountType;
    }
}