Subversion Repositories SmartDukaan

Rev

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

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