Subversion Repositories SmartDukaan

Rev

Rev 33441 | Rev 33745 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.spice.profitmandi.dao.model;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
import com.spice.profitmandi.service.offers.ItemCriteria;
import com.spice.profitmandi.service.offers.PayoutSlab;

import java.time.LocalDateTime;
import java.util.List;

public class ItemCriteriaPayout {
        private AmountType amountType;
        private ItemCriteria itemCriteria;
        private LocalDateTime startDate;
        private LocalDateTime endDate;
        private List<PayoutSlab> payoutSlabs;
        private String itemCriteriaString;
        private long achievedValue;
        private long shortValue;
        private PayoutSlab currentSlab;
        private PayoutSlab nextSlab;

        @JsonIgnore
        public String getCurretPayoutString() {
                String templateString = null;
                if (this.getAmountType().equals(AmountType.FIXED)) {
                        templateString = "Rs. %f per pc";
                } else if (this.getAmountType().equals(AmountType.PERCENTAGE)) {
                        templateString = "%f %%";
                } else {
                        templateString = "%f %%";
                }
                return String.format(templateString, this.getCurrentSlab().getPayoutAmount());
        }

        public LocalDateTime getStartDate() {
                return startDate;
        }

        public void setStartDate(LocalDateTime startDate) {
                this.startDate = startDate;
        }

        public LocalDateTime getEndDate() {
                return endDate;
        }

        public void setEndDate(LocalDateTime endDate) {
                this.endDate = endDate;
        }

        public long getShortValue() {
                return shortValue;
        }


        public void setShortValue(long shortValue) {
                this.shortValue = shortValue;
        }


        public PayoutSlab getCurrentSlab() {
                return currentSlab;
        }


        public void setCurrentSlab(PayoutSlab currentSlab) {
                this.currentSlab = currentSlab;
        }


        public PayoutSlab getNextSlab() {
                return nextSlab;
        }


        public void setNextSlab(PayoutSlab nextSlab) {
                this.nextSlab = nextSlab;
        }


        public ItemCriteria getItemCriteria() {
        return itemCriteria;
    }


        public AmountType getAmountType() {
                return amountType;
        }



        public void setAmountType(AmountType amountType) {
                this.amountType = amountType;
        }



        public long getAchievedValue() {
                return achievedValue;
        }


        public void setAchievedValue(long achievedValue) {
                this.achievedValue = achievedValue;
        }


        public String getItemCriteriaString() {
        return itemCriteriaString;
    }

    public void setItemCriteriaString(String itemCriteriaString) {
        this.itemCriteriaString = itemCriteriaString;
    }

    @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((amountType == null) ? 0 : amountType.hashCode());
                result = prime * result + ((currentSlab == null) ? 0 : currentSlab.hashCode());
                result = prime * result + ((itemCriteria == null) ? 0 : itemCriteria.hashCode());
                result = prime * result + ((itemCriteriaString == null) ? 0 : itemCriteriaString.hashCode());
                return result;
        }



        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                ItemCriteriaPayout other = (ItemCriteriaPayout) obj;
                if (amountType != other.amountType)
                        return false;
                if (currentSlab == null) {
                        if (other.currentSlab != null)
                                return false;
                } else if (!currentSlab.equals(other.currentSlab))
                        return false;
                if (itemCriteria == null) {
                        if (other.itemCriteria != null)
                                return false;
                } else if (!itemCriteria.equals(other.itemCriteria))
                        return false;
                if (itemCriteriaString == null) {
                        if (other.itemCriteriaString != null)
                                return false;
                } else if (!itemCriteriaString.equals(other.itemCriteriaString))
                        return false;
                return true;
        }

    public void setItemCriteria(ItemCriteria itemCriteria) {
        this.itemCriteria = itemCriteria;
    }

    public List<PayoutSlab> getPayoutSlabs() {
        return payoutSlabs;
    }

    public void setPayoutSlabs(List<PayoutSlab> payoutSlabs) {
        this.payoutSlabs = payoutSlabs;
    }



        @Override
        public String toString() {
                return "ItemCriteriaPayout [amountType=" + amountType + ", itemCriteria=" + itemCriteria + ", payoutSlabs="
                                + payoutSlabs + ", itemCriteriaString=" + itemCriteriaString + ", achievedValue=" + achievedValue
                                + ", shortValue=" + shortValue + ", currentSlab=" + currentSlab + ", nextSlab=" + nextSlab + "]";
        }

        public boolean isWithinRange(LocalDateTime testDate) {
                if(startDate==null) return true;
                return !(testDate.isBefore(startDate) || testDate.isAfter(endDate));
        }


        public LocalDateTime getBillingEndDate() {
                return this.endDate.plusDays(90);
        }

        public LocalDateTime getBillingStartDate() {
                return this.startDate.minusDays(30);
        }
    
    
    
    
}