Subversion Repositories SmartDukaan

Rev

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

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