Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
2066 ankur.sing 1
package in.shop2020.catalog.dashboard.shared;
2
 
3
import in.shop2020.catalog.dashboard.client.CatalogService;
4
import in.shop2020.catalog.dashboard.client.CatalogServiceAsync;
21864 ashik.ali 5
import in.shop2020.model.v1.catalog.CategoryHsnCode;
2066 ankur.sing 6
 
2068 ankur.sing 7
import java.util.Date;
4957 phani.kuma 8
import java.util.List;
2066 ankur.sing 9
import java.util.Map;
2105 ankur.sing 10
import java.util.Map.Entry;
2066 ankur.sing 11
 
12
import com.google.gwt.core.client.GWT;
2119 ankur.sing 13
import com.google.gwt.user.client.Window;
2066 ankur.sing 14
import com.google.gwt.user.client.rpc.AsyncCallback;
15
 
2427 ankur.sing 16
/**
17
 * Utility methods goes here
18
 *
19
 */
2066 ankur.sing 20
public class Utils {
2427 ankur.sing 21
    // item status values. These should be analogous to status enum in status.java
22
    // These values are used in the client side to check if transition from one status to another is 
23
    // valid. Also see validateStatusChange method
24
    // FIXME: These should be read from the ThriftConfig file and not hard-coded here.
2126 ankur.sing 25
    public static final int PHASED_OUT = 0,
26
                            DELETED = 1,
27
                            PAUSED = 2,
28
                            ACTIVE = 3,
29
                            IN_PROCESS = 4,
30
                            CONTENT_COMPLETE = 5;
2427 ankur.sing 31
 
32
    // role column in helper.catalogdashboarduser table. role specifies 
33
    // the username-pwd pair for staging or for production.
34
    // production password is needed while updating item on production server.
6788 rajveer 35
    public static final int ROLE_STAGING = 0, ROLE_READONLY = 1, ROLE_PRODUCTION = 2;
5586 phani.kuma 36
    private static boolean entityIdMandatory = false;
2427 ankur.sing 37
 
12523 amit.gupta 38
    private static Map<Long, String> vendors, warehouses, sources, voucherType, categoriesMap, stateMap;
4957 phani.kuma 39
    private static List<String> categories, brands;
2427 ankur.sing 40
 
2066 ankur.sing 41
    private static final CatalogServiceAsync catalogService = GWT.create(CatalogService.class);
2126 ankur.sing 42
 
6530 vikram.rag 43
    private static List<ItemWarehouse> ignoredInventoryUpdateItemsIdsWarehouseIds;
21864 ashik.ali 44
 
45
    private static List<CategoryHsnCode> categoryHsnCodes;
46
 
6838 vikram.rag 47
    private static Map<Long,String> allInsurers;
6530 vikram.rag 48
 
2066 ankur.sing 49
    static {
6838 vikram.rag 50
    	catalogService.getAllInsurers(new AsyncCallback<Map<Long,String>>() {
51
            @Override
52
            public void onSuccess(Map<Long, String> result) {
53
            	allInsurers = result;
54
            }
55
            @Override
56
            public void onFailure(Throwable caught) {
57
                caught.printStackTrace();
58
            }
59
        });
5586 phani.kuma 60
    	catalogService.getConfigforentityIdMandatory(new AsyncCallback<Boolean>() {
61
	        @Override
62
	        public void onSuccess(Boolean result) {
63
	        	setEntityIdMandatory(result);
64
	        }
65
	        @Override
66
	        public void onFailure(Throwable caught) {
67
	            caught.printStackTrace();
68
	        }
69
	    });
6530 vikram.rag 70
    	catalogService.getignoredInventoryUpdateItemsIdsWarehouseIds(new AsyncCallback<List<ItemWarehouse>>() {
71
	        @Override
72
	        public void onSuccess(List<ItemWarehouse> result) {
73
	        	ignoredInventoryUpdateItemsIdsWarehouseIds=result;
74
	        }
75
	        @Override
76
	        public void onFailure(Throwable caught) {
77
	            caught.printStackTrace();
78
	        }
79
	    });
80
 
5586 phani.kuma 81
 
2066 ankur.sing 82
        catalogService.getAllVendors(new AsyncCallback<Map<Long,String>>() {
83
            @Override
84
            public void onSuccess(Map<Long, String> result) {
85
                vendors = result;
86
            }
87
            @Override
88
            public void onFailure(Throwable caught) {
2359 ankur.sing 89
                caught.printStackTrace();
2066 ankur.sing 90
            }
91
        });
12523 amit.gupta 92
 
5118 mandeep.dh 93
 
12523 amit.gupta 94
 
95
        catalogService.getAllStatesMap(new AsyncCallback<Map<Long,String>>() {
96
            @Override
97
            public void onSuccess(Map<Long, String> result) {
98
                stateMap = result;
99
            }
100
            @Override
101
            public void onFailure(Throwable caught) {
102
                caught.printStackTrace();
103
            }
104
        });
105
 
106
 
2066 ankur.sing 107
        catalogService.getAllWarehouses(new AsyncCallback<Map<Long,String>>() {
108
            @Override
109
            public void onSuccess(Map<Long, String> result) {
110
                warehouses = result;
111
            }
112
            @Override
113
            public void onFailure(Throwable caught) {
2359 ankur.sing 114
                caught.printStackTrace();
2066 ankur.sing 115
            }
116
        });
3558 rajveer 117
 
118
        catalogService.getAllSources(new AsyncCallback<Map<Long,String>>() {
119
            @Override
120
            public void onSuccess(Map<Long, String> result) {
121
                sources = result;
122
            }
123
            @Override
124
            public void onFailure(Throwable caught) {
125
                caught.printStackTrace();
126
            }
127
        });
4957 phani.kuma 128
 
129
        catalogService.getAllCategories(new AsyncCallback<List<String>>() {
130
            @Override
131
            public void onSuccess(List<String> result) {
12523 amit.gupta 132
            	categories = result; 
4957 phani.kuma 133
            }
134
            @Override
135
            public void onFailure(Throwable caught) {
136
                caught.printStackTrace();
137
            }
138
        });
139
 
12523 amit.gupta 140
 
141
        catalogService.getAllCategoriesMap(new AsyncCallback<Map<Long, String>>() {
142
            @Override
143
            public void onSuccess(Map<Long, String> result) {
144
            	categoriesMap = result;
145
            }
146
            @Override
147
            public void onFailure(Throwable caught) {
148
                caught.printStackTrace();
149
            }
150
        });
151
 
4957 phani.kuma 152
        catalogService.getAllBrands(new AsyncCallback<List<String>>() {
153
            @Override
154
            public void onSuccess(List<String> result) {
155
            	brands = result;
156
            }
157
            @Override
158
            public void onFailure(Throwable caught) {
159
                caught.printStackTrace();
160
            }
161
        });
5504 phani.kuma 162
 
5516 phani.kuma 163
        catalogService.getvoucherTypes(new AsyncCallback<Map<Long,String>>() {
5504 phani.kuma 164
            @Override
5516 phani.kuma 165
            public void onSuccess(Map<Long,String> result) {
166
            	setVoucherType(result);
5504 phani.kuma 167
            }
168
            @Override
169
            public void onFailure(Throwable caught) {
170
                caught.printStackTrace();
171
            }
172
        });
21864 ashik.ali 173
 
3558 rajveer 174
 
21864 ashik.ali 175
 
2066 ankur.sing 176
    }
2119 ankur.sing 177
 
5586 phani.kuma 178
    public static void setEntityIdMandatory(boolean entityIdMandatory) {
179
		Utils.entityIdMandatory = entityIdMandatory;
180
	}
181
 
182
	public static boolean isEntityIdMandatory() {
183
		return entityIdMandatory;
184
	}
185
 
186
	public static Map<Long, String> getAllVendors() {
2105 ankur.sing 187
        return vendors;
188
    }
6838 vikram.rag 189
	public static Map<Long, String> getAllInsurers() {
190
        return allInsurers;
191
    }
3558 rajveer 192
 
193
    public static Map<Long, String> getAllSources() {
194
        return sources;
195
    }
2066 ankur.sing 196
 
2105 ankur.sing 197
    public static Map<Long, String> getAllWarehouses() {
198
        return warehouses;
199
    }
5118 mandeep.dh 200
 
4957 phani.kuma 201
    public static List<String> getAllCategories() {
202
        return categories;
203
    }
204
 
12523 amit.gupta 205
 
206
    public static Map<Long, String> getAllCategoriesMap() {
207
        return categoriesMap;
208
    }
209
 
4957 phani.kuma 210
    public static List<String> getAllBrands() {
211
        return brands;
212
    }
213
 
2066 ankur.sing 214
    public static String getVendorDesc(long id) {
215
        if(vendors == null) {
216
            return null;
217
        }
218
        return vendors.get(id);
219
    }
220
 
6530 vikram.rag 221
    public static List<ItemWarehouse> getignoredInventoryUpdateItemsIdsWarehouseIds(){
222
    	return ignoredInventoryUpdateItemsIdsWarehouseIds;
223
    }
224
 
3558 rajveer 225
    public static String getSourceDesc(long id) {
226
        if(sources == null) {
227
            return null;
228
        }
229
        return sources.get(id);
230
    }
231
 
2066 ankur.sing 232
    public static String getWarehouseDesc(long id) {
233
        if(warehouses == null) {
234
            return null;
235
        }
236
        return warehouses.get(id);
237
    }
5516 phani.kuma 238
 
239
    public static long getVoucherTypeId(String voucherDesc) {
240
        if(voucherType == null) {
241
            return 0;
242
        }
243
        for(Entry<Long, String> v : voucherType.entrySet()) {
244
            if(v.getValue().equals(voucherDesc)) {
245
                return v.getKey();
246
            }
247
        }
248
        return 0;
249
    }
250
 
2068 ankur.sing 251
    public static String getDisplayableDate(Long millis){
252
        Date date = new Date();
253
        date.setTime(millis);
254
        String dateString = date.toString();
255
        dateString = dateString.substring(0, dateString.lastIndexOf(" "));
256
        dateString = dateString.substring(0, dateString.lastIndexOf(" "));
257
        return dateString;      
258
    }
2105 ankur.sing 259
 
2427 ankur.sing 260
    /**
261
     * Since in vendor combo box, vendor name is populated, this method is used to get Id from name
262
     * @param vendor name
263
     * @return vendor Id corresponding to the name
264
     */
2105 ankur.sing 265
    public static long getVendorId(String vendorDesc) {
266
        if(vendors == null) {
267
            return 0;
268
        }
269
        for(Entry<Long, String> v : vendors.entrySet()) {
270
            if(v.getValue().equals(vendorDesc)) {
271
                return v.getKey();
272
            }
273
        }
274
        return 0;
275
    }
2119 ankur.sing 276
 
2427 ankur.sing 277
    /**
4725 phani.kuma 278
     * Since in warehouse combo box, warehouse name is populated, this method is used to get Id from name
279
     * @param warehouse name
280
     * @return warehouse Id corresponding to the name
281
     */
282
    public static long getWarehouseId(String warehouseDesc) {
283
        if(warehouses == null) {
284
            return 0;
285
        }
286
        for(Entry<Long, String> w : warehouses.entrySet()) {
287
            if(w.getValue().equals(warehouseDesc)) {
288
                return w.getKey();
289
            }
290
        }
291
        return 0;
292
    }
293
 
294
    /**
3558 rajveer 295
     * Since in source combo box, source name is populated, this method is used to get Id from name
296
     * @param source name
297
     * @return source Id corresponding to the name
298
     */
299
    public static long getSourceId(String sourceDesc) {
300
        if(sources == null) {
301
            return 0;
302
        }
303
        for(Entry<Long, String> s : sources.entrySet()) {
304
            if(s.getValue().equals(sourceDesc)) {
305
                return s.getKey();
306
            }
307
        }
308
        return 0;
309
    }
310
 
311
    /**
2427 ankur.sing 312
     * validates item object. ProductGroup, brand, modelNumber, modelName should not be empty or null.
313
     * Also does item and vendor prices validations (MRP >= SP, MRP >= MOP, TP <= MOP)
314
     * Vendor Item Key should not be empty or null
315
     * @param item
2431 ankur.sing 316
     * @return true if validation is successful, false otherwise
2427 ankur.sing 317
     */
2119 ankur.sing 318
    public static boolean validateItem(Item item) {
319
        if(item.getProductGroup() == null || item.getProductGroup().isEmpty()) {
320
            Window.alert("Product Group cannot be empty.");
321
            return false;
322
        }
323
        if(item.getBrand() == null || item.getBrand().isEmpty()) {
324
            Window.alert("Brand cannot be empty.");
325
            return false;
326
        }
327
        if(item.getModelNumber() == null || item.getModelNumber().isEmpty()) {
328
            Window.alert("Model Number cannot be empty.");
329
            return false;
330
        }
331
 
2489 ankur.sing 332
        if(item.getSellingPrice() != null && item.getMrp() != null && item.getSellingPrice() > item.getMrp()) {
2119 ankur.sing 333
            Window.alert("Selling price cannot be more than MRP");
334
            return false;
335
        }
336
        if(item.getVendorPricesMap() != null && !item.getVendorPricesMap().isEmpty()) {
337
            for(VendorPricings v : item.getVendorPricesMap().values()) {
2489 ankur.sing 338
                if(item.getMrp() != null && item.getMrp() < v.getMop()) {
2119 ankur.sing 339
                    Window.alert("MRP cannot be less than MOP. Vendor: " + Utils.getVendorDesc(v.getVendorId()));
340
                    return false;
341
                }
18457 kshitij.so 342
//                if(v.getTransferPrice() > v.getMop()) {
343
//                    Window.alert("Transfer Price cannot be more than MOP. Vendor: " + Utils.getVendorDesc(v.getVendorId()));
344
//                    return false;
345
//                }
2119 ankur.sing 346
            }
347
        }
2359 ankur.sing 348
        if(item.getVendorKeysMap() != null && !item.getVendorKeysMap().isEmpty()) {
349
            for(VendorItemMapping v : item.getVendorKeysMap().values()) {
2119 ankur.sing 350
                if(v.getItemKey() == null || v.getItemKey().isEmpty()) {
351
                    Window.alert("Item Key cannot be empty. Vendor: " + Utils.getVendorDesc(v.getVendorId()));
352
                    return false;
353
                }
354
            }
355
        }
356
        return true;
357
    }
2126 ankur.sing 358
 
2427 ankur.sing 359
 
2126 ankur.sing 360
    public static boolean validateStatusChange(int fromStatus, int toStatus) {
361
        switch(toStatus) {
362
        case PHASED_OUT: 
363
            switch(fromStatus) {
364
            case IN_PROCESS: return true;
365
            case CONTENT_COMPLETE: return true;
366
            case ACTIVE: return true;
367
            default: return false;
368
            }
369
        case IN_PROCESS:
370
            switch(fromStatus) {
371
            case PHASED_OUT: return true;
372
            default: return false;
373
            }
374
        case PAUSED:
375
            switch(fromStatus) {
376
            case ACTIVE: return true;
377
            default: return false;
378
            }
379
        case ACTIVE:
380
            switch(fromStatus) {
381
            case PAUSED: return true;
382
            default: return false;
383
            }
384
        }
385
        return true;
386
    }
5516 phani.kuma 387
 
388
	public static void setVoucherType(Map<Long, String> voucherType) {
389
		Utils.voucherType = voucherType;
390
	}
391
 
392
	public static Map<Long, String> getVoucherType() {
393
		return voucherType;
394
	}
12523 amit.gupta 395
 
396
	public static Map<Long, String> getStateMap() {
397
		return stateMap;
398
	}
2066 ankur.sing 399
}