Subversion Repositories SmartDukaan

Rev

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

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