Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
9404 vikram.rag 1
package in.shop2020;
2
 
9456 vikram.rag 3
import in.shop2020.model.v1.catalog.CatalogService;
9404 vikram.rag 4
import in.shop2020.model.v1.catalog.Item;
5
import in.shop2020.model.v1.catalog.SnapdealItem;
9495 vikram.rag 6
import in.shop2020.model.v1.catalog.SnapdealItemDetails;
9404 vikram.rag 7
import in.shop2020.model.v1.inventory.InventoryService.Client;
8
import in.shop2020.model.v1.inventory.InventoryType;
9
import in.shop2020.model.v1.inventory.ItemInventory;
10
import in.shop2020.model.v1.inventory.SnapdealInventoryItem;
11
import in.shop2020.model.v1.inventory.Warehouse;
12
import in.shop2020.model.v1.inventory.WarehouseType;
13
import in.shop2020.thrift.clients.CatalogClient;
14
import in.shop2020.thrift.clients.InventoryClient;
15
import in.shop2020.thrift.clients.TransactionClient;
9459 vikram.rag 16
import in.shop2020.utils.GmailUtils;
9404 vikram.rag 17
import inventory.Inventory;
9456 vikram.rag 18
import inventory.InventoryHistory;
19
import inventory.InventoryHistoryItems;
9404 vikram.rag 20
import inventory.InventoryItems;
9495 vikram.rag 21
import inventory.PendingOrderInventoryHistory;
9404 vikram.rag 22
import inventory.SnapdealItemForInventory;
23
 
24
import java.io.BufferedReader;
9459 vikram.rag 25
import java.io.File;
9404 vikram.rag 26
import java.io.FileInputStream;
27
import java.io.FileNotFoundException;
28
import java.io.FileOutputStream;
29
import java.io.IOException;
30
import java.io.InputStreamReader;
31
import java.io.UnsupportedEncodingException;
32
import java.util.ArrayList;
9459 vikram.rag 33
import java.util.Calendar;
34
import java.util.GregorianCalendar;
9404 vikram.rag 35
import java.util.HashMap;
36
import java.util.List;
37
import java.util.Map;
9495 vikram.rag 38
import java.util.Map.Entry;
9404 vikram.rag 39
 
9459 vikram.rag 40
import javax.mail.MessagingException;
41
 
9404 vikram.rag 42
import org.apache.http.HttpResponse;
43
import org.apache.http.NameValuePair;
44
import org.apache.http.client.ClientProtocolException;
45
import org.apache.http.client.HttpClient;
46
import org.apache.http.client.entity.UrlEncodedFormEntity;
47
import org.apache.http.client.methods.HttpGet;
48
import org.apache.http.client.methods.HttpPost;
9510 vikram.rag 49
import org.apache.http.entity.mime.MultipartEntity;
50
import org.apache.http.entity.mime.content.ContentBody;
51
import org.apache.http.entity.mime.content.FileBody;
9404 vikram.rag 52
import org.apache.http.impl.client.DefaultHttpClient;
53
import org.apache.http.message.BasicNameValuePair;
54
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
55
import org.apache.poi.ss.usermodel.Row;
56
import org.apache.poi.ss.usermodel.Sheet;
57
import org.apache.poi.ss.usermodel.Workbook;
58
import org.apache.thrift.TException;
59
import org.apache.thrift.transport.TTransportException;
9456 vikram.rag 60
 
9404 vikram.rag 61
import com.google.gson.Gson;
62
 
63
public class CreateSnapDealInventoryFeed {
9456 vikram.rag 64
	private static long time = System.currentTimeMillis();
9415 vikram.rag 65
	private static String SNAPDEAL_INVENTORY_SHEET;
9404 vikram.rag 66
	private static Map<Long, SnapdealItemForInventory> allItemsInventoryMap = new HashMap<Long, SnapdealItemForInventory>();
9501 vikram.rag 67
	private static ArrayList<Inventory> currentInventoryItemList;
9404 vikram.rag 68
	static Map<Long,Long> itemIdpendingOrdersMap = new HashMap<Long,Long>();
9456 vikram.rag 69
	private static Map<String,InventoryHistory> inventoryhistoryItemMap;
70
	private static DefaultHttpClient client = new DefaultHttpClient();
9495 vikram.rag 71
	static Map<String,SnapdealItemDetails> snapdealItemMap = new HashMap<String,SnapdealItemDetails>();
72
	static Map<Long,SnapdealItemDetails> itemSnapdealMap = new HashMap<Long,SnapdealItemDetails>();
73
	static Map<String,PendingOrderInventoryHistory> PendingOrdersInventoryHistoryMap = new HashMap<String,PendingOrderInventoryHistory>();
74
	static long lastUpdatedInventoryTime = 0;
75
	static{
76
		CatalogClient catalogServiceClient = null;
77
		try {
78
			catalogServiceClient = new CatalogClient();
79
		} catch (TTransportException e1) {
80
			// TODO Auto-generated catch block
81
			e1.printStackTrace();
82
		}
83
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
84
		List<SnapdealItemDetails> allSnapdealItems = null;
85
		try {
86
			allSnapdealItems = catalogClient.getAllSnapdealItems();
87
		} catch (TException e) {
88
			// TODO Auto-generated catch block
89
			e.printStackTrace();
90
		}
91
		for(SnapdealItemDetails snapdealItem:allSnapdealItems){
92
			snapdealItemMap.put(snapdealItem.getSkuAtSnapdeal(),snapdealItem);
93
			itemSnapdealMap.put(snapdealItem.getItem_id(), snapdealItem);
9517 vikram.rag 94
			//System.out.println("Creating Item and Snapdeal Map " + snapdealItem.getItem_id() + " " + snapdealItem.getSkuAtSnapdeal());
9495 vikram.rag 95
		}
96
		in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;
97
		try {
9497 vikram.rag 98
			transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
9495 vikram.rag 99
			lastUpdatedInventoryTime = transactionClient.getSourceDetail(7).getLastUpdatedOn();
9539 vikram.rag 100
			//System.out.println("Time is " + lastUpdatedInventoryTime);
9495 vikram.rag 101
		} catch (Exception e) {
102
			try {
9497 vikram.rag 103
				transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
9495 vikram.rag 104
				lastUpdatedInventoryTime = transactionClient.getSourceDetail(7).getLastUpdatedOn();
105
			} catch (Exception ex) {
106
				ex.printStackTrace();
107
			}
108
		}
109
 
110
	}
111
 
9404 vikram.rag 112
	private static void calculateinventory(){
113
		CatalogClient catalogServiceClient = null;
114
		Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();
115
		try {
116
			catalogServiceClient = new CatalogClient();
117
		} catch (TTransportException e) {
118
			// TODO Auto-generated catch block
119
			e.printStackTrace();
120
		}
121
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
122
		try {
123
			List<Item> aliveItems = catalogClient.getAllAliveItems();
124
			Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>(); 
125
			for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){
126
				aliveItemsMap.put(thriftItem.getId(), thriftItem);
127
 
128
			}
9495 vikram.rag 129
			InventoryClient inventoryServiceClient = new InventoryClient();
9404 vikram.rag 130
			try {
131
				inventoryServiceClient = new InventoryClient();
132
			} catch (TTransportException e) {
133
				e.printStackTrace();
134
			}
135
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
136
			List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
9415 vikram.rag 137
			SNAPDEAL_INVENTORY_SHEET = "/home/snapdeal/snapdeal-inventory-"+time+".xls";
9404 vikram.rag 138
			availability = inventoryClient.getInventorySnapshot(0);
9456 vikram.rag 139
			List<Warehouse> allwarehouses = inventoryClient.getWarehouses(null,null,0,0,0);
140
			Map<Long,Warehouse> allWarehousesMap = new HashMap<Long,Warehouse>();
141
			for(Warehouse warehouse:allwarehouses){
142
				allWarehousesMap.put(warehouse.getId(),warehouse);
143
			}
9404 vikram.rag 144
			List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);
145
			List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
146
			List<Long> thirdpartywarehouseids = new ArrayList<Long>();
147
			List<Long> oursGoodWarehouse = new ArrayList<Long>();
148
			for(Warehouse warehouse:warehouses){
149
				thirdpartywarehouseids.add(warehouse.getId());
150
			}
151
			for (Warehouse warehouse:ours_warehouses){
152
				oursGoodWarehouse.add(warehouse.getId());
153
			}
154
			long available=0;
155
			long reserve=0;
9532 vikram.rag 156
			long total_warehouse_held=0;
157
			long heldForSource=0;
9404 vikram.rag 158
			long total_held=0;
159
			double nlc=0;
160
			double maxnlc=0;
161
			Item thriftItem;
9456 vikram.rag 162
			long sku = 0;
9501 vikram.rag 163
			for(Inventory inventoryItem:currentInventoryItemList){
9495 vikram.rag 164
				if(snapdealItemMap.containsKey(inventoryItem.getSellerSku())){
165
					sku = snapdealItemMap.get(inventoryItem.getSellerSku()).getItem_id();
9404 vikram.rag 166
				}
9495 vikram.rag 167
				else{
168
					continue;
9456 vikram.rag 169
				}
170
				if(aliveItemsMap.get(sku) != null){
171
					thriftItem = aliveItemsMap.get(sku);	
172
				}
9404 vikram.rag 173
				else{
174
					continue;
175
				}
176
				available=0;
177
				reserve=0;
9532 vikram.rag 178
				total_warehouse_held=0;
179
				heldForSource=0;
9404 vikram.rag 180
				total_held=0;
181
				nlc=0;
182
				List<Warehouse> vendor_warehouses=null;
183
				SnapdealItemForInventory item;
184
				if(availability.get(thriftItem.getId())!=null){ 
185
					ItemInventory iteminventory = availability.get(thriftItem.getId());
186
					Map<Long,Long> itemavailability = new HashMap<Long,Long>();
187
					itemavailability = iteminventory.getAvailability();
188
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
189
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());						
190
						vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);
191
						vendor_warehouses.addAll(ours_warehouses);
192
						for (Warehouse warehouse:vendor_warehouses){
9456 vikram.rag 193
							if(warehouse.getBillingWarehouseId()!=7){
194
								continue;
195
							}
9404 vikram.rag 196
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
197
							ignoredItem.setItemId(thriftItem.getId());
198
							ignoredItem.setWarehouseId(warehouse.getId());
199
							if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){
200
								try{
201
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
202
								}
203
								catch(TTransportException e){
204
									inventoryClient = inventoryServiceClient.getClient(); 
205
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
206
								}
207
								maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
9517 vikram.rag 208
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
9404 vikram.rag 209
								if(nlc !=0 && (maxnlc >= nlc)){
9532 vikram.rag 210
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
211
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);
212
									available = available + itemavailability.get(warehouse.getId());
213
									total_held = total_held + total_warehouse_held; 
9517 vikram.rag 214
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
9404 vikram.rag 215
								}
9413 vikram.rag 216
								else if(maxnlc==0){
9532 vikram.rag 217
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
218
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);
219
									available = available + itemavailability.get(warehouse.getId());
220
									total_held = total_held + total_warehouse_held;
9517 vikram.rag 221
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
9404 vikram.rag 222
								}
223
							}
224
						}
225
					}
226
					else{
227
						for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
9456 vikram.rag 228
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
229
								continue;
230
							}
9404 vikram.rag 231
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
232
							ignoredItem.setItemId(thriftItem.getId());
233
							ignoredItem.setWarehouseId(entry.getKey());
234
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
9509 vikram.rag 235
 
9404 vikram.rag 236
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
237
								try{
238
									maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
239
								}
240
								catch(TTransportException e){
241
									catalogClient = catalogServiceClient.getClient();  
242
									maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
243
								}
9517 vikram.rag 244
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
9404 vikram.rag 245
								if(nlc !=0 && (maxnlc >= nlc)){
9532 vikram.rag 246
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
247
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
248
									available =  available + entry.getValue();
249
									total_held = total_held + total_warehouse_held;
9517 vikram.rag 250
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
9404 vikram.rag 251
								}
9413 vikram.rag 252
								else if(maxnlc==0){
9532 vikram.rag 253
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
254
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
255
									available = available + itemavailability.get(entry.getKey());
256
									total_held = total_held + total_warehouse_held;
9517 vikram.rag 257
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
9413 vikram.rag 258
								}
259
 
9404 vikram.rag 260
							}
261
						}
262
					}
263
					Map<Long,Long> itemreserve = new HashMap<Long,Long>();
264
					itemreserve = iteminventory.getReserved();
265
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
266
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
267
						for (Warehouse warehouse:vendor_warehouses){
9456 vikram.rag 268
							if(warehouse.getBillingWarehouseId()!=7){
269
								continue;
270
							}
9404 vikram.rag 271
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
272
							ignoredItem.setItemId(thriftItem.getId());
273
							ignoredItem.setWarehouseId(warehouse.getId());
274
							if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
275
								nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
276
								maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
9517 vikram.rag 277
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
9404 vikram.rag 278
								if(nlc !=0 && (maxnlc >= nlc)){
279
									reserve = reserve + itemreserve.get(warehouse.getId());
9517 vikram.rag 280
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
9404 vikram.rag 281
								}
9413 vikram.rag 282
								else if(maxnlc==0){
283
									reserve = reserve + itemreserve.get(warehouse.getId());
9517 vikram.rag 284
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
9413 vikram.rag 285
								}
286
 
9404 vikram.rag 287
							}
288
						}
289
					}else{
290
						for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
9456 vikram.rag 291
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
292
								continue;
293
							}
9404 vikram.rag 294
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
295
							ignoredItem.setItemId(thriftItem.getId());
296
							ignoredItem.setWarehouseId(entry.getKey());
297
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
298
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
299
								maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
9517 vikram.rag 300
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
9404 vikram.rag 301
								if(nlc !=0 && (maxnlc >= nlc)){
302
									reserve =  reserve + entry.getValue();
9517 vikram.rag 303
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
9404 vikram.rag 304
								}
9413 vikram.rag 305
								else if(maxnlc==0){
306
									reserve =  reserve + entry.getValue();
9517 vikram.rag 307
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
9413 vikram.rag 308
								}
309
 
9404 vikram.rag 310
							}
9413 vikram.rag 311
 
9404 vikram.rag 312
							else{
313
								//System.out.println("skipping inventory for warehouse id " + entry.getKey());
314
							}
315
						}
316
					}
9532 vikram.rag 317
					item= new SnapdealItemForInventory(thriftItem.getId(),available,reserve,heldForSource,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),total_held,thriftItem.isRisky(),thriftItem.getItemStatus());
9539 vikram.rag 318
					//System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
9404 vikram.rag 319
				}
320
				else{
9532 vikram.rag 321
					item = new SnapdealItemForInventory(thriftItem.getId(),0,0,0,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),0,thriftItem.isRisky(),thriftItem.getItemStatus());
9539 vikram.rag 322
					//System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
9404 vikram.rag 323
				}
324
 
325
				//System.out.println(" Item details are " + thriftItem.getId() +" " + available + " " + reserve + " " + thriftItem.getHoldInventory() + " "+ thriftItem.getDefaultInventory() + " " + thriftItem.isRisky());
326
				//System.out.println("+++++++++++++++++++++++");
327
				allItemsInventoryMap.put(thriftItem.getId(),item);
328
 
329
			}
330
 
331
		} catch (TException e) {
332
			// TODO Auto-generated catch block
333
			e.printStackTrace();
334
		}
335
 
336
	}
9456 vikram.rag 337
	private static void fetchinventoryhistoryfromsnapdeal() throws UnsupportedEncodingException, TException{
9404 vikram.rag 338
		HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");
339
		HttpGet get; 
340
		BufferedReader rd= null;
341
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
342
		nameValuePairs.add(new BasicNameValuePair("j_username",
343
		"khushal.bhatia@saholic.com"));
344
		nameValuePairs.add(new BasicNameValuePair("j_password",
345
		"sonline"));
346
		post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
347
		HttpResponse response = null;
348
		try {
349
			response = client.execute(post);
350
		} catch (ClientProtocolException e) {
351
			// TODO Auto-generated catch block
352
			e.printStackTrace();
353
		} catch (IOException e) {
354
			// TODO Auto-generated catch block
355
			e.printStackTrace();
356
		}
357
		try {
358
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
359
		} catch (IllegalStateException e1) {
360
			// TODO Auto-generated catch block
361
			e1.printStackTrace();
362
		} catch (IOException e1) {
363
			// TODO Auto-generated catch block
364
			e1.printStackTrace();
365
		}
366
		String line = "";
367
		try {
368
			while ((line = rd.readLine()) != null) {
9517 vikram.rag 369
				//System.out.println(line);
9404 vikram.rag 370
			}
371
		} catch (IOException e) {
372
			// TODO Auto-generated catch block
373
			e.printStackTrace();
374
		}
375
		int i = 1;
376
		Gson gson = new Gson();
9456 vikram.rag 377
		inventoryhistoryItemMap = new HashMap<String,InventoryHistory>();
378
		boolean exitfetchinghistory = true;
9519 vikram.rag 379
		System.out.println("Fetching history inventory");
9456 vikram.rag 380
		while(exitfetchinghistory){
9517 vikram.rag 381
			//System.out.println("Fetching inventory history page " +i);
9456 vikram.rag 382
			get = new HttpGet("http://seller.snapdeal.com/inventory/search?gridType=history&_search=false&nd="+time+"&rows=30&page="+i+"&sidx=&sord=dsc");
383
			try {
384
				response = client.execute(get);
385
			} catch (ClientProtocolException e) {
386
				// TODO Auto-generated catch block
387
				e.printStackTrace();
388
			} catch (IOException e) {
389
				// TODO Auto-generated catch block
390
				e.printStackTrace();
391
			}
392
			try {
393
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
394
			} catch (IllegalStateException e) {
395
				// TODO Auto-generated catch block
396
				e.printStackTrace();
397
			} catch (IOException e) {
398
				// TODO Auto-generated catch block
399
				e.printStackTrace();
400
			}
401
			InventoryHistoryItems inventoryhistoryitems = (InventoryHistoryItems) gson.fromJson(rd, InventoryHistoryItems.class);
402
			if(inventoryhistoryitems.getRows().size()!=0){
403
				//System.out.println("Parsing page " + i);
404
				for(InventoryHistory inventoryhistory : inventoryhistoryitems.getRows()){
405
					if(inventoryhistory.getUpdateTime() > lastUpdatedInventoryTime){
406
						if(inventoryhistoryItemMap.containsKey(inventoryhistory.getSellerSku())){
407
							if(inventoryhistoryItemMap.get(inventoryhistory.getSellerSku()).getUpdateTime() < inventoryhistory.getUpdateTime()){  
408
								inventoryhistoryItemMap.put(inventoryhistory.getSellerSku(),inventoryhistory);
409
							}
410
						}
411
						else{
412
							inventoryhistoryItemMap.put(inventoryhistory.getSellerSku(),inventoryhistory);
413
						}
414
					}
415
					else{
416
						exitfetchinghistory = false;
417
					}
418
				}
419
			}
420
			else{
421
				exitfetchinghistory = false;
422
			}
423
			i++;
424
		}
9495 vikram.rag 425
		InventoryClient inventoryServiceClient = new InventoryClient();
426
		in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
427
		List<SnapdealInventoryItem> snapdealInventoryItemHistoryList = inventoryClient.getSnapdealInventorySnapshot();
428
		if(snapdealInventoryItemHistoryList.size()>0){
429
			for(SnapdealInventoryItem snapdealInventoryItem:snapdealInventoryItemHistoryList){
430
				if(itemSnapdealMap.containsKey(snapdealInventoryItem.getItem_id())){
431
					PendingOrderInventoryHistory pendingOrdersInventoryHistory = new PendingOrderInventoryHistory();
432
					pendingOrdersInventoryHistory.setPendingOrders(snapdealInventoryItem.getPendingOrders());
433
					pendingOrdersInventoryHistory.setInventoryHistory(snapdealInventoryItem.getAvailability());
434
					pendingOrdersInventoryHistory.setLastUpdatedTimestamp(snapdealInventoryItem.getLastUpdatedOnSnapdeal());
435
					PendingOrdersInventoryHistoryMap.put(itemSnapdealMap.get(snapdealInventoryItem.getItem_id()).getSkuAtSnapdeal(), pendingOrdersInventoryHistory);
436
				}
437
			}
438
		}
439
		PendingOrderInventoryHistory  pendingOrdersInventoryHistory;
440
		for(Entry<String, InventoryHistory> inventoryHistoryItem :inventoryhistoryItemMap.entrySet()){
441
			if(PendingOrdersInventoryHistoryMap.containsKey(inventoryHistoryItem.getValue().getSellerSku())){
442
				pendingOrdersInventoryHistory = PendingOrdersInventoryHistoryMap.get(inventoryHistoryItem.getValue().getSellerSku());
443
				pendingOrdersInventoryHistory.setInventoryHistory(Long.parseLong(inventoryHistoryItem.getValue().getNewValue()));
444
				pendingOrdersInventoryHistory.setLastUpdatedTimestamp(inventoryHistoryItem.getValue().getUpdateTime());
445
				PendingOrdersInventoryHistoryMap.put(inventoryHistoryItem.getValue().getSellerSku(),pendingOrdersInventoryHistory);
446
			}
447
			else{
448
				pendingOrdersInventoryHistory = new PendingOrderInventoryHistory();
449
				pendingOrdersInventoryHistory.setInventoryHistory(Long.parseLong(inventoryHistoryItem.getValue().getNewValue()));
450
				pendingOrdersInventoryHistory.setLastUpdatedTimestamp(inventoryHistoryItem.getValue().getUpdateTime());
451
				pendingOrdersInventoryHistory.setPendingOrders(0);
452
				PendingOrdersInventoryHistoryMap.put(inventoryHistoryItem.getValue().getSellerSku(),pendingOrdersInventoryHistory);
453
			}
454
		}
9456 vikram.rag 455
	}
456
 
9495 vikram.rag 457
	private static void fetchcurrentinventoryfromsnapdeal() throws UnsupportedEncodingException, TException{
9456 vikram.rag 458
		/*client = new DefaultHttpClient();
459
		HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");
460
		BufferedReader rd= null;
461
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
462
		nameValuePairs.add(new BasicNameValuePair("j_username",
463
		"khushal.bhatia@saholic.com"));
464
		nameValuePairs.add(new BasicNameValuePair("j_password",
465
		"sonline"));
466
		post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
467
		HttpResponse response = null;
9404 vikram.rag 468
		try {
9456 vikram.rag 469
			response = client.execute(post);
470
		} catch (ClientProtocolException e) {
9404 vikram.rag 471
			// TODO Auto-generated catch block
472
			e.printStackTrace();
9456 vikram.rag 473
		} catch (IOException e) {
474
			// TODO Auto-generated catch block
475
			e.printStackTrace();
9404 vikram.rag 476
		}
9456 vikram.rag 477
		try {
478
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
479
		} catch (IllegalStateException e1) {
480
			// TODO Auto-generated catch block
481
			e1.printStackTrace();
482
		} catch (IOException e1) {
483
			// TODO Auto-generated catch block
484
			e1.printStackTrace();
485
		}
486
		String line = "";
487
		try {
488
			while ((line = rd.readLine()) != null) {
489
				System.out.println(line);
490
			}
491
		} catch (IOException e) {
492
			// TODO Auto-generated catch block
493
			e.printStackTrace();
494
		}*/
495
		int i = 1;
496
		int items=0;
497
		Gson gson = new Gson();
498
		in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;
9501 vikram.rag 499
		currentInventoryItemList = new ArrayList<Inventory>();
9456 vikram.rag 500
		HttpGet get;
501
		HttpResponse response = null;
502
		BufferedReader rd= null;
9519 vikram.rag 503
		System.out.println("Fetching current inventory ");
9404 vikram.rag 504
		while(true){
9517 vikram.rag 505
			//System.out.println("Fetching current inventory page " +i);
9404 vikram.rag 506
			get = new HttpGet("http://seller.snapdeal.com/inventory/search?gridType=normal&_search=false&nd="+time+"&rows="+30+"&page="+i+"&sidx=&sord=asc");
507
			try {
508
				response = client.execute(get);
509
			} catch (ClientProtocolException e) {
510
				// TODO Auto-generated catch block
511
				e.printStackTrace();
512
			} catch (IOException e) {
513
				// TODO Auto-generated catch block
514
				e.printStackTrace();
515
			}
516
			try {
517
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
518
			} catch (IllegalStateException e) {
519
				// TODO Auto-generated catch block
520
				e.printStackTrace();
521
			} catch (IOException e) {
522
				// TODO Auto-generated catch block
523
				e.printStackTrace();
524
			}
525
			InventoryItems inventoryitems = (InventoryItems) gson.fromJson(rd, InventoryItems.class);
526
			if(inventoryitems.getRows().size()!=0){
527
				for(Inventory inventory : inventoryitems.getRows()){
9517 vikram.rag 528
					//System.out.println(inventory.getSellerSku());
9508 vikram.rag 529
					currentInventoryItemList.add(inventory);
9456 vikram.rag 530
					items++;
531
				}
532
			}
533
			else{
9517 vikram.rag 534
				//System.out.println("Fetched  " + items);
9456 vikram.rag 535
				break;
536
			}
537
			i++;
538
		}
539
		in.shop2020.model.v1.catalog.CatalogService.Client catalogServiceClient = null;
9495 vikram.rag 540
		SnapdealItemDetails snapdealitem = null;
9456 vikram.rag 541
		long sku = 0;
542
		long created_orders;
543
		long pending_orders;
544
		try {
9467 vikram.rag 545
			transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
9456 vikram.rag 546
		} catch (TTransportException e1) {
547
			// TODO Auto-generated catch block
548
			e1.printStackTrace();
549
		}
550
		try {
551
			catalogServiceClient = new CatalogClient().getClient();
552
		} catch (TTransportException e1) {
553
			// TODO Auto-generated catch block
554
			e1.printStackTrace();
555
		}
556
		List<String> notMappedItems = new ArrayList<String>();
9501 vikram.rag 557
		for(Inventory inventory:currentInventoryItemList){
9456 vikram.rag 558
			created_orders = 0;
559
			pending_orders = 0;
9495 vikram.rag 560
			try {
561
				snapdealitem = snapdealItemMap.get(inventory.getSellerSku());
562
				if(snapdealitem==null){
9501 vikram.rag 563
					notMappedItems.add("inventory.getSellerSku() "+inventory.getProductName());
9495 vikram.rag 564
					continue;
565
				}
9544 vikram.rag 566
				//sku = snapdealitem.getItem_id();
9495 vikram.rag 567
				if(sku!=0){
9459 vikram.rag 568
					try{
9517 vikram.rag 569
						System.out.println("Fetching created orders");
570
						System.out.println("Last Updated on Time is  " + lastUpdatedInventoryTime);
9495 vikram.rag 571
						if(lastUpdatedInventoryTime > 0){
572
							created_orders = transactionClient.getOrdersCreatedAfterTimestampForSource(lastUpdatedInventoryTime, 7, sku);
9543 vikram.rag 573
							System.out.println("Created orders for " + sku +" " + created_orders);
9404 vikram.rag 574
						}
575
					}
9495 vikram.rag 576
					catch(TTransportException e){
9501 vikram.rag 577
						if(lastUpdatedInventoryTime > 0){
578
							transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
579
							created_orders = transactionClient.getOrdersCreatedAfterTimestampForSource(lastUpdatedInventoryTime, 7, sku);
580
						}
9459 vikram.rag 581
					}
582
				}
9495 vikram.rag 583
				else{
584
					continue;
585
				}
586
			} catch (TException e) {
587
				// TODO Auto-generated catch block
588
				e.printStackTrace();
9404 vikram.rag 589
			}
9495 vikram.rag 590
			pending_orders = PendingOrdersInventoryHistoryMap.get(inventory.getSellerSku()).getPendingOrders()+(inventory.getAvailableInventory() - PendingOrdersInventoryHistoryMap.get(inventory.getSellerSku()).getInventoryHistory() - created_orders);
9456 vikram.rag 591
			itemIdpendingOrdersMap.put(sku, pending_orders);
9521 vikram.rag 592
			PendingOrderInventoryHistory pendingOrderInventoryHistory = PendingOrdersInventoryHistoryMap.get(inventory.getSellerSku());
593
			pendingOrderInventoryHistory.setPendingOrders(pending_orders);
594
			PendingOrdersInventoryHistoryMap.put(inventory.getSellerSku(),pendingOrderInventoryHistory);
9528 vikram.rag 595
 
9404 vikram.rag 596
		}
9495 vikram.rag 597
		List<SnapdealInventoryItem> snapdealInventoryItemList = new ArrayList<SnapdealInventoryItem>();
598
		SnapdealInventoryItem snapdealInventoryItem;
599
		for(Entry<String, PendingOrderInventoryHistory> pendingOrderInventoryHistory:PendingOrdersInventoryHistoryMap.entrySet()){
600
			snapdealInventoryItem = new SnapdealInventoryItem();
601
			if(snapdealItemMap.containsKey(pendingOrderInventoryHistory.getKey())){
602
				snapdealInventoryItem.setItem_id(snapdealItemMap.get(pendingOrderInventoryHistory.getKey()).getItem_id());
603
				snapdealInventoryItem.setPendingOrders(pendingOrderInventoryHistory.getValue().getPendingOrders());
604
				snapdealInventoryItem.setAvailability(pendingOrderInventoryHistory.getValue().getInventoryHistory());
605
				snapdealInventoryItem.setLastUpdatedOnSnapdeal(pendingOrderInventoryHistory.getValue().getLastUpdatedTimestamp());
606
				snapdealInventoryItemList.add(snapdealInventoryItem);
607
			}
608
		}
609
		InventoryClient inventoryServiceClient = new InventoryClient();
610
		in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
611
		try {
612
			inventoryClient.addOrUpdateAllSnapdealInventory(snapdealInventoryItemList);
613
		} catch (TException e) {
614
			// TODO Auto-generated catch block
615
			e.printStackTrace();
616
			inventoryClient = inventoryServiceClient.getClient();
617
			inventoryClient.addOrUpdateAllSnapdealInventory(snapdealInventoryItemList);
618
		}
619
 
9404 vikram.rag 620
	}
621
 
622
	@SuppressWarnings("deprecation")
623
	public static void main(String[] args) throws NumberFormatException, TException, ClientProtocolException, IOException {
9456 vikram.rag 624
		fetchinventoryhistoryfromsnapdeal();
9495 vikram.rag 625
		fetchcurrentinventoryfromsnapdeal();
9404 vikram.rag 626
		calculateinventory();
627
		in.shop2020.model.v1.catalog.CatalogService.Client catalogServiceClient = null;
628
		try {
629
			catalogServiceClient = new CatalogClient().getClient();
630
		} catch (TTransportException e) {
631
			// TODO Auto-generated catch block
632
			e.printStackTrace();
633
		}
634
		Client inventoryClient = new InventoryClient().getClient();
9420 vikram.rag 635
		FileInputStream fis = new FileInputStream("/root/code/trunk/SnapDealFeeds/SellerInventory.xls");
9413 vikram.rag 636
		Workbook hwb = new HSSFWorkbook(fis);
637
		Sheet sheet = hwb.getSheetAt(0);
638
		Row row;
9404 vikram.rag 639
		int iterator=1;
9532 vikram.rag 640
		long available,reserve,defaultinventory,holdinventory,heldorders=0,sent_inventory,totalheld,heldforsource,allocable;
9404 vikram.rag 641
		SnapdealItemForInventory  inventoryItem;
9456 vikram.rag 642
		StringBuffer outOfStockItems =new StringBuffer();
643
		StringBuffer backInStockItems =new StringBuffer();
644
		long sku = 0;
9502 vikram.rag 645
		SnapdealItemDetails snapdealitem;
9501 vikram.rag 646
		for(Inventory inventory:currentInventoryItemList){
9456 vikram.rag 647
			//System.out.println(inventory.getSupc()+" "+inventory.getSellerSku()+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+inventory.isLive()+" "+itemIdpendingOrdersMap.get(Long.parseLong(inventory.getSellerSku())));
9508 vikram.rag 648
			if(snapdealItemMap.containsKey(inventory.getSellerSku())){
649
				snapdealitem = snapdealItemMap.get(inventory.getSellerSku()); 
650
				sku =  snapdealitem.getItem_id();
651
			}
652
			else{
653
				continue;
654
			}
9404 vikram.rag 655
			if(snapdealitem.getItem_id()!=0 && snapdealitem.isIsListedOnSnapdeal() && !snapdealitem.isSuppressInventoryFeed()){
9495 vikram.rag 656
				inventoryItem = allItemsInventoryMap.get(sku);
9404 vikram.rag 657
				if(inventoryItem==null){
658
					continue;
659
				}
9532 vikram.rag 660
				available = inventoryItem.getAvailability(); 
9404 vikram.rag 661
				reserve = inventoryItem.getReserve();
662
				defaultinventory = inventoryItem.getDefaultInventory();
663
				holdinventory = inventoryItem.getHoldInventory();
9532 vikram.rag 664
				totalheld = inventoryItem.getTotalHeldInventory();
665
				heldforsource = inventoryItem.getHeldForSource();
9535 vikram.rag 666
 
9495 vikram.rag 667
				if(itemIdpendingOrdersMap.containsKey(sku)){
668
					heldorders = itemIdpendingOrdersMap.get(sku);
9458 vikram.rag 669
					if(heldorders < 0){
670
						heldorders = 0;
671
					}
9456 vikram.rag 672
				}
9539 vikram.rag 673
				System.out.println("itemId: " + inventoryItem.getId() + "\trisky: " + inventoryItem.getRisky()+ 
674
						"\tavailable: " + available + "\treserve: " + reserve + "\theldForSource:" + heldforsource +
9541 vikram.rag 675
						"\twebsite_hold: " + holdinventory + "\ttotal_held: " +totalheld +"\tdefault_inv: "
9539 vikram.rag 676
						+ defaultinventory + "\theldorders " + heldorders);
9404 vikram.rag 677
				row =   sheet.getRow((short) iterator);
9535 vikram.rag 678
 
9404 vikram.rag 679
				if(inventoryItem.getRisky()){
9535 vikram.rag 680
					allocable = available - reserve - totalheld - holdinventory;
681
					if(allocable < 0){
682
						allocable = 0;
683
					}
9533 vikram.rag 684
					sent_inventory = Math.round(allocable*2/3) + heldforsource - heldorders ;
9539 vikram.rag 685
					//System.out.println("allocable" + allocable + "\t2/3allocable" + Math.round(allocable*2/3) +  "\theld for source" + heldforsource + "\ttotal held" + totalheld +"\theldorders" +  heldorders + "\tFinal Value is : " + (Math.round(allocable*2/3) +  heldforsource - heldorders));
9533 vikram.rag 686
					if(sent_inventory < 0){
9415 vikram.rag 687
						sent_inventory = 0;
9404 vikram.rag 688
					}
689
				}
690
				else{
9535 vikram.rag 691
					allocable = available - reserve - totalheld;
692
					if(allocable < 0){
693
						allocable = 0;
694
					}
695
					if((allocable + heldforsource ) > defaultinventory){
696
						sent_inventory = Math.round(allocable*2/3) +  heldforsource - heldorders;
9539 vikram.rag 697
						//System.out.println("actual" + allocable + "\t2/3actual" + Math.round(allocable*2/3) +  "\theld for source" + heldforsource + "\theldorders" +  heldorders + "\tFinal Value is : " + (Math.round(allocable*2/3) +  heldforsource - heldorders));
9533 vikram.rag 698
						if(sent_inventory < 0){
699
							sent_inventory = 0;							
9404 vikram.rag 700
						}
701
					}
702
					else{
703
						if(defaultinventory > heldorders){
9415 vikram.rag 704
							sent_inventory = defaultinventory - heldorders;
9404 vikram.rag 705
						}
706
						else{
9415 vikram.rag 707
							sent_inventory = 0;
9404 vikram.rag 708
						}
709
					}
710
				}
9456 vikram.rag 711
				if(inventory.getAvailableInventory()!= sent_inventory){
712
					row.getCell((short) 0).setCellValue(inventory.getSupc());
713
					row.getCell((short) 1).setCellValue(inventory.getSellerSku());
714
					row.getCell((short) 2).setCellValue(inventory.getProductName());
715
					row.getCell((short) 3).setCellValue(inventory.getAvailableInventory());
716
					row.getCell((short) 4).setCellValue(sent_inventory);
717
					if(inventory.getAvailableInventory()!=0 && sent_inventory==0){
9459 vikram.rag 718
						outOfStockItems.append(sku+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+sent_inventory+"\n");
9456 vikram.rag 719
					}
720
					if(inventory.getAvailableInventory()==0 && sent_inventory!=0){
9459 vikram.rag 721
						backInStockItems.append(sku+ " " +inventory.getProductName()+" "+inventory.getAvailableInventory()+" "+sent_inventory+"\n");
9456 vikram.rag 722
					}
723
					if(inventory.isLive()){
724
						row.getCell((short) 5).setCellValue("Yes");
725
					}
726
					else{
727
						row.getCell((short) 5).setCellValue("No");
728
					}
729
					iterator++;
9404 vikram.rag 730
				}
731
			}
732
			else{
733
				continue;
734
			}
735
		}
9528 vikram.rag 736
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
737
		String emailFromAddress = "build@shop2020.in";
738
		String password = "cafe@nes";
739
		GmailUtils mailer = new GmailUtils();
9545 vikram.rag 740
		//String sendTo[] = new String[]{"vikram.raghav@shop2020.in"};
741
		String sendTo[] = new String[]{ "sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
9528 vikram.rag 742
				"khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
743
				"yukti.jain@shop2020.in","manisha.sharma@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in","amar.kumar@shop2020.in"};
9545 vikram.rag 744
		if(iterator > 1){
9516 vikram.rag 745
			FileOutputStream fileOut = null;
746
			fis.close();
747
			try {
9539 vikram.rag 748
				//System.out.println("Before writing file ");
9516 vikram.rag 749
				fileOut = new FileOutputStream(SNAPDEAL_INVENTORY_SHEET);
750
			} catch (FileNotFoundException e) {
751
				// TODO Auto-generated catch block
752
				e.printStackTrace();
753
			}
754
			try {
9459 vikram.rag 755
 
9516 vikram.rag 756
				hwb.write(fileOut);
757
			} catch (IOException e) {
758
				// TODO Auto-generated catch block
759
				e.printStackTrace();
9404 vikram.rag 760
			}
9516 vikram.rag 761
			HttpClient client = new DefaultHttpClient();
762
			HttpPost post = new HttpPost("http://seller.snapdeal.com/login_security_check?spring-security-redirect=http://seller.snapdeal.com/inventory&");
763
			BufferedReader rd= null;
764
			List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
765
			nameValuePairs.add(new BasicNameValuePair("j_username",
766
			"khushal.bhatia@saholic.com"));
767
			nameValuePairs.add(new BasicNameValuePair("j_password",
768
			"sonline"));
769
			post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
770
			HttpResponse response = null;
771
			String line;
772
			try {
773
				response = client.execute(post);
774
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
775
				while ((line = rd.readLine()) != null) {
776
					System.out.println(line);
777
				}
9404 vikram.rag 778
 
9516 vikram.rag 779
			} catch (ClientProtocolException e) {
780
				// TODO Auto-generated catch block
781
				e.printStackTrace();
782
			} catch (IOException e) {
783
				// TODO Auto-generated catch block
784
				e.printStackTrace();
9404 vikram.rag 785
			}
9516 vikram.rag 786
			post = new HttpPost("http://seller.snapdeal.com/inventory/upload");
9518 vikram.rag 787
			File file = new File(SNAPDEAL_INVENTORY_SHEET);
9516 vikram.rag 788
			MultipartEntity mpEntity = new MultipartEntity();
789
			ContentBody cbFile = new FileBody(file,"application/vnd.ms-excel");
790
			mpEntity.addPart("file", cbFile);
791
			post.setEntity(mpEntity);
792
			response = client.execute(post);
9495 vikram.rag 793
			try {
9516 vikram.rag 794
				rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
795
			} catch (IllegalStateException e1) {
796
				// TODO Auto-generated catch block
797
				e1.printStackTrace();
798
			} catch (IOException e1) {
799
				// TODO Auto-generated catch block
800
				e1.printStackTrace();
801
			}
802
			line = "";
803
			String feedresponse = null;
804
			try {
805
				while ((line = rd.readLine()) != null) {
806
					System.out.println(line);
807
					feedresponse = line;
808
				}
809
			} catch (IOException e) {
810
				// TODO Auto-generated catch block
811
				e.printStackTrace();
812
			}
813
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = null;
814
			long lastSentInventoryTime = System.currentTimeMillis();
815
			try {
9497 vikram.rag 816
				transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
9495 vikram.rag 817
				transactionClient.updateSourceDetailTimestamp(7, lastSentInventoryTime);
9516 vikram.rag 818
			} catch (Exception e) {
819
				try {
820
					transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
821
					transactionClient.updateSourceDetailTimestamp(7, lastSentInventoryTime);
822
				} catch (Exception ex) {
823
					ex.printStackTrace();
824
				}
9495 vikram.rag 825
			}
9516 vikram.rag 826
			String emailSubjectTxt = "Products back in stock on Snapdeal "+sdf.format(lastSentInventoryTime);
827
			String text = backInStockItems.toString();
828
			if(text.length() > 0){
829
				try {
830
					mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
831
				} catch (MessagingException e) {
832
					e.printStackTrace();
833
				}
9459 vikram.rag 834
			}
9516 vikram.rag 835
			emailSubjectTxt = "Products out of stock on Snapdeal "+sdf.format(lastSentInventoryTime);
836
			text = outOfStockItems.toString();
837
			if(text.length() > 0){
838
				try {
839
					mailer.sendSSLMessage(sendTo, emailSubjectTxt, text, emailFromAddress, password, new ArrayList<File>());
840
				} catch (MessagingException e) {
841
					e.printStackTrace();
842
				}
843
			}
9528 vikram.rag 844
			/*			List<File> files = new ArrayList<File>();
9516 vikram.rag 845
			files.add(new File(SNAPDEAL_INVENTORY_SHEET));
9459 vikram.rag 846
			try {
9516 vikram.rag 847
				mailer.sendSSLMessage(sendTo,"Inventory File",feedresponse, emailFromAddress, password, files);
9459 vikram.rag 848
			} catch (MessagingException e) {
849
				e.printStackTrace();
850
			}
9530 vikram.rag 851
			 */
852
			try {
9536 vikram.rag 853
				mailer.sendSSLMessage(sendTo,"Snapdeal Inventory Updates sent for " +(iterator-1)+" items "+ sdf.format(System.currentTimeMillis()),feedresponse, emailFromAddress, password, new ArrayList<File>());
9530 vikram.rag 854
			} catch (MessagingException e) {
855
				e.printStackTrace();
856
			}
857
 
858
		}
9528 vikram.rag 859
		else{
860
			try {
9531 vikram.rag 861
				mailer.sendSSLMessage(sendTo,"No changes in Snapdeal inventory to update)"+ sdf.format(System.currentTimeMillis()),"No change in Snapdeal Inventory to be updated ", emailFromAddress, password, new ArrayList<File>());
9528 vikram.rag 862
			} catch (MessagingException e) {
863
				e.printStackTrace();
864
			}
865
		}
9459 vikram.rag 866
 
9495 vikram.rag 867
 
9528 vikram.rag 868
 
9404 vikram.rag 869
	}
870
 
871
}