Subversion Repositories SmartDukaan

Rev

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

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