Subversion Repositories SmartDukaan

Rev

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