Subversion Repositories SmartDukaan

Rev

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