Subversion Repositories SmartDukaan

Rev

Rev 19017 | Rev 19034 | 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;
493 rajveer 6
import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;
2697 chandransh 7
import in.shop2020.hotspot.dashbaord.shared.actions.ReturnOrder;
5945 mandeep.dh 8
import in.shop2020.model.v1.inventory.InventoryType;
18100 manish.sha 9
import in.shop2020.model.v1.inventory.WarehouseType;
5110 mandeep.dh 10
import in.shop2020.model.v1.catalog.Item;
11
import in.shop2020.model.v1.catalog.ItemType;
5945 mandeep.dh 12
import in.shop2020.model.v1.inventory.Warehouse;
914 chandransh 13
import in.shop2020.model.v1.order.LineItem;
7422 rajveer 14
import in.shop2020.model.v1.order.OrderSource;
493 rajveer 15
import in.shop2020.model.v1.order.OrderStatus;
16
import in.shop2020.model.v1.order.TransactionService.Client;
5110 mandeep.dh 17
import in.shop2020.thrift.clients.CatalogClient;
5948 mandeep.dh 18
import in.shop2020.thrift.clients.InventoryClient;
3132 rajveer 19
import in.shop2020.thrift.clients.TransactionClient;
13146 manish.sha 20
import in.shop2020.thrift.clients.LogisticsClient;
493 rajveer 21
 
4411 rajveer 22
import java.io.ByteArrayOutputStream;
23
import java.io.File;
24
import java.io.FileNotFoundException;
25
import java.io.FileOutputStream;
26
import java.io.IOException;
18938 manish.sha 27
import java.text.DecimalFormat;
28
import java.text.NumberFormat;
493 rajveer 29
import java.util.ArrayList;
4411 rajveer 30
import java.util.Calendar;
19004 manish.sha 31
import java.util.Collections;
493 rajveer 32
import java.util.Date;
4411 rajveer 33
import java.util.GregorianCalendar;
34
import java.util.HashMap;
493 rajveer 35
import java.util.List;
4411 rajveer 36
import java.util.Map;
19004 manish.sha 37
import java.util.Map.Entry;
493 rajveer 38
 
4411 rajveer 39
import org.slf4j.Logger;
40
import org.slf4j.LoggerFactory;
41
 
19017 manish.sha 42
import com.google.gwt.i18n.client.DateTimeFormat;
43
 
2449 chandransh 44
/**
45
 * This class is a facade to the Transaction service and should be used to
4133 chandransh 46
 * access all order specific data which requires some kind of transformation.
2449 chandransh 47
 * 
48
 * @author Chandranshu
49
 * 
50
 */
493 rajveer 51
public class TransactionUtils {
4411 rajveer 52
	private static String courierDetailsPath = "/CourierDetailReports";
53
	private static Logger logger = LoggerFactory.getLogger(TransactionUtils.class);
54
 
19004 manish.sha 55
 
2449 chandransh 56
	/**
57
	 * The human user is concerned only with a consolidated view of actionable
58
	 * orders. Orders with different statuses in the database can be part of the
59
	 * same consolidated view. This method uses a mapping of <i>type</i> to
60
	 * <i>status</i> to get all such orders and return them as order beans.
61
	 * 
62
	 * @param type
63
	 *            The type of orders to return.
4133 chandransh 64
	 * @param offset
65
	 *            Offset to start from
66
	 * @param limit
67
	 *            No. of orders to return
2449 chandransh 68
	 * @param warehouseId
69
	 *            The warehouse for which the orders should be queried.
70
	 * @return A list of orders of the given type to be fulfilled from the given
71
	 *         warehouse
72
	 */
8303 amar.kumar 73
	public static List<Order> getOrders(OrderType type, long offset, long limit, long warehouseId, long source){
2449 chandransh 74
		List<OrderStatus> statuses = getStatuses(type);
493 rajveer 75
 
76
		List<Order> orders = new ArrayList<Order>();
77
		try{
4133 chandransh 78
			TransactionClient txnClient = new TransactionClient();
79
			Client client = txnClient.getClient();
493 rajveer 80
 
81
			List<in.shop2020.model.v1.order.Order> t_orders = new ArrayList<in.shop2020.model.v1.order.Order>();
19004 manish.sha 82
			if(type==OrderType.NEW || type==OrderType.ALL_PENDING || type ==OrderType.LOW_INVENTORY || type == OrderType.PO_RAISED
83
					|| type == OrderType.REVERSAL_INITIATED || type == OrderType.NOT_AVAILABLE){
84
				t_orders.addAll(client.getOrdersInBatchAsPromisedShipping(statuses, offset, limit, warehouseId, source));
85
			}else{
86
				t_orders.addAll(client.getOrdersInBatch(statuses, offset, limit, warehouseId, source));
87
			}
493 rajveer 88
 
89
			for (in.shop2020.model.v1.order.Order t_order: t_orders){
671 chandransh 90
				Order o = getOrderFromThriftOrder(t_order);
493 rajveer 91
				orders.add(o);
92
			}
19004 manish.sha 93
			if(type==OrderType.NEW || type==OrderType.ALL_PENDING || type ==OrderType.LOW_INVENTORY || type == OrderType.PO_RAISED
94
					|| type == OrderType.REVERSAL_INITIATED || type == OrderType.NOT_AVAILABLE){
95
				Map<Long, List<Order>> transactionOrdersMap = new HashMap<Long, List<Order>>();
96
				for(Order order : orders){
97
					if(transactionOrdersMap.containsKey(order.getTransactionId())){
98
						List<Order> txnOrders = transactionOrdersMap.get(order.getTransactionId());
99
						txnOrders.add(order);
100
						transactionOrdersMap.put(order.getTransactionId(), txnOrders);
101
					}else{
102
						List<Order> txnOrders = new ArrayList<Order>();
103
						txnOrders.add(order);
104
						transactionOrdersMap.put(order.getTransactionId(), txnOrders);
105
					}
106
				}
107
 
108
				orders = new ArrayList<Order>();
109
				for(Entry<Long, List<Order>> entry : transactionOrdersMap.entrySet()){
110
					List<Order> txnOrders = entry.getValue();
111
					Collections.sort(txnOrders,new OrderPromisedShippingComparator());
112
					transactionOrdersMap.put(entry.getKey(), txnOrders);
113
				}
114
 
115
				for(Entry<Long, List<Order>> entry : transactionOrdersMap.entrySet()){
116
					orders.addAll(entry.getValue());
117
				}
118
			}
119
 
493 rajveer 120
		}catch(Exception e){
2449 chandransh 121
			e.printStackTrace();
493 rajveer 122
		}
123
		return orders;
124
	}
125
 
2449 chandransh 126
	/**
4133 chandransh 127
	 * Wrapper around the method of same name in the transaction service. This
128
	 * method uses a mapping of <i>type</i> to <i>status</i> to get the count of
129
	 * all orders with a given status.
130
	 * 
131
	 * @param type
132
	 *            The type of orders to return.
133
	 * @param warehouseId
134
	 *            The warehouse for which the orders should be queried.
135
	 * @return The count of orders of the given type assigned to the given
136
	 *         warehouse.
137
	 */
8303 amar.kumar 138
	public static int getOrderCount(OrderType type, long warehouseId, long source){
4133 chandransh 139
		List<OrderStatus> statuses = getStatuses(type);
140
 
141
		int count = 0;
142
		try{
143
			TransactionClient txnClient = new TransactionClient();
144
			Client client = txnClient.getClient();
8303 amar.kumar 145
			count += client.getOrderCount(statuses, warehouseId, source);
4133 chandransh 146
		}catch(Exception e){
147
			e.printStackTrace();
148
		}
149
		return count;
150
	}
151
 
152
	/**
2449 chandransh 153
	 * Calls the same method of the transaction service and returns the status
154
	 * returned. Catches all exceptions that are raised and returns false in
155
	 * that case.
156
	 * 
157
	 * @param warehouseId
158
	 *            The warehouse for which the orders should be marked as
159
	 *            manifested.
160
	 * @param providerId
161
	 *            The provider for which the orders should be marked as
162
	 *            manifested.
3065 chandransh 163
	 * @param cod
164
	 *             Whether cod orders have to be marked as manifested
2449 chandransh 165
	 * @return True if everything goes fine, false otherwise.
166
	 */
5769 rajveer 167
	public static Map<Long, Long> getBilledOrders(long warehouseId, String providerId, boolean cod){
168
		Map<Long, Long> orders = new HashMap<Long, Long>();
760 chandransh 169
		try {
170
			long provider_id = Long.parseLong(providerId);
3132 rajveer 171
			TransactionClient client = new TransactionClient();
760 chandransh 172
			Client c = client.getClient();
4790 rajveer 173
 
174
			List<OrderStatus> statuses = new ArrayList<OrderStatus>();
175
			statuses.add(OrderStatus.BILLED);
8303 amar.kumar 176
			List<in.shop2020.model.v1.order.Order> torders = c.getOrdersInBatch(statuses, 0, 0, warehouseId, 0);
4790 rajveer 177
			for(in.shop2020.model.v1.order.Order torder: torders){
5556 rajveer 178
				if(torder.getLogistics_provider_id() == provider_id && torder.isLogisticsCod() == cod){
5769 rajveer 179
					orders.put(torder.getId(), torder.getPickupStoreId());
4790 rajveer 180
				}
4411 rajveer 181
			}
182
 
760 chandransh 183
		}catch(Exception e){
184
			e.printStackTrace();
185
		}
4790 rajveer 186
		return orders;
760 chandransh 187
	}
2449 chandransh 188
 
4790 rajveer 189
	public static boolean generateCourierDetailsFile(List<Long> orderIds, long providerId, long warehouseId, boolean isCod){
4411 rajveer 190
		Calendar date = new GregorianCalendar();
191
		int year = date.get(Calendar.YEAR);
192
		int month = date.get(Calendar.MONTH) +1;
193
		int day = date.get(Calendar.DAY_OF_MONTH);
194
 
195
		String fileNameSuffix = "-" + warehouseId + "-"+ providerId + "-" + year + "-" + month + "-" + day;
196
		if(isCod){
197
		    fileNameSuffix = "cod" + fileNameSuffix ;
198
		}
199
		else{
200
		    fileNameSuffix = "prepaid" + fileNameSuffix;
201
		}
202
 
203
		try {
4790 rajveer 204
			String fileName = courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls";
4415 rajveer 205
			FileOutputStream f = new FileOutputStream(fileName);
4411 rajveer 206
			CourierDetailsGenerator courierDetailsGenerator = new CourierDetailsGenerator();
4790 rajveer 207
			ByteArrayOutputStream baosXLS = courierDetailsGenerator.generateCourierDetails(orderIds, warehouseId, providerId, isCod);
4411 rajveer 208
			baosXLS.writeTo(f);
209
			f.close();
210
		} catch (FileNotFoundException e) {
211
			logger.error("Unable to create the courier details file", e);
212
		} catch (IOException e) {
213
			logger.error("Unable to create the courier details file", e);
214
		}
215
 
216
		CourierDetailsReportMerger merger = new CourierDetailsReportMerger();
217
		try {
218
			Map<Long, String> warehouseIdFileNames = new HashMap<Long, String>();
4790 rajveer 219
			String fName;
220
			fName = courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls";
221
			if((new File(fName)).exists()){
222
				warehouseIdFileNames.put(0L, fName);
4411 rajveer 223
			}
4790 rajveer 224
			fName = courierDetailsPath + "/courier-details-" + fileNameSuffix + ".xls";
225
			if((new File(fName)).exists()){
226
				warehouseIdFileNames.put(1L, fName);
4411 rajveer 227
			}
4790 rajveer 228
			ByteArrayOutputStream binXLS = merger.mergeCourierDetailsReports(warehouseIdFileNames);
229
			FileOutputStream f = new FileOutputStream(courierDetailsPath + "/courier-details-" + fileNameSuffix + ".xls");
4411 rajveer 230
			binXLS.writeTo(f);
231
			f.close();
4790 rajveer 232
			File tempFile = new File(courierDetailsPath + "/courier-details-" + fileNameSuffix + "-temp.xls");
233
			if(tempFile.exists()){
234
				tempFile.delete();
235
			}
4411 rajveer 236
		} catch (FileNotFoundException e) {
237
			logger.error("Error while creating the Courier Details report", e);
238
		} catch (IOException e) {
239
			logger.error("IO error while writing the Courier Details report", e);
240
		}
241
		return true;
242
	}
243
 
671 chandransh 244
	/**
2449 chandransh 245
	 * 
671 chandransh 246
	 * @param t_order
2449 chandransh 247
	 *            A thrift order object with line items.
248
	 * @return an Order bean which can be used for rendering on the client side.
671 chandransh 249
	 */
250
	public static Order getOrderFromThriftOrder(in.shop2020.model.v1.order.Order t_order) {
914 chandransh 251
		LineItem lineItem = t_order.getLineitems().get(0);
5110 mandeep.dh 252
		String pickFromWarehouse = null;
253
		Item item = null;
19004 manish.sha 254
		String warehouseType = "";
13146 manish.sha 255
 
256
	    Map<Long, Map<String, String>> acceptTogetherOrdersMap = null;
257
	    Map<Long, Map<String, String>> billTogetherOrdersMap = null;
5110 mandeep.dh 258
 
259
        try {
5945 mandeep.dh 260
            in.shop2020.model.v1.catalog.CatalogService.Client client = new CatalogClient().getClient();
5948 mandeep.dh 261
            in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = new InventoryClient().getClient();
5110 mandeep.dh 262
            item = client.getItem(lineItem.getItem_id());
263
            pickFromWarehouse = CatalogUtils.getWarehousesForBillingWarehouse(t_order.getWarehouse_id())
264
                                    .get(t_order.getFulfilmentWarehouseId());
265
 
266
            if (pickFromWarehouse == null) {
5948 mandeep.dh 267
                Warehouse warehouse = inventoryClient.getWarehouse(t_order.getFulfilmentWarehouseId());
268
                pickFromWarehouse = inventoryClient.getWarehouses(null, InventoryType.GOOD, warehouse.getVendor().getId(), t_order.getWarehouse_id(), 0).get(0).getDisplayName();
13146 manish.sha 269
            }											
270
            if(!t_order.isSetAccepted_timestamp()){
271
            	acceptTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
272
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
273
            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
274
				orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
18100 manish.sha 275
				if(!inventoryClient.isAlive()){
276
					inventoryClient = new InventoryClient().getClient();
277
				}
278
				Warehouse fulfillmentWarehouse = inventoryClient.getWarehouse(t_order.getFulfilmentWarehouseId());
19004 manish.sha 279
				warehouseType = fulfillmentWarehouse.getWarehouseType().toString();
18100 manish.sha 280
				orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
19017 manish.sha 281
				DateTimeFormat sdf = DateTimeFormat.getFormat("EEE MMM dd HH:mm:ss yyyy");
18938 manish.sha 282
				orderValuesMap.put("Promised_Shipping", sdf.format(new Date(t_order.getPromised_shipping_time())));
18964 manish.sha 283
				NumberFormat formatter = new DecimalFormat("#0.000");     
284
				orderValuesMap.put("Weight", formatter.format(t_order.getLineitems().get(0).getUnit_weight()));
285
				formatter = new DecimalFormat("#0.00");   
18938 manish.sha 286
				orderValuesMap.put("UnitPrice", formatter.format(t_order.getLineitems().get(0).getUnit_price()));
18964 manish.sha 287
				orderValuesMap.put("PackQuantity", item.getPackQuantity()+"");
13146 manish.sha 288
				acceptTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
289
            	List<in.shop2020.model.v1.order.Order> taOrders = new TransactionClient().getClient().getOrdersForTransaction(t_order.getTransactionId(), t_order.getCustomer_id());
290
            	in.shop2020.logistics.Provider provider = new LogisticsClient().getClient().getProvider(t_order.getLogistics_provider_id());
291
            	for(in.shop2020.model.v1.order.Order taOrder : taOrders){
292
            		LineItem lineItem1 = taOrder.getLineitems().get(0);
293
            		if(t_order.getId()==taOrder.getId()){
294
            			continue;
13156 manish.sha 295
            		}
296
            		else if(taOrder.getSource()!=OrderSource.WEBSITE.getValue()){
297
            			continue;
298
            		}
299
            		else{
13146 manish.sha 300
            			orderValuesMap = new HashMap<String, String>();
13323 manish.sha 301
            			if(provider.isGroupShipmentAllowed() && !taOrder.isSetAccepted_timestamp() && t_order.getStatus()==taOrder.getStatus() 
302
            					&& taOrder.getLogistics_provider_id()==t_order.getLogistics_provider_id() 
303
            					&& taOrder.isLogisticsCod()==t_order.isLogisticsCod() && taOrder.getWarehouse_id() == t_order.getWarehouse_id() 
304
            					&& taOrder.getOrderType() == t_order.getOrderType() && taOrder.getPickupStoreId() == t_order.getPickupStoreId()){
13146 manish.sha 305
            				orderValuesMap.put("ProductName", getItemDisplayName(lineItem1));
306
            				orderValuesMap.put("Quantity", lineItem1.getQuantity()+"");
18100 manish.sha 307
            				if(!inventoryClient.isAlive()){
308
            					inventoryClient = new InventoryClient().getClient();
309
            				}
310
            				fulfillmentWarehouse = inventoryClient.getWarehouse(taOrder.getFulfilmentWarehouseId());
311
            				orderValuesMap.put("WarehouseType", fulfillmentWarehouse.getWarehouseType().toString());
18938 manish.sha 312
            				orderValuesMap.put("Promised_Shipping", sdf.format(new Date(taOrder.getPromised_shipping_time())));
313
            				orderValuesMap.put("UnitPrice", formatter.format(taOrder.getLineitems().get(0).getUnit_price()));
18964 manish.sha 314
            				formatter = new DecimalFormat("#0.000");   
315
            				orderValuesMap.put("Weight", formatter.format(taOrder.getLineitems().get(0).getUnit_weight()));
316
            				Item orderItem = client.getItem(taOrder.getLineitems().get(0).getItem_id());
317
            				orderValuesMap.put("PackQuantity", orderItem.getPackQuantity()+"");
13146 manish.sha 318
            			}
319
            			if(orderValuesMap!=null && orderValuesMap.size()>0){
320
            				acceptTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
321
            			}
322
            		}
323
            	}
5110 mandeep.dh 324
            }
13146 manish.sha 325
 
326
            if(t_order.isSetLogisticsTransactionId()){
327
            	billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
328
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
18100 manish.sha 329
	            if(t_order.getStatus()==OrderStatus.ACCEPTED){
330
	            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
331
	            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
332
	            	if(ItemType.SERIALIZED==item.getType()){
333
	            		orderValuesMap.put("IsSerialized", "true");
334
	            	}else{
335
	            		orderValuesMap.put("IsSerialized", "false");
336
	            	}
337
	            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
338
	            		orderValuesMap.put("IsFreebie", "true");
339
	            	} else {
340
	            		orderValuesMap.put("IsFreebie", "false");
341
	            	}
342
	            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
13146 manish.sha 343
            	}
344
            	Map<Long, Item> orderItemMap = new HashMap<Long, Item>();
345
            	List<in.shop2020.model.v1.order.Order> taOrders = new TransactionClient().getClient().getGroupOrdersByLogisticsTxnId(t_order.getLogisticsTransactionId());
346
            	for(in.shop2020.model.v1.order.Order ord1: taOrders){
18100 manish.sha 347
            		if(ord1.getStatus()==OrderStatus.ACCEPTED){
348
	            		if(ord1.getId()== t_order.getId()){
349
	            			orderItemMap.put(ord1.getId(), item);
350
	            		} else {
351
		            		if(!client.isAlive()){
352
		            			client = new CatalogClient().getClient();
353
		            		}
354
		            		Item it = client.getItem(ord1.getLineitems().get(0).getItem_id());
355
		            		orderItemMap.put(ord1.getId(), it);
13146 manish.sha 356
	            		}
357
            		}
358
            	}
359
 
360
            	for(in.shop2020.model.v1.order.Order taOrder: taOrders){
18100 manish.sha 361
            		if(taOrder.getStatus()==OrderStatus.ACCEPTED){
362
	            		if(taOrder.getId()==t_order.getId()){
363
	            			continue;
364
	            		} else {
365
	            			orderValuesMap = new HashMap<String, String>();
366
	            			Item orderItem = orderItemMap.get(taOrder.getId());
367
	            			orderValuesMap.put("ProductName", getProductName(orderItem));
368
	                    	orderValuesMap.put("Quantity", taOrder.getLineitems().get(0).getQuantity()+"");
369
	                    	if(ItemType.SERIALIZED==orderItem.getType()){
370
	                    		orderValuesMap.put("IsSerialized", "true");
371
	                    	}else{
372
	                    		orderValuesMap.put("IsSerialized", "false");
373
	                    	}
374
	                    	if(taOrder.isSetFreebieItemId() && taOrder.getFreebieItemId()!=0){
375
	                    		orderValuesMap.put("IsFreebie", "true");
376
	                    	} else {
377
	                    		orderValuesMap.put("IsFreebie", "false");
378
	                    	}
379
	                    	billTogetherOrdersMap.put(taOrder.getId(), orderValuesMap);
380
	            		}
13146 manish.sha 381
            		}
382
            	}
383
            }
384
            else{
385
            	billTogetherOrdersMap = new HashMap<Long, Map<String, String>>();
386
            	Map<String, String> orderValuesMap = new HashMap<String, String>();
387
            	orderValuesMap.put("ProductName", getItemDisplayName(lineItem));
388
            	orderValuesMap.put("Quantity", lineItem.getQuantity()+"");
389
            	if(ItemType.SERIALIZED==item.getType()){
390
            		orderValuesMap.put("IsSerialized", "true");
391
            	}else{
392
            		orderValuesMap.put("IsSerialized", "false");
393
            	}
394
            	if(t_order.isSetFreebieItemId() && t_order.getFreebieItemId()!=0){
395
            		orderValuesMap.put("IsFreebie", "true");
396
            	} else {
397
            		orderValuesMap.put("IsFreebie", "false");
398
            	}
399
            	billTogetherOrdersMap.put(t_order.getId(), orderValuesMap);
400
            }
5110 mandeep.dh 401
		}
402
        catch (Exception e) {
403
            logger.error("Error looking up warehouse: " + t_order.getVendorId(), e);
404
        }
405
 
3553 chandransh 406
		String delayReason = null;
407
		if(t_order.getDelayReason() != null)
7433 rajveer 408
		    delayReason = t_order.getDelayReason().name();
3553 chandransh 409
 
7556 rajveer 410
		String osource = OrderSource.findByValue((int)t_order.getSource()).toString();
7433 rajveer 411
 
966 chandransh 412
		Order order = new Order(t_order.getId(),
413
				t_order.getCustomer_id(),
414
				t_order.getCustomer_name(),
415
				t_order.getCustomer_mobilenumber(),
416
				t_order.getCustomer_pincode(),
417
				t_order.getCustomer_address1(),
418
				t_order.getCustomer_address2(),
419
				t_order.getCustomer_city(),
420
				t_order.getCustomer_state(),
421
				t_order.getCustomer_email(),
422
				t_order.getCreated_timestamp(),
4004 chandransh 423
				t_order.getShipping_timestamp(),
424
				t_order.getVerification_timestamp(),
966 chandransh 425
				t_order.getExpected_delivery_time(),
3994 chandransh 426
				t_order.getPromised_delivery_time(),
4004 chandransh 427
				t_order.getExpected_shipping_time(),
4666 rajveer 428
				t_order.getPromised_shipping_time(),
966 chandransh 429
				t_order.getStatus().getValue(),
430
				t_order.getStatusDescription(),
5527 anupam.sin 431
				t_order.getOrderType().name(),
966 chandransh 432
				lineItem.getItem_id(),
433
				lineItem.getProductGroup(),
434
				lineItem.getBrand(),
435
				lineItem.getModel_name(),
436
				lineItem.getModel_number(),
437
				lineItem.getColor(),
438
				lineItem.getExtra_info(),
4172 rajveer 439
				lineItem.getDealText(),
5387 rajveer 440
				lineItem.getQuantity(),
2782 chandransh 441
				t_order.getTotal_amount(),
442
				t_order.getTotal_weight(),
443
				t_order.getAirwaybill_no(),
444
				t_order.getBilled_by(),
445
				t_order.getInvoice_number(),
446
				t_order.getJacket_number(),
447
				lineItem.getItem_number(),
4659 mandeep.dh 448
				lineItem.getSerial_number(),
3065 chandransh 449
				t_order.getBatchNo(),
450
				t_order.getSerialNo(),
2509 chandransh 451
				t_order.isDoaFlag(),
3065 chandransh 452
				t_order.getPickupRequestNo(),
5556 rajveer 453
				t_order.isLogisticsCod(),
5110 mandeep.dh 454
				delayReason,
455
				pickFromWarehouse,
6028 rajveer 456
				ItemType.SERIALIZED.equals(item.getType()),
457
				item.isHasItemNo(),
5769 rajveer 458
				t_order.getFulfilmentWarehouseId(),
9263 amar.kumar 459
				t_order.getWarehouse_id(),
7190 amar.kumar 460
				t_order.getPickupStoreId(),
7422 rajveer 461
				t_order.getFreebieItemId(),
8717 amar.kumar 462
				osource, 
13146 manish.sha 463
				new Long(t_order.getProductCondition().getValue()),
464
				t_order.getTransactionId());
465
		if(acceptTogetherOrdersMap!=null && acceptTogetherOrdersMap.size()>0){
466
			order.setAcceptTogetherOrdersMap(acceptTogetherOrdersMap);
467
		}
468
		if(billTogetherOrdersMap!=null && billTogetherOrdersMap.size()>0){
469
			order.setBillTogetherOrdersMap(billTogetherOrdersMap);
470
		}
471
		if(t_order.isSetLogisticsTransactionId()){
472
			order.setLogisticsTransactionId(t_order.getLogisticsTransactionId());
473
		}
19032 manish.sha 474
		DateTimeFormat sdf = DateTimeFormat.getFormat("yyyy-MM-dd");
475
		Date date = new Date(System.currentTimeMillis());
476
		long currentDateTime = 0;
477
		long expectedDateShippingTime =0 ;
478
		long currentTime = date.getTime();
479
		currentDateTime = sdf.parse(sdf.format(date)).getTime();
480
		expectedDateShippingTime = sdf.parse(sdf.format(new Date(order.getExpectedShippingTime()))).getTime();
481
		if(expectedDateShippingTime >0 && order.getStatus() < 9){
482
			if(expectedDateShippingTime <= currentDateTime){
483
				if( WarehouseFinder.virtualInvnetoryWarehouses.contains(order.getFulfilmentWarehouseId())){
484
					order.setAlert(OrderAlert.TODAY_SHIPPING_NOT_IN_STOCK);
485
				}else{
486
					order.setAlert(OrderAlert.TODAY_SHIPPING_IN_STOCK);
487
				}
488
			}else{
489
				if(order.getExpectedShippingTime() <= currentTime){
490
					order.setAlert(OrderAlert.SHIPPING_TIME_EXCEEDED);
491
				}else{
492
					order.setAlert(OrderAlert.LATER_SHIPPING);
493
				}
494
			}
495
		}
966 chandransh 496
		return order;
671 chandransh 497
	}
498
 
2449 chandransh 499
	/**
2697 chandransh 500
	 * Queries the transction server to get the list of all return orders that
501
	 * have to be processed.
502
	 * 
503
	 * @return A list of all return orders to be processed.
504
	 */
505
	public static List<ReturnOrder> getReturnOrders(long warehouseId){
506
		List<ReturnOrder> retOrders = new ArrayList<ReturnOrder>();
507
		try{
3132 rajveer 508
			TransactionClient client = new TransactionClient();
2697 chandransh 509
			Client c = client.getClient();
510
			List<in.shop2020.model.v1.order.ReturnOrder> tRetOrders =  c.getReturnOrders(warehouseId, 0L, new Date().getTime());
511
			for(in.shop2020.model.v1.order.ReturnOrder retOrder : tRetOrders){
512
				retOrders.add(getReturnOrderFromThriftRO(retOrder));
513
			}
514
		}catch(Exception e){
515
			e.printStackTrace();
516
		}
517
		return retOrders;
518
	}
519
 
2700 chandransh 520
	public static ReturnOrder getReturnOrderFromThriftRO(in.shop2020.model.v1.order.ReturnOrder tRetOrder){
521
		ReturnOrder retOrder = new ReturnOrder(tRetOrder.getOrderId(),
522
				tRetOrder.getWarehouseId(),
523
				tRetOrder.getItemId(),
524
				tRetOrder.getProductGroup(),
525
				tRetOrder.getBrand(),
526
				tRetOrder.getModelName(),
527
				tRetOrder.getModelNumber(),
528
				tRetOrder.getColor(),
529
				tRetOrder.getInvoiceNumber(),
530
				tRetOrder.getJacketNumber(),
531
				tRetOrder.getTotalPrice(),
532
				tRetOrder.getTransferPrice(),
533
				false,
534
				tRetOrder.getCreatedAt());
2697 chandransh 535
		return retOrder;
536
	}
537
 
538
	/**
2449 chandransh 539
	 * This method maps a given type to a list of statuses.
540
	 * 
541
	 * @param type
542
	 *            The type of orders to fetch.
543
	 * @return The list of Thrift statuses associated with a particular order
544
	 *         type.
545
	 */
4361 rajveer 546
	public static List<OrderStatus> getStatuses(OrderType type) {
2449 chandransh 547
		List<OrderStatus> statuses = new ArrayList<OrderStatus>();
548
 
549
		switch (type) {
550
		case ACCEPTED:
551
			statuses.add(OrderStatus.ACCEPTED);
552
			break;
553
 
4361 rajveer 554
		case ALL_PENDING:
555
			statuses.add(OrderStatus.SUBMITTED_FOR_PROCESSING);
4421 mandeep.dh 556
			statuses.add(OrderStatus.CAPTURE_IN_PROCESS);
4361 rajveer 557
			statuses.add(OrderStatus.INVENTORY_LOW);
558
			statuses.add(OrderStatus.LOW_INV_PO_RAISED);
559
			statuses.add(OrderStatus.LOW_INV_REVERSAL_IN_PROCESS);
560
			statuses.add(OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT);
2449 chandransh 561
			break;
562
 
563
		case NEW:
564
			statuses.add(OrderStatus.SUBMITTED_FOR_PROCESSING);
4421 mandeep.dh 565
			statuses.add(OrderStatus.CAPTURE_IN_PROCESS);
2449 chandransh 566
			break;
567
 
568
		case BILLED:
569
			statuses.add(OrderStatus.BILLED);
570
			break;
571
 
4308 rajveer 572
		case LOW_INVENTORY:
2449 chandransh 573
			statuses.add(OrderStatus.INVENTORY_LOW);
574
			break;
4248 rajveer 575
 
4308 rajveer 576
		case PO_RAISED:
577
			statuses.add(OrderStatus.LOW_INV_PO_RAISED);
578
			break;
579
 
580
		case REVERSAL_INITIATED:
581
			statuses.add(OrderStatus.LOW_INV_REVERSAL_IN_PROCESS);
582
			break;
583
 
584
		case NOT_AVAILABLE:
585
			statuses.add(OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT);
586
			break;
587
 
4248 rajveer 588
		case CANCEL_CONFIRMED:
589
			statuses.add(OrderStatus.CANCEL_REQUEST_CONFIRMED);
590
			break;
2449 chandransh 591
 
4459 rajveer 592
		case DOA_REQUEST_AUTHORIZED:
593
			statuses.add(OrderStatus.DOA_REQUEST_AUTHORIZED);
4515 mandeep.dh 594
			statuses.add(OrderStatus.DOA_PICKUP_REQUEST_RAISED);
4459 rajveer 595
			break;
596
 
4666 rajveer 597
		case LOST_IN_TRANSIT:
598
			statuses.add(OrderStatus.LOST_IN_TRANSIT);
599
			break;
600
 
4459 rajveer 601
		case DOA_LOST_IN_TRANSIT:
602
			statuses.add(OrderStatus.DOA_LOST_IN_TRANSIT);
4478 rajveer 603
			break;
604
 
605
		case DOA_RECEIVED_DAMAGED:
4459 rajveer 606
			statuses.add(OrderStatus.DOA_RECEIVED_DAMAGED);
607
			break;
4495 rajveer 608
 
609
		case RET_REQUEST_AUTHORIZED:
610
			statuses.add(OrderStatus.RET_REQUEST_AUTHORIZED);
4515 mandeep.dh 611
			statuses.add(OrderStatus.RET_PICKUP_REQUEST_RAISED);
4495 rajveer 612
			break;
613
 
614
		case RET_AWAITED:
615
			statuses.add(OrderStatus.RET_RETURN_IN_TRANSIT);
4515 mandeep.dh 616
			statuses.add(OrderStatus.RET_PICKUP_CONFIRMED);
4495 rajveer 617
			break;
4459 rajveer 618
 
4495 rajveer 619
		case RET_RECEIVED_PRESTINE:
620
			statuses.add(OrderStatus.RET_RECEIVED_PRESTINE);
4515 mandeep.dh 621
			statuses.add(OrderStatus.RET_PRODUCT_USABLE);
4495 rajveer 622
			break;
623
 
624
		case RET_LOST_IN_TRANSIT:
625
			statuses.add(OrderStatus.RET_LOST_IN_TRANSIT);
626
			break;
627
 
628
		case RET_RECEIVED_DAMAGED:
629
			statuses.add(OrderStatus.RET_RECEIVED_DAMAGED);
4515 mandeep.dh 630
			statuses.add(OrderStatus.RET_PRODUCT_UNUSABLE);
4495 rajveer 631
			break;
632
 
2449 chandransh 633
		case REJECTED:
634
			statuses.add(OrderStatus.REJECTED);
635
			break;
636
 
637
		case SHIPPED:
638
			statuses.add(OrderStatus.SHIPPED_FROM_WH);
639
			statuses.add(OrderStatus.SHIPPED_TO_LOGST);
5016 phani.kuma 640
			statuses.add(OrderStatus.SHIPPED_TO_DESTINATION_CITY);
641
			statuses.add(OrderStatus.REACHED_DESTINATION_CITY);
642
			statuses.add(OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE);
2449 chandransh 643
			break;
644
 
645
		case DELIVERED:
646
			statuses.add(OrderStatus.DELIVERY_SUCCESS);
4452 rajveer 647
			statuses.add(OrderStatus.DOA_PICKUP_REQUEST_RAISED);
2449 chandransh 648
			break;
2610 chandransh 649
 
650
		case DOA_AWAITED:
4452 rajveer 651
			statuses.add(OrderStatus.DOA_PICKUP_CONFIRMED);
2610 chandransh 652
			statuses.add(OrderStatus.DOA_RETURN_IN_TRANSIT);
4452 rajveer 653
			statuses.add(OrderStatus.DOA_RECEIVED_PRESTINE);
2610 chandransh 654
			break;
2449 chandransh 655
 
4495 rajveer 656
		case RTO_AWAITED:
4484 rajveer 657
			statuses.add(OrderStatus.RTO_IN_TRANSIT);
2509 chandransh 658
			break;
659
 
4515 mandeep.dh 660
        case RTO_RECEIVED_DAMAGED:
661
            statuses.add(OrderStatus.RTO_RECEIVED_DAMAGED);
662
            break;
663
 
664
        case DOA_RECEIVED_PRESTINE:
2610 chandransh 665
			statuses.add(OrderStatus.DOA_CERT_VALID);
4515 mandeep.dh 666
			statuses.add(OrderStatus.DOA_CERT_INVALID);
2610 chandransh 667
			break;
668
 
4495 rajveer 669
		case RTO_RETURNED:
4484 rajveer 670
			statuses.add(OrderStatus.RTO_RECEIVED_PRESTINE);
2509 chandransh 671
			break;
672
 
2628 chandransh 673
		case RESHIPPED:
4484 rajveer 674
			statuses.add(OrderStatus.RTO_RESHIPPED);
2628 chandransh 675
			statuses.add(OrderStatus.DOA_INVALID_RESHIPPED);
4452 rajveer 676
			statuses.add(OrderStatus.DOA_VALID_RESHIPPED);
2628 chandransh 677
			break;
678
 
679
		case REFUNDED:
4682 rajveer 680
		    statuses.add(OrderStatus.COD_VERIFICATION_FAILED);
4484 rajveer 681
			statuses.add(OrderStatus.RTO_REFUNDED);
2628 chandransh 682
			statuses.add(OrderStatus.DOA_INVALID_REFUNDED);
683
			statuses.add(OrderStatus.DOA_VALID_REFUNDED);
4682 rajveer 684
			statuses.add(OrderStatus.CANCELLED_DUE_TO_LOW_INVENTORY);
2628 chandransh 685
			break;
2509 chandransh 686
 
3065 chandransh 687
		case VERIFICATION_PENDING:
4664 rajveer 688
		    statuses.add(OrderStatus.COD_VERIFICATION_PENDING);
3065 chandransh 689
		    break;
2449 chandransh 690
		default:
691
			break;
692
		}
693
		return statuses;
694
	}
13146 manish.sha 695
 
696
	public static List<Long> getEligibleOrdersToBeAccepted(Order order){
697
		List<Long> orders = new ArrayList<Long>();
698
		try {
699
 
700
			TransactionClient client = new TransactionClient();
701
			Client c = client.getClient();
702
 
703
			in.shop2020.model.v1.order.Order thriftOrder = c.getOrder(order.getOrderId());
704
			long provider_id = thriftOrder.getLogistics_provider_id();
705
			boolean cod = thriftOrder.isLogisticsCod();
706
 
707
			List<in.shop2020.model.v1.order.Order> torders = c.getOrdersForTransaction(thriftOrder.getTransactionId(), thriftOrder.getCustomer_id());
708
			for(in.shop2020.model.v1.order.Order torder: torders){
709
				if(torder.getLogistics_provider_id() == provider_id && torder.isLogisticsCod() == cod){
710
					orders.add(torder.getId());
711
				}
712
			}
713
 
714
		}catch(Exception e){
715
			e.printStackTrace();
716
		}
717
		return orders;
718
	}
719
 
720
	public static String getItemDisplayName(LineItem lineitem){
721
		StringBuffer itemName = new StringBuffer();
722
        if (lineitem.getBrand() != null)
723
            itemName.append(lineitem.getBrand() + " ");
724
        if (lineitem.getModel_name() != null)
725
            itemName.append(lineitem.getModel_name() + " ");
726
        if (lineitem.getModel_number() != null)
727
            itemName.append(lineitem.getModel_number() + " ");
728
        if (lineitem.getColor() != null
729
                && !lineitem.getColor().trim().equals("NA"))
730
            itemName.append("(" + lineitem.getColor() + ")");
731
 
732
        return itemName.toString();
733
	}
734
 
735
	public static String getProductName(in.shop2020.model.v1.catalog.Item item){
736
		StringBuffer itemName = new StringBuffer();
737
        if (item.getBrand() != null)
738
            itemName.append(item.getBrand() + " ");
739
        if (item.getModelName() != null)
740
            itemName.append(item.getModelName() + " ");
741
        if (item.getModelNumber() != null)
742
            itemName.append(item.getModelNumber() + " ");
743
        if (item.getColor() != null
744
                && !item.getColor().trim().equals("NA"))
745
            itemName.append("(" + item.getColor() + ")");
746
 
747
        return itemName.toString();
748
	}
493 rajveer 749
}