Subversion Repositories SmartDukaan

Rev

Rev 35631 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
27878 amit.gupta 1
package com.spice.profitmandi.dao.model;
2
 
30670 amit.gupta 3
import com.fasterxml.jackson.annotation.JsonIgnore;
35600 amit 4
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
27878 amit.gupta 5
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
6
import com.spice.profitmandi.service.offers.ItemCriteria;
7
import com.spice.profitmandi.service.offers.PayoutSlab;
8
 
32979 amit.gupta 9
import java.time.LocalDateTime;
30651 amit.gupta 10
import java.util.List;
11
 
35600 amit 12
@JsonIgnoreProperties(ignoreUnknown = true)
36081 amit 13
public class ItemCriteriaPayout implements java.io.Serializable {
14
    private static final long serialVersionUID = 1L;
33745 amit.gupta 15
    private AmountType amountType;
16
    private ItemCriteria itemCriteria;
17
    private LocalDateTime startDate;
18
    private LocalDateTime endDate;
19
    private List<PayoutSlab> payoutSlabs;
20
    private String itemCriteriaString;
21
    private long achievedValue;
22
    private long shortValue;
23
    private PayoutSlab currentSlab;
24
    private PayoutSlab nextSlab;
27878 amit.gupta 25
 
33745 amit.gupta 26
    @JsonIgnore
27
    public String getCurretPayoutString() {
28
        String templateString = null;
29
        if (this.getAmountType().equals(AmountType.FIXED)) {
30
            templateString = "Rs. %f per pc";
31
        } else if (this.getAmountType().equals(AmountType.PERCENTAGE)) {
32
            templateString = "%f %%";
33
        } else {
34
            templateString = "%f %%";
35
        }
36
        return String.format(templateString, this.getCurrentSlab().getPayoutAmount());
37
    }
30651 amit.gupta 38
 
33745 amit.gupta 39
    public LocalDateTime getStartDate() {
40
        return startDate;
41
    }
32979 amit.gupta 42
 
33745 amit.gupta 43
    public void setStartDate(LocalDateTime startDate) {
44
        this.startDate = startDate;
45
    }
32979 amit.gupta 46
 
33745 amit.gupta 47
    public LocalDateTime getEndDate() {
48
        return endDate;
49
    }
32979 amit.gupta 50
 
33745 amit.gupta 51
    public void setEndDate(LocalDateTime endDate) {
52
        this.endDate = endDate;
53
    }
32979 amit.gupta 54
 
33745 amit.gupta 55
    public long getShortValue() {
56
        return shortValue;
57
    }
29785 amit.gupta 58
 
59
 
33745 amit.gupta 60
    public void setShortValue(long shortValue) {
61
        this.shortValue = shortValue;
62
    }
29785 amit.gupta 63
 
64
 
33745 amit.gupta 65
    public PayoutSlab getCurrentSlab() {
66
        return currentSlab;
67
    }
29785 amit.gupta 68
 
69
 
33745 amit.gupta 70
    public void setCurrentSlab(PayoutSlab currentSlab) {
71
        this.currentSlab = currentSlab;
72
    }
29785 amit.gupta 73
 
74
 
33745 amit.gupta 75
    public PayoutSlab getNextSlab() {
76
        return nextSlab;
77
    }
29785 amit.gupta 78
 
79
 
33745 amit.gupta 80
    public void setNextSlab(PayoutSlab nextSlab) {
81
        this.nextSlab = nextSlab;
82
    }
29785 amit.gupta 83
 
84
 
33745 amit.gupta 85
    public ItemCriteria getItemCriteria() {
27878 amit.gupta 86
        return itemCriteria;
87
    }
88
 
89
 
33745 amit.gupta 90
    public AmountType getAmountType() {
91
        return amountType;
92
    }
27878 amit.gupta 93
 
94
 
33745 amit.gupta 95
    public void setAmountType(AmountType amountType) {
96
        this.amountType = amountType;
97
    }
27878 amit.gupta 98
 
99
 
33745 amit.gupta 100
    public long getAchievedValue() {
101
        return achievedValue;
102
    }
27878 amit.gupta 103
 
104
 
33745 amit.gupta 105
    public void setAchievedValue(long achievedValue) {
106
        this.achievedValue = achievedValue;
107
    }
29785 amit.gupta 108
 
109
 
33745 amit.gupta 110
    public String getItemCriteriaString() {
27878 amit.gupta 111
        return itemCriteriaString;
112
    }
113
 
114
    public void setItemCriteriaString(String itemCriteriaString) {
115
        this.itemCriteriaString = itemCriteriaString;
116
    }
117
 
118
    @Override
33745 amit.gupta 119
    public int hashCode() {
120
        final int prime = 31;
121
        int result = 1;
122
        result = prime * result + ((amountType == null) ? 0 : amountType.hashCode());
123
        result = prime * result + ((currentSlab == null) ? 0 : currentSlab.hashCode());
124
        result = prime * result + ((itemCriteria == null) ? 0 : itemCriteria.hashCode());
125
        result = prime * result + ((itemCriteriaString == null) ? 0 : itemCriteriaString.hashCode());
126
        return result;
127
    }
27878 amit.gupta 128
 
129
 
33745 amit.gupta 130
    @Override
131
    public boolean equals(Object obj) {
132
        if (this == obj)
133
            return true;
134
        if (obj == null)
135
            return false;
136
        if (getClass() != obj.getClass())
137
            return false;
138
        ItemCriteriaPayout other = (ItemCriteriaPayout) obj;
139
        if (amountType != other.amountType)
140
            return false;
141
        if (currentSlab == null) {
142
            if (other.currentSlab != null)
143
                return false;
144
        } else if (!currentSlab.equals(other.currentSlab))
145
            return false;
146
        if (itemCriteria == null) {
147
            if (other.itemCriteria != null)
148
                return false;
149
        } else if (!itemCriteria.equals(other.itemCriteria))
150
            return false;
151
        if (itemCriteriaString == null) {
152
            if (other.itemCriteriaString != null)
153
                return false;
154
        } else if (!itemCriteriaString.equals(other.itemCriteriaString))
155
            return false;
156
        return true;
157
    }
27878 amit.gupta 158
 
159
    public void setItemCriteria(ItemCriteria itemCriteria) {
160
        this.itemCriteria = itemCriteria;
161
    }
162
 
163
    public List<PayoutSlab> getPayoutSlabs() {
164
        return payoutSlabs;
165
    }
166
 
167
    public void setPayoutSlabs(List<PayoutSlab> payoutSlabs) {
168
        this.payoutSlabs = payoutSlabs;
169
    }
170
 
171
 
33745 amit.gupta 172
    @Override
173
    public String toString() {
174
        return "ItemCriteriaPayout [amountType=" + amountType + ", itemCriteria=" + itemCriteria + ", payoutSlabs="
175
                + payoutSlabs + ", itemCriteriaString=" + itemCriteriaString + ", achievedValue=" + achievedValue
176
                + ", shortValue=" + shortValue + ", currentSlab=" + currentSlab + ", nextSlab=" + nextSlab + "]";
177
    }
27878 amit.gupta 178
 
33745 amit.gupta 179
    public boolean isWithinRange(LocalDateTime testDate) {
180
        if (startDate == null) return true;
181
        return !(testDate.isBefore(startDate) || testDate.isAfter(endDate));
182
    }
33441 amit.gupta 183
 
33736 amit.gupta 184
 
35600 amit 185
    @JsonIgnore
33745 amit.gupta 186
    public LocalDateTime getBillingEndDate() {
187
        return this.endDate == null ? null : this.endDate.plusDays(90);
188
    }
33736 amit.gupta 189
 
35600 amit 190
    @JsonIgnore
33745 amit.gupta 191
    public LocalDateTime getBillingStartDate() {
192
        return this.startDate == null ? null : this.startDate.minusDays(30);
193
    }
33736 amit.gupta 194
 
27878 amit.gupta 195
}