Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
9947 vikram.rag 1
package in.shop2020;
2
 
3
import in.shop2020.logistics.DeliveryType;
4
import in.shop2020.logistics.LogisticsInfo;
5
import in.shop2020.logistics.LogisticsServiceException;
6
import in.shop2020.model.v1.catalog.CatalogService.Client;
7
import in.shop2020.model.v1.catalog.FlipkartItem;
8
import in.shop2020.model.v1.catalog.Item;
9
import in.shop2020.model.v1.catalog.status;
10
import in.shop2020.model.v1.inventory.InventoryType;
11
import in.shop2020.model.v1.inventory.ItemInventory;
12
import in.shop2020.model.v1.inventory.Warehouse;
13
import in.shop2020.model.v1.inventory.WarehouseLocation;
14
import in.shop2020.model.v1.inventory.WarehouseType;
15
import in.shop2020.model.v1.order.OrderSource;
16
import in.shop2020.serving.model.Order;
17
import in.shop2020.serving.model.OrderItems;
18
import in.shop2020.thrift.clients.CatalogClient;
19
import in.shop2020.thrift.clients.InventoryClient;
20
import in.shop2020.thrift.clients.LogisticsClient;
21
import in.shop2020.thrift.clients.TransactionClient;
22
import inventory.FlipkartInventoryItem;
23
 
24
import java.io.BufferedReader;
25
import java.io.IOException;
26
import java.io.InputStreamReader;
9968 vikram.rag 27
import java.io.UnsupportedEncodingException;
9947 vikram.rag 28
import java.util.ArrayList;
29
import java.util.HashMap;
30
import java.util.List;
31
import java.util.Map;
32
import java.util.Map.Entry;
33
 
34
import org.apache.http.HttpResponse;
35
import org.apache.http.NameValuePair;
36
import org.apache.http.auth.AuthScope;
37
import org.apache.http.auth.UsernamePasswordCredentials;
38
import org.apache.http.client.ClientProtocolException;
39
import org.apache.http.client.HttpClient;
40
import org.apache.http.client.entity.UrlEncodedFormEntity;
41
import org.apache.http.client.methods.HttpGet;
42
import org.apache.http.client.methods.HttpPost;
43
import org.apache.http.entity.StringEntity;
44
import org.apache.http.impl.client.DefaultHttpClient;
45
import org.apache.http.message.BasicNameValuePair;
46
import org.apache.thrift.TException;
47
import org.apache.thrift.transport.TTransportException;
48
 
49
import com.google.gson.Gson;
50
 
51
 
52
 
53
public class CreateSubmitFlipkartInventoryFeed {
54
	private static Map<Long, FlipkartInventoryItem> flipkartItemsInventoryMap = new HashMap<Long, FlipkartInventoryItem>();
55
	private static List<FlipkartItem> flipkartItems;
56
	private static List<FlipkartItem> flipkartInventoryItems = new ArrayList<FlipkartItem>();
57
	private static Map<Long,Long> itemIdOrdersMap = new HashMap<Long,Long>();
58
	static
59
	{
60
		List<String> flipkartorderids = null;
61
		Client catalogServiceClient = null;
62
		try {
63
			catalogServiceClient = new CatalogClient().getClient();
64
		} catch (TTransportException e) {
65
			e.printStackTrace();
66
		}
67
		try {
68
			flipkartItems = catalogServiceClient.getAllFlipkartItems();
69
		} catch (TException e) {
70
			e.printStackTrace();
71
		}
72
		for(FlipkartItem flipkartItem:flipkartItems){
73
			if(flipkartItem.isIsListedOnFlipkart() && !flipkartItem.isSuppressInventoryFeed())
74
				flipkartInventoryItems.add(flipkartItem);
75
		}
76
		in.shop2020.model.v1.order.TransactionService.Client transactionClient;
77
		try {
78
			flipkartorderids = FetchOrders();
79
		} catch (ClientProtocolException e1) {
80
			e1.printStackTrace();
81
		} catch (IOException e1) {
82
			e1.printStackTrace();
83
		}
84
		try {
9948 vikram.rag 85
			transactionClient = new TransactionClient("support_transaction_service_server_host","transaction_service_server_port").getClient();
9947 vikram.rag 86
			itemIdOrdersMap = transactionClient.getCreatedOrdersForFlipkart(flipkartorderids);
87
		} catch (TTransportException e) {
88
			e.printStackTrace();
89
		}catch (TException e) {
90
			// TODO Auto-generated catch block
91
			e.printStackTrace();
92
		}
93
 
94
	}
95
 
9967 vikram.rag 96
	public static void main(String[] args) throws ClientProtocolException, TException{
9947 vikram.rag 97
		calculateinventory();
98
		DefaultHttpClient httpclient = new DefaultHttpClient();
9961 vikram.rag 99
		httpclient = (DefaultHttpClient) WebClientWrapper.wrapClient(httpclient);
9951 vikram.rag 100
		httpclient.getCredentialsProvider().setCredentials(
101
				new AuthScope("sandbox-api.flipkart.net", 443),
9958 vikram.rag 102
				new UsernamePasswordCredentials("og3yg5994bxbxxc1", "8a137068-417c-4e4f-ae95-9295ab938d88"));/// Test Server Access Keys
9950 vikram.rag 103
		//httpclient.getCredentialsProvider().setCredentials(
104
		//		new AuthScope("sandbox-api.flipkart.net", 443),
9958 vikram.rag 105
		//		new UsernamePasswordCredentials("m2z93iskuj81qiid","0c7ab6a5-98c0-4cdc-8be3-72c591e0add4")); //Prod Server Access Keys
9947 vikram.rag 106
		HttpPost httppost = new HttpPost("https://sandbox-api.flipkart.net/sellers/skus/listings/bulk");
107
		StringBuffer jsonRequest = new StringBuffer();
108
		jsonRequest.append("{\"listings\":[");
109
		//System.out.println("JSON request  " + jsonRequest);
110
		LogisticsClient logisticsServiceClient;
111
		in.shop2020.logistics.LogisticsService.Client logisticsClient=null;
112
		LogisticsInfo logisticinfo = null;
113
		try {
114
			logisticsServiceClient = new LogisticsClient("logistics_service_prod_server_host","logistics_service_prod_server_port");
115
			logisticsClient = logisticsServiceClient.getClient();
116
 
117
		} catch (TTransportException e) {
118
			// TODO Auto-generated catch block
119
			e.printStackTrace();
120
		}
121
		long stock=0;
122
		int i=0;
123
		long available,reserve,heldforsource,totalheld,allocable,holdinventory,defaultinventory;
124
		for(Entry<Long, FlipkartInventoryItem> entry:flipkartItemsInventoryMap.entrySet()){
125
			available = entry.getValue().getAvailability();
126
			reserve = entry.getValue().getReserve();
127
			heldforsource = entry.getValue().getHeldForSource();
128
			totalheld = entry.getValue().getTotalHeldInventory();
129
			holdinventory = entry.getValue().getHoldInventory();
130
			defaultinventory = entry.getValue().getDefaultInventory();
131
			if(!entry.getValue().getStatus().equals(status.PAUSED)){
132
				if(entry.getValue().getRisky()){
133
					if((available - reserve) < totalheld && totalheld!=0){
134
						stock = (long) Math.floor(((available - reserve)*heldforsource/totalheld));
135
					}
136
					else{
137
						allocable = available - reserve - totalheld - holdinventory;
138
						if(allocable < 0){
139
							allocable = 0;
140
						}
141
						stock = Math.round(allocable*1/3) + heldforsource;
142
					}
143
 
144
				}
145
				else{
146
					allocable = available - reserve - totalheld;
147
					if(allocable < 0){
148
						allocable = 0;
149
					}
150
					if((allocable + heldforsource ) > defaultinventory){
151
						stock = Math.round(allocable*1/3) +  heldforsource;
152
					}
153
					else{
154
						stock = defaultinventory;
155
					}
156
				}
157
				System.out.println("Item ID " + entry.getKey()+" Stock "+stock +" Orders " + itemIdOrdersMap.get(entry.getKey()));
158
				if(itemIdOrdersMap.containsKey(entry.getKey())){
159
					stock = stock - itemIdOrdersMap.get(entry.getKey());  
160
				}
161
				if(stock<0){
162
					stock =0;
163
				}
164
			}
165
			else{
166
				stock =0;
167
			}
168
			try {
169
				System.out.println("Item Id " + entry.getValue().getId());
170
				logisticinfo = logisticsClient.getLogisticsEstimation(entry.getValue().getId(),"110001",DeliveryType.COD);
171
			} catch (LogisticsServiceException e) {
172
				e.printStackTrace();
173
				continue;
174
			}
175
			jsonRequest.append("{\"skuId\":"+"\""+entry.getValue().getSkuAtflipkart()+
176
					"\","+"\"attributeValues\""+":"+
177
					"{\"procurement_sla\""+":"+"\""+logisticinfo.getShippingTime()+
178
					"\","+"\"stock_count\""+":"+"\""+stock+"\""+"}}");
179
			if(flipkartItemsInventoryMap.entrySet().size()!=1 && (i!=flipkartItemsInventoryMap.entrySet().size() -1 ) ){
180
				jsonRequest.append(",");	
181
			}
182
			i++;
183
			if(i%10==0 || i==flipkartItemsInventoryMap.entrySet().size()){
184
				jsonRequest.append("]}");
9968 vikram.rag 185
				StringEntity input = null;
186
				try {
187
					input = new StringEntity(jsonRequest.toString());
188
				} catch (UnsupportedEncodingException e) {
189
					// TODO Auto-generated catch block
190
					e.printStackTrace();
191
				}
9947 vikram.rag 192
				input.setContentType("application/json");
193
				System.out.println("Json input " + jsonRequest.toString());
194
				httppost.setEntity(input);
9968 vikram.rag 195
				HttpResponse response = null;
196
				try {
197
					response = httpclient.execute(httppost);
198
				} catch (IOException e) {
199
					// TODO Auto-generated catch block
200
					e.printStackTrace();
201
				}
202
				BufferedReader rd;
203
				try {
204
					rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
205
				} catch (IllegalStateException e) {
206
					// TODO Auto-generated catch block
207
					e.printStackTrace();
208
				} catch (IOException e) {
209
					// TODO Auto-generated catch block
210
					e.printStackTrace();
211
				}
9947 vikram.rag 212
				String line;
213
				while ((line = rd.readLine()) != null) {
9958 vikram.rag 214
					System.out.println("Response " + line);
9947 vikram.rag 215
				}
216
			}
217
		}
218
	}
219
	private static void calculateinventory(){
220
		CatalogClient catalogServiceClient = null;
221
		Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();
222
		try {
223
			catalogServiceClient = new CatalogClient();
224
		} catch (TTransportException e) {
225
			// TODO Auto-generated catch block
226
			e.printStackTrace();
227
		}
228
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
229
		try {
230
			List<Item> aliveItems = catalogClient.getAllAliveItems();
231
			Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>(); 
232
			for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){
233
				aliveItemsMap.put(thriftItem.getId(), thriftItem);
234
 
235
			}
236
			InventoryClient inventoryServiceClient = new InventoryClient();
237
			try {
238
				inventoryServiceClient = new InventoryClient();
239
			} catch (TTransportException e) {
240
				e.printStackTrace();
241
			}
242
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
243
			List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
244
			availability = inventoryClient.getInventorySnapshot(0);
245
			List<Warehouse> allwarehouses = inventoryClient.getWarehouses(null,null,0,0,0);
246
			Map<Long,Warehouse> allWarehousesMap = new HashMap<Long,Warehouse>();
247
			for(Warehouse warehouse:allwarehouses){
248
				allWarehousesMap.put(warehouse.getId(),warehouse);
249
			}
250
			List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);
251
			List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
252
			List<Long> thirdpartywarehouseids = new ArrayList<Long>();
253
			List<Long> oursGoodWarehouse = new ArrayList<Long>();
254
			for(Warehouse warehouse:warehouses){
255
				thirdpartywarehouseids.add(warehouse.getId());
256
			}
257
			for (Warehouse warehouse:ours_warehouses){
258
				oursGoodWarehouse.add(warehouse.getId());
259
			}
260
			long available=0;
261
			long reserve=0;
262
			long total_warehouse_held=0;
263
			long heldForSource=0;
264
			long total_held=0;
265
			double nlc=0;
266
			double maxnlc=0;
267
			Item thriftItem;
268
			for(FlipkartItem flipkartItem:flipkartInventoryItems){
269
				if(aliveItemsMap.get(flipkartItem.getItem_id()) != null){
270
					thriftItem = aliveItemsMap.get(flipkartItem.getItem_id());	
271
				}
272
				else{
273
					continue;
274
				}
275
				available=0;
276
				reserve=0;
277
				total_warehouse_held=0;
278
				heldForSource=0;
279
				total_held=0;
280
				nlc=0;
281
				List<Warehouse> vendor_warehouses=null;
282
				FlipkartInventoryItem item;
283
				if(availability.get(thriftItem.getId())!=null){ 
284
					ItemInventory iteminventory = availability.get(thriftItem.getId());
285
					Map<Long,Long> itemavailability = new HashMap<Long,Long>();
286
					itemavailability = iteminventory.getAvailability();
287
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
288
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());						
289
						vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);
290
						vendor_warehouses.addAll(ours_warehouses);
291
						for (Warehouse warehouse:vendor_warehouses){
292
							if(warehouse.getBillingWarehouseId()!=7){
293
								if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){
294
 
295
								}
296
								else{
297
									continue;
298
								}
299
							}
300
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
301
							ignoredItem.setItemId(thriftItem.getId());
302
							ignoredItem.setWarehouseId(warehouse.getId());
303
							if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){
304
								try{
305
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
306
								}
307
								catch(TTransportException e){
308
									inventoryClient = inventoryServiceClient.getClient(); 
309
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
310
								}
311
								maxnlc = flipkartItem.getMaxNlc();
312
 
313
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
314
								if(nlc !=0 && (maxnlc >= nlc)){
315
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
316
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
317
									available = available + itemavailability.get(warehouse.getId());
318
									total_held = total_held + total_warehouse_held; 
319
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
320
								}
321
								else if(maxnlc==0){
322
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
323
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
324
									available = available + itemavailability.get(warehouse.getId());
325
									total_held = total_held + total_warehouse_held;
326
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
327
								}
328
							}
329
						}
330
					}
331
					else{
332
						for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
333
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
334
								if(allWarehousesMap.get(entry.getKey()).getLogisticsLocation().equals(WarehouseLocation.Delhi) && allWarehousesMap.get(entry.getKey()).getWarehouseType().equals(WarehouseType.THIRD_PARTY) && allWarehousesMap.get(entry.getKey()).getVendor().getId()!=1){
335
 
336
								}
337
								else{
338
									continue;
339
								}
340
							}
341
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
342
							ignoredItem.setItemId(thriftItem.getId());
343
							ignoredItem.setWarehouseId(entry.getKey());
344
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
345
 
346
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
347
								maxnlc = flipkartItem.getMaxNlc();
348
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
349
								if(nlc !=0 && (maxnlc >= nlc)){
350
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
351
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
352
									available =  available + entry.getValue();
353
									total_held = total_held + total_warehouse_held;
354
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
355
								}
356
								else if(maxnlc==0){
357
									total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
358
									heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
359
									available = available + itemavailability.get(entry.getKey());
360
									total_held = total_held + total_warehouse_held;
361
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
362
								}
363
 
364
							}
365
						}
366
					}
367
					Map<Long,Long> itemreserve = new HashMap<Long,Long>();
368
					itemreserve = iteminventory.getReserved();
369
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
370
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
371
						for (Warehouse warehouse:vendor_warehouses){
372
							if(warehouse.getBillingWarehouseId()!=7){
373
								if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){
374
 
375
								}
376
								else{
377
									continue;
378
								}
379
							}
380
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
381
							ignoredItem.setItemId(thriftItem.getId());
382
							ignoredItem.setWarehouseId(warehouse.getId());
383
							if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
384
								nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
385
								maxnlc = flipkartItem.getMaxNlc();
386
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
387
								if(nlc !=0 && (maxnlc >= nlc)){
388
									reserve = reserve + itemreserve.get(warehouse.getId());
389
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
390
								}
391
								else if(maxnlc==0){
392
									reserve = reserve + itemreserve.get(warehouse.getId());
393
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
394
								}
395
 
396
							}
397
						}
398
					}else{
399
						for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
400
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
401
								if(allWarehousesMap.get(entry.getKey()).getLogisticsLocation().equals(WarehouseLocation.Delhi) && allWarehousesMap.get(entry.getKey()).getWarehouseType().equals(WarehouseType.THIRD_PARTY) && allWarehousesMap.get(entry.getKey()).getVendor().getId()!=1){
402
 
403
								}
404
								else{
405
									continue;
406
								}
407
							}
408
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
409
							ignoredItem.setItemId(thriftItem.getId());
410
							ignoredItem.setWarehouseId(entry.getKey());
411
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
412
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
413
								maxnlc = flipkartItem.getMaxNlc();
414
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
415
								if(nlc !=0 && (maxnlc >= nlc)){
416
									reserve =  reserve + entry.getValue();
417
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
418
								}
419
								else if(maxnlc==0){
420
									reserve =  reserve + entry.getValue();
421
									//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
422
								}
423
 
424
							}
425
 
426
							else{
427
								//System.out.println("skipping inventory for warehouse id " + entry.getKey());
428
							}
429
						}
430
					}
431
					item= new FlipkartInventoryItem(thriftItem.getId(),available,reserve,heldForSource,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),total_held,thriftItem.isRisky(),thriftItem.getItemStatus(),flipkartItem.getSkuAtFlipkart());
432
					//System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
433
				}
434
				else{
435
					item = new FlipkartInventoryItem(thriftItem.getId(),0,0,0,thriftItem.getHoldInventory(),thriftItem.getDefaultInventory(),0,thriftItem.isRisky(),thriftItem.getItemStatus(),flipkartItem.getSkuAtFlipkart());
436
					//System.out.println("itemId:" + thriftItem.getId() + "\tavailable: " + available + "\treserve" + reserve + "\theldForSource:" + heldForSource + "\twebsite_hold:" + thriftItem.getHoldInventory() + "\tdefault_inv:" +thriftItem.getDefaultInventory());
437
				}
438
 
439
				//System.out.println(" Item details are " + thriftItem.getId() +" " + available + " " + reserve + " " + thriftItem.getHoldInventory() + " "+ thriftItem.getDefaultInventory() + " " + thriftItem.isRisky());
440
				//System.out.println("+++++++++++++++++++++++");
441
				flipkartItemsInventoryMap.put(thriftItem.getId(),item);
442
 
443
			}
444
 
445
		} catch (TException e) {
446
			// TODO Auto-generated catch block
447
			e.printStackTrace();
448
		}
449
	}
450
 
451
	static List<String> FetchOrders() throws ClientProtocolException, IOException{
452
		HttpClient client = new DefaultHttpClient();
453
		HttpPost post = new HttpPost("https://seller.flipkart.com/login");
454
		BufferedReader rd= null;
455
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
456
		nameValuePairs.add(new BasicNameValuePair("authName",
457
		"flipkart"));
458
		nameValuePairs.add(new BasicNameValuePair("username",
459
		"flipkart-support@saholic.com"));
460
		nameValuePairs.add(new BasicNameValuePair("password",
461
		"076c27ee24d7596b06608a8ed2559f87"));
462
		post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
463
		HttpResponse response = client.execute(post);
464
		rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
465
		String line = "";
466
		Gson gson;
467
		List<Order> orders = new ArrayList<Order>(); 
468
		OrderItems new_orders;
469
		OrderItems conf_orders;
470
		HttpGet get_new;
471
		HttpGet get_conf; 
472
		long time;
473
		int i=1;
474
		while ((line = rd.readLine()) != null) {
475
			System.out.println(line);
476
		}
477
		time = System.currentTimeMillis();
478
		while(true){
479
			get_new = new HttpGet("https://seller.flipkart.com/dashboard/som/new_order_items?status=on_hold%2Capproved.payment_approved&sort=confirm_by_date&page="+i+"&page_size=100&_="+time);
480
			response = client.execute(get_new);
481
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
482
			line = "";
483
			gson = new Gson();
484
			new_orders = (OrderItems) gson.fromJson(rd, OrderItems.class);
485
			if(new_orders.getOrder_items().size()>0){
486
				orders.addAll(new_orders.getOrder_items());
487
			}
488
			else{
489
				break;
490
			}
491
			i++;
492
		}
493
		i=1;
494
		time = System.currentTimeMillis();
495
		while(true){
496
			get_conf = new HttpGet("https://seller.flipkart.com/dashboard/som/confirmed_order_items?status=approved.seller_approved&sort=confirm_by_date&page="+i+"&page_size=100&_="+time);
497
			response = client.execute(get_conf);
498
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
499
			line = "";
500
			gson = new Gson();
501
			conf_orders = (OrderItems) gson.fromJson(rd, OrderItems.class);
502
			if(conf_orders.getOrder_items().size()>0){
503
				orders.addAll(conf_orders.getOrder_items());
504
			}
505
			else{
506
				break;
507
			}
508
			i++;
509
		}
510
		List<String> orderIdList = new ArrayList<String>();
511
		for(Order order:orders){
512
			System.out.println("Order  " + order.getExternalId() +" "+order.getOrderItemId() + " : "+ order.getStatus() + " "+order.getStatusDateMessage() + " "
513
					+ order.getStatusLabel() + " " + order.getPickup_by_date() + " "+ order.getTrackingId());
514
			orderIdList.add(order.getExternalId());
515
		}
516
		return orderIdList; 
517
	}
518
}