Subversion Repositories SmartDukaan

Rev

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