Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
8616 vikram.rag 1
package in.shop2020;
2
 
3
import in.shop2020.model.v1.catalog.CatalogService;
8739 vikram.rag 4
import in.shop2020.model.v1.catalog.SnapdealItem;
8616 vikram.rag 5
import in.shop2020.model.v1.catalog.CatalogServiceException;
6
import in.shop2020.model.v1.catalog.Item;
7
import in.shop2020.model.v1.inventory.InventoryService;
8
import in.shop2020.model.v1.inventory.InventoryServiceException;
8890 amar.kumar 9
import in.shop2020.model.v1.inventory.InventoryType;
10
import in.shop2020.model.v1.inventory.WarehouseType;
8759 vikram.rag 11
 
8616 vikram.rag 12
import in.shop2020.model.v1.inventory.VendorItemPricing;
13
import in.shop2020.model.v1.inventory.Warehouse;
14
import in.shop2020.model.v1.order.LineItem;
15
import in.shop2020.model.v1.order.OrderStatus;
16
import in.shop2020.model.v1.order.OrderType;
17
import in.shop2020.model.v1.order.SnapdealOrder;
18
import in.shop2020.model.v1.order.SourceDetail;
19
import in.shop2020.model.v1.order.Transaction;
8651 vikram.rag 20
import in.shop2020.model.v1.order.TransactionServiceException;
8616 vikram.rag 21
import in.shop2020.model.v1.order.TransactionStatus;
22
import in.shop2020.model.v1.order.TransactionService.Client;
23
import in.shop2020.model.v1.user.User;
24
import in.shop2020.payments.PaymentException;
25
import in.shop2020.payments.PaymentStatus;
26
import in.shop2020.thrift.clients.CatalogClient;
27
import in.shop2020.thrift.clients.InventoryClient;
28
import in.shop2020.thrift.clients.PaymentClient;
29
import in.shop2020.thrift.clients.TransactionClient;
30
import in.shop2020.thrift.clients.UserClient;
31
 
32
import java.io.File;
8651 vikram.rag 33
import java.text.ParseException;
8616 vikram.rag 34
import java.text.SimpleDateFormat;
35
import java.util.ArrayList;
36
import java.util.Calendar;
37
import java.util.Collections;
38
import java.util.Date;
8773 vikram.rag 39
import java.util.GregorianCalendar;
8616 vikram.rag 40
import java.util.List;
41
import javax.xml.bind.JAXBContext;
42
import javax.xml.bind.JAXBException;
43
import javax.xml.bind.Marshaller;
44
import javax.xml.bind.Unmarshaller;
8739 vikram.rag 45
 
8616 vikram.rag 46
import org.apache.thrift.TException;
47
import org.apache.thrift.transport.TTransportException;
8645 vikram.rag 48
import org.slf4j.Logger;
49
import org.slf4j.LoggerFactory;
8773 vikram.rag 50
import in.shop2020.utils.GmailUtils;
8616 vikram.rag 51
 
52
import order.SaholicAPI;
53
import order.SaholicAPI.Order;
54
 
55
public class ProcessSnapdealOrder {
56
	private static final int SNAPDEAL_SOURCE_ID = 7;
57
	private static final String FIRSTFLIGHT = "First Flight";
8627 vikram.rag 58
	private static final String DELHIVERY = "DELHIVERY";
59
	private static final String BLUEDART = "Bluedart";
8715 vikram.rag 60
	private static final String CHHOTU = "CHHOTU";	
61
	private static final String LAST_MILE = "LAST_MILE";
8844 amar.kumar 62
	private static final String  ECOMM_EXP = "Ecom Express";
8715 vikram.rag 63
	private static final String  EWINGS = "EWINGS";
64
	private static final String DTDC = "DTDC";
65
	private static final String WAREOLOG = "DTDC";
66
	private static final String  MIRAKLE = "MIRAKLE";
67
	private static final String RAJIV_TRANSPORT = "RAJIV_TRANSPORT";
68
	private static final String BLUEDART_HIGH_VALUE = "BLUEDART_HIGH_VALUE";
69
	private static final String BLUEDART_SURFACE = "BLUEDART_SURFACE";
70
	private static final String BLUEDART_APEX = "BLUEDART_APEX";
71
	private static final String ARAMEX = "ARAMEX";
9120 vikram.rag 72
	private static final String GATI = "GATI";
8715 vikram.rag 73
	private static final String INDIA_POST = "INDIA_POST";
74
	private static final String FEDEX = "FEDEX";
75
	private static final String IOT = "IOT";
76
	private static final String RED_EXP = "RED_EXP";
77
	private static final String GHARPAY = "GHARPAY";
78
	private static final String QUANTIUM = "QUANTIUM";
9120 vikram.rag 79
	private static final String GATI_AIR = "GATI AIR";
8715 vikram.rag 80
	private static final String VDELIVER = "VDELIVER";
8627 vikram.rag 81
	private static String transactionId;
82
	private static final int SNAPDEAL_GATEWAY_ID = 18;
8646 vikram.rag 83
	private static Logger logger;
8627 vikram.rag 84
 
8616 vikram.rag 85
	public static void processSnapdealOrders(File file) throws JAXBException{
8646 vikram.rag 86
		logger = LoggerFactory.getLogger(ProcessSnapdealOrder.class);
8616 vikram.rag 87
		JAXBContext jc = JAXBContext.newInstance(SaholicAPI.class);
88
		Unmarshaller unmarshaller = jc.createUnmarshaller();
89
		SaholicAPI orders = (SaholicAPI) unmarshaller.unmarshal(file);
90
		Marshaller marshaller = jc.createMarshaller();
91
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
92
		marshaller.marshal(orders, System.out);
93
		SourceDetail sourceDetail = null;
94
		User user = null;
95
		TransactionClient tsc = null;
96
		try {
97
			tsc = new TransactionClient();
98
			sourceDetail = tsc.getClient().getSourceDetail(SNAPDEAL_SOURCE_ID);
99
		} catch (Exception e) {
8773 vikram.rag 100
			logger.error("Unable to establish connection to the transaction service while getting Snapdeal Source Detail ", e);
8616 vikram.rag 101
		}
102
		try {   
103
			in.shop2020.model.v1.user.UserContextService.Client userClient = new UserClient().getClient();
104
			user = userClient.getUserByEmail(sourceDetail.getEmail());
105
		} catch (Exception e) {
8773 vikram.rag 106
			logger.error("Unable to establish connection to the User service ", e);
8616 vikram.rag 107
		}
8800 vikram.rag 108
		int duplicate_orders = 0;
109
		int new_orders = 0;
8773 vikram.rag 110
		int processed_orders = 0;
111
		StringBuffer sb = new StringBuffer();
8616 vikram.rag 112
		for(Order order:orders.getOrder()){
8627 vikram.rag 113
			long subOrderId = (long) order.getSuborderId();
114
			Client transaction_client = null;
115
			try {
116
				transaction_client = new TransactionClient().getClient();
8802 amar.kumar 117
				if(transaction_client.snapdealOrderExists(subOrderId, order.getReferenceCode())) {
8739 vikram.rag 118
					logger.error("Snapdeal suborder id exists " + subOrderId);
8800 vikram.rag 119
					duplicate_orders++;
8627 vikram.rag 120
					continue;
121
				}
122
 
123
			} catch (TTransportException e1) {
8773 vikram.rag 124
				logger.error("Problem with Transaction service " , e1);
8627 vikram.rag 125
				e1.printStackTrace();
126
			} catch (TException e) {
8773 vikram.rag 127
				logger.error("Problem.. thrift exception with Transaction service " , e);
8627 vikram.rag 128
				e.printStackTrace();
129
			}
8800 vikram.rag 130
			new_orders++;
8616 vikram.rag 131
			Transaction txn = new Transaction();
132
			txn.setShoppingCartid(user.getActiveCartId());
133
			txn.setCustomer_id(user.getUserId());
8627 vikram.rag 134
			System.out.println("User Id is " + user.getUserId());
8616 vikram.rag 135
			txn.setCreatedOn(new Date().getTime());
136
			txn.setTransactionStatus(TransactionStatus.INIT);
137
			txn.setStatusDescription("Order for Snapdeal ");
138
			List<in.shop2020.model.v1.order.Order> orderlist = new ArrayList<in.shop2020.model.v1.order.Order>();
139
			LineItem lineItem = null;
8739 vikram.rag 140
			CatalogService.Client catalogClient = null;
141
			SnapdealItem snapdealItem = null;
142
			double SellingPrice = 0;
8616 vikram.rag 143
			try {
8739 vikram.rag 144
				catalogClient =  new CatalogClient().getClient();
145
				snapdealItem = catalogClient.getSnapdealItem(order.getSKUCode());
8886 vikram.rag 146
				if(snapdealItem.getExceptionPrice()!=0 && snapdealItem.getItem_id()!=0 && (order.getSellingPricePerItem() <  snapdealItem.getExceptionPrice())){
8739 vikram.rag 147
					SellingPrice = snapdealItem.getExceptionPrice();
148
				}
149
				else{
150
					SellingPrice = order.getSellingPricePerItem();
151
				}
152
				lineItem = createLineItem(order.getSKUCode(),SellingPrice);
8773 vikram.rag 153
				if(lineItem == null){
8854 vikram.rag 154
					sb.append(order.getSuborderId() +" "+"SKU not found "+"\n");
8773 vikram.rag 155
					continue;
156
				}
8846 vikram.rag 157
				lineItem.setExtra_info("SubOrderId = " + order.getSuborderId() + " ReferenceCode = " + order.getReferenceCode());
8616 vikram.rag 158
			} catch (CatalogServiceException e) {
8773 vikram.rag 159
				logger.error("Unable to create order for suborderid  " + order.getSuborderId() , e);
8616 vikram.rag 160
				e.printStackTrace();
8773 vikram.rag 161
				sb.append(order.getSuborderId() + " " + "Problem with catalog service" + "\n");
8744 vikram.rag 162
				continue;
8616 vikram.rag 163
			} catch (TException e) {
8773 vikram.rag 164
				logger.error("Unable to create order for suborderid  " + order.getSuborderId() , e);
8616 vikram.rag 165
				e.printStackTrace();
8773 vikram.rag 166
				sb.append(order.getSuborderId() + " " + "Thrift Exception in Catalog Service" + "\n");
8744 vikram.rag 167
				continue;
8616 vikram.rag 168
			}
169
			in.shop2020.model.v1.order.Order t_order = new in.shop2020.model.v1.order.Order();
8627 vikram.rag 170
			t_order.setCustomer_id(user.getUserId());
171
			t_order.setCustomer_email(sourceDetail.getEmail());
172
			t_order.setCustomer_name(order.getCustomerName());
173
			t_order.setCustomer_address1("");
174
			t_order.setCustomer_address2("");
175
			t_order.setCustomer_city(order.getCity());
176
			t_order.setCustomer_state(order.getState());
177
			t_order.setCustomer_pincode(String.valueOf(order.getPINCode()));
8742 vikram.rag 178
			t_order.setTotal_amount(SellingPrice);            
8627 vikram.rag 179
			t_order.setTotal_weight(lineItem.getTotal_weight());
180
			t_order.setLineitems(Collections.singletonList(lineItem));            
8759 vikram.rag 181
			t_order.setStatus(OrderStatus.PAYMENT_PENDING);
8890 amar.kumar 182
			t_order.setStatusDescription("Payment Pending");
8627 vikram.rag 183
			t_order.setCreated_timestamp(new Date().getTime());
184
			t_order.setOrderType(OrderType.B2C);
185
			t_order.setCod(false);
186
			System.out.println("t order created");
187
			try {
8804 vikram.rag 188
				SimpleDateFormat istFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
8661 vikram.rag 189
				Date shipDate = null;
190
				try {
191
					shipDate= istFormatter.parse(order.getShipByDate());
192
				} catch (ParseException e) {
8773 vikram.rag 193
					logger.error("Could not parse order ship date from file " , e);
8661 vikram.rag 194
					e.printStackTrace();
8775 vikram.rag 195
					sb.append(order.getSuborderId() + " Could not parse ship date" + " " + "\n");
8744 vikram.rag 196
					continue;
8661 vikram.rag 197
				}
8627 vikram.rag 198
				Calendar time = Calendar.getInstance();
8661 vikram.rag 199
				t_order.setPromised_shipping_time(shipDate.getTime());
200
				t_order.setExpected_shipping_time(shipDate.getTime());
8744 vikram.rag 201
				time.add(Calendar.DAY_OF_MONTH, 4);
8627 vikram.rag 202
				t_order.setPromised_delivery_time(time.getTimeInMillis());
203
				t_order.setExpected_delivery_time(time.getTimeInMillis());
204
				System.out.println("Dates set in transaction");
8697 vikram.rag 205
			} catch(Exception e) {	
8645 vikram.rag 206
				logger.error("Error in updating Shipping or Delivery Time for suborderid  " + order.getSuborderId());
8775 vikram.rag 207
				sb.append(order.getSuborderId() + " Could not update delivery time" + " " + "\n");
8627 vikram.rag 208
				continue;
209
			}
8657 vikram.rag 210
			InventoryService.Client inventoryClient = null;
8739 vikram.rag 211
			Warehouse fulfillmentWarehouse= null;
212
			try {
213
				inventoryClient = new InventoryClient().getClient();
214
				if(snapdealItem.getItem_id()!=0 && snapdealItem.getWarehouseId()!=0) {
215
					fulfillmentWarehouse = inventoryClient.getWarehouse(snapdealItem.getWarehouseId());
216
				} else {
217
					List<Long> itemAvailability = inventoryClient.getItemAvailabilityAtLocation(order.getSKUCode(), 1);
218
					fulfillmentWarehouse = inventoryClient.getWarehouse(itemAvailability.get(0));
8789 vikram.rag 219
					if(fulfillmentWarehouse.getStateId()!=0){
220
						fulfillmentWarehouse = inventoryClient.getWarehouse(7);
221
					}
8739 vikram.rag 222
				}
223
				t_order.setFulfilmentWarehouseId(fulfillmentWarehouse.getId());
8890 amar.kumar 224
				long billingWarehouseId = 0;
225
				if(fulfillmentWarehouse.getBillingWarehouseId()== 0) {
226
					inventoryClient = new InventoryClient().getClient();
227
					List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, fulfillmentWarehouse.getVendor().getId(), 0, 0);
228
					for(Warehouse warehouse : warehouses) {
229
						if(warehouse.getBillingWarehouseId()!=0) {
230
							billingWarehouseId = warehouse.getBillingWarehouseId();
231
			                break;
232
						}
233
					}
8891 amar.kumar 234
				}else {
235
					billingWarehouseId = fulfillmentWarehouse.getBillingWarehouseId();
8890 amar.kumar 236
				}
237
 
238
				//logger.info("Billing warehouse id for suborderid  " + order.getSuborderId() + " is " + fulfillmentWarehouse.getBillingWarehouseId());
239
				t_order.setWarehouse_id(billingWarehouseId);
8845 amar.kumar 240
				VendorItemPricing vendorItemPricing = new VendorItemPricing();
241
				if(fulfillmentWarehouse.getId()==7) {
242
					Item item = new CatalogClient().getClient().getItem(lineItem.getItem_id());
243
					vendorItemPricing = inventoryClient.getItemPricing(lineItem.getItem_id(), item.getPreferredVendor());
244
				} else {
245
					vendorItemPricing = inventoryClient.getItemPricing(lineItem.getItem_id(), fulfillmentWarehouse.getVendor().getId());
246
				}
247
 
8739 vikram.rag 248
				t_order.getLineitems().get(0).setTransfer_price(vendorItemPricing.getTransferPrice());
249
				t_order.getLineitems().get(0).setNlc(vendorItemPricing.getNlc());
8616 vikram.rag 250
			} catch (InventoryServiceException e) {
8846 vikram.rag 251
				logger.error("Error connecting inventory service for suborderid  " + order.getSuborderId() , e);
8775 vikram.rag 252
				sb.append(order.getSuborderId() + " Inventory Service Exception" + " " + "\n");
8739 vikram.rag 253
				continue;
8616 vikram.rag 254
			} catch (TTransportException e) {
8773 vikram.rag 255
				logger.error("Transport Exception with Inventory Service for suborderid  " + order.getSuborderId() , e);
8775 vikram.rag 256
				sb.append(order.getSuborderId() + " Transport Exception with Inventory Service" + " " + "\n");
8744 vikram.rag 257
				continue;
8616 vikram.rag 258
			} catch (TException e) {
8773 vikram.rag 259
				logger.error("Exception with Inventory Service for suborderid  " + order.getSuborderId() , e);
8775 vikram.rag 260
				sb.append(order.getSuborderId() + " Exception in Inventory Service" + " " + "\n");
8744 vikram.rag 261
				continue;
8845 amar.kumar 262
			} catch (CatalogServiceException e) {
263
				logger.error("Exception with Catalog Service for suborderid  " + order.getSuborderId() + " while getting item " + lineItem.getItem_id(), e);
264
				sb.append(order.getSuborderId() + " Exception in Catalog Service" + " " + "\n");
265
				continue;
8657 vikram.rag 266
			}
8616 vikram.rag 267
			if(order.getCourier().equalsIgnoreCase(FIRSTFLIGHT)) {
268
				t_order.setLogistics_provider_id(12);
269
			} else if(order.getCourier().equalsIgnoreCase(DELHIVERY)) {
270
				t_order.setLogistics_provider_id(13);
271
			} else if(order.getCourier().equalsIgnoreCase(BLUEDART)) {
272
				t_order.setLogistics_provider_id(14);
8642 vikram.rag 273
			}else if(order.getCourier().equalsIgnoreCase(CHHOTU)) {
274
				t_order.setLogistics_provider_id(16);
8715 vikram.rag 275
			}
276
			else if(order.getCourier().equalsIgnoreCase(LAST_MILE)){
277
				t_order.setLogistics_provider_id(17);
278
			}
279
			else if(order.getCourier().equalsIgnoreCase(ECOMM_EXP)){
280
				t_order.setLogistics_provider_id(18);
281
			}
282
			else if(order.getCourier().equalsIgnoreCase(EWINGS)){
283
				t_order.setLogistics_provider_id(19);
284
			}
285
			else if(order.getCourier().equalsIgnoreCase(DTDC)){
286
				t_order.setLogistics_provider_id(20);
287
			}
288
			else if(order.getCourier().equalsIgnoreCase(WAREOLOG)){
289
				t_order.setLogistics_provider_id(21);
290
			}
291
			else if(order.getCourier().equalsIgnoreCase(MIRAKLE)){
292
				t_order.setLogistics_provider_id(22);
293
			}
294
			else if(order.getCourier().equalsIgnoreCase(RAJIV_TRANSPORT)){
295
				t_order.setLogistics_provider_id(23);
296
			}
297
			else if(order.getCourier().equalsIgnoreCase(BLUEDART_HIGH_VALUE)){
298
				t_order.setLogistics_provider_id(24);
299
			}
300
			else if(order.getCourier().equalsIgnoreCase(BLUEDART_SURFACE)){
301
				t_order.setLogistics_provider_id(25);
302
			}
303
			else if(order.getCourier().equalsIgnoreCase(BLUEDART_APEX)){
304
				t_order.setLogistics_provider_id(26);
305
			}
306
			else if(order.getCourier().equalsIgnoreCase(ARAMEX)){
307
				t_order.setLogistics_provider_id(27);
308
			}
309
			else if(order.getCourier().equalsIgnoreCase(GATI)){
310
				t_order.setLogistics_provider_id(28);
311
			}
312
			else if(order.getCourier().equalsIgnoreCase(INDIA_POST)){
313
				t_order.setLogistics_provider_id(29);
314
			}
315
			else if(order.getCourier().equalsIgnoreCase(FEDEX)){
316
				t_order.setLogistics_provider_id(30);
317
			}
318
			else if(order.getCourier().equalsIgnoreCase(IOT)){
319
				t_order.setLogistics_provider_id(31);
320
			}
321
			else if(order.getCourier().equalsIgnoreCase(RED_EXP)){
322
				t_order.setLogistics_provider_id(32);
323
			}
324
			else if(order.getCourier().equalsIgnoreCase(VDELIVER)){
325
				t_order.setLogistics_provider_id(33);
326
			}
327
			else if(order.getCourier().equalsIgnoreCase(GHARPAY)){
328
				t_order.setLogistics_provider_id(34);
329
			}
330
			else if(order.getCourier().equalsIgnoreCase(QUANTIUM)){
331
				t_order.setLogistics_provider_id(35);
332
			}
333
			else if(order.getCourier().equalsIgnoreCase(GATI_AIR)){
334
				t_order.setLogistics_provider_id(36);
335
			}
336
			else {
8652 vikram.rag 337
				logger.error("Error No Courier Match please add courier to our system for suborderid  " + order.getSuborderId() + "Courier Name " + order.getCourier());
8773 vikram.rag 338
				sb.append(order.getSuborderId() + " Error No Courier Match " + order.getCourier() +"\n");
8627 vikram.rag 339
				continue;
8616 vikram.rag 340
			}
8627 vikram.rag 341
 
8616 vikram.rag 342
			t_order.setAirwaybill_no(String.valueOf(order.getAWBNumber()));
343
			t_order.setTracking_id(String.valueOf(order.getAWBNumber()));
8739 vikram.rag 344
			t_order.setTotal_amount(SellingPrice);
8627 vikram.rag 345
			t_order.setOrderType(OrderType.B2C);
346
			t_order.setSource(SNAPDEAL_SOURCE_ID);
347
			t_order.setOrderType(OrderType.B2C);
348
			orderlist.add(t_order);
349
			txn.setOrders(orderlist);
8739 vikram.rag 350
			String referenceCode = order.getReferenceCode();
351
			String productName = order.getProduct();
352
			SimpleDateFormat istFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
353
			Date snapdealTxnDate = null;
354
			try {
355
				snapdealTxnDate = istFormatter.parse(order.getOrderPlacedDate());
356
			} catch (ParseException e) {
8773 vikram.rag 357
				logger.error(order.getSuborderId() + " Could not parse snapdeal order date from file " , e);
358
				sb.append(order.getSuborderId() + " Could not parse order date" +"\n");
8744 vikram.rag 359
				continue;
8739 vikram.rag 360
			}
361
			try {
362
				transactionId =  String.valueOf(transaction_client.createTransaction(txn));
363
			} catch (TransactionServiceException e) {
8773 vikram.rag 364
				logger.error(order.getSuborderId() + " Could not create transaction " , e);
365
				sb.append(order.getSuborderId() + " Could not create transaction" +"\n");
8744 vikram.rag 366
				continue;
8739 vikram.rag 367
			} catch (TException e) {
8773 vikram.rag 368
				logger.error("Problem with transaction service while creating transaction", e);
8775 vikram.rag 369
				sb.append(order.getSuborderId() + " Transaction Service Exception could not create transaction" +"\n");
8744 vikram.rag 370
				continue;
8739 vikram.rag 371
			}
8806 vikram.rag 372
			try{
373
				createPayment(user, (new Long(subOrderId)).toString(),lineItem.getTotal_price());
374
			}
375
			catch (NumberFormatException e) {
376
				logger.error("Could not create payment",e);
377
				sb.append(order.getSuborderId() + " Could not create payment");
378
				e.printStackTrace();
379
				continue;
380
			} catch (PaymentException e) {
381
				logger.error("Could not create payment payment exception",e);
382
				sb.append(order.getSuborderId() + " Could not create payment Payment exception");
383
				e.printStackTrace();
384
				continue;
385
			} catch (TException e) {
386
				logger.error("Could not create payment thrift exception",e);
387
				sb.append(order.getSuborderId() + " Could not create payment Thrift exception");
388
				e.printStackTrace();
389
				continue;
390
			}
8739 vikram.rag 391
			Transaction transaction = null;
392
			try {
393
				transaction = transaction_client.getTransaction(Long.parseLong(transactionId));
394
			} catch (NumberFormatException e) {
395
				logger.error("Problem parsing transaction id " + transactionId);
8773 vikram.rag 396
				sb.append(order.getSuborderId() + " Problem parsing transaction id "+ transactionId +"\n");
8739 vikram.rag 397
				e.printStackTrace();
8744 vikram.rag 398
				continue;
8739 vikram.rag 399
			} catch (TransactionServiceException e) {
400
				logger.error("Problem getting transaction from service transaction id " + transactionId);
8773 vikram.rag 401
				sb.append(order.getSuborderId() + " Problem getting transaction id "+ transactionId +"\n");
8739 vikram.rag 402
				e.printStackTrace();
8744 vikram.rag 403
				continue;
8739 vikram.rag 404
			} catch (TException e) {
405
				logger.error("Problem with transaction service while getting transaction id " + transactionId);
8773 vikram.rag 406
				sb.append(order.getSuborderId() + " Problem with transaction service while getting transaction id "+ transactionId +"\n");
8739 vikram.rag 407
				e.printStackTrace();
8744 vikram.rag 408
				continue;
8739 vikram.rag 409
			}
410
			in.shop2020.model.v1.order.Order snapdealorder = transaction.getOrders().get(0);
8744 vikram.rag 411
			try {
412
				inventoryClient.reserveItemInWarehouse(lineItem.getItem_id(), fulfillmentWarehouse.getId(), 1, 
8773 vikram.rag 413
						snapdealorder.getId(), snapdealorder.getCreated_timestamp(), snapdealorder.getPromised_shipping_time(), snapdealorder.getLineitems().get(0).getQuantity());
8744 vikram.rag 414
			} catch (InventoryServiceException e1) {
415
				logger.error("Problem while reserving item in inventory service" + snapdealorder.getId());
8773 vikram.rag 416
				sb.append(order.getSuborderId() + " Could not reserve inventory for sku "+ order.getSKUCode() +"\n");
8744 vikram.rag 417
				continue;
418
			} catch (TException e1) {
419
				logger.error("Problem with inventory service" + snapdealorder.getId());
8773 vikram.rag 420
				sb.append(order.getSuborderId() + " Problem with inventory service while reserving inventory for sku "+ order.getSKUCode() +"\n");
8744 vikram.rag 421
				continue;
422
			}
8739 vikram.rag 423
			SnapdealOrder snapdealOrder = new SnapdealOrder();
424
			snapdealOrder.setOrderId(snapdealorder.getId());
425
			snapdealOrder.setSubOrderId(subOrderId);
426
			snapdealOrder.setReferenceCode(referenceCode);
427
			snapdealOrder.setProductName(productName);
428
			snapdealOrder.setSnapdealTxnDate(snapdealTxnDate.getTime());
429
			snapdealOrder.setListingPrice(order.getSellingPricePerItem());
430
			try {
431
				transaction_client.createSnapdealOrder(snapdealOrder);
432
			} catch (TException e) {
433
				logger.error("Could not create Snapdeal Order");
8773 vikram.rag 434
				sb.append(order.getSuborderId() + " Could not create snapdeal order"+"\n");
8739 vikram.rag 435
			}
8773 vikram.rag 436
			processed_orders++;
8789 vikram.rag 437
 
8773 vikram.rag 438
		}
439
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
440
		Calendar cal=GregorianCalendar.getInstance();
441
		String emailFromAddress = "build@shop2020.in";
442
		String password = "cafe@nes";
443
		GmailUtils mailer = new GmailUtils();
8808 vikram.rag 444
		//String sendTo[] = new String[]{"vikram.raghav@shop2020.in"};
445
		String sendTo[] = new String[]{ "sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
446
				"khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
8849 vikram.rag 447
				"yukti.jain@shop2020.in","manisha.sharma@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in","amar.kumar@shop2020.in"};
8806 vikram.rag 448
 
8773 vikram.rag 449
		try {
8800 vikram.rag 450
			if(new_orders==processed_orders && new_orders > 0){
451
				String emailSubjectTxt = "Snapdeal Orders Created Successfully "+sdf.format(cal.getTime());
452
				String text = "Total Orders Received : " + ( new_orders + duplicate_orders ) + "\n" + 
8801 vikram.rag 453
				"Orders Already Existing : " + duplicate_orders + "\n" +
8800 vikram.rag 454
				"Processed Orders : " + processed_orders + "\n" +
455
				"Failed Orders : " + (new_orders - processed_orders);
8773 vikram.rag 456
				mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
457
			}
8800 vikram.rag 458
			else if(new_orders > 0){
459
				String emailSubjectTxt = "Snapdeal Orders Failed while creation "+sdf.format(cal.getTime());
460
				String text = "Total Orders Received : " + ( new_orders + duplicate_orders ) + "\n" + 
8801 vikram.rag 461
				"Orders Already Existing : " + duplicate_orders + "\n" +
8800 vikram.rag 462
				"Processed Orders : " + processed_orders + "\n" +
463
				"Failed Orders : " + (new_orders - processed_orders) + "\n"+ "\n" +
464
				sb.toString();
8773 vikram.rag 465
				mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
466
			}
8800 vikram.rag 467
			else{
8808 vikram.rag 468
				//sendTo[] = new String[]{"vikram.raghav@shop2020.in"};
469
				sendTo = new String[]{"engg@shop2020.in","sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
470
						"khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
471
						"yukti.jain@shop2020.in","manisha.sharma@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in"};
472
 
8800 vikram.rag 473
				String emailSubjectTxt = "No new Snapdeal Orders " + sdf.format(cal.getTime());
474
				String text = "Total Orders Received : " + ( new_orders + duplicate_orders ) + "\n" + 
8801 vikram.rag 475
				"Orders Already Existing : " + duplicate_orders + "\n" +
8800 vikram.rag 476
				"Processed Orders : " + processed_orders + "\n" +
477
				"Failed Orders : " + (new_orders - processed_orders) + "\n"+ "\n" +
478
				sb.toString();
479
				mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
480
			}
8773 vikram.rag 481
		}
482
		catch (Exception e) {
483
			e.printStackTrace();
484
		}
8627 vikram.rag 485
 
8616 vikram.rag 486
 
8773 vikram.rag 487
 
8616 vikram.rag 488
	}
489
 
8806 vikram.rag 490
	public static void createPayment(User user, String subOrderId, double amount) throws NumberFormatException, PaymentException, TException {
491
	    in.shop2020.payments.PaymentService.Client client = new PaymentClient().getClient();
492
        long paymentId = client.createPayment(user.getUserId(), amount, SNAPDEAL_GATEWAY_ID, Long.valueOf(transactionId), false);
493
        client.updatePaymentDetails(paymentId, null, null, null, null, null, null, subOrderId, null, PaymentStatus.AUTHORIZED, null, null);
8627 vikram.rag 494
	}   
495
 
8616 vikram.rag 496
	public static LineItem createLineItem(long itemId, double amount) throws CatalogServiceException, TException {
8627 vikram.rag 497
		LineItem lineItem = new LineItem();
498
		CatalogService.Client catalogClient = new CatalogClient().getClient();
499
		Item item = catalogClient.getItem(itemId);
8773 vikram.rag 500
		if(item.getId()==0){
501
			//in case item id is incorrect..
502
			return null;
503
		}
8616 vikram.rag 504
 
8627 vikram.rag 505
		lineItem.setProductGroup(item.getProductGroup());
506
		lineItem.setBrand(item.getBrand());
507
		lineItem.setModel_number(item.getModelNumber());
508
		lineItem.setModel_name(item.getModelName());
509
		lineItem.setExtra_info(item.getFeatureDescription());
510
		lineItem.setQuantity(1);
511
		lineItem.setItem_id(item.getId());
512
		lineItem.setUnit_weight(item.getWeight());
513
		lineItem.setTotal_weight(item.getWeight());
514
		lineItem.setUnit_price(amount);
515
		lineItem.setTotal_price(amount);
516
 
8739 vikram.rag 517
		if (item.getColor() == null || "NA".equals(item.getColor())) {
8627 vikram.rag 518
			lineItem.setColor("");
519
		} else {
520
			lineItem.setColor(item.getColor());
521
		}
522
		return lineItem;
8616 vikram.rag 523
	}
524
 
525
}