Subversion Repositories SmartDukaan

Rev

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