Subversion Repositories SmartDukaan

Rev

Rev 11875 | Go to most recent revision | Details | 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{
256
										nlcLOISD= new NlcLeftOutInventory();
257
										nlcLOISD.setItemId(snapdealItem.getItem_id());
258
										nlcLOISD.setProductName(snapdealItem.getBrand()+" " +snapdealItem.getModel_name() + " "+ snapdealItem.getModel_number() + " " +  snapdealItem.getColor());
259
										nlcLOISD.setOurNlc(maxnlcSD);
260
										nlcLOISD.setSkuAtSource(snapdealItem.getSkuAtSnapdeal());
261
										nlcLOISD.setVendorName(warehouse.getVendor().getName());
262
										nlcLOISD.setVendorAvailability(itemavailability.get(warehouse.getId()));
263
										nlcLOISD.setVendorNlc(nlc);
264
										snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+warehouse.getId(), nlcLOISD);
265
									}
266
								}
267
 
268
								if(flipkartItem!=null){
269
									if(nlc !=0 && (maxnlcFK >= nlc)){
270
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
271
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
272
										available = available + itemavailability.get(warehouse.getId());
273
										total_held = total_held + total_warehouse_held; */
274
										continue;
275
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
276
									}
277
									else if(maxnlcFK==0){
278
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 0);
279
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), warehouse.getId(), 8);
280
										available = available + itemavailability.get(warehouse.getId());
281
										total_held = total_held + total_warehouse_held;*/
282
										continue;
283
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
284
									}
285
									else{
286
										nlcLOIFK = new NlcLeftOutInventory();
287
										nlcLOIFK.setItemId(flipkartItem.getItem_id());
288
										nlcLOIFK.setProductName(thriftItem.getBrand()+" " +thriftItem.getModelName() + " "+ thriftItem.getModelNumber() + " " +  thriftItem.getColor());
289
										nlcLOIFK.setOurNlc(maxnlcFK);
290
										nlcLOIFK.setSkuAtSource(flipkartItem.getSkuAtFlipkart());
291
										nlcLOIFK.setVendorName(warehouse.getVendor().getName());
292
										nlcLOIFK.setVendorAvailability(itemavailability.get(warehouse.getId()));
293
										nlcLOIFK.setVendorNlc(nlc);
294
										flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+warehouse.getId(), nlcLOIFK);
295
									}
296
								}
297
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
298
 
299
							}
300
						}
301
					}
302
					else{
303
						for (Map.Entry<Long,Long> entry :  itemavailability.entrySet()) {
304
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
305
								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){
306
 
307
								}
308
								else{
309
									continue;
310
								}
311
							}
312
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
313
							ignoredItem.setItemId(thriftItem.getId());
314
							ignoredItem.setWarehouseId(entry.getKey());
315
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
316
 
317
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
318
 
319
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
320
								if(snapdealItem!=null){
321
									if(nlc !=0 && (maxnlcSD >= nlc)){
322
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
323
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
324
										available =  available + entry.getValue();
325
										total_held = total_held + total_warehouse_held;*/
326
										continue;
327
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
328
									}
329
									else if(maxnlcSD==0){
330
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
331
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 7);
332
										available = available + itemavailability.get(entry.getKey());
333
										total_held = total_held + total_warehouse_held;*/
334
 
335
										continue;
336
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
337
									}
338
									else{
339
										nlcLOISD = new NlcLeftOutInventory();
340
										nlcLOISD.setItemId(snapdealItem.getItem_id());
341
										nlcLOISD.setProductName(snapdealItem.getBrand()+" " +snapdealItem.getModel_name() + " "+ snapdealItem.getModel_number() + " " +  snapdealItem.getColor());
342
										nlcLOISD.setOurNlc(maxnlcSD);
343
										nlcLOISD.setSkuAtSource(snapdealItem.getSkuAtSnapdeal());
344
										nlcLOISD.setVendorName(vendorDataMap.get(entry.getKey()));
345
										nlcLOISD.setVendorAvailability(itemavailability.get(entry.getKey()));
346
										nlcLOISD.setVendorNlc(nlc);
347
										snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+entry.getKey(), nlcLOISD);
348
									}
349
								}
350
 
351
								if(flipkartItem!=null){
352
									if(nlc !=0 && (maxnlcFK >= nlc)){
353
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
354
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
355
										available =  available + entry.getValue();
356
										total_held = total_held + total_warehouse_held;*/
357
										continue;
358
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
359
									}
360
									else if(maxnlcFK==0){
361
										/*total_warehouse_held = inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 0);
362
										heldForSource = heldForSource + total_warehouse_held - inventoryClient.getHoldInventoryDetailForItemForWarehouseIdExceptSource(thriftItem.getId(), entry.getKey(), 8);
363
										available = available + itemavailability.get(entry.getKey());
364
										total_held = total_held + total_warehouse_held;*/
365
										continue;
366
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\tavailable:" + available);
367
									}
368
									else{
369
										nlcLOIFK = new NlcLeftOutInventory();
370
										nlcLOIFK.setItemId(flipkartItem.getItem_id());
371
										nlcLOIFK.setProductName(thriftItem.getBrand()+" " +thriftItem.getModelName() + " "+ thriftItem.getModelNumber() + " " +  thriftItem.getColor());
372
										nlcLOIFK.setOurNlc(maxnlcFK);
373
										nlcLOIFK.setSkuAtSource(flipkartItem.getSkuAtFlipkart());
374
										nlcLOIFK.setVendorName(vendorDataMap.get(entry.getKey()));
375
										nlcLOIFK.setVendorAvailability(itemavailability.get(entry.getKey()));
376
										nlcLOIFK.setVendorNlc(nlc);
377
										flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+entry.getKey(), nlcLOIFK);
378
 
379
									}
380
								}
381
 
382
 
383
							}
384
						}
385
					}
386
 
387
					Map<Long,Long> itemreserve = new HashMap<Long,Long>();
388
					itemreserve = iteminventory.getReserved();
389
					if (thriftItem.isIsWarehousePreferenceSticky() && thriftItem.getPreferredVendor()!=0){
390
						//System.out.println("Item id "+thriftItem.getId()+".Found prefered vendor and warehouse is marked sticky (Calculating Reserve)"+thriftItem.getPreferredVendor());
391
						for (Warehouse warehouse:vendor_warehouses){
392
							if(warehouse.getBillingWarehouseId()!=7){
393
								if(warehouse.getLogisticsLocation().equals(WarehouseLocation.Delhi) && warehouse.getWarehouseType().equals(WarehouseType.THIRD_PARTY) && warehouse.getVendor().getId()!=1){
394
 
395
								}
396
								else{
397
									continue;
398
								}
399
							}
400
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
401
							ignoredItem.setItemId(thriftItem.getId());
402
							ignoredItem.setWarehouseId(warehouse.getId());
403
							if (itemreserve.get(warehouse.getId())!=null && !thirdpartywarehouseids.contains(warehouse.getId()) && !ignoreItems.contains(warehouse.getId())){
404
								nlc = inventoryClient.getNlcForWarehouse(warehouse.getId(),thriftItem.getId());
405
								//maxnlc = catalogClient.getSnapdealItem(thriftItem.getId()).getMaxNlc();
406
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + warehouse.getId() );
407
								if(snapdealItem!=null){
408
									if(nlc !=0 && (maxnlcSD >= nlc)){
409
										//reserve = reserve + itemreserve.get(warehouse.getId());
410
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
411
										continue;
412
									}
413
									else if(maxnlcSD==0){
414
										//reserve = reserve + itemreserve.get(warehouse.getId());
415
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
416
										continue;
417
									}
418
									else{
419
										if(snapdealLeftInvDataMap.containsKey(snapdealItem.getSkuAtSnapdeal()+warehouse.getId())){
420
											NlcLeftOutInventory newObj = snapdealLeftInvDataMap.get(snapdealItem.getSkuAtSnapdeal()+warehouse.getId());
421
											newObj.setReserved(itemreserve.get(warehouse.getId()));
422
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(warehouse.getId()));
423
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+warehouse.getId(), newObj);
424
										}
425
									}
426
								}
427
 
428
								if(flipkartItem!=null){
429
									if(nlc !=0 && (maxnlcFK >= nlc)){
430
										//reserve = reserve + itemreserve.get(warehouse.getId());
431
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
432
										continue;
433
									}
434
									else if(maxnlcFK==0){
435
										//reserve = reserve + itemreserve.get(warehouse.getId());
436
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
437
										continue;
438
									}
439
									else{
440
										if(flipkartLeftInvDataMap.containsKey(flipkartItem.getSkuAtFlipkart()+warehouse.getId())){
441
											NlcLeftOutInventory newObj = flipkartLeftInvDataMap.get(flipkartItem.getSkuAtFlipkart()+warehouse.getId());
442
											newObj.setReserved(itemreserve.get(warehouse.getId()));
443
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(warehouse.getId()));
444
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+warehouse.getId(), newObj);
445
										}
446
									}
447
								}
448
 
449
 
450
							}
451
						}
452
					}else{
453
						for (Map.Entry<Long,Long> entry : itemreserve.entrySet()) {
454
							if(allWarehousesMap.get(entry.getKey()).getBillingWarehouseId()!=7){
455
								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){
456
 
457
								}
458
								else{
459
									continue;
460
								}
461
							}
462
							in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems ignoredItem = new in.shop2020.model.v1.inventory.IgnoredInventoryUpdateItems();
463
							ignoredItem.setItemId(thriftItem.getId());
464
							ignoredItem.setWarehouseId(entry.getKey());
465
							if(!thirdpartywarehouseids.contains(entry.getKey()) && !ignoreItems.contains(ignoredItem)){
466
								nlc = inventoryClient.getNlcForWarehouse(entry.getKey(),thriftItem.getId());
467
								//System.out.println("itemId:" + thriftItem.getId() + "\tmaxnlc: " + maxnlc + "\tnlc:" + nlc + "\twid:" + entry.getKey() );
468
								if(snapdealItem!=null){
469
									if(nlc !=0 && (maxnlcSD >= nlc)){
470
										//reserve =  reserve + entry.getValue();
471
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
472
										continue;
473
									}
474
									else if(maxnlcSD==0){
475
										//reserve =  reserve + entry.getValue();
476
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
477
										continue;
478
									}
479
									else{
480
										if(snapdealLeftInvDataMap.containsKey(snapdealItem.getSkuAtSnapdeal()+entry.getKey())){
481
											NlcLeftOutInventory newObj = snapdealLeftInvDataMap.get(snapdealItem.getSkuAtSnapdeal()+entry.getKey());
482
											newObj.setReserved(itemreserve.get(entry.getKey()));
483
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(entry.getKey()));
484
											snapdealLeftInvDataMap.put(snapdealItem.getSkuAtSnapdeal()+entry.getKey(), newObj);
485
										}
486
									}
487
								}
488
								if(flipkartItem!=null){
489
									if(nlc !=0 && (maxnlcFK >= nlc)){
490
										//reserve =  reserve + entry.getValue();
491
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
492
										continue;
493
									}
494
									else if(maxnlcFK==0){
495
										//reserve =  reserve + entry.getValue();
496
										//System.out.println("itemId:" + thriftItem.getId() + "\ttotal_held: " + total_held + "\theldForSource:" + heldForSource + "\treserve:" + reserve);
497
										continue;
498
									}
499
									else{
500
										if(flipkartLeftInvDataMap.containsKey(flipkartItem.getSkuAtFlipkart()+entry.getKey())){
501
											NlcLeftOutInventory newObj = flipkartLeftInvDataMap.get(flipkartItem.getSkuAtFlipkart()+entry.getKey());
502
											newObj.setReserved(itemreserve.get(entry.getKey()));
503
											newObj.setTotalAvailability(newObj.getVendorAvailability()-itemreserve.get(entry.getKey()));
504
											flipkartLeftInvDataMap.put(flipkartItem.getSkuAtFlipkart()+entry.getKey(), newObj);
505
										}
506
									}
507
								}
508
 
509
							}
510
 
511
							else{
512
								//System.out.println("skipping inventory for warehouse id " + entry.getKey());
513
							}
514
						}
515
					}
516
 
517
 
518
				}
519
 
520
				for (Map.Entry<String,NlcLeftOutInventory> entry : snapdealLeftInvDataMap.entrySet()){
521
					nlcLeftOutInventoryItemsSD.add(snapdealLeftInvDataMap.get(entry.getKey()));
522
				}
523
				for (Map.Entry<String,NlcLeftOutInventory> entry : flipkartLeftInvDataMap.entrySet()){
524
					nlcLeftOutInventoryItemsFK.add(flipkartLeftInvDataMap.get(entry.getKey()));
525
				}
526
 
527
			}
528
		} catch (TException e) {
529
			// TODO Auto-generated catch block
530
			e.printStackTrace();
531
		}
532
 
533
	}
534
 
535
	private static void createAndSendLeftOutInventoryFile(List<NlcLeftOutInventory> nlcLeftoutInventoryItems, String fileName){
536
		try {
537
			File file = new File("/tmp/" + fileName +"-leftOutInv.xls");
538
			BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
539
			bufferedWriter.write(StringUtils.join(new String[] {
540
					"ItemId", 
541
					"Product Name",
542
					"SkuAtSource",
543
					"Vendor Name",
544
					"Max Our NLC",
545
					"Vendor NLC",
546
					"Availability Count",
547
					"Reserved Count",
548
					"Total Availabilty"
549
			}, '\t'));
550
 
551
			for(NlcLeftOutInventory nlcLOI : nlcLeftoutInventoryItems){
552
				bufferedWriter.newLine();
553
 
554
				bufferedWriter.write(StringUtils.join(
555
						new String[] {
556
								String.valueOf(nlcLOI.getItemId()),
557
								nlcLOI.getProductName(),
558
								nlcLOI.getSkuAtSource(),
559
								nlcLOI.getVendorName(),
560
								String.valueOf(nlcLOI.getOurNlc()),
561
								String.valueOf(nlcLOI.getVendorNlc()),
562
								String.valueOf(nlcLOI.getVendorAvailability()),
563
								String.valueOf(nlcLOI.getReserved()),
564
								String.valueOf(nlcLOI.getTotalAvailability())}, '\t'));
565
 
566
			}
567
			bufferedWriter.close();
568
 
569
			List<File> files = new ArrayList<File>();
570
			files.add(file);
571
 
572
			mailer.sendSSLMessage(sendTo, "Inventory not Sent due to NLC Limitaion in case of - "+ fileName , "Please find attached file.", emailFromAddress, password, files);
573
		} catch (Exception e) {
574
			e.printStackTrace();
575
			try {
576
				mailer.sendSSLMessage(sendTo,"Error while creating file from data ", emailFromAddress, password, "");
577
			} catch (MessagingException e1) {
578
				e1.printStackTrace();
579
			}
580
		}
581
	}
582
 
583
	//private static DefaultHttpClient client = new DefaultHttpClient();
584
 
585
	public static void main(String[] args) throws Exception {
586
		calculateinventory();
587
		createAndSendLeftOutInventoryFile(nlcLeftOutInventoryItemsSD, "SNAPDEAL");
588
		createAndSendLeftOutInventoryFile(nlcLeftOutInventoryItemsFK, "FLIPKART");
589
 
590
 
591
		/*HttpPost post = new HttpPost("http://selleraccounts.snapdeal.com/keymaker/login");
592
		HttpGet get = new HttpGet("http://seller.snapdeal.com/pricing/search?gridType=normal&_search=false&nd=1392188583467&rows=30&page=1&sidx=&sord=asc");
593
		BufferedReader rd= null;
594
		List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
595
		nameValuePairs.add(new BasicNameValuePair("username",
596
		"khushal.bhatia@saholic.com"));
597
		nameValuePairs.add(new BasicNameValuePair("password",
598
		"sonline"));
599
		nameValuePairs.add(new BasicNameValuePair("lt",
600
		"LT-14717-oFCLyRTRMWfMDeczgXm0aaufUjfwPV"));
601
		nameValuePairs.add(new BasicNameValuePair("execution",
602
		"e1s1"));
603
		nameValuePairs.add(new BasicNameValuePair("_eventId",
604
		"submit"));
605
		nameValuePairs.add(new BasicNameValuePair("submit",
606
		"LOGIN"));
607
		//post.setEntity(new UrlEncodedFormEntity(nameValuePairs,"utf-8"));
608
 
609
		HttpResponse response = null;
610
		try {
611
			response = client.execute(post);
612
		} catch (ClientProtocolException e) {
613
			// TODO Auto-generated catch block
614
			e.printStackTrace();
615
		} catch (IOException e) {
616
			// TODO Auto-generated catch block
617
			e.printStackTrace();
618
		}
619
 
620
		try {
621
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
622
		} catch (IllegalStateException e1) {
623
			// TODO Auto-generated catch block
624
			e1.printStackTrace();
625
		} catch (IOException e1) {
626
			// TODO Auto-generated catch block
627
			e1.printStackTrace();
628
		}
629
		String line = "";
630
		try {
631
			while ((line = rd.readLine()) != null) {
632
				System.out.println(line);
633
			}
634
		} catch (IOException e) {
635
			// TODO Auto-generated catch block
636
			e.printStackTrace();
637
		}
638
 
639
		for(Header h: response.getAllHeaders()){
640
			System.out.println(h.getName()+" "+h.getValue());
641
		}
642
 
643
 
644
		try {
645
			response = client.execute(get);
646
		} catch (ClientProtocolException e) {
647
			// TODO Auto-generated catch block
648
			e.printStackTrace();
649
		} catch (IOException e) {
650
			// TODO Auto-generated catch block
651
			e.printStackTrace();
652
		}
653
 
654
		try {
655
			rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
656
		} catch (IllegalStateException e1) {
657
			// TODO Auto-generated catch block
658
			e1.printStackTrace();
659
		} catch (IOException e1) {
660
			// TODO Auto-generated catch block
661
			e1.printStackTrace();
662
		}
663
 
664
		System.out.println("Get Response for Get Request");
665
 
666
		try {
667
			while ((line = rd.readLine()) != null) {
668
				System.out.println(line);
669
			}
670
		} catch (IOException e) {
671
			// TODO Auto-generated catch block
672
			e.printStackTrace();
673
		}*/
674
 
675
	}
676
}