Subversion Repositories SmartDukaan

Rev

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