Subversion Repositories SmartDukaan

Rev

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