Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
11874 manish.sha 1
package in.shop2020;
2
 
3
import in.shop2020.model.v1.catalog.FlipkartItem;
4
import in.shop2020.model.v1.catalog.Item;
5
import in.shop2020.model.v1.catalog.SnapdealItemDetails;
6
import in.shop2020.model.v1.inventory.InventoryType;
7
import in.shop2020.model.v1.inventory.ItemInventory;
8
import in.shop2020.model.v1.inventory.Vendor;
9
import in.shop2020.model.v1.inventory.Warehouse;
10
import in.shop2020.model.v1.inventory.WarehouseLocation;
11
import in.shop2020.model.v1.inventory.WarehouseType;
12
import in.shop2020.thrift.clients.CatalogClient;
13
import in.shop2020.thrift.clients.InventoryClient;
14
import in.shop2020.thrift.clients.TransactionClient;
15
import in.shop2020.utils.GmailUtils;
16
//import inventory.Inventory;
17
import inventory.FlipkartInventoryItem;
18
import inventory.NlcLeftOutInventory;
19
//import inventory.SnapdealItemForInventory;
20
 
21
import java.io.BufferedReader;
22
import java.io.BufferedWriter;
23
import java.io.File;
24
import java.io.FileWriter;
25
import java.io.IOException;
26
import java.io.InputStreamReader;
27
import java.util.ArrayList;
28
import java.util.HashMap;
29
import java.util.List;
30
import java.util.Map;
31
 
32
import javax.mail.MessagingException;
33
 
34
import org.apache.commons.lang.StringUtils;
35
import org.apache.http.Header;
36
import org.apache.http.HttpResponse;
37
import org.apache.http.NameValuePair;
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.impl.client.DefaultHttpClient;
44
import org.apache.http.message.BasicNameValuePair;
45
import org.apache.http.params.HttpParams;
46
import org.apache.thrift.TException;
47
import org.apache.thrift.transport.TTransportException;
48
 
49
 
50
public class NlcLeftOutInventoryDetailScript{
51
 
52
	private static String SNAPDEAL_INVENTORY_SHEET;
53
	private static long time = System.currentTimeMillis();
54
	//private static ArrayList<Inventory> currentInventoryItemList;
55
	private static List<SnapdealItemDetails> snapdealItems;
56
	private static List<FlipkartItem> flipkartItems;
57
	private static List<FlipkartItem> flipkartInventoryItems = new ArrayList<FlipkartItem>();
58
	static Map<Long,SnapdealItemDetails> snapdealItemMap = new HashMap<Long,SnapdealItemDetails>();
59
	static Map<Long,FlipkartItem> flipkartItemMap = new HashMap<Long,FlipkartItem>();
60
	//private static Map<Long, SnapdealItemForInventory> allItemsInventoryMap = new HashMap<Long, SnapdealItemForInventory>();
61
	private static Map<Long, String> vendorDataMap = new HashMap<Long, String>();
62
	//static java.text.SimpleDateFormat sdf;
63
	static String emailFromAddress;
64
	static String password;
65
	static GmailUtils mailer;
66
	static String sendTo[];
67
	private static List<NlcLeftOutInventory> nlcLeftOutInventoryItemsSD = new ArrayList<NlcLeftOutInventory>();
68
	private static List<NlcLeftOutInventory> nlcLeftOutInventoryItemsFK = new ArrayList<NlcLeftOutInventory>();
69
 
70
	static{
71
		//sdf = new java.text.SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
72
		emailFromAddress = "build@shop2020.in";
73
		password = "cafe@nes";
74
		mailer = new GmailUtils();
75
		sendTo = new String[]{"vikram.raghav@shop2020.in", "manish.sharma@shop2020.in"};
76
		/*sendTo = new String[]{ "sandeep.sachdeva@shop2020.in", "vikram.raghav@shop2020.in", "rajneesh.arora@shop2020.in",
77
				"khushal.bhatia@shop2020.in","manoj.kumar@saholic.com","chaitnaya.vats@saholic.com",
78
				"yukti.jain@shop2020.in","manisha.sharma@shop2020.in","chandan.kumar@shop2020.in","ankush.dhingra@shop2020.in"};*/
79
		CatalogClient catalogServiceClient = null;
80
		try {
81
			catalogServiceClient = new CatalogClient();
82
		} catch (TTransportException e1) {
83
			// TODO Auto-generated catch block
84
			e1.printStackTrace();
85
		}
86
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
87
 
88
		try {
89
			snapdealItems = catalogClient.getAllSnapdealItems();
90
			flipkartItems = catalogClient.getAllFlipkartItems();
91
		} catch (TException e) {
92
			// TODO Auto-generated catch block
93
			e.printStackTrace();
94
		}
95
		for(FlipkartItem flipkartItem:flipkartItems){
96
			if(flipkartItem.isIsListedOnFlipkart() && !flipkartItem.isSuppressInventoryFeed())
97
				flipkartInventoryItems.add(flipkartItem);
98
		}
99
 
100
		for(FlipkartItem flipkartItem:flipkartItems){
101
			if(flipkartItem.isIsListedOnFlipkart() && !flipkartItem.isSuppressInventoryFeed()){
102
				flipkartItemMap.put(flipkartItem.getItem_id(), flipkartItem);
103
			}
104
		}
105
 
106
		for(SnapdealItemDetails snapdealItem:snapdealItems){
107
			snapdealItemMap.put(snapdealItem.getItem_id(),snapdealItem);
108
		}
109
 
110
		if(flipkartItemMap.size()==0){
111
			String text = "";
112
			try {
113
				mailer.sendSSLMessage(sendTo,"No items to check not sent Inventory Data ", emailFromAddress, password, text);
114
				System.exit(0);
115
			} catch (MessagingException e) {
116
				e.printStackTrace();
117
			}
118
		}
119
 
120
		if(snapdealItemMap.size()==0){
121
			String text = "";
122
			try {
123
				mailer.sendSSLMessage(sendTo,"No items to check not sent Inventory Data ", emailFromAddress, password, text);
124
				System.exit(0);
125
			} catch (MessagingException e) {
126
				e.printStackTrace();
127
			}
128
		}
129
	}
130
 
131
	private static void calculateinventory(){
132
		CatalogClient catalogServiceClient = null;
133
		Map<Long,ItemInventory> availability= new HashMap<Long,ItemInventory>();
134
		try {
135
			catalogServiceClient = new CatalogClient();
136
		} catch (TTransportException e) {
137
			e.printStackTrace();
138
		}
139
		in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = catalogServiceClient.getClient();
140
		try {
141
			List<Item> aliveItems = catalogClient.getAllAliveItems();
142
			Map<Long,Item> aliveItemsMap = new HashMap<Long,Item>(); 
143
			for(in.shop2020.model.v1.catalog.Item thriftItem:aliveItems){
144
				aliveItemsMap.put(thriftItem.getId(), thriftItem);
145
 
146
			}
147
			InventoryClient inventoryServiceClient = new InventoryClient();
148
			try {
149
				inventoryServiceClient = new InventoryClient();
150
			} catch (TTransportException e) {
151
				e.printStackTrace();
152
			}
153
			in.shop2020.model.v1.inventory.InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
154
			List<Vendor> allVendors = inventoryClient.getAllVendors();
155
			for(Vendor v: allVendors){
156
				vendorDataMap.put(v.getId(), v.getName());
157
			}
158
			List<in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems> ignoreItems = inventoryClient.getIgnoredWarehouseidsAndItemids();
159
			//SNAPDEAL_INVENTORY_SHEET = "/home/snapdeal/snapdeal-inventory-"+time+".xls";
160
			availability = inventoryClient.getInventorySnapshot(0);
161
			List<Warehouse> allwarehouses = inventoryClient.getWarehouses(null,null,0,0,0);
162
			Map<Long,Warehouse> allWarehousesMap = new HashMap<Long,Warehouse>();
163
			for(Warehouse warehouse:allwarehouses){
164
				allWarehousesMap.put(warehouse.getId(),warehouse);
165
			}
166
			List<Warehouse> warehouses = inventoryClient.getWarehouses(WarehouseType.OURS_THIRDPARTY,null,0,0,0);
167
			List<Warehouse> ours_warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
168
			List<Long> thirdpartywarehouseids = new ArrayList<Long>();
169
			List<Long> oursGoodWarehouse = new ArrayList<Long>();
170
			for(Warehouse warehouse:warehouses){
171
				thirdpartywarehouseids.add(warehouse.getId());
172
			}
173
			for (Warehouse warehouse:ours_warehouses){
174
				oursGoodWarehouse.add(warehouse.getId());
175
			}
176
			/*long available=0;
177
			long reserve=0;
178
			long total_warehouse_held=0;
179
			long heldForSource=0;
180
			long total_held=0;*/
181
			double nlc=0;
182
			double maxnlcSD=0;
183
			double maxnlcFK=0;
184
 
185
			Map<String, NlcLeftOutInventory> snapdealLeftInvDataMap = new HashMap<String, NlcLeftOutInventory>();
186
			Map<String, NlcLeftOutInventory> flipkartLeftInvDataMap = new HashMap<String, NlcLeftOutInventory>();
187
 
188
 
189
			for(Item thriftItem : aliveItems){
190
				SnapdealItemDetails snapdealItem = null;
191
				FlipkartItem flipkartItem = null;
192
				NlcLeftOutInventory nlcLOISD;
193
				NlcLeftOutInventory nlcLOIFK;
194
				maxnlcSD=0;
195
				maxnlcFK=0;
196
				if(snapdealItemMap.containsKey(thriftItem.getId())){
197
					snapdealItem = snapdealItemMap.get(thriftItem.getId());
198
					maxnlcSD = snapdealItem.getMaxNlc();
199
				}
200
				if(flipkartItemMap.containsKey(thriftItem.getId())){
201
					flipkartItem = flipkartItemMap.get(thriftItem.getId());
202
					maxnlcFK = flipkartItem.getMaxNlc();
203
				}
204
				nlc=0;
205
				List<Warehouse> vendor_warehouses=null; 
206
				if(availability.get(thriftItem.getId())!=null){ 
207
					ItemInventory iteminventory = availability.get(thriftItem.getId());
208
					Map<Long,Long> itemavailability = new HashMap<Long,Long>();
209
					itemavailability = iteminventory.getAvailability();
210
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
211
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating availability)"+thriftItem.getPreferredVendor());						
212
						vendor_warehouses = inventoryClient.getWarehouses(WarehouseType.THIRD_PARTY,InventoryType.GOOD , thriftItem.getPreferredVendor(), 0, 0);
213
						vendor_warehouses.addAll(ours_warehouses);
214
						for (Warehouse warehouse:vendor_warehouses){
215
							if(warehouse.getBillingWarehouseId()!=7){
216
								if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){
217
 
218
								}
219
								else{
220
									continue;
221
								}
222
							}
223
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
224
							ignoredItem.setItemId(thriftItem.getId());
225
							ignoredItem.setWarehouseId(warehouse.getId());
226
							if (itemavailability.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(ignoredItem)){
227
								try{
228
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
229
 
230
								}
231
								catch(TTransportException e){
232
									inventoryClient = inventoryServiceClient.getClient(); 
233
									nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
234
								}
235
 
236
								//maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
237
 
238
								if(snapdealItem!=null){
239
									if(nlc !=0 && (maxnlcSD >= nlc)){
240
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
241
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);
242
										available = available + itemavailability.get(warehouse.getId());
243
										total_held = total_held + total_warehouse_held;*/ 
244
										continue;
245
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
246
									}
247
									else if(maxnlcSD==0){
248
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
249
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 7);
250
										available = available + itemavailability.get(warehouse.getId());
251
										total_held = total_held + total_warehouse_held;*/
252
										continue;
253
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
254
									}
255
									else{
11875 manish.sha 256
										long available = itemavailability.get(warehouse.getId());
257
										if(available>0){
258
											nlcLOISD= new NlcLeftOutInventory();
259
											nlcLOISD.setItemId(snapdealItem.getItem_id());
260
											nlcLOISD.setProductName(snapdealItem.getBrand()+" " +snapdealItem.getModel_name() + " "+ snapdealItem.getModel_number() + " " +  snapdealItem.getColor());
261
											nlcLOISD.setOurNlc(maxnlcSD);
262
											nlcLOISD.setSkuAtSource(snapdealItem.getSkuAtSnapdeal());
263
											nlcLOISD.setVendorName(warehouse.getVendor().getName());
264
											nlcLOISD.setVendorAvailability(available);
265
											nlcLOISD.setVendorNlc(nlc);
266
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+warehouse.getId(), nlcLOISD);
267
										}
11874 manish.sha 268
									}
269
								}
270
 
271
								if(flipkartItem!=null){
272
									if(nlc !=0 && (maxnlcFK >= nlc)){
273
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
274
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
275
										available = available + itemavailability.get(warehouse.getId());
276
										total_held = total_held + total_warehouse_held; */
277
										continue;
278
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
279
									}
280
									else if(maxnlcFK==0){
281
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
282
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
283
										available = available + itemavailability.get(warehouse.getId());
284
										total_held = total_held + total_warehouse_held;*/
285
										continue;
286
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
287
									}
288
									else{
11875 manish.sha 289
										long available = itemavailability.get(warehouse.getId());
290
										if(available>0){
291
											nlcLOIFK = new NlcLeftOutInventory();
292
											nlcLOIFK.setItemId(flipkartItem.getItem_id());
293
											nlcLOIFK.setProductName(thriftItem.getBrand()+" " +thriftItem.getModelName() + " "+ thriftItem.getModelNumber() + " " +  thriftItem.getColor());
294
											nlcLOIFK.setOurNlc(maxnlcFK);
295
											nlcLOIFK.setSkuAtSource(flipkartItem.getSkuAtFlipkart());
296
											nlcLOIFK.setVendorName(warehouse.getVendor().getName());
297
											nlcLOIFK.setVendorAvailability(available);
298
											nlcLOIFK.setVendorNlc(nlc);
299
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+warehouse.getId(), nlcLOIFK);
300
										}
11874 manish.sha 301
									}
302
								}
303
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
304
 
305
							}
306
						}
307
					}
308
					else{
309
						for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
310
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
311
								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){
312
 
313
								}
314
								else{
315
									continue;
316
								}
317
							}
318
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
319
							ignoredItem.setItemId(thriftItem.getId());
320
							ignoredItem.setWarehouseId(entry.getKey());
321
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
322
 
323
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
324
 
325
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
326
								if(snapdealItem!=null){
327
									if(nlc !=0 && (maxnlcSD >= nlc)){
328
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
329
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
330
										available =  available + entry.getValue();
331
										total_held = total_held + total_warehouse_held;*/
332
										continue;
333
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
334
									}
335
									else if(maxnlcSD==0){
336
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
337
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
338
										available = available + itemavailability.get(entry.getKey());
339
										total_held = total_held + total_warehouse_held;*/
340
 
341
										continue;
342
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
343
									}
344
									else{
11875 manish.sha 345
										long available = itemavailability.get(entry.getKey());
346
										if(available>0){
347
											nlcLOISD = new NlcLeftOutInventory();
348
											nlcLOISD.setItemId(snapdealItem.getItem_id());
349
											nlcLOISD.setProductName(snapdealItem.getBrand()+" " +snapdealItem.getModel_name() + " "+ snapdealItem.getModel_number() + " " +  snapdealItem.getColor());
350
											nlcLOISD.setOurNlc(maxnlcSD);
351
											nlcLOISD.setSkuAtSource(snapdealItem.getSkuAtSnapdeal());
352
											nlcLOISD.setVendorName(vendorDataMap.get(entry.getKey()));
353
											nlcLOISD.setVendorAvailability(available);
354
											nlcLOISD.setVendorNlc(nlc);
355
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+entry.getKey(), nlcLOISD);
356
										}
11874 manish.sha 357
									}
358
								}
359
 
360
								if(flipkartItem!=null){
361
									if(nlc !=0 && (maxnlcFK >= nlc)){
362
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
363
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
364
										available =  available + entry.getValue();
365
										total_held = total_held + total_warehouse_held;*/
366
										continue;
367
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
368
									}
369
									else if(maxnlcFK==0){
370
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
371
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
372
										available = available + itemavailability.get(entry.getKey());
373
										total_held = total_held + total_warehouse_held;*/
374
										continue;
375
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
376
									}
377
									else{
11875 manish.sha 378
										long available = itemavailability.get(entry.getKey());
379
										if(available>0){
380
											nlcLOIFK = new NlcLeftOutInventory();
381
											nlcLOIFK.setItemId(flipkartItem.getItem_id());
382
											nlcLOIFK.setProductName(thriftItem.getBrand()+" " +thriftItem.getModelName() + " "+ thriftItem.getModelNumber() + " " +  thriftItem.getColor());
383
											nlcLOIFK.setOurNlc(maxnlcFK);
384
											nlcLOIFK.setSkuAtSource(flipkartItem.getSkuAtFlipkart());
385
											nlcLOIFK.setVendorName(vendorDataMap.get(entry.getKey()));
386
											nlcLOIFK.setVendorAvailability(available);
387
											nlcLOIFK.setVendorNlc(nlc);
388
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+entry.getKey(), nlcLOIFK);
389
										}
11874 manish.sha 390
									}
391
								}
392
 
393
 
394
							}
395
						}
396
					}
397
 
398
					Map<Long,Long> itemreserve = new HashMap<Long,Long>();
399
					itemreserve = iteminventory.getReserved();
400
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
401
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
402
						for (Warehouse warehouse:vendor_warehouses){
403
							if(warehouse.getBillingWarehouseId()!=7){
404
								if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){
405
 
406
								}
407
								else{
408
									continue;
409
								}
410
							}
411
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
412
							ignoredItem.setItemId(thriftItem.getId());
413
							ignoredItem.setWarehouseId(warehouse.getId());
414
							if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
415
								nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
416
								//maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
417
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
418
								if(snapdealItem!=null){
419
									if(nlc !=0 && (maxnlcSD >= nlc)){
420
										//reserve = reserve + itemreserve.get(warehouse.getId());
421
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
422
										continue;
423
									}
424
									else if(maxnlcSD==0){
425
										//reserve = reserve + itemreserve.get(warehouse.getId());
426
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
427
										continue;
428
									}
429
									else{
430
										if(snapdealLeftInvDataMap.containsKey(snapdealItem.getSkuAtSnapdeal()+warehouse.getId())){
431
											NlcLeftOutInventory newObj = snapdealLeftInvDataMap.get(snapdealItem.getSkuAtSnapdeal()+warehouse.getId());
432
											newObj.setReserved(itemreserve.get(warehouse.getId()));
433
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(warehouse.getId()));
434
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+warehouse.getId(), newObj);
435
										}
436
									}
437
								}
438
 
439
								if(flipkartItem!=null){
440
									if(nlc !=0 && (maxnlcFK >= nlc)){
441
										//reserve = reserve + itemreserve.get(warehouse.getId());
442
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
443
										continue;
444
									}
445
									else if(maxnlcFK==0){
446
										//reserve = reserve + itemreserve.get(warehouse.getId());
447
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
448
										continue;
449
									}
450
									else{
451
										if(flipkartLeftInvDataMap.containsKey(flipkartItem.getSkuAtFlipkart()+warehouse.getId())){
452
											NlcLeftOutInventory newObj = flipkartLeftInvDataMap.get(flipkartItem.getSkuAtFlipkart()+warehouse.getId());
453
											newObj.setReserved(itemreserve.get(warehouse.getId()));
454
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(warehouse.getId()));
455
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+warehouse.getId(), newObj);
456
										}
457
									}
458
								}
459
 
460
 
461
							}
462
						}
463
					}else{
464
						for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
465
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
466
								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){
467
 
468
								}
469
								else{
470
									continue;
471
								}
472
							}
473
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
474
							ignoredItem.setItemId(thriftItem.getId());
475
							ignoredItem.setWarehouseId(entry.getKey());
476
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
477
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
478
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
479
								if(snapdealItem!=null){
480
									if(nlc !=0 && (maxnlcSD >= nlc)){
481
										//reserve =  reserve + entry.getValue();
482
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
483
										continue;
484
									}
485
									else if(maxnlcSD==0){
486
										//reserve =  reserve + entry.getValue();
487
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
488
										continue;
489
									}
490
									else{
491
										if(snapdealLeftInvDataMap.containsKey(snapdealItem.getSkuAtSnapdeal()+entry.getKey())){
492
											NlcLeftOutInventory newObj = snapdealLeftInvDataMap.get(snapdealItem.getSkuAtSnapdeal()+entry.getKey());
493
											newObj.setReserved(itemreserve.get(entry.getKey()));
494
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(entry.getKey()));
495
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+entry.getKey(), newObj);
496
										}
497
									}
498
								}
499
								if(flipkartItem!=null){
500
									if(nlc !=0 && (maxnlcFK >= nlc)){
501
										//reserve =  reserve + entry.getValue();
502
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
503
										continue;
504
									}
505
									else if(maxnlcFK==0){
506
										//reserve =  reserve + entry.getValue();
507
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
508
										continue;
509
									}
510
									else{
511
										if(flipkartLeftInvDataMap.containsKey(flipkartItem.getSkuAtFlipkart()+entry.getKey())){
512
											NlcLeftOutInventory newObj = flipkartLeftInvDataMap.get(flipkartItem.getSkuAtFlipkart()+entry.getKey());
513
											newObj.setReserved(itemreserve.get(entry.getKey()));
514
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(entry.getKey()));
515
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+entry.getKey(), newObj);
516
										}
517
									}
518
								}
519
 
520
							}
521
 
522
							else{
523
								//System.out.println("skipping inventory for warehouse id " + entry.getKey());
524
							}
525
						}
526
					}
527
 
528
 
529
				}
530
 
531
				for (Map.Entry<String,NlcLeftOutInventory> entry : snapdealLeftInvDataMap.entrySet()){
532
					nlcLeftOutInventoryItemsSD.add(snapdealLeftInvDataMap.get(entry.getKey()));
533
				}
534
				for (Map.Entry<String,NlcLeftOutInventory> entry : flipkartLeftInvDataMap.entrySet()){
535
					nlcLeftOutInventoryItemsFK.add(flipkartLeftInvDataMap.get(entry.getKey()));
536
				}
537
 
538
			}
539
		} catch (TException e) {
540
			// TODO Auto-generated catch block
541
			e.printStackTrace();
542
		}
543
 
544
	}
545
 
546
	private static void createAndSendLeftOutInventoryFile(List<NlcLeftOutInventory> nlcLeftoutInventoryItems, String fileName){
547
		try {
548
			File file = new File("/tmp/" + fileName +"-leftOutInv.xls");
549
			BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
550
			bufferedWriter.write(StringUtils.join(new String[] {
551
					"ItemId", 
552
					"Product Name",
553
					"SkuAtSource",
554
					"Vendor Name",
555
					"Max Our NLC",
556
					"Vendor NLC",
557
					"Availability Count",
558
					"Reserved Count",
559
					"Total Availabilty"
560
			}, '\t'));
561
 
562
			for(NlcLeftOutInventory nlcLOI : nlcLeftoutInventoryItems){
563
				bufferedWriter.newLine();
564
 
565
				bufferedWriter.write(StringUtils.join(
566
						new String[] {
567
								String.valueOf(nlcLOI.getItemId()),
568
								nlcLOI.getProductName(),
569
								nlcLOI.getSkuAtSource(),
570
								nlcLOI.getVendorName(),
571
								String.valueOf(nlcLOI.getOurNlc()),
572
								String.valueOf(nlcLOI.getVendorNlc()),
573
								String.valueOf(nlcLOI.getVendorAvailability()),
574
								String.valueOf(nlcLOI.getReserved()),
575
								String.valueOf(nlcLOI.getTotalAvailability())}, '\t'));
576
 
577
			}
578
			bufferedWriter.close();
579
 
580
			List<File> files = new ArrayList<File>();
581
			files.add(file);
582
 
583
			mailer.sendSSLMessage(sendTo, "Inventory not Sent due to NLC Limitaion in case of - "+ fileName , "Please find attached file.", emailFromAddress, password, files);
584
		} catch (Exception e) {
585
			e.printStackTrace();
586
			try {
587
				mailer.sendSSLMessage(sendTo,"Error while creating file from data ", emailFromAddress, password, "");
588
			} catch (MessagingException e1) {
589
				e1.printStackTrace();
590
			}
591
		}
592
	}
593
 
594
	//private static DefaultHttpClient client = new DefaultHttpClient();
595
 
596
	public static void main(String[] args) throws Exception {
597
		calculateinventory();
598
		createAndSendLeftOutInventoryFile(nlcLeftOutInventoryItemsSD, "SNAPDEAL");
599
		createAndSendLeftOutInventoryFile(nlcLeftOutInventoryItemsFK, "FLIPKART");
600
 
601
 
602
		/*HttpPost post = new HttpPost("http://selleraccounts.snapdeal.com/keymaker/login");
603
		HttpGet get = new HttpGet("http://seller.snapdeal.com/pricing/search?gridType=normal&_search=false&nd=1392188583467&rows=30&page=1&sidx=&sord=asc");
604
		BufferedReader rd= null;
605
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
606
		nameValuePairs.add(new BasicNameValuePair("username",
607
		"khushal.bhatia@saholic.com"));
608
		nameValuePairs.add(new BasicNameValuePair("password",
609
		"sonline"));
610
		nameValuePairs.add(new BasicNameValuePair("lt",
611
		"LT-14717-oFCLyRTRMWfMDeczgXm0aaufUjfwPV"));
612
		nameValuePairs.add(new BasicNameValuePair("execution",
613
		"e1s1"));
614
		nameValuePairs.add(new BasicNameValuePair("_eventId",
615
		"submit"));
616
		nameValuePairs.add(new BasicNameValuePair("submit",
617
		"LOGIN"));
618
		//post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
619
 
620
		HttpResponse response = null;
621
		try {
622
			response = client.execute(post);
623
		} catch (ClientProtocolException e) {
624
			// TODO Auto-generated catch block
625
			e.printStackTrace();
626
		} catch (IOException e) {
627
			// TODO Auto-generated catch block
628
			e.printStackTrace();
629
		}
630
 
631
		try {
632
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
633
		} catch (IllegalStateException e1) {
634
			// TODO Auto-generated catch block
635
			e1.printStackTrace();
636
		} catch (IOException e1) {
637
			// TODO Auto-generated catch block
638
			e1.printStackTrace();
639
		}
640
		String line = "";
641
		try {
642
			while ((line = rd.readLine()) != null) {
643
				System.out.println(line);
644
			}
645
		} catch (IOException e) {
646
			// TODO Auto-generated catch block
647
			e.printStackTrace();
648
		}
649
 
650
		for(Header h: response.getAllHeaders()){
651
			System.out.println(h.getName()+" "+h.getValue());
652
		}
653
 
654
 
655
		try {
656
			response = client.execute(get);
657
		} catch (ClientProtocolException e) {
658
			// TODO Auto-generated catch block
659
			e.printStackTrace();
660
		} catch (IOException e) {
661
			// TODO Auto-generated catch block
662
			e.printStackTrace();
663
		}
664
 
665
		try {
666
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
667
		} catch (IllegalStateException e1) {
668
			// TODO Auto-generated catch block
669
			e1.printStackTrace();
670
		} catch (IOException e1) {
671
			// TODO Auto-generated catch block
672
			e1.printStackTrace();
673
		}
674
 
675
		System.out.println("Get Response for Get Request");
676
 
677
		try {
678
			while ((line = rd.readLine()) != null) {
679
				System.out.println(line);
680
			}
681
		} catch (IOException e) {
682
			// TODO Auto-generated catch block
683
			e.printStackTrace();
684
		}*/
685
 
686
	}
687
}