Subversion Repositories SmartDukaan

Rev

Rev 19279 | Rev 19690 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
493 rajveer 1
package in.shop2020.hotspot.dashbaord.server;
2
 
19015 manish.sha 3
import in.shop2020.hotspot.dashbaord.server.OrderPromisedShippingComparator;
493 rajveer 4
import in.shop2020.hotspot.dashbaord.shared.actions.Order;
19032 manish.sha 5
import in.shop2020.hotspot.dashbaord.shared.actions.OrderAlert;
19260 manish.sha 6
import in.shop2020.hotspot.dashbaord.shared.actions.OrderCategory;
493 rajveer 7
import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;
2697 chandransh 8
import in.shop2020.hotspot.dashbaord.shared.actions.ReturnOrder;
19227 manish.sha 9
import in.shop2020.model.v1.inventory.InventoryService;
5945 mandeep.dh 10
import in.shop2020.model.v1.inventory.InventoryType;
18100 manish.sha 11
import in.shop2020.model.v1.inventory.WarehouseType;
5110 mandeep.dh 12
import in.shop2020.model.v1.catalog.Item;
13
import in.shop2020.model.v1.catalog.ItemType;
5945 mandeep.dh 14
import in.shop2020.model.v1.inventory.Warehouse;
914 chandransh 15
import in.shop2020.model.v1.order.LineItem;
7422 rajveer 16
import in.shop2020.model.v1.order.OrderSource;
493 rajveer 17
import in.shop2020.model.v1.order.OrderStatus;
18
import in.shop2020.model.v1.order.TransactionService.Client;
19050 manish.sha 19
import in.shop2020.hotspot.dashbaord.server.EhcacheWrapper;
5110 mandeep.dh 20
import in.shop2020.thrift.clients.CatalogClient;
5948 mandeep.dh 21
import in.shop2020.thrift.clients.InventoryClient;
3132 rajveer 22
import in.shop2020.thrift.clients.TransactionClient;
13146 manish.sha 23
import in.shop2020.thrift.clients.LogisticsClient;
493 rajveer 24
 
4411 rajveer 25
import java.io.ByteArrayOutputStream;
26
import java.io.File;
27
import java.io.FileNotFoundException;
28
import java.io.FileOutputStream;
29
import java.io.IOException;
18938 manish.sha 30
import java.text.DecimalFormat;
31
import java.text.NumberFormat;
19054 manish.sha 32
import java.text.SimpleDateFormat;
493 rajveer 33
import java.util.ArrayList;
4411 rajveer 34
import java.util.Calendar;
19004 manish.sha 35
import java.util.Collections;
493 rajveer 36
import java.util.Date;
4411 rajveer 37
import java.util.GregorianCalendar;
38
import java.util.HashMap;
493 rajveer 39
import java.util.List;
4411 rajveer 40
import java.util.Map;
19004 manish.sha 41
import java.util.Map.Entry;
19110 manish.sha 42
import java.util.Set;
493 rajveer 43
 
19050 manish.sha 44
import net.sf.ehcache.CacheManager;
45
 
4411 rajveer 46
import org.slf4j.Logger;
47
import org.slf4j.LoggerFactory;
48
 
2449 chandransh 49
/**
50
 * This class is a facade to the Transaction service and should be used to
4133 chandransh 51
 * access all order specific data which requires some kind of transformation.
2449 chandransh 52
 * 
53
 * @author Chandranshu
54
 * 
55
 */
493 rajveer 56
public class TransactionUtils {
4411 rajveer 57
	private static String courierDetailsPath = "/CourierDetailReports";
58
	private static Logger logger = LoggerFactory.getLogger(TransactionUtils.class);
19196 manish.sha 59
	private static long ALL_GREEN = 1L;
60
	private static long GREEN_AND_PURPULE = 2L;
61
	private static long GREEN_AND_IN_RED_OR_WHITE = 3L;
62
	private static long ALL_RED = 4L;
63
	private static long ALL_PURPLE = 5L;
64
	private static long PURPLE_AND_IN_RED_OR_WHITE = 6L;
65
	private static long ALL_OTHERS = 7L;
19260 manish.sha 66
	private static int categoryOrderCount = 0;
4411 rajveer 67
 
19260 manish.sha 68
 
69
	private static Map<Long, OrderCategory> categoryStrMap = new HashMap<Long, OrderCategory>();
70
 
19196 manish.sha 71
	private static enum ColorCode {
72
		GREEN,
73
		PURPLE,
74
		RED,
75
		OTHER
76
	}
77
 
19260 manish.sha 78
	static{
79
		categoryStrMap.put(ALL_GREEN, OrderCategory.READY);
80
		categoryStrMap.put(GREEN_AND_PURPULE, OrderCategory.READY);
81
		categoryStrMap.put(GREEN_AND_IN_RED_OR_WHITE, OrderCategory.REVIEW);
82
		categoryStrMap.put(ALL_RED, OrderCategory.REVIEW);
83
		categoryStrMap.put(ALL_PURPLE, OrderCategory.READY_LATER);
84
		categoryStrMap.put(PURPLE_AND_IN_RED_OR_WHITE, OrderCategory.REVIEW_LATER);
85
		categoryStrMap.put(ALL_OTHERS, OrderCategory.REVIEW_LATER);
86
	}
19196 manish.sha 87
 
19260 manish.sha 88
 
2449 chandransh 89
	/**
90
	 * The human user is concerned only with a consolidated view of actionable
91
	 * orders. Orders with different statuses in the database can be part of the
92
	 * same consolidated view. This method uses a mapping of <i>type</i> to
93
	 * <i>status</i> to get all such orders and return them as order beans.
94
	 * 
95
	 * @param type
96
	 *            The type of orders to return.
4133 chandransh 97
	 * @param offset
98
	 *            Offset to start from
99
	 * @param limit
100
	 *            No. of orders to return
2449 chandransh 101
	 * @param warehouseId
102
	 *            The warehouse for which the orders should be queried.
103
	 * @return A list of orders of the given type to be fulfilled from the given
104
	 *         warehouse
105
	 */
19260 manish.sha 106
	public static List<Order> getOrders(OrderType type, long offset, long limit, long warehouseId, long source, OrderCategory orderCategory){
2449 chandransh 107
		List<OrderStatus> statuses = getStatuses(type);
493 rajveer 108
 
109
		List<Order> orders = new ArrayList<Order>();
110
		try{
4133 chandransh 111
			TransactionClient txnClient = new TransactionClient();
112
			Client client = txnClient.getClient();
493 rajveer 113
 
114
			List<in.shop2020.model.v1.order.Order> t_orders = new ArrayList<in.shop2020.model.v1.order.Order>();
19004 manish.sha 115
			if(type==OrderType.NEW || type==OrderType.ALL_PENDING || type ==OrderType.LOW_INVENTORY || type == OrderType.PO_RAISED
116
					|| type == OrderType.REVERSAL_INITIATED || type == OrderType.NOT_AVAILABLE){
19228 manish.sha 117
				t_orders.addAll(client.getOrdersInBatchAsPromisedShipping(statuses, 0, 0, warehouseId, source));
19004 manish.sha 118
			}else{
19268 manish.sha 119
				if(orderCategory!=OrderCategory.NONE){
120
					statuses = getStatuses(OrderType.ALL_PENDING);
121
					t_orders.addAll(client.getOrdersInBatchAsPromisedShipping(statuses, 0, 0, warehouseId, source));
122
				}else{
123
					t_orders.addAll(client.getOrdersInBatch(statuses, offset, limit, warehouseId, source));
124
				}
19004 manish.sha 125
			}
493 rajveer 126
 
19224 manish.sha 127
			orders = getOrdersFromThirftOrders(t_orders);
128
			/*for (in.shop2020.model.v1.order.Order t_order: t_orders){
671 chandransh 129
				Order o = getOrderFromThriftOrder(t_order);
493 rajveer 130
				orders.add(o);
19224 manish.sha 131
			}*/
19004 manish.sha 132
			if(type==OrderType.NEW || type==OrderType.ALL_PENDING || type ==OrderType.LOW_INVENTORY || type == OrderType.PO_RAISED
19268 manish.sha 133
					|| type == OrderType.REVERSAL_INITIATED || type == OrderType.NOT_AVAILABLE || type == OrderType.NOT_APPLICABLE){
19004 manish.sha 134
				Map<Long, List<Order>> transactionOrdersMap = new HashMap<Long, List<Order>>();
19196 manish.sha 135
				Map<Long, Map<String, Long>> transactionsColorMap = new HashMap<Long, Map<String, Long>>();
19004 manish.sha 136
				for(Order order : orders){
137
					if(transactionOrdersMap.containsKey(order.getTransactionId())){
138
						List<Order> txnOrders = transactionOrdersMap.get(order.getTransactionId());
139
						txnOrders.add(order);
140
						transactionOrdersMap.put(order.getTransactionId(), txnOrders);
141
					}else{
142
						List<Order> txnOrders = new ArrayList<Order>();
143
						txnOrders.add(order);
144
						transactionOrdersMap.put(order.getTransactionId(), txnOrders);
145
					}
19196 manish.sha 146
 
147
					if(transactionsColorMap.containsKey(order.getTransactionId())){
148
						Map<String, Long> colorMap = transactionsColorMap.get(order.getTransactionId());
149
						//SHIPPING_TIME_EXCEEDED, DELIVERY_TIME_EXCEEDED, ORDER_NOT_CONNECTED_FOR_TOO_LONG, ORDER_NOT_CONNECTED
150
						if(order.getAlert()==OrderAlert.TODAY_SHIPPING_IN_STOCK){
151
							if(colorMap.containsKey(ColorCode.GREEN.toString())){
152
								colorMap.put(ColorCode.GREEN.toString(),colorMap.get(ColorCode.GREEN.toString())+1);
153
							}else{
154
								colorMap.put(ColorCode.GREEN.toString(),1L);
155
							}
156
						}else if(order.getAlert()==OrderAlert.TODAY_SHIPPING_NOT_IN_STOCK){
157
							if(colorMap.containsKey(ColorCode.RED.toString())){
158
								colorMap.put(ColorCode.RED.toString(),colorMap.get(ColorCode.RED.toString())+1);
159
							}else{
160
								colorMap.put(ColorCode.RED.toString(),1L);
161
							}
162
						}else if(order.getAlert()==OrderAlert.LATER_SHIPPING_IN_STOCK){
163
							if(colorMap.containsKey(ColorCode.PURPLE.toString())){
164
								colorMap.put(ColorCode.PURPLE.toString(),colorMap.get(ColorCode.PURPLE.toString())+1);
165
							}else{
166
								colorMap.put(ColorCode.PURPLE.toString(),1L);
167
							}
168
						}else{
169
							if(colorMap.containsKey(ColorCode.OTHER.toString())){
170
								colorMap.put(ColorCode.OTHER.toString(),colorMap.get(ColorCode.OTHER.toString())+1);
171
							}else{
172
								colorMap.put(ColorCode.OTHER.toString(),1L);
173
							}
174
						}
175
						transactionsColorMap.put(order.getTransactionId(), colorMap);
176
					}else{
177
						Map<String, Long> colorMap = new HashMap<String, Long>();
178
						if(order.getAlert()==OrderAlert.TODAY_SHIPPING_IN_STOCK){
179
							colorMap.put(ColorCode.GREEN.toString(),1L);
180
						}else if(order.getAlert()==OrderAlert.TODAY_SHIPPING_NOT_IN_STOCK){
181
							colorMap.put(ColorCode.RED.toString(),1L);
182
						}else if(order.getAlert()==OrderAlert.LATER_SHIPPING_IN_STOCK){
183
							colorMap.put(ColorCode.PURPLE.toString(),1L);
184
						}else{
185
							colorMap.put(ColorCode.OTHER.toString(),1L);
186
						}
187
						transactionsColorMap.put(order.getTransactionId(), colorMap);
188
					}
189
 
19004 manish.sha 190
				}
19196 manish.sha 191
 
192
				Map<Long, List<Long>> orderCategoryMap = new HashMap<Long, List<Long>>();
193
 
194
				for(Entry<Long, Map<String, Long>> colorMapEntry : transactionsColorMap.entrySet()){
195
					Map<String, Long> colorMap = colorMapEntry.getValue();
196
					List<String> colorSet = new ArrayList<String>(colorMap.keySet());
197
					long colorMapSize = colorSet.size();
198
					if(colorMapSize==1){
199
						if(ColorCode.GREEN.toString().equalsIgnoreCase(colorSet.get(0))){
200
							if(orderCategoryMap.containsKey(ALL_GREEN)){
201
								List<Long> transactions = orderCategoryMap.get(ALL_GREEN);
202
								transactions.add(colorMapEntry.getKey());
203
								orderCategoryMap.put(ALL_GREEN, transactions);
204
							}else{
205
								List<Long> transactions = new ArrayList<Long>();
206
								transactions.add(colorMapEntry.getKey());
207
								orderCategoryMap.put(ALL_GREEN, transactions);
208
							}
209
						}else if(ColorCode.RED.toString().equalsIgnoreCase(colorSet.get(0))){
210
							if(orderCategoryMap.containsKey(ALL_RED)){
211
								List<Long> transactions = orderCategoryMap.get(ALL_RED);
212
								transactions.add(colorMapEntry.getKey());
213
								orderCategoryMap.put(ALL_RED, transactions);
214
							}else{
215
								List<Long> transactions = new ArrayList<Long>();
216
								transactions.add(colorMapEntry.getKey());
217
								orderCategoryMap.put(ALL_RED, transactions);
218
							}
219
						}else if(ColorCode.PURPLE.toString().equalsIgnoreCase(colorSet.get(0))){
220
							if(orderCategoryMap.containsKey(ALL_PURPLE)){
221
								List<Long> transactions = orderCategoryMap.get(ALL_PURPLE);
222
								transactions.add(colorMapEntry.getKey());
223
								orderCategoryMap.put(ALL_PURPLE, transactions);
224
							}else{
225
								List<Long> transactions = new ArrayList<Long>();
226
								transactions.add(colorMapEntry.getKey());
227
								orderCategoryMap.put(ALL_PURPLE, transactions);
228
							}
229
						}else{
230
							if(orderCategoryMap.containsKey(ALL_OTHERS)){
231
								List<Long> transactions = orderCategoryMap.get(ALL_OTHERS);
232
								transactions.add(colorMapEntry.getKey());
233
								orderCategoryMap.put(ALL_OTHERS, transactions);
234
							}else{
235
								List<Long> transactions = new ArrayList<Long>();
236
								transactions.add(colorMapEntry.getKey());
237
								orderCategoryMap.put(ALL_OTHERS, transactions);
238
							}
239
						}
19279 manish.sha 240
					}else if(colorMapSize==2){
19196 manish.sha 241
						if(colorSet.contains(ColorCode.GREEN.toString())){
242
							if(colorSet.contains(ColorCode.PURPLE.toString())){
243
								if(orderCategoryMap.containsKey(GREEN_AND_PURPULE)){
244
									List<Long> transactions = orderCategoryMap.get(GREEN_AND_PURPULE);
245
									transactions.add(colorMapEntry.getKey());
246
									orderCategoryMap.put(GREEN_AND_PURPULE, transactions);
247
								}else{
248
									List<Long> transactions = new ArrayList<Long>();
249
									transactions.add(colorMapEntry.getKey());
250
									orderCategoryMap.put(GREEN_AND_PURPULE, transactions);
251
								}
252
							}else{
253
								if(orderCategoryMap.containsKey(GREEN_AND_IN_RED_OR_WHITE)){
254
									List<Long> transactions = orderCategoryMap.get(GREEN_AND_IN_RED_OR_WHITE);
255
									transactions.add(colorMapEntry.getKey());
256
									orderCategoryMap.put(GREEN_AND_IN_RED_OR_WHITE, transactions);
257
								}else{
258
									List<Long> transactions = new ArrayList<Long>();
259
									transactions.add(colorMapEntry.getKey());
260
									orderCategoryMap.put(GREEN_AND_IN_RED_OR_WHITE, transactions);
261
								}
262
							}
263
						}else if(colorSet.contains(ColorCode.PURPLE.toString())){
264
							if(orderCategoryMap.containsKey(PURPLE_AND_IN_RED_OR_WHITE)){
265
								List<Long> transactions = orderCategoryMap.get(PURPLE_AND_IN_RED_OR_WHITE);
266
								transactions.add(colorMapEntry.getKey());
267
								orderCategoryMap.put(PURPLE_AND_IN_RED_OR_WHITE, transactions);
268
							}else{
269
								List<Long> transactions = new ArrayList<Long>();
270
								transactions.add(colorMapEntry.getKey());
271
								orderCategoryMap.put(PURPLE_AND_IN_RED_OR_WHITE, transactions);
272
							}
273
						}else{
274
							if(orderCategoryMap.containsKey(ALL_OTHERS)){
275
								List<Long> transactions = orderCategoryMap.get(ALL_OTHERS);
276
								transactions.add(colorMapEntry.getKey());
277
								orderCategoryMap.put(ALL_OTHERS, transactions);
278
							}else{
279
								List<Long> transactions = new ArrayList<Long>();
280
								transactions.add(colorMapEntry.getKey());
281
								orderCategoryMap.put(ALL_OTHERS, transactions);
282
							}
283
						}
19279 manish.sha 284
					}else{
285
						if(colorSet.contains(ColorCode.GREEN.toString())){
286
							if(colorSet.contains(ColorCode.RED.toString()) || colorSet.contains(ColorCode.OTHER.toString())){
287
								if(orderCategoryMap.containsKey(GREEN_AND_IN_RED_OR_WHITE)){
288
									List<Long> transactions = orderCategoryMap.get(GREEN_AND_IN_RED_OR_WHITE);
289
									transactions.add(colorMapEntry.getKey());
290
									orderCategoryMap.put(GREEN_AND_IN_RED_OR_WHITE, transactions);
291
								}else{
292
									List<Long> transactions = new ArrayList<Long>();
293
									transactions.add(colorMapEntry.getKey());
294
									orderCategoryMap.put(GREEN_AND_IN_RED_OR_WHITE, transactions);
295
								}
296
							}else{
297
								if(orderCategoryMap.containsKey(GREEN_AND_PURPULE)){
298
									List<Long> transactions = orderCategoryMap.get(GREEN_AND_PURPULE);
299
									transactions.add(colorMapEntry.getKey());
300
									orderCategoryMap.put(GREEN_AND_PURPULE, transactions);
301
								}else{
302
									List<Long> transactions = new ArrayList<Long>();
303
									transactions.add(colorMapEntry.getKey());
304
									orderCategoryMap.put(GREEN_AND_PURPULE, transactions);
305
								}
306
							}
307
						}else if(colorSet.contains(ColorCode.PURPLE.toString())){
308
							if(orderCategoryMap.containsKey(PURPLE_AND_IN_RED_OR_WHITE)){
309
								List<Long> transactions = orderCategoryMap.get(PURPLE_AND_IN_RED_OR_WHITE);
310
								transactions.add(colorMapEntry.getKey());
311
								orderCategoryMap.put(PURPLE_AND_IN_RED_OR_WHITE, transactions);
312
							}else{
313
								List<Long> transactions = new ArrayList<Long>();
314
								transactions.add(colorMapEntry.getKey());
315
								orderCategoryMap.put(PURPLE_AND_IN_RED_OR_WHITE, transactions);
316
							}
317
						}else{
318
							if(orderCategoryMap.containsKey(ALL_OTHERS)){
319
								List<Long> transactions = orderCategoryMap.get(ALL_OTHERS);
320
								transactions.add(colorMapEntry.getKey());
321
								orderCategoryMap.put(ALL_OTHERS, transactions);
322
							}else{
323
								List<Long> transactions = new ArrayList<Long>();
324
								transactions.add(colorMapEntry.getKey());
325
								orderCategoryMap.put(ALL_OTHERS, transactions);
326
							}
327
						}
19196 manish.sha 328
					}
19004 manish.sha 329
				}
19110 manish.sha 330
 
19196 manish.sha 331
				List<Long> categoryList = new ArrayList<Long>(orderCategoryMap.keySet());
332
				Collections.sort(categoryList);
19110 manish.sha 333
 
19196 manish.sha 334
				orders = new ArrayList<Order>();
19260 manish.sha 335
				if(orderCategory==OrderCategory.NONE){
336
					for(Long category:categoryList){
337
						List<Long> transactions = orderCategoryMap.get(category);
338
						for(Long transactionId: transactions){
339
							List<Order> txnOrders = transactionOrdersMap.get(transactionId);
340
							for(Order order: txnOrders){
341
								order.setCategory(categoryStrMap.get(category));
342
							}
343
							Collections.sort(txnOrders,new OrderPromisedShippingComparator());
344
							orders.addAll(txnOrders);
345
						}
19196 manish.sha 346
					}
19260 manish.sha 347
				}else{
348
					for(Long category:categoryList){
349
						if(orderCategory==categoryStrMap.get(category)){
350
							List<Long> transactions = orderCategoryMap.get(category);
351
							for(Long transactionId: transactions){
352
								List<Order> txnOrders = transactionOrdersMap.get(transactionId);
353
								for(Order order: txnOrders){
354
									order.setCategory(categoryStrMap.get(category));
355
								}
356
								Collections.sort(txnOrders,new OrderPromisedShippingComparator());
357
								orders.addAll(txnOrders);
358
							}
359
						}else{
360
							continue;
361
						}
362
					}
19263 manish.sha 363
					categoryOrderCount = 0;
19260 manish.sha 364
					categoryOrderCount = categoryOrderCount+orders.size();
19004 manish.sha 365
				}
19260 manish.sha 366
 
19004 manish.sha 367
			}
368
 
493 rajveer 369
		}catch(Exception e){
2449 chandransh 370
			e.printStackTrace();
493 rajveer 371
		}
372
		return orders;
373
	}
374
 
2449 chandransh 375
	/**
4133 chandransh 376
	 * Wrapper around the method of same name in the transaction service. This
377
	 * method uses a mapping of <i>type</i> to <i>status</i> to get the count of
378
	 * all orders with a given status.
379
	 * 
380
	 * @param type
381
	 *            The type of orders to return.
382
	 * @param warehouseId
383
	 *            The warehouse for which the orders should be queried.
384
	 * @return The count of orders of the given type assigned to the given
385
	 *         warehouse.
386
	 */
19260 manish.sha 387
	public static int getOrderCount(OrderType type, long warehouseId, long source, OrderCategory orderCategory){
4133 chandransh 388
		List<OrderStatus> statuses = getStatuses(type);
389
 
390
		int count = 0;
391
		try{
19268 manish.sha 392
			if(type==OrderType.NOT_APPLICABLE && orderCategory!=OrderCategory.NONE){
19263 manish.sha 393
				int orderCount = categoryOrderCount;
394
				categoryOrderCount = 0;
395
				return orderCount;
19260 manish.sha 396
			}
397
			else{
398
				TransactionClient txnClient = new TransactionClient();
399
				Client client = txnClient.getClient();
400
				count += client.getOrderCount(statuses, warehouseId, source);
401
			}
4133 chandransh 402
		}catch(Exception e){
403
			e.printStackTrace();
404
		}
405
		return count;
406
	}
407
 
408
	/**
2449 chandransh 409
	 * Calls the same method of the transaction service and returns the status
410
	 * returned. Catches all exceptions that are raised and returns false in
411
	 * that case.
412
	 * 
413
	 * @param warehouseId
414
	 *            The warehouse for which the orders should be marked as
415
	 *            manifested.
416
	 * @param providerId
417
	 *            The provider for which the orders should be marked as
418
	 *            manifested.
3065 chandransh 419
	 * @param cod
420
	 *             Whether cod orders have to be marked as manifested
2449 chandransh 421
	 * @return True if everything goes fine, false otherwise.
422
	 */
5769 rajveer 423
	public static Map<Long, Long> getBilledOrders(long warehouseId, String providerId, boolean cod){
424
		Map<Long, Long> orders = new HashMap<Long, Long>();
760 chandransh 425
		try {
426
			long provider_id = Long.parseLong(providerId);
3132 rajveer 427
			TransactionClient client = new TransactionClient();
760 chandransh 428
			Client c = client.getClient();
4790 rajveer 429
 
430
			List<OrderStatus> statuses = new ArrayList<OrderStatus>();
431
			statuses.add(OrderStatus.BILLED);
8303 amar.kumar 432
			List<in.shop2020.model.v1.order.Order> torders = c.getOrdersInBatch(statuses, 0, 0, warehouseId, 0);
4790 rajveer 433
			for(in.shop2020.model.v1.order.Order torder: torders){
5556 rajveer 434
				if(torder.getLogistics_provider_id() == provider_id && torder.isLogisticsCod() == cod){
5769 rajveer 435
					orders.put(torder.getId(), torder.getPickupStoreId());
4790 rajveer 436
				}
4411 rajveer 437
			}
438
 
760 chandransh 439
		}catch(Exception e){
440
			e.printStackTrace();
441
		}
4790 rajveer 442
		return orders;
760 chandransh 443
	}
2449 chandransh 444
 
4790 rajveer 445
	public static boolean generateCourierDetailsFile(List<Long> orderIds, long providerId, long warehouseId, boolean isCod){
4411 rajveer 446
		Calendar date = new GregorianCalendar();
447
		int year = date.get(Calendar.YEAR);
448
		int month = date.get(Calendar.MONTH) +1;
449
		int day = date.get(Calendar.DAY_OF_MONTH);
450
 
451
		String fileNameSuffix = "-" + warehouseId + "-"+ providerId + "-" + year + "-" + month + "-" + day;
452
		if(isCod){
453
		    fileNameSuffix = "cod" + fileNameSuffix ;
454
		}
455
		else{
456
		    fileNameSuffix = "prepaid" + fileNameSuffix;
457
		}
458
 
459
		try {
4790 rajveer 460
			String fileName = courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls";
4415 rajveer 461
			FileOutputStream f = new FileOutputStream(fileName);
4411 rajveer 462
			CourierDetailsGenerator courierDetailsGenerator = new CourierDetailsGenerator();
4790 rajveer 463
			ByteArrayOutputStream baosXLS = courierDetailsGenerator.generateCourierDetails(orderIds, warehouseId, providerId, isCod);
4411 rajveer 464
			baosXLS.writeTo(f);
465
			f.close();
466
		} catch (FileNotFoundException e) {
467
			logger.error("Unable to create the courier details file", e);
468
		} catch (IOException e) {
469
			logger.error("Unable to create the courier details file", e);
470
		}
471
 
472
		CourierDetailsReportMerger merger = new CourierDetailsReportMerger();
473
		try {
474
			Map<Long, String> warehouseIdFileNames = new HashMap<Long, String>();
4790 rajveer 475
			String fName;
476
			fName = courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls";
477
			if((new File(fName)).exists()){
478
				warehouseIdFileNames.put(0L, fName);
4411 rajveer 479
			}
4790 rajveer 480
			fName = courierDetailsPath + "/courier-details-" + fileNameSuffix + ".xls";
481
			if((new File(fName)).exists()){
482
				warehouseIdFileNames.put(1L, fName);
4411 rajveer 483
			}
4790 rajveer 484
			ByteArrayOutputStream binXLS = merger.mergeCourierDetailsReports(warehouseIdFileNames);
485
			FileOutputStream f = new FileOutputStream(courierDetailsPath + "/courier-details-" + fileNameSuffix + ".xls");
4411 rajveer 486
			binXLS.writeTo(f);
487
			f.close();
4790 rajveer 488
			File tempFile = new File(courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls");
489
			if(tempFile.exists()){
490
				tempFile.delete();
491
			}
4411 rajveer 492
		} catch (FileNotFoundException e) {
493
			logger.error("Error while creating the Courier Details report", e);
494
		} catch (IOException e) {
495
			logger.error("IO error while writing the Courier Details report", e);
496
		}
497
		return true;
498
	}
499
 
19224 manish.sha 500
 
501
	public static List<Order> getOrdersFromThirftOrders(List<in.shop2020.model.v1.order.Order> orders){
502
		List<Order> ordersToReturn = new ArrayList<Order>();
19226 manish.sha 503
		Map<Long, Warehouse> warehousesMap = CatalogUtils.getAllWarehousesForBillingWarehouse(0); 
19224 manish.sha 504
		List<Long> itemIds = new ArrayList<Long>();
505
		Map<Long, List<in.shop2020.model.v1.order.Order>> txnOrdersMap = new HashMap<Long, List<in.shop2020.model.v1.order.Order>>();
506
		SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
507
		SimpleDateFormat newSdf = new SimpleDateFormat("yyyy-MM-dd");
508
		NumberFormat formatter = new DecimalFormat("#0.000");
509
		NumberFormat rformatter = new DecimalFormat("#0.00");
510
		Date date = new Date(System.currentTimeMillis());
511
		for(in.shop2020.model.v1.order.Order t_order : orders){
512
			if(!itemIds.contains(t_order.getLineitems().get(0).getItem_id())){
513
				itemIds.add(t_order.getLineitems().get(0).getItem_id());
514
			}
515
			List<in.shop2020.model.v1.order.Order> txnOrders = null;
516
			if(txnOrdersMap.containsKey(t_order.getTransactionId())){
517
				txnOrders = txnOrdersMap.get(t_order.getTransactionId());				
518
			}else{
519
				txnOrders = new ArrayList<in.shop2020.model.v1.order.Order>();
520
			}
521
			txnOrders.add(t_order);
522
			txnOrdersMap.put(t_order.getTransactionId(), txnOrders);
523
		}
524
		try {
525
			in.shop2020.model.v1.catalog.CatalogService.Client client = new CatalogClient().getClient();
526
			Map<Long, Item> itemsMap = client.getItems(itemIds);
527
			in.shop2020.logistics.LogisticsService.Client logisticsClient = new LogisticsClient().getClient();
528
			List<in.shop2020.logistics.Provider> providers = logisticsClient.getAllProviders();
529
			Map<Long,in.shop2020.logistics.Provider> providersMap = new HashMap<Long, in.shop2020.logistics.Provider>();
530
 
531
			for(in.shop2020.logistics.Provider provider : providers){
532
				providersMap.put(provider.getId(), provider);
533
			}
534
 
535
			in.shop2020.model.v1.order.TransactionService.Client tClient = new TransactionClient().getClient();
19227 manish.sha 536
			InventoryClient inventoryServiceClient = new InventoryClient();
537
			InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
19224 manish.sha 538
			for(in.shop2020.model.v1.order.Order t_order : orders){
539
				LineItem lineItem = t_order.getLineitems().get(0);
540
				String pickFromWarehouse = warehousesMap.get(t_order.getFulfilmentWarehouseId()).getDisplayName();
541
				Item item = itemsMap.get(lineItem.getItem_id());
542
				in.shop2020.logistics.Provider provider = providersMap.get(t_order.getLogistics_provider_id());
543
				Warehouse fulfillmentWarehouse = warehousesMap.get(t_order.getFulfilmentWarehouseId());
544
				Map<Long, Map<String, String>> acceptTogetherOrdersMap = null;
545
				Map<Long, Map<String, String>> billTogetherOrdersMap = null;
546
				if(!t_order.isSetAccepted_timestamp()){
547
					acceptTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
548
					Map<String, String> orderValuesMap = new HashMap<String, String>();
549
					orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
550
					orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
551
					orderValuesMap.put("Promised_Shipping", sdf.format(new Date(t_order.getPromised_shipping_time())));     
552
					orderValuesMap.put("Weight", formatter.format(lineItem.getUnit_weight()));   
553
					orderValuesMap.put("UnitPrice", rformatter.format(lineItem.getUnit_price()));
554
					orderValuesMap.put("PackQuantity", item.getPackQuantity()+"");
555
					orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
556
					acceptTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
557
					List<in.shop2020.model.v1.order.Order> taOrders = null;
558
					if(txnOrdersMap.containsKey(t_order.getTransactionId())){
559
						taOrders = txnOrdersMap.get(t_order.getTransactionId());
560
					}else{
561
						try{
562
							taOrders = tClient.getOrdersForTransaction(t_order.getTransactionId(), t_order.getCustomer_id());
563
						}catch(Exception te){
564
							tClient = new TransactionClient().getClient();
565
							taOrders = tClient.getOrdersForTransaction(t_order.getTransactionId(), t_order.getCustomer_id());
566
						}
567
					}
568
					for(in.shop2020.model.v1.order.Order taOrder : taOrders){
569
						LineItem lineItem1 = taOrder.getLineitems().get(0);
570
						if(t_order.getId()==taOrder.getId()){
571
							continue;
572
						}
573
						else if(taOrder.getSource()!=OrderSource.WEBSITE.getValue()){
574
							continue;
575
						}else{
576
							orderValuesMap = new HashMap<String, String>();
577
							if(provider.isGroupShipmentAllowed() && !taOrder.isSetAccepted_timestamp() && t_order.getStatus()==taOrder.getStatus() 
578
									&& taOrder.getLogistics_provider_id()==t_order.getLogistics_provider_id() 
579
									&& taOrder.isLogisticsCod()==t_order.isLogisticsCod() && taOrder.getWarehouse_id() == t_order.getWarehouse_id() 
580
									&& taOrder.getOrderType() == t_order.getOrderType() && taOrder.getPickupStoreId() == t_order.getPickupStoreId()){
581
								orderValuesMap.put("ProductName", getItemDisplayName(lineItem1));
582
								orderValuesMap.put("Quantity", lineItem1.getQuantity()+"");
19227 manish.sha 583
								if(warehousesMap.containsKey(taOrder.getFulfilmentWarehouseId())){
584
									fulfillmentWarehouse = warehousesMap.get(taOrder.getFulfilmentWarehouseId());
585
								}else{
586
									try{
587
										fulfillmentWarehouse = inventoryClient.getWarehouse(taOrder.getFulfilmentWarehouseId());
588
										warehousesMap.put(fulfillmentWarehouse.getId(), fulfillmentWarehouse);
589
									}
590
									catch(Exception ie){
591
										ie.printStackTrace();
592
										inventoryClient = inventoryServiceClient.getClient();
593
										fulfillmentWarehouse = inventoryClient.getWarehouse(taOrder.getFulfilmentWarehouseId());
594
										warehousesMap.put(fulfillmentWarehouse.getId(), fulfillmentWarehouse);
595
									}
596
								}
19224 manish.sha 597
								orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
598
								orderValuesMap.put("Promised_Shipping", sdf.format(new Date(taOrder.getPromised_shipping_time())));
599
								orderValuesMap.put("UnitPrice", rformatter.format(lineItem1.getUnit_price()));
600
								orderValuesMap.put("Weight", formatter.format(lineItem1.getUnit_weight()));
601
								if(itemsMap.containsKey(lineItem1.getItem_id())){
602
									Item orderItem = itemsMap.get(lineItem1.getItem_id());
603
									orderValuesMap.put("PackQuantity", orderItem.getPackQuantity()+"");
604
								}else{
605
									try{
606
										Item orderItem = client.getItem(lineItem1.getItem_id());
607
										orderValuesMap.put("PackQuantity", orderItem.getPackQuantity()+"");
608
										itemsMap.put(orderItem.getId(), orderItem);
609
									}catch(Exception ce){
610
										ce.printStackTrace();
611
										client = new CatalogClient().getClient();
612
										Item orderItem = client.getItem(lineItem1.getItem_id());
613
										orderValuesMap.put("PackQuantity", orderItem.getPackQuantity()+"");
614
										itemsMap.put(orderItem.getId(), orderItem);
615
									}
616
								}
617
							}
618
							if(orderValuesMap!=null && orderValuesMap.size()>0){
619
	            				acceptTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
620
	            			}
621
						}
622
					}
623
				}
624
 
625
				if(t_order.isSetLogisticsTransactionId()){
626
					billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
627
	            	Map<String, String> orderValuesMap = new HashMap<String, String>();
628
		            if(t_order.getStatus()==OrderStatus.ACCEPTED || t_order.getStatus()==OrderStatus.RTO_IN_TRANSIT ){
629
		            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
630
		            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
631
		            	if(ItemType.SERIALIZED==item.getType()){
632
		            		orderValuesMap.put("IsSerialized", "true");
633
		            	}else{
634
		            		orderValuesMap.put("IsSerialized", "false");
635
		            	}
636
		            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
637
		            		orderValuesMap.put("IsFreebie", "true");
638
		            	} else {
639
		            		orderValuesMap.put("IsFreebie", "false");
640
		            	}
641
		            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
642
	            	}
643
 
644
		            List<in.shop2020.model.v1.order.Order> taOrders = null;
645
		            try{
646
		            	taOrders = tClient.getGroupOrdersByLogisticsTxnId(t_order.getLogisticsTransactionId());
647
		            }catch(Exception te){
648
		            	tClient = new TransactionClient().getClient();
649
		            	taOrders = tClient.getGroupOrdersByLogisticsTxnId(t_order.getLogisticsTransactionId());
650
		            }
651
 
652
		            for(in.shop2020.model.v1.order.Order taOrder: taOrders){
653
	            		if(taOrder.getStatus()==OrderStatus.ACCEPTED || taOrder.getStatus()==OrderStatus.RTO_IN_TRANSIT ){
654
		            		if(taOrder.getId()==t_order.getId()){
655
		            			continue;
656
		            		} else {
657
		            			orderValuesMap = new HashMap<String, String>();
658
		            			Item orderItem = null;
659
		            			if(itemsMap.containsKey(taOrder.getLineitems().get(0).getItem_id())){
19296 manish.sha 660
		            				orderItem = itemsMap.get(taOrder.getLineitems().get(0).getItem_id());
19224 manish.sha 661
		            			}else{
662
									try{
663
										orderItem = client.getItem(taOrder.getLineitems().get(0).getItem_id());
664
										itemsMap.put(orderItem.getId(), orderItem);
665
									}catch(Exception ce){
666
										ce.printStackTrace();
667
										client = new CatalogClient().getClient();
668
										orderItem = client.getItem(taOrder.getLineitems().get(0).getItem_id());
669
										itemsMap.put(orderItem.getId(), orderItem);
670
									}
671
								}
672
 
673
		            			orderValuesMap.put("ProductName", getProductName(orderItem));
674
		                    	orderValuesMap.put("Quantity", taOrder.getLineitems().get(0).getQuantity()+"");
675
		                    	if(ItemType.SERIALIZED==orderItem.getType()){
676
		                    		orderValuesMap.put("IsSerialized", "true");
677
		                    	}else{
678
		                    		orderValuesMap.put("IsSerialized", "false");
679
		                    	}
680
		                    	if(taOrder.isSetFreebieItemId() && taOrder.getFreebieItemId()!=0){
681
		                    		orderValuesMap.put("IsFreebie", "true");
682
		                    	} else {
683
		                    		orderValuesMap.put("IsFreebie", "false");
684
		                    	}
685
		                    	billTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
686
		            		}
687
	            		}
688
	            	}
689
 
690
				}else{
691
	            	billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
692
	            	Map<String, String> orderValuesMap = new HashMap<String, String>();
693
	            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
694
	            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
695
	            	if(ItemType.SERIALIZED==item.getType()){
696
	            		orderValuesMap.put("IsSerialized", "true");
697
	            	}else{
698
	            		orderValuesMap.put("IsSerialized", "false");
699
	            	}
700
	            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
701
	            		orderValuesMap.put("IsFreebie", "true");
702
	            	} else {
703
	            		orderValuesMap.put("IsFreebie", "false");
704
	            	}
705
	            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
706
	            }
707
				String delayReason = null;
708
				if(t_order.getDelayReason() != null)
709
				    delayReason = t_order.getDelayReason().name();
710
 
711
				String osource = OrderSource.findByValue((int)t_order.getSource()).toString();
712
 
713
				Order order = new Order(t_order.getId(),
714
						t_order.getCustomer_id(),
715
						t_order.getCustomer_name(),
716
						t_order.getCustomer_mobilenumber(),
717
						t_order.getCustomer_pincode(),
718
						t_order.getCustomer_address1(),
719
						t_order.getCustomer_address2(),
720
						t_order.getCustomer_city(),
721
						t_order.getCustomer_state(),
722
						t_order.getCustomer_email(),
723
						t_order.getCreated_timestamp(),
724
						t_order.getShipping_timestamp(),
725
						t_order.getVerification_timestamp(),
726
						t_order.getExpected_delivery_time(),
727
						t_order.getPromised_delivery_time(),
728
						t_order.getExpected_shipping_time(),
729
						t_order.getPromised_shipping_time(),
730
						t_order.getStatus().getValue(),
731
						t_order.getStatusDescription(),
732
						t_order.getOrderType().name(),
733
						lineItem.getItem_id(),
734
						lineItem.getProductGroup(),
735
						lineItem.getBrand(),
736
						lineItem.getModel_name(),
737
						lineItem.getModel_number(),
738
						lineItem.getColor(),
739
						lineItem.getExtra_info(),
740
						lineItem.getDealText(),
741
						lineItem.getQuantity(),
742
						t_order.getTotal_amount(),
743
						t_order.getTotal_weight(),
744
						t_order.getAirwaybill_no(),
745
						t_order.getBilled_by(),
746
						t_order.getInvoice_number(),
747
						t_order.getJacket_number(),
748
						lineItem.getItem_number(),
749
						lineItem.getSerial_number(),
750
						t_order.getBatchNo(),
751
						t_order.getSerialNo(),
752
						t_order.isDoaFlag(),
753
						t_order.getPickupRequestNo(),
754
						t_order.isLogisticsCod(),
755
						delayReason,
756
						pickFromWarehouse,
757
						ItemType.SERIALIZED.equals(item.getType()),
758
						item.isHasItemNo(),
759
						t_order.getFulfilmentWarehouseId(),
760
						t_order.getWarehouse_id(),
761
						t_order.getPickupStoreId(),
762
						t_order.getFreebieItemId(),
763
						osource, 
764
						new Long(t_order.getProductCondition().getValue()),
765
						t_order.getTransactionId());
766
				if(acceptTogetherOrdersMap!=null && acceptTogetherOrdersMap.size()>0){
767
					order.setAcceptTogetherOrdersMap(acceptTogetherOrdersMap);
768
				}
769
				if(billTogetherOrdersMap!=null && billTogetherOrdersMap.size()>0){
770
					order.setBillTogetherOrdersMap(billTogetherOrdersMap);
771
				}
772
				if(t_order.isSetLogisticsTransactionId()){
773
					order.setLogisticsTransactionId(t_order.getLogisticsTransactionId());
774
				}
775
 
776
 
777
				long currentDateTime = 0;
778
				long promisedShippingTime =0 ;
779
				long currentTime = date.getTime();
780
				try{
781
					currentDateTime = newSdf.parse(newSdf.format(date)).getTime();
782
					promisedShippingTime = newSdf.parse(newSdf.format(new Date(order.getPromisedShippingTime()))).getTime();
783
				}catch(Exception e){
784
					e.printStackTrace();
785
				}
786
				if(promisedShippingTime >0 && (order.getStatus()==3 || order.getStatus()==5 || order.getStatus()==41 ||
787
						order.getStatus()==35 || order.getStatus()==36 || order.getStatus()==37)){
788
					if(promisedShippingTime <= currentDateTime){
789
						if(loadVirtualWarehouseDetails().contains(order.getFulfilmentWarehouseId())){
790
							order.setAlert(OrderAlert.TODAY_SHIPPING_NOT_IN_STOCK);
791
						}else{
792
							order.setAlert(OrderAlert.TODAY_SHIPPING_IN_STOCK);
793
						}
794
					}else{
795
						if(!loadVirtualWarehouseDetails().contains(order.getFulfilmentWarehouseId())){
796
							order.setAlert(OrderAlert.LATER_SHIPPING_IN_STOCK);
797
						}
798
					}
799
				}
800
 
801
				ordersToReturn.add(order);
802
			}
803
		}
804
		catch (Exception e) {
805
			e.printStackTrace();
806
		}
807
 
808
		return ordersToReturn;
809
 
810
	}
811
 
812
 
671 chandransh 813
	/**
2449 chandransh 814
	 * 
671 chandransh 815
	 * @param t_order
2449 chandransh 816
	 *            A thrift order object with line items.
817
	 * @return an Order bean which can be used for rendering on the client side.
671 chandransh 818
	 */
819
	public static Order getOrderFromThriftOrder(in.shop2020.model.v1.order.Order t_order) {
914 chandransh 820
		LineItem lineItem = t_order.getLineitems().get(0);
5110 mandeep.dh 821
		String pickFromWarehouse = null;
822
		Item item = null;
19004 manish.sha 823
		String warehouseType = "";
13146 manish.sha 824
 
825
	    Map<Long, Map<String, String>> acceptTogetherOrdersMap = null;
826
	    Map<Long, Map<String, String>> billTogetherOrdersMap = null;
5110 mandeep.dh 827
 
828
        try {
5945 mandeep.dh 829
            in.shop2020.model.v1.catalog.CatalogService.Client client = new CatalogClient().getClient();
5948 mandeep.dh 830
            in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = new InventoryClient().getClient();
5110 mandeep.dh 831
            item = client.getItem(lineItem.getItem_id());
832
            pickFromWarehouse = CatalogUtils.getWarehousesForBillingWarehouse(t_order.getWarehouse_id())
833
                                    .get(t_order.getFulfilmentWarehouseId());
834
 
835
            if (pickFromWarehouse == null) {
5948 mandeep.dh 836
                Warehouse warehouse = inventoryClient.getWarehouse(t_order.getFulfilmentWarehouseId());
837
                pickFromWarehouse = inventoryClient.getWarehouses(null, InventoryType.GOOD, warehouse.getVendor().getId(), t_order.getWarehouse_id(), 0).get(0).getDisplayName();
13146 manish.sha 838
            }											
839
            if(!t_order.isSetAccepted_timestamp()){
840
            	acceptTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
841
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
842
            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
843
				orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
18100 manish.sha 844
				if(!inventoryClient.isAlive()){
845
					inventoryClient = new InventoryClient().getClient();
846
				}
847
				Warehouse fulfillmentWarehouse = inventoryClient.getWarehouse(t_order.getFulfilmentWarehouseId());
19004 manish.sha 848
				warehouseType = fulfillmentWarehouse.getWarehouseType().toString();
18100 manish.sha 849
				orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
19054 manish.sha 850
				SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
18938 manish.sha 851
				orderValuesMap.put("Promised_Shipping", sdf.format(new Date(t_order.getPromised_shipping_time())));
18964 manish.sha 852
				NumberFormat formatter = new DecimalFormat("#0.000");     
853
				orderValuesMap.put("Weight", formatter.format(t_order.getLineitems().get(0).getUnit_weight()));
854
				formatter = new DecimalFormat("#0.00");   
18938 manish.sha 855
				orderValuesMap.put("UnitPrice", formatter.format(t_order.getLineitems().get(0).getUnit_price()));
18964 manish.sha 856
				orderValuesMap.put("PackQuantity", item.getPackQuantity()+"");
13146 manish.sha 857
				acceptTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
858
            	List<in.shop2020.model.v1.order.Order> taOrders = new TransactionClient().getClient().getOrdersForTransaction(t_order.getTransactionId(), t_order.getCustomer_id());
859
            	in.shop2020.logistics.Provider provider = new LogisticsClient().getClient().getProvider(t_order.getLogistics_provider_id());
860
            	for(in.shop2020.model.v1.order.Order taOrder : taOrders){
861
            		LineItem lineItem1 = taOrder.getLineitems().get(0);
862
            		if(t_order.getId()==taOrder.getId()){
863
            			continue;
13156 manish.sha 864
            		}
865
            		else if(taOrder.getSource()!=OrderSource.WEBSITE.getValue()){
866
            			continue;
867
            		}
868
            		else{
13146 manish.sha 869
            			orderValuesMap = new HashMap<String, String>();
13323 manish.sha 870
            			if(provider.isGroupShipmentAllowed() && !taOrder.isSetAccepted_timestamp() && t_order.getStatus()==taOrder.getStatus() 
871
            					&& taOrder.getLogistics_provider_id()==t_order.getLogistics_provider_id() 
872
            					&& taOrder.isLogisticsCod()==t_order.isLogisticsCod() && taOrder.getWarehouse_id() == t_order.getWarehouse_id() 
873
            					&& taOrder.getOrderType() == t_order.getOrderType() && taOrder.getPickupStoreId() == t_order.getPickupStoreId()){
13146 manish.sha 874
            				orderValuesMap.put("ProductName", getItemDisplayName(lineItem1));
875
            				orderValuesMap.put("Quantity", lineItem1.getQuantity()+"");
18100 manish.sha 876
            				if(!inventoryClient.isAlive()){
877
            					inventoryClient = new InventoryClient().getClient();
878
            				}
879
            				fulfillmentWarehouse = inventoryClient.getWarehouse(taOrder.getFulfilmentWarehouseId());
880
            				orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
18938 manish.sha 881
            				orderValuesMap.put("Promised_Shipping", sdf.format(new Date(taOrder.getPromised_shipping_time())));
882
            				orderValuesMap.put("UnitPrice", formatter.format(taOrder.getLineitems().get(0).getUnit_price()));
18964 manish.sha 883
            				formatter = new DecimalFormat("#0.000");   
884
            				orderValuesMap.put("Weight", formatter.format(taOrder.getLineitems().get(0).getUnit_weight()));
885
            				Item orderItem = client.getItem(taOrder.getLineitems().get(0).getItem_id());
886
            				orderValuesMap.put("PackQuantity", orderItem.getPackQuantity()+"");
13146 manish.sha 887
            			}
888
            			if(orderValuesMap!=null && orderValuesMap.size()>0){
889
            				acceptTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
890
            			}
891
            		}
892
            	}
5110 mandeep.dh 893
            }
13146 manish.sha 894
 
895
            if(t_order.isSetLogisticsTransactionId()){
896
            	billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
897
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
19091 manish.sha 898
	            if(t_order.getStatus()==OrderStatus.ACCEPTED || t_order.getStatus()==OrderStatus.RTO_IN_TRANSIT ){
18100 manish.sha 899
	            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
900
	            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
901
	            	if(ItemType.SERIALIZED==item.getType()){
902
	            		orderValuesMap.put("IsSerialized", "true");
903
	            	}else{
904
	            		orderValuesMap.put("IsSerialized", "false");
905
	            	}
906
	            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
907
	            		orderValuesMap.put("IsFreebie", "true");
908
	            	} else {
909
	            		orderValuesMap.put("IsFreebie", "false");
910
	            	}
911
	            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
13146 manish.sha 912
            	}
913
            	Map<Long, Item> orderItemMap = new HashMap<Long, Item>();
914
            	List<in.shop2020.model.v1.order.Order> taOrders = new TransactionClient().getClient().getGroupOrdersByLogisticsTxnId(t_order.getLogisticsTransactionId());
915
            	for(in.shop2020.model.v1.order.Order ord1: taOrders){
19091 manish.sha 916
            		if(ord1.getStatus()==OrderStatus.ACCEPTED || ord1.getStatus()==OrderStatus.RTO_IN_TRANSIT ){
18100 manish.sha 917
	            		if(ord1.getId()== t_order.getId()){
918
	            			orderItemMap.put(ord1.getId(), item);
919
	            		} else {
920
		            		if(!client.isAlive()){
921
		            			client = new CatalogClient().getClient();
922
		            		}
923
		            		Item it = client.getItem(ord1.getLineitems().get(0).getItem_id());
924
		            		orderItemMap.put(ord1.getId(), it);
13146 manish.sha 925
	            		}
926
            		}
927
            	}
928
 
929
            	for(in.shop2020.model.v1.order.Order taOrder: taOrders){
19091 manish.sha 930
            		if(taOrder.getStatus()==OrderStatus.ACCEPTED || taOrder.getStatus()==OrderStatus.RTO_IN_TRANSIT ){
18100 manish.sha 931
	            		if(taOrder.getId()==t_order.getId()){
932
	            			continue;
933
	            		} else {
934
	            			orderValuesMap = new HashMap<String, String>();
935
	            			Item orderItem = orderItemMap.get(taOrder.getId());
936
	            			orderValuesMap.put("ProductName", getProductName(orderItem));
937
	                    	orderValuesMap.put("Quantity", taOrder.getLineitems().get(0).getQuantity()+"");
938
	                    	if(ItemType.SERIALIZED==orderItem.getType()){
939
	                    		orderValuesMap.put("IsSerialized", "true");
940
	                    	}else{
941
	                    		orderValuesMap.put("IsSerialized", "false");
942
	                    	}
943
	                    	if(taOrder.isSetFreebieItemId() && taOrder.getFreebieItemId()!=0){
944
	                    		orderValuesMap.put("IsFreebie", "true");
945
	                    	} else {
946
	                    		orderValuesMap.put("IsFreebie", "false");
947
	                    	}
948
	                    	billTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
949
	            		}
13146 manish.sha 950
            		}
951
            	}
952
            }
953
            else{
954
            	billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
955
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
956
            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
957
            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
958
            	if(ItemType.SERIALIZED==item.getType()){
959
            		orderValuesMap.put("IsSerialized", "true");
960
            	}else{
961
            		orderValuesMap.put("IsSerialized", "false");
962
            	}
963
            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
964
            		orderValuesMap.put("IsFreebie", "true");
965
            	} else {
966
            		orderValuesMap.put("IsFreebie", "false");
967
            	}
968
            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
969
            }
5110 mandeep.dh 970
		}
971
        catch (Exception e) {
972
            logger.error("Error looking up warehouse: " + t_order.getVendorId(), e);
973
        }
974
 
3553 chandransh 975
		String delayReason = null;
976
		if(t_order.getDelayReason() != null)
7433 rajveer 977
		    delayReason = t_order.getDelayReason().name();
3553 chandransh 978
 
7556 rajveer 979
		String osource = OrderSource.findByValue((int)t_order.getSource()).toString();
7433 rajveer 980
 
966 chandransh 981
		Order order = new Order(t_order.getId(),
982
				t_order.getCustomer_id(),
983
				t_order.getCustomer_name(),
984
				t_order.getCustomer_mobilenumber(),
985
				t_order.getCustomer_pincode(),
986
				t_order.getCustomer_address1(),
987
				t_order.getCustomer_address2(),
988
				t_order.getCustomer_city(),
989
				t_order.getCustomer_state(),
990
				t_order.getCustomer_email(),
991
				t_order.getCreated_timestamp(),
4004 chandransh 992
				t_order.getShipping_timestamp(),
993
				t_order.getVerification_timestamp(),
966 chandransh 994
				t_order.getExpected_delivery_time(),
3994 chandransh 995
				t_order.getPromised_delivery_time(),
4004 chandransh 996
				t_order.getExpected_shipping_time(),
4666 rajveer 997
				t_order.getPromised_shipping_time(),
966 chandransh 998
				t_order.getStatus().getValue(),
999
				t_order.getStatusDescription(),
5527 anupam.sin 1000
				t_order.getOrderType().name(),
966 chandransh 1001
				lineItem.getItem_id(),
1002
				lineItem.getProductGroup(),
1003
				lineItem.getBrand(),
1004
				lineItem.getModel_name(),
1005
				lineItem.getModel_number(),
1006
				lineItem.getColor(),
1007
				lineItem.getExtra_info(),
4172 rajveer 1008
				lineItem.getDealText(),
5387 rajveer 1009
				lineItem.getQuantity(),
2782 chandransh 1010
				t_order.getTotal_amount(),
1011
				t_order.getTotal_weight(),
1012
				t_order.getAirwaybill_no(),
1013
				t_order.getBilled_by(),
1014
				t_order.getInvoice_number(),
1015
				t_order.getJacket_number(),
1016
				lineItem.getItem_number(),
4659 mandeep.dh 1017
				lineItem.getSerial_number(),
3065 chandransh 1018
				t_order.getBatchNo(),
1019
				t_order.getSerialNo(),
2509 chandransh 1020
				t_order.isDoaFlag(),
3065 chandransh 1021
				t_order.getPickupRequestNo(),
5556 rajveer 1022
				t_order.isLogisticsCod(),
5110 mandeep.dh 1023
				delayReason,
1024
				pickFromWarehouse,
6028 rajveer 1025
				ItemType.SERIALIZED.equals(item.getType()),
1026
				item.isHasItemNo(),
5769 rajveer 1027
				t_order.getFulfilmentWarehouseId(),
9263 amar.kumar 1028
				t_order.getWarehouse_id(),
7190 amar.kumar 1029
				t_order.getPickupStoreId(),
7422 rajveer 1030
				t_order.getFreebieItemId(),
8717 amar.kumar 1031
				osource, 
13146 manish.sha 1032
				new Long(t_order.getProductCondition().getValue()),
1033
				t_order.getTransactionId());
1034
		if(acceptTogetherOrdersMap!=null && acceptTogetherOrdersMap.size()>0){
1035
			order.setAcceptTogetherOrdersMap(acceptTogetherOrdersMap);
1036
		}
1037
		if(billTogetherOrdersMap!=null && billTogetherOrdersMap.size()>0){
1038
			order.setBillTogetherOrdersMap(billTogetherOrdersMap);
1039
		}
1040
		if(t_order.isSetLogisticsTransactionId()){
1041
			order.setLogisticsTransactionId(t_order.getLogisticsTransactionId());
1042
		}
19054 manish.sha 1043
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
19032 manish.sha 1044
		Date date = new Date(System.currentTimeMillis());
1045
		long currentDateTime = 0;
19196 manish.sha 1046
		long promisedShippingTime =0 ;
19032 manish.sha 1047
		long currentTime = date.getTime();
19054 manish.sha 1048
		try{
1049
			currentDateTime = sdf.parse(sdf.format(date)).getTime();
19196 manish.sha 1050
			promisedShippingTime = sdf.parse(sdf.format(new Date(order.getPromisedShippingTime()))).getTime();
19054 manish.sha 1051
		}catch(Exception e){
1052
			e.printStackTrace();
1053
		}
19196 manish.sha 1054
		if(promisedShippingTime >0 && (order.getStatus()==3 || order.getStatus()==5 || order.getStatus()==41 ||
19058 manish.sha 1055
				order.getStatus()==35 || order.getStatus()==36 || order.getStatus()==37)){
19196 manish.sha 1056
			if(promisedShippingTime <= currentDateTime){
19050 manish.sha 1057
				if(loadVirtualWarehouseDetails().contains(order.getFulfilmentWarehouseId())){
19032 manish.sha 1058
					order.setAlert(OrderAlert.TODAY_SHIPPING_NOT_IN_STOCK);
1059
				}else{
1060
					order.setAlert(OrderAlert.TODAY_SHIPPING_IN_STOCK);
1061
				}
1062
			}else{
19162 manish.sha 1063
				if(!loadVirtualWarehouseDetails().contains(order.getFulfilmentWarehouseId())){
19164 manish.sha 1064
					order.setAlert(OrderAlert.LATER_SHIPPING_IN_STOCK);
19032 manish.sha 1065
				}
1066
			}
1067
		}
966 chandransh 1068
		return order;
671 chandransh 1069
	}
1070
 
2449 chandransh 1071
	/**
2697 chandransh 1072
	 * Queries the transction server to get the list of all return orders that
1073
	 * have to be processed.
1074
	 * 
1075
	 * @return A list of all return orders to be processed.
1076
	 */
1077
	public static List<ReturnOrder> getReturnOrders(long warehouseId){
1078
		List<ReturnOrder> retOrders = new ArrayList<ReturnOrder>();
1079
		try{
3132 rajveer 1080
			TransactionClient client = new TransactionClient();
2697 chandransh 1081
			Client c = client.getClient();
1082
			List<in.shop2020.model.v1.order.ReturnOrder> tRetOrders =  c.getReturnOrders(warehouseId, 0L, new Date().getTime());
1083
			for(in.shop2020.model.v1.order.ReturnOrder retOrder : tRetOrders){
1084
				retOrders.add(getReturnOrderFromThriftRO(retOrder));
1085
			}
1086
		}catch(Exception e){
1087
			e.printStackTrace();
1088
		}
1089
		return retOrders;
1090
	}
1091
 
2700 chandransh 1092
	public static ReturnOrder getReturnOrderFromThriftRO(in.shop2020.model.v1.order.ReturnOrder tRetOrder){
1093
		ReturnOrder retOrder = new ReturnOrder(tRetOrder.getOrderId(),
1094
				tRetOrder.getWarehouseId(),
1095
				tRetOrder.getItemId(),
1096
				tRetOrder.getProductGroup(),
1097
				tRetOrder.getBrand(),
1098
				tRetOrder.getModelName(),
1099
				tRetOrder.getModelNumber(),
1100
				tRetOrder.getColor(),
1101
				tRetOrder.getInvoiceNumber(),
1102
				tRetOrder.getJacketNumber(),
1103
				tRetOrder.getTotalPrice(),
1104
				tRetOrder.getTransferPrice(),
1105
				false,
1106
				tRetOrder.getCreatedAt());
2697 chandransh 1107
		return retOrder;
1108
	}
1109
 
1110
	/**
2449 chandransh 1111
	 * This method maps a given type to a list of statuses.
1112
	 * 
1113
	 * @param type
1114
	 *            The type of orders to fetch.
1115
	 * @return The list of Thrift statuses associated with a particular order
1116
	 *         type.
1117
	 */
4361 rajveer 1118
	public static List<OrderStatus> getStatuses(OrderType type) {
2449 chandransh 1119
		List<OrderStatus> statuses = new ArrayList<OrderStatus>();
1120
 
1121
		switch (type) {
1122
		case ACCEPTED:
1123
			statuses.add(OrderStatus.ACCEPTED);
1124
			break;
1125
 
4361 rajveer 1126
		case ALL_PENDING:
1127
			statuses.add(OrderStatus.SUBMITTED_FOR_PROCESSING);
4421 mandeep.dh 1128
			statuses.add(OrderStatus.CAPTURE_IN_PROCESS);
4361 rajveer 1129
			statuses.add(OrderStatus.INVENTORY_LOW);
1130
			statuses.add(OrderStatus.LOW_INV_PO_RAISED);
1131
			statuses.add(OrderStatus.LOW_INV_REVERSAL_IN_PROCESS);
1132
			statuses.add(OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT);
2449 chandransh 1133
			break;
1134
 
1135
		case NEW:
1136
			statuses.add(OrderStatus.SUBMITTED_FOR_PROCESSING);
4421 mandeep.dh 1137
			statuses.add(OrderStatus.CAPTURE_IN_PROCESS);
2449 chandransh 1138
			break;
1139
 
1140
		case BILLED:
1141
			statuses.add(OrderStatus.BILLED);
1142
			break;
1143
 
4308 rajveer 1144
		case LOW_INVENTORY:
2449 chandransh 1145
			statuses.add(OrderStatus.INVENTORY_LOW);
1146
			break;
4248 rajveer 1147
 
4308 rajveer 1148
		case PO_RAISED:
1149
			statuses.add(OrderStatus.LOW_INV_PO_RAISED);
1150
			break;
1151
 
1152
		case REVERSAL_INITIATED:
1153
			statuses.add(OrderStatus.LOW_INV_REVERSAL_IN_PROCESS);
1154
			break;
1155
 
1156
		case NOT_AVAILABLE:
1157
			statuses.add(OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT);
1158
			break;
1159
 
4248 rajveer 1160
		case CANCEL_CONFIRMED:
1161
			statuses.add(OrderStatus.CANCEL_REQUEST_CONFIRMED);
1162
			break;
2449 chandransh 1163
 
4459 rajveer 1164
		case DOA_REQUEST_AUTHORIZED:
1165
			statuses.add(OrderStatus.DOA_REQUEST_AUTHORIZED);
4515 mandeep.dh 1166
			statuses.add(OrderStatus.DOA_PICKUP_REQUEST_RAISED);
4459 rajveer 1167
			break;
1168
 
4666 rajveer 1169
		case LOST_IN_TRANSIT:
1170
			statuses.add(OrderStatus.LOST_IN_TRANSIT);
1171
			break;
1172
 
4459 rajveer 1173
		case DOA_LOST_IN_TRANSIT:
1174
			statuses.add(OrderStatus.DOA_LOST_IN_TRANSIT);
4478 rajveer 1175
			break;
1176
 
1177
		case DOA_RECEIVED_DAMAGED:
4459 rajveer 1178
			statuses.add(OrderStatus.DOA_RECEIVED_DAMAGED);
1179
			break;
4495 rajveer 1180
 
1181
		case RET_REQUEST_AUTHORIZED:
1182
			statuses.add(OrderStatus.RET_REQUEST_AUTHORIZED);
4515 mandeep.dh 1183
			statuses.add(OrderStatus.RET_PICKUP_REQUEST_RAISED);
4495 rajveer 1184
			break;
1185
 
1186
		case RET_AWAITED:
1187
			statuses.add(OrderStatus.RET_RETURN_IN_TRANSIT);
4515 mandeep.dh 1188
			statuses.add(OrderStatus.RET_PICKUP_CONFIRMED);
4495 rajveer 1189
			break;
4459 rajveer 1190
 
4495 rajveer 1191
		case RET_RECEIVED_PRESTINE:
1192
			statuses.add(OrderStatus.RET_RECEIVED_PRESTINE);
4515 mandeep.dh 1193
			statuses.add(OrderStatus.RET_PRODUCT_USABLE);
4495 rajveer 1194
			break;
1195
 
1196
		case RET_LOST_IN_TRANSIT:
1197
			statuses.add(OrderStatus.RET_LOST_IN_TRANSIT);
1198
			break;
1199
 
1200
		case RET_RECEIVED_DAMAGED:
1201
			statuses.add(OrderStatus.RET_RECEIVED_DAMAGED);
4515 mandeep.dh 1202
			statuses.add(OrderStatus.RET_PRODUCT_UNUSABLE);
4495 rajveer 1203
			break;
1204
 
2449 chandransh 1205
		case REJECTED:
1206
			statuses.add(OrderStatus.REJECTED);
1207
			break;
1208
 
1209
		case SHIPPED:
1210
			statuses.add(OrderStatus.SHIPPED_FROM_WH);
1211
			statuses.add(OrderStatus.SHIPPED_TO_LOGST);
5016 phani.kuma 1212
			statuses.add(OrderStatus.SHIPPED_TO_DESTINATION_CITY);
1213
			statuses.add(OrderStatus.REACHED_DESTINATION_CITY);
1214
			statuses.add(OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE);
2449 chandransh 1215
			break;
1216
 
1217
		case DELIVERED:
1218
			statuses.add(OrderStatus.DELIVERY_SUCCESS);
4452 rajveer 1219
			statuses.add(OrderStatus.DOA_PICKUP_REQUEST_RAISED);
2449 chandransh 1220
			break;
2610 chandransh 1221
 
1222
		case DOA_AWAITED:
4452 rajveer 1223
			statuses.add(OrderStatus.DOA_PICKUP_CONFIRMED);
2610 chandransh 1224
			statuses.add(OrderStatus.DOA_RETURN_IN_TRANSIT);
4452 rajveer 1225
			statuses.add(OrderStatus.DOA_RECEIVED_PRESTINE);
2610 chandransh 1226
			break;
2449 chandransh 1227
 
4495 rajveer 1228
		case RTO_AWAITED:
4484 rajveer 1229
			statuses.add(OrderStatus.RTO_IN_TRANSIT);
2509 chandransh 1230
			break;
1231
 
4515 mandeep.dh 1232
        case RTO_RECEIVED_DAMAGED:
1233
            statuses.add(OrderStatus.RTO_RECEIVED_DAMAGED);
1234
            break;
1235
 
1236
        case DOA_RECEIVED_PRESTINE:
2610 chandransh 1237
			statuses.add(OrderStatus.DOA_CERT_VALID);
4515 mandeep.dh 1238
			statuses.add(OrderStatus.DOA_CERT_INVALID);
2610 chandransh 1239
			break;
1240
 
4495 rajveer 1241
		case RTO_RETURNED:
4484 rajveer 1242
			statuses.add(OrderStatus.RTO_RECEIVED_PRESTINE);
2509 chandransh 1243
			break;
1244
 
2628 chandransh 1245
		case RESHIPPED:
4484 rajveer 1246
			statuses.add(OrderStatus.RTO_RESHIPPED);
2628 chandransh 1247
			statuses.add(OrderStatus.DOA_INVALID_RESHIPPED);
4452 rajveer 1248
			statuses.add(OrderStatus.DOA_VALID_RESHIPPED);
2628 chandransh 1249
			break;
1250
 
1251
		case REFUNDED:
4682 rajveer 1252
		    statuses.add(OrderStatus.COD_VERIFICATION_FAILED);
4484 rajveer 1253
			statuses.add(OrderStatus.RTO_REFUNDED);
2628 chandransh 1254
			statuses.add(OrderStatus.DOA_INVALID_REFUNDED);
1255
			statuses.add(OrderStatus.DOA_VALID_REFUNDED);
4682 rajveer 1256
			statuses.add(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
2628 chandransh 1257
			break;
2509 chandransh 1258
 
3065 chandransh 1259
		case VERIFICATION_PENDING:
4664 rajveer 1260
		    statuses.add(OrderStatus.COD_VERIFICATION_PENDING);
3065 chandransh 1261
		    break;
2449 chandransh 1262
		default:
1263
			break;
1264
		}
1265
		return statuses;
1266
	}
13146 manish.sha 1267
 
1268
	public static List<Long> getEligibleOrdersToBeAccepted(Order order){
1269
		List<Long> orders = new ArrayList<Long>();
1270
		try {
1271
 
1272
			TransactionClient client = new TransactionClient();
1273
			Client c = client.getClient();
1274
 
1275
			in.shop2020.model.v1.order.Order thriftOrder = c.getOrder(order.getOrderId());
1276
			long provider_id = thriftOrder.getLogistics_provider_id();
1277
			boolean cod = thriftOrder.isLogisticsCod();
1278
 
1279
			List<in.shop2020.model.v1.order.Order> torders = c.getOrdersForTransaction(thriftOrder.getTransactionId(), thriftOrder.getCustomer_id());
1280
			for(in.shop2020.model.v1.order.Order torder: torders){
1281
				if(torder.getLogistics_provider_id() == provider_id && torder.isLogisticsCod() == cod){
1282
					orders.add(torder.getId());
1283
				}
1284
			}
1285
 
1286
		}catch(Exception e){
1287
			e.printStackTrace();
1288
		}
1289
		return orders;
1290
	}
1291
 
1292
	public static String getItemDisplayName(LineItem lineitem){
1293
		StringBuffer itemName = new StringBuffer();
1294
        if (lineitem.getBrand() != null)
1295
            itemName.append(lineitem.getBrand() + " ");
1296
        if (lineitem.getModel_name() != null)
1297
            itemName.append(lineitem.getModel_name() + " ");
1298
        if (lineitem.getModel_number() != null)
1299
            itemName.append(lineitem.getModel_number() + " ");
1300
        if (lineitem.getColor() != null
1301
                && !lineitem.getColor().trim().equals("NA"))
1302
            itemName.append("(" + lineitem.getColor() + ")");
1303
 
1304
        return itemName.toString();
1305
	}
1306
 
1307
	public static String getProductName(in.shop2020.model.v1.catalog.Item item){
1308
		StringBuffer itemName = new StringBuffer();
1309
        if (item.getBrand() != null)
1310
            itemName.append(item.getBrand() + " ");
1311
        if (item.getModelName() != null)
1312
            itemName.append(item.getModelName() + " ");
1313
        if (item.getModelNumber() != null)
1314
            itemName.append(item.getModelNumber() + " ");
1315
        if (item.getColor() != null
1316
                && !item.getColor().trim().equals("NA"))
1317
            itemName.append("(" + item.getColor() + ")");
1318
 
1319
        return itemName.toString();
1320
	}
19050 manish.sha 1321
 
1322
	public static List<Long> loadVirtualWarehouseDetails(){
1323
		EhcacheWrapper<String, List<Long>> virtualWhCache = new EhcacheWrapper<String, List<Long>>(
1324
				"VirtualWarehouses", CacheManager.create());
1325
 
1326
		List<Long> virtualWarehouseIds = virtualWhCache.get("virtual_warehouses");
1327
 
1328
		if(virtualWarehouseIds!=null && virtualWarehouseIds.size()>0){
19052 manish.sha 1329
			System.out.println("Virtual Warehouse Exists");
1330
			logger.info("Virtual Warehouse Exists");
19050 manish.sha 1331
			return virtualWarehouseIds;
1332
		}else{
19052 manish.sha 1333
			System.out.println("Virtual Warehouse Not Exists");
1334
			logger.info("Virtual Warehouse Not Exists");
19050 manish.sha 1335
			virtualWarehouseIds = new ArrayList<Long>();
1336
			try{
1337
				in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = new InventoryClient().getClient();
1338
				List<Warehouse> allWarehouses = inventoryClient.getWarehouses(null, null, 0, 0, 0);
1339
				for(Warehouse wh:allWarehouses){
1340
					if(wh.getWarehouseType()==WarehouseType.THIRD_PARTY){
1341
						virtualWarehouseIds.add(wh.getId());
1342
					}
1343
				}
1344
			}catch(Exception e){
1345
				e.printStackTrace();
1346
			}
1347
			virtualWhCache.put("virtual_warehouses", virtualWarehouseIds);
1348
		}
1349
 
1350
		return virtualWarehouseIds;
1351
	}
493 rajveer 1352
}