Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
12166 manish.sha 1
package in.shop2020.support.utils;
2
 
3
import java.io.BufferedWriter;
4
import java.io.File;
5
import java.io.FileOutputStream;
6
import java.io.FileWriter;
7
import java.util.ArrayList;
8
import java.util.Collections;
9
import java.util.Date;
10
import java.util.HashMap;
11
import java.util.Hashtable;
12
import java.util.List;
13
import java.util.Map;
14
 
15
import org.apache.commons.lang.StringUtils;
16
import org.apache.commons.logging.Log;
17
import org.apache.poi.hssf.usermodel.HSSFSheet;
18
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
19
import org.apache.poi.ss.usermodel.Cell;
20
import org.apache.poi.ss.usermodel.Row;
21
 
22
import java.util.Set;
23
import org.slf4j.Logger;
24
import org.slf4j.LoggerFactory;
25
 
26
import com.mysql.jdbc.log.LogFactory;
27
import in.shop2020.model.v1.catalog.CatalogService;
28
import in.shop2020.model.v1.catalog.Category;
29
import in.shop2020.model.v1.catalog.Item;
30
import in.shop2020.model.v1.inventory.InventoryService;
31
import in.shop2020.model.v1.inventory.InventoryType;
32
import in.shop2020.model.v1.inventory.ItemInventory;
33
import in.shop2020.model.v1.inventory.OOSStatus;
34
import in.shop2020.model.v1.inventory.VendorItemPricing;
35
import in.shop2020.model.v1.inventory.Warehouse;
36
import in.shop2020.model.v1.inventory.WarehouseType;
37
import in.shop2020.support.models.MovingStockSaleDetailComparator;
38
import in.shop2020.support.models.SnmMovingStockSaleDetailComparator;
39
import in.shop2020.support.models.StockSaleDetail;
40
import in.shop2020.thrift.clients.CatalogClient;
41
import in.shop2020.thrift.clients.InventoryClient;
42
import in.shop2020.utils.GmailUtils;
43
 
44
public class NewStockSalesReportFetcher {
45
	private static final int NUMBER_OF_DAYS_SALE = 5;
46
	/*private static final String[] mailTo = {"manish.sharma@shop2020.in", "rajveer.singh@shop2020.in", "chaitnaya.vats@saholic.com", 
47
		"manoj.kumar@saholic.com", "chandan.kumar@saholic.com", "khushal.bhatia@saholic.com", "rajneesh.arora@saholic.com"};*/
48
	private static final String[] mailTo = {"manish.sharma@shop2020.in"};
49
	private static final String senderAccountMail = "build-staging@shop2020.in";
50
	private static final String senderAccountPswd = "shop2020";
51
 
52
	static String tmpDir = System.getProperty("java.io.tmpdir");
53
	static File stockSalesReportMT = new File(tmpDir + "/StockSaleReport-MT" + (new Date()) + ".xls");
54
	static File stockSalesReportEMT = new File(tmpDir + "/StockSaleReport-EMT" + (new Date()) + ".xls");
55
 
56
	static List<StockSaleDetail> movingStockSaleListMT = new ArrayList<StockSaleDetail>();
57
	static List<StockSaleDetail> nonMovingStockSaleListMT = new ArrayList<StockSaleDetail>();
58
	static List<StockSaleDetail> slowMovingStockSaleListMT = new ArrayList<StockSaleDetail>();
59
	static List<StockSaleDetail> movingStockSaleListEMT = new ArrayList<StockSaleDetail>();
60
	static List<StockSaleDetail> nonMovingStockSaleListEMT = new ArrayList<StockSaleDetail>();
61
	static List<StockSaleDetail> slowMovingStockSaleListEMT = new ArrayList<StockSaleDetail>();
62
 
63
	private static Logger logger = LoggerFactory.getLogger(StockSalesReportFetcher.class);
64
 
65
	private static void createAndMailReport() {
66
		try {
67
			CatalogClient catalogServiceClient = new CatalogClient();
68
			CatalogService.Client catalogClient = catalogServiceClient.getClient();
69
			List<Item> itemList = catalogClient.getAllAliveItems();
70
 
71
			if(!catalogClient.isAlive()){
72
				catalogClient = catalogServiceClient.getClient();
73
			}
74
			List<Category> allCategories = catalogClient.getAllCategories();
75
			Map<Long, String> categoryIdLabelMap = new Hashtable<Long, String>();
76
			for(Category category : allCategories) {
77
				categoryIdLabelMap.put(category.getId(), category.getLabel());
78
			}
79
 
80
			InventoryClient inventoryServiceClient = new InventoryClient();		
81
			InventoryService.Client inventoryClient = inventoryServiceClient.getClient();
82
			Map<Long, ItemInventory> inventoryMap = inventoryClient.getInventorySnapshot(0);
83
 
84
			if(!inventoryClient.isAlive()){
85
				inventoryClient = inventoryServiceClient.getClient();
86
			}
87
			List<OOSStatus> oosStatuses = inventoryClient.getOosStatusesForXDays(-1, NUMBER_OF_DAYS_SALE);
88
			Map<Long, List<OOSStatus>> oosStatusMapByItem = new Hashtable<Long, List<OOSStatus>>(5000);
89
			for(OOSStatus oosStatus : oosStatuses) {
90
				List<OOSStatus> oosStatusList;
91
				Long itemId = oosStatus.getItem_id();
92
				if(oosStatusMapByItem.containsKey(itemId)) {
93
					oosStatusList = oosStatusMapByItem.get(itemId);
94
					oosStatusList.add(oosStatus);
95
				} else {
96
					oosStatusList = new ArrayList<OOSStatus>(6);
97
					oosStatusList.add(oosStatus);
98
				}
99
				oosStatusMapByItem.put(itemId, oosStatusList);
100
			}
101
 
102
			if(!inventoryClient.isAlive()){
103
				inventoryClient = inventoryServiceClient.getClient();
104
			}
105
			List<Warehouse>  ourGoodWarehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, 0, 0, 0);
106
			Map<Long, Warehouse> ourWarehouseMap = new Hashtable<Long, Warehouse>(200);
107
			for(Warehouse warehouse : ourGoodWarehouses) {
108
				//System.out.println("Warehouse = " + warehouse.getId());
109
				ourWarehouseMap.put(warehouse.getId(), warehouse);
110
			}
111
 
112
			if(!inventoryClient.isAlive()){
113
				inventoryClient = inventoryServiceClient.getClient();
114
			}
115
			List<VendorItemPricing> vendorItemPricings = inventoryClient.getAllVendorItemPricing(0, 0);
116
			Map<Long, List<VendorItemPricing>> itemPricingMap = new Hashtable<Long, List<VendorItemPricing>>(5000);
117
			for(VendorItemPricing vendorItemPricing : vendorItemPricings) {
118
				List<VendorItemPricing> pricingListForItem;
119
				Long itemId = vendorItemPricing.getItemId();
120
				if(itemPricingMap.containsKey(itemId)) {
121
					pricingListForItem = itemPricingMap.get(itemId);
122
					pricingListForItem.add(vendorItemPricing);
123
				} else {
124
					pricingListForItem = new ArrayList<VendorItemPricing>();
125
					pricingListForItem.add(vendorItemPricing);
126
				}
127
				itemPricingMap.put(itemId, pricingListForItem);
128
			}
129
 
130
			Long stockCount;
131
			Double stockValue;
132
			for (Item item : itemList) {
133
				stockCount = 0L;
134
				stockValue = 0.0;
135
				Long totalOrderCount    = 0L;
136
				Long websiteOrderCount  = 0L;
137
				Long ebayOrderCount     = 0L;
138
				Long snapdealOrderCount = 0L;
139
				Long flipkartOrderCount = 0L;
140
				Long amzn_mfnOrderCount = 0L;
141
				Long totalInStockDays    = 0L;
142
				Long websiteInStockDays  = 0L;
143
				Long ebayInStockDays     = 0L;
144
				Long snapdealInStockDays = 0L;
145
				Long flipkartInStockDays = 0L;
146
				Long amzn_mfnInStockDays = 0L;
147
				Double websiteAverageSale  = 0.0;
148
				Double totalAverageSale = 0.0;
149
				Double ebayAverageSale     = 0.0;
150
				Double snapdealAverageSale = 0.0;
151
				Double flipkartAverageSale = 0.0;
152
				Double amzn_mfnAverageSale  = 0.0;
153
				StringBuilder totalSaleHistory    = new StringBuilder("");
154
				StringBuilder websiteSaleHistory  = new StringBuilder("");
155
				StringBuilder ebaySaleHistory     = new StringBuilder("");
156
				StringBuilder snapdealSaleHistory = new StringBuilder("");
157
				StringBuilder flipkartSaleHistory = new StringBuilder("");
158
				StringBuilder amzn_mfnSaleHistory = new StringBuilder("");
159
 
160
				ItemInventory itemInventory = inventoryMap.get(item.getId());
161
				Map<Long, Long> availabilityMap;
162
				if(itemInventory!= null) {
163
					//System.out.println("itemId =" + item.getId());
164
					availabilityMap = itemInventory.getAvailability();
165
					for (Long warehouseId : availabilityMap.keySet()) {
166
						if(ourWarehouseMap.containsKey(warehouseId)) {
167
							long currentAvailability = availabilityMap.get(warehouseId);
168
							//System.out.println("itemId =" + item.getId() + " availability = "+ currentAvailability);
169
							stockCount += currentAvailability;
170
							if(currentAvailability>0) {
171
								List<VendorItemPricing> pricingList = itemPricingMap.get(item.getId());
172
								for(VendorItemPricing vendorItemPricing: pricingList) {
173
									if(vendorItemPricing.getVendorId() == ourWarehouseMap.get(warehouseId).getVendor().getId()) {
174
										stockValue = stockValue + (vendorItemPricing.getNlc()*currentAvailability); 
175
									}
176
								}
177
							}
178
						}
179
					}
180
				}
181
				if(stockCount<=0) {
182
					continue;
183
				}
184
				for(OOSStatus oosStatus : oosStatusMapByItem.get(item.getId())) {
185
					switch(oosStatus.getSourceId()) {
186
					case 0: 
187
						if(oosStatus.isIs_oos()== false) {
188
							totalInStockDays++;
189
							totalOrderCount += oosStatus.getNum_orders();
190
							totalSaleHistory.append(oosStatus.getNum_orders() + "-");
191
						} else {
192
							totalSaleHistory.append("X-");
193
						}
194
						break;
195
					case 1: 
196
						if(oosStatus.isIs_oos()== false) {
197
							websiteInStockDays++;
198
							websiteOrderCount += oosStatus.getNum_orders();
199
							websiteSaleHistory.append(oosStatus.getNum_orders() + "-");
200
						} else {
201
							websiteSaleHistory.append("X-");
202
						}
203
						break;
204
					case 3: 
205
						if(oosStatus.isIs_oos()== false) {
206
							amzn_mfnInStockDays++;
207
							amzn_mfnOrderCount += oosStatus.getNum_orders();
208
							amzn_mfnSaleHistory.append(oosStatus.getNum_orders() + "-");
209
						} else {
210
							amzn_mfnSaleHistory.append("X-");
211
						}
212
						break;
213
					case 6: 
214
						if(oosStatus.isIs_oos()== false) {
215
							ebayInStockDays++;
216
							ebayOrderCount += oosStatus.getNum_orders();
217
							ebaySaleHistory.append(oosStatus.getNum_orders() + "-");
218
						} else {
219
							ebaySaleHistory.append("X-");
220
						}
221
						break;
222
					case 7: 
223
						if(oosStatus.isIs_oos()== false) {
224
							snapdealInStockDays++;
225
							snapdealOrderCount += oosStatus.getNum_orders();
226
							snapdealSaleHistory.append(oosStatus.getNum_orders() + "-");
227
						} else {
228
							snapdealSaleHistory.append("X-");
229
						}
230
						break;
231
					case 8: 
232
						if(oosStatus.isIs_oos()== false) {
233
							flipkartInStockDays++;
234
							flipkartOrderCount += oosStatus.getNum_orders();
235
							flipkartSaleHistory.append(oosStatus.getNum_orders() + "-");
236
						} else {
237
							flipkartSaleHistory.append("X-");
238
						}
239
						break;
240
					default:
241
						//do nothing
242
						break;
243
					}
244
				}
245
				totalAverageSale    = (double)totalOrderCount/totalInStockDays;
12178 manish.sha 246
				totalAverageSale    = Math.round(totalAverageSale * 10.0)/10.0;
12166 manish.sha 247
				websiteAverageSale  = (double)websiteOrderCount/websiteInStockDays;
12178 manish.sha 248
				websiteAverageSale  = Math.round(websiteAverageSale * 10.0)/10.0;
12166 manish.sha 249
				ebayAverageSale     = (double)ebayOrderCount/ebayInStockDays;
12178 manish.sha 250
				ebayAverageSale     = Math.round(ebayAverageSale * 10.0)/10.0;
12166 manish.sha 251
				snapdealAverageSale = (double)snapdealOrderCount/snapdealInStockDays;
12178 manish.sha 252
				snapdealAverageSale = Math.round(snapdealAverageSale * 10.0)/10.0;
12166 manish.sha 253
				flipkartAverageSale = (double)flipkartOrderCount/flipkartInStockDays;
12178 manish.sha 254
				flipkartAverageSale = Math.round(flipkartAverageSale * 10.0)/10.0;
12166 manish.sha 255
				amzn_mfnAverageSale = (double)amzn_mfnOrderCount/amzn_mfnInStockDays;
12178 manish.sha 256
				amzn_mfnAverageSale = Math.round(amzn_mfnAverageSale * 10.0)/10.0;
12166 manish.sha 257
 
258
				if(totalAverageSale<=0.0) {
259
					StockSaleDetail ssDetail = new StockSaleDetail();
260
					ssDetail.setItemId(item.getId());
261
					ssDetail.setCategory(categoryIdLabelMap.get(item.getCategory()));
262
					ssDetail.setProductGroup(item.getProductGroup());
263
					ssDetail.setBrand(item.getBrand());
264
					ssDetail.setModelName(item.getModelName());
265
					ssDetail.setModelNumber(item.getModelNumber());
266
					ssDetail.setColor(item.getColor());
267
					ssDetail.setStockQuantity(stockCount);
268
					ssDetail.setStockValue(stockValue);
269
					ssDetail.setNodStock(totalAverageSale>0 ? new Long(new Double(stockCount/totalAverageSale).longValue()) : 0);
270
					ssDetail.setSalesHistoryAll(totalSaleHistory.substring(0, totalSaleHistory.length()-1));
271
					ssDetail.setAvgSalesAll(totalAverageSale);
272
					ssDetail.setSalesHistoryWS(websiteSaleHistory.substring(0, websiteSaleHistory.length()-1));
273
					ssDetail.setAvgSalesWS(websiteAverageSale);
274
					ssDetail.setSalesHistoryEbay(ebaySaleHistory.substring(0, ebaySaleHistory.length()-1));
275
					ssDetail.setAvgSalesEbay(ebayAverageSale);
276
					ssDetail.setSalesHistorySD(snapdealSaleHistory.substring(0, snapdealSaleHistory.length()-1));
277
					ssDetail.setAvgSalesSD(snapdealAverageSale);
278
					ssDetail.setSalesHistoryFK(flipkartSaleHistory.substring(0, flipkartSaleHistory.length()-1));
279
					ssDetail.setAvgSalesFK(flipkartAverageSale);
280
					ssDetail.setSalesHistoryMFN(amzn_mfnSaleHistory.substring(0, amzn_mfnSaleHistory.length()-1));
281
					ssDetail.setAvgSalesMFN(amzn_mfnAverageSale);
282
					if(item.getCategory() == 10006 || item.getCategory() == 10010){
283
						nonMovingStockSaleListMT.add(ssDetail);
284
					} else {
285
						nonMovingStockSaleListEMT.add(ssDetail);
286
					}            		
287
				}
288
				else {
289
					double nodStock = totalAverageSale > 0 ? new Double(stockCount/totalAverageSale): 0;
290
					if(nodStock>30) {
291
						StockSaleDetail ssDetail = new StockSaleDetail();
292
						ssDetail.setItemId(item.getId());
293
						ssDetail.setCategory(categoryIdLabelMap.get(item.getCategory()));
294
						ssDetail.setProductGroup(item.getProductGroup());
295
						ssDetail.setBrand(item.getBrand());
296
						ssDetail.setModelName(item.getModelName());
297
						ssDetail.setModelNumber(item.getModelNumber());
298
						ssDetail.setColor(item.getColor());
299
						ssDetail.setStockQuantity(stockCount);
300
						ssDetail.setStockValue(stockValue);
301
						ssDetail.setNodStock(totalAverageSale>0 ? new Long(new Double(stockCount/totalAverageSale).longValue()) : 0);
302
						ssDetail.setSalesHistoryAll(totalSaleHistory.substring(0, totalSaleHistory.length()-1));
303
						ssDetail.setAvgSalesAll(totalAverageSale);
304
						ssDetail.setSalesHistoryWS(websiteSaleHistory.substring(0, websiteSaleHistory.length()-1));
305
						ssDetail.setAvgSalesWS(websiteAverageSale);
306
						ssDetail.setSalesHistoryEbay(ebaySaleHistory.substring(0, ebaySaleHistory.length()-1));
307
						ssDetail.setAvgSalesEbay(ebayAverageSale);
308
						ssDetail.setSalesHistorySD(snapdealSaleHistory.substring(0, snapdealSaleHistory.length()-1));
309
						ssDetail.setAvgSalesSD(snapdealAverageSale);
310
						ssDetail.setSalesHistoryFK(flipkartSaleHistory.substring(0, flipkartSaleHistory.length()-1));
311
						ssDetail.setAvgSalesFK(flipkartAverageSale);
312
						ssDetail.setSalesHistoryMFN(amzn_mfnSaleHistory.substring(0, amzn_mfnSaleHistory.length()-1));
313
						ssDetail.setAvgSalesMFN(amzn_mfnAverageSale);
314
						if(item.getCategory() == 10006 || item.getCategory() == 10010){
315
							slowMovingStockSaleListMT.add(ssDetail);
316
						} else {
317
							slowMovingStockSaleListEMT.add(ssDetail);
318
						} 
319
					} else {
320
						StockSaleDetail ssDetail = new StockSaleDetail();
321
						ssDetail.setItemId(item.getId());
322
						ssDetail.setCategory(categoryIdLabelMap.get(item.getCategory()));
323
						ssDetail.setProductGroup(item.getProductGroup());
324
						ssDetail.setBrand(item.getBrand());
325
						ssDetail.setModelName(item.getModelName());
326
						ssDetail.setModelNumber(item.getModelNumber());
327
						ssDetail.setColor(item.getColor());
328
						ssDetail.setStockQuantity(stockCount);
329
						ssDetail.setStockValue(stockValue);
330
						ssDetail.setNodStock(totalAverageSale>0 ? new Long(new Double(stockCount/totalAverageSale).longValue()) : 0);
331
						ssDetail.setSalesHistoryAll(totalSaleHistory.substring(0, totalSaleHistory.length()-1));
332
						ssDetail.setAvgSalesAll(totalAverageSale);
333
						ssDetail.setSalesHistoryWS(websiteSaleHistory.substring(0, websiteSaleHistory.length()-1));
334
						ssDetail.setAvgSalesWS(websiteAverageSale);
335
						ssDetail.setSalesHistoryEbay(ebaySaleHistory.substring(0, ebaySaleHistory.length()-1));
336
						ssDetail.setAvgSalesEbay(ebayAverageSale);
337
						ssDetail.setSalesHistorySD(snapdealSaleHistory.substring(0, snapdealSaleHistory.length()-1));
338
						ssDetail.setAvgSalesSD(snapdealAverageSale);
339
						ssDetail.setSalesHistoryFK(flipkartSaleHistory.substring(0, flipkartSaleHistory.length()-1));
340
						ssDetail.setAvgSalesFK(flipkartAverageSale);
341
						ssDetail.setSalesHistoryMFN(amzn_mfnSaleHistory.substring(0, amzn_mfnSaleHistory.length()-1));
342
						ssDetail.setAvgSalesMFN(amzn_mfnAverageSale);
343
						if(item.getCategory() == 10006 || item.getCategory() == 10010){
344
							movingStockSaleListMT.add(ssDetail);
345
						} else {
346
							movingStockSaleListEMT.add(ssDetail);
347
						} 
348
					}
349
				}
350
			}
351
 
352
			if(movingStockSaleListMT!=null && movingStockSaleListMT.size()>2){
353
				Collections.sort(movingStockSaleListMT, new MovingStockSaleDetailComparator());
354
			}
355
			if(movingStockSaleListEMT!=null && movingStockSaleListEMT.size()>2){
356
				Collections.sort(movingStockSaleListEMT, new MovingStockSaleDetailComparator());
357
			}
358
			if(slowMovingStockSaleListMT!=null && slowMovingStockSaleListMT.size()>2){
359
				Collections.sort(slowMovingStockSaleListMT, new SnmMovingStockSaleDetailComparator());
360
			}
361
			if(slowMovingStockSaleListEMT!=null && slowMovingStockSaleListEMT.size()>2){
362
				Collections.sort(slowMovingStockSaleListEMT, new SnmMovingStockSaleDetailComparator());
363
			}
364
			if(nonMovingStockSaleListMT!=null && nonMovingStockSaleListMT.size()>2){
365
				Collections.sort(nonMovingStockSaleListMT, new SnmMovingStockSaleDetailComparator());
366
			}
367
			if(nonMovingStockSaleListEMT!=null && nonMovingStockSaleListEMT.size()>2){
368
				Collections.sort(nonMovingStockSaleListEMT, new SnmMovingStockSaleDetailComparator());
369
			}
370
 
371
			StringBuffer sb = new StringBuffer();
372
			sb.append("<html>" );
373
			sb.append("<table border=\"1\" align=\"center\">"
374
					+ "<caption><b>" + "ITEMS TO REPLENISH" + "</b></caption>"
375
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
376
					+ "<td><b>" + "BRAND" + "</b></td>"
377
					+ "<td><b>" + "CATEGORY" + "</b></td>"
378
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
379
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
380
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
381
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
382
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
383
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
384
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
385
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
386
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
387
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
388
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
389
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
390
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
391
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
392
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
393
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
394
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
395
					+ "</tr>");
396
			int i=1;
397
			for(StockSaleDetail ssDetail  : movingStockSaleListMT){
398
				if(i==10){
399
					break;
400
				}
401
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
402
					+ "<td>" + ssDetail.getBrand() + "</td>"
403
					+ "<td>" + ssDetail.getCategory() + "</td>"
404
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
405
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
406
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
407
					+ "<td>" + ssDetail.getStockValue() + "</td>"
408
					+ "<td>" + ssDetail.getNodStock() + "</td>"
409
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
410
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
411
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
412
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
413
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
414
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
415
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
416
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
417
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
418
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
419
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
420
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
421
					+ "</tr>");
422
				i++;
423
			}
424
 
425
			sb.append("</table>" );
426
 
427
			sb.append("<table border=\"1\" align=\"center\">"
428
					+ "<caption><b>" + "SLOW MOVING ITEMS" + "</b></caption>"
429
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
430
					+ "<td><b>" + "BRAND" + "</b></td>"
431
					+ "<td><b>" + "CATEGORY" + "</b></td>"
432
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
433
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
434
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
435
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
436
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
437
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
438
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
439
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
440
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
441
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
442
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
443
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
444
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
445
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
446
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
447
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
448
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
449
					+ "</tr>");
450
			i=1;
451
			for(StockSaleDetail ssDetail  : slowMovingStockSaleListMT){
452
				if(i==10){
453
					break;
454
				}
455
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
456
					+ "<td>" + ssDetail.getBrand() + "</td>"
457
					+ "<td>" + ssDetail.getCategory() + "</td>"
458
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
459
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
460
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
461
					+ "<td>" + ssDetail.getStockValue() + "</td>"
462
					+ "<td>" + ssDetail.getNodStock() + "</td>"
463
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
464
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
465
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
466
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
467
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
468
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
469
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
470
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
471
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
472
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
473
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
474
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
475
					+ "</tr>");
476
				i++;
477
			}
478
 
479
			sb.append("</table>" );
480
 
481
			sb.append("<table border=\"1\" align=\"center\">"
482
					+ "<caption><b>" + "NON MOVING ITEMS" + "</b></caption>"
483
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
484
					+ "<td><b>" + "BRAND" + "</b></td>"
485
					+ "<td><b>" + "CATEGORY" + "</b></td>"
486
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
487
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
488
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
489
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
490
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
491
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
492
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
493
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
494
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
495
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
496
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
497
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
498
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
499
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
500
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
501
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
502
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
503
					+ "</tr>");
504
			i=1;
505
			for(StockSaleDetail ssDetail  : nonMovingStockSaleListMT){
506
				if(i==10){
507
					break;
508
				}
509
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
510
					+ "<td>" + ssDetail.getBrand() + "</td>"
511
					+ "<td>" + ssDetail.getCategory() + "</td>"
512
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
513
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
514
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
515
					+ "<td>" + ssDetail.getStockValue() + "</td>"
516
					+ "<td>" + ssDetail.getNodStock() + "</td>"
517
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
518
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
519
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
520
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
521
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
522
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
523
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
524
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
525
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
526
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
527
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
528
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
529
					+ "</tr>");
530
				i++;
531
			}
532
 
533
			sb.append("</table>");
534
			sb.append("</html>");
535
 
536
			BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/MobileTablets-StockSales-file.htm"));
537
			out.write(sb.toString());
538
			out.flush();
539
			out.close();
540
 
541
 
542
			sb = new StringBuffer();
543
			sb.append("<html>" );
544
			sb.append("<table border=\"1\" align=\"center\">"
545
					+ "<caption><b>" + "ITEMS TO REPLENISH" + "</b></caption>"
546
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
547
					+ "<td><b>" + "BRAND" + "</b></td>"
548
					+ "<td><b>" + "CATEGORY" + "</b></td>"
549
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
550
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
551
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
552
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
553
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
554
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
555
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
556
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
557
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
558
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
559
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
560
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
561
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
562
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
563
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
564
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
565
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
566
					+ "</tr>");
567
			i=1;
568
			for(StockSaleDetail ssDetail  : movingStockSaleListEMT){
569
				if(i==10){
570
					break;
571
				}
572
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
573
					+ "<td>" + ssDetail.getBrand() + "</td>"
574
					+ "<td>" + ssDetail.getCategory() + "</td>"
575
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
576
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
577
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
578
					+ "<td>" + ssDetail.getStockValue() + "</td>"
579
					+ "<td>" + ssDetail.getNodStock() + "</td>"
580
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
581
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
582
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
583
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
584
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
585
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
586
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
587
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
588
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
589
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
590
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
591
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
592
					+ "</tr>");
593
				i++;
594
			}
595
 
596
			sb.append("</table>" );
597
 
598
			sb.append("<table border=\"1\" align=\"center\">"
599
					+ "<caption><b>" + "SLOW MOVING ITEMS" + "</b></caption>"
600
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
601
					+ "<td><b>" + "BRAND" + "</b></td>"
602
					+ "<td><b>" + "CATEGORY" + "</b></td>"
603
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
604
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
605
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
606
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
607
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
608
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
609
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
610
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
611
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
612
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
613
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
614
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
615
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
616
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
617
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
618
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
619
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
620
					+ "</tr>");
621
			i=1;
622
			for(StockSaleDetail ssDetail  : slowMovingStockSaleListEMT){
623
				if(i==10){
624
					break;
625
				}
626
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
627
					+ "<td>" + ssDetail.getBrand() + "</td>"
628
					+ "<td>" + ssDetail.getCategory() + "</td>"
629
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
630
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
631
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
632
					+ "<td>" + ssDetail.getStockValue() + "</td>"
633
					+ "<td>" + ssDetail.getNodStock() + "</td>"
634
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
635
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
636
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
637
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
638
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
639
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
640
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
641
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
642
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
643
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
644
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
645
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
646
					+ "</tr>");
647
				i++;
648
			}
649
 
650
			sb.append("</table>" );
651
 
652
			sb.append("<table border=\"1\" align=\"center\">"
653
					+ "<caption><b>" + "NON MOVING ITEMS" + "</b></caption>"
654
					+ "<tr>" + "<td><b>" + "ITEM-ID" + "</b></td>" 
655
					+ "<td><b>" + "BRAND" + "</b></td>"
656
					+ "<td><b>" + "CATEGORY" + "</b></td>"
657
					+ "<td><b>" + "PRODUCT-GROUP" + "</b></td>"
658
					+ "<td><b>" + "PRODUCT-NAME" + "</b></td>"
659
					+ "<td><b>" + "STOCK-QTY" + "</b></td>"
660
					+ "<td><b>" + "STOCK-VALUE" + "</b></td>"
661
					+ "<td><b>" + "NOD-STOCK" + "</b></td>"
662
					+ "<td><b>" + "SALES-HISTORY-ALL" + "</b></td>"
663
					+ "<td><b>" + "AVG-SALE-ALL" + "</b></td>"
664
					+ "<td><b>" + "SALES-HISTORY-WS" + "</b></td>"
665
					+ "<td><b>" + "AVG-SALE-WS" + "</b></td>"
666
					+ "<td><b>" + "SALES-HISTORY-EBAY" + "</b></td>"
667
					+ "<td><b>" + "AVG-SALES-EBAY" + "</b></td>"
668
					+ "<td><b>" + "SALES-HISTORY-SD" + "</b></td>"
669
					+ "<td><b>" + "AVG-SALES-SD" + "</b></td>"
670
					+ "<td><b>" + "SALES-HISTORY-FK" + "</b></td>"
671
					+ "<td><b>" + "AVG-SALES-FK" + "</b></td>"
672
					+ "<td><b>" + "SALES-HISTORY-MFN" + "</b></td>"
673
					+ "<td><b>" + "AVG-SALES-MFN" + "</b></td>"
674
					+ "</tr>");
675
			i=1;
676
			for(StockSaleDetail ssDetail  : nonMovingStockSaleListEMT){
677
				if(i==10){
678
					break;
679
				}
680
				sb.append("<tr>" + "<td><b>" + ssDetail.getItemId() + "</b></td>" 
681
					+ "<td>" + ssDetail.getBrand() + "</td>"
682
					+ "<td>" + ssDetail.getCategory() + "</td>"
683
					+ "<td>" + ssDetail.getProductGroup() + "</td>"
684
					+ "<td>" + ssDetail.getBrand() +" "+ ssDetail.getModelName()+ " "+ssDetail.getModelNumber()+ " "+ssDetail.getColor() + "</td>"
685
					+ "<td>" + ssDetail.getStockQuantity() + "</td>"
686
					+ "<td>" + ssDetail.getStockValue() + "</td>"
687
					+ "<td>" + ssDetail.getNodStock() + "</td>"
688
					+ "<td>" + ssDetail.getSalesHistoryAll() + "</td>"
689
					+ "<td>" + ssDetail.getAvgSalesAll() + "</td>"
690
					+ "<td>" + ssDetail.getSalesHistoryWS() + "</td>"
691
					+ "<td>" + ssDetail.getAvgSalesWS() + "</td>"
692
					+ "<td>" + ssDetail.getSalesHistoryEbay() + "</td>"
693
					+ "<td>" + ssDetail.getAvgSalesEbay() + "</td>"
694
					+ "<td>" + ssDetail.getSalesHistorySD() + "</td>"
695
					+ "<td>" + ssDetail.getAvgSalesSD() + "</td>"
696
					+ "<td>" + ssDetail.getSalesHistoryFK() + "</td>"
697
					+ "<td>" + ssDetail.getAvgSalesFK() + "</td>"
698
					+ "<td>" + ssDetail.getSalesHistoryMFN() + "</td>"
699
					+ "<td>" + ssDetail.getAvgSalesMFN() + "</td>"
700
					+ "</tr>");
701
				i++;
702
			}
703
 
704
			sb.append("</table>");
705
			sb.append("</html>");
706
 
707
			out = new BufferedWriter(new FileWriter("/tmp/ExceptMobileTablets-StockSales-file.htm"));
708
			out.write(sb.toString());
709
			out.flush();
710
			out.close();
711
 
12177 manish.sha 712
			createXlsFile(movingStockSaleListMT, slowMovingStockSaleListMT, nonMovingStockSaleListMT, true);
713
			createXlsFile(movingStockSaleListEMT, slowMovingStockSaleListEMT, nonMovingStockSaleListEMT, false);
12166 manish.sha 714
 
715
 
716
			GmailUtils mailer = new GmailUtils();
12177 manish.sha 717
			mailer.sendSSLMessage(mailTo, "Stock Sales Report - Mobile And Tablets ", "", senderAccountMail, senderAccountPswd, tmpDir +"/"+ stockSalesReportMT.getName(), "/tmp/MobileTablets-StockSales-file.htm");
718
			mailer.sendSSLMessage(mailTo, "Stock Sales Report - Except Mobile And Tablets ", "", senderAccountMail, senderAccountPswd, tmpDir +"/"+stockSalesReportEMT.getName(), "/tmp/ExceptMobileTablets-StockSales-file.htm");
12166 manish.sha 719
		} catch (Exception e) {
720
			logger.error("Error in generating/sending Stock Sales Report", e);
721
		}
722
 
723
 
724
	}
725
 
12177 manish.sha 726
	private static void createXlsFile(List<StockSaleDetail> movingStockSaleList, 
12166 manish.sha 727
			List<StockSaleDetail> slowMovingStockSaleList, 
728
			List<StockSaleDetail> nonMovingStockSaleList, 
729
			boolean mobTab) {
730
		try{
12177 manish.sha 731
			HSSFWorkbook workbook = new HSSFWorkbook();
732
			HSSFSheet movingSheet = workbook.createSheet("Moving-Stock");
733
			HSSFSheet nonMovingSheet = workbook.createSheet("Non-Moving-Stock");
734
			HSSFSheet slowMovingSheet = workbook.createSheet("Slow-Moving-Stock");
12166 manish.sha 735
			Row row = movingSheet.createRow(0);
736
 
737
			row.createCell(0).setCellValue("ItemId");
738
			row.createCell(1).setCellValue("Category");
739
			row.createCell(2).setCellValue("ProductGroup");
740
			row.createCell(3).setCellValue("Brand");
741
			row.createCell(4).setCellValue("Model Name");
742
			row.createCell(5).setCellValue("Model Number");
743
			row.createCell(6).setCellValue("Color");
744
			row.createCell(7).setCellValue("Product");
745
			row.createCell(8).setCellValue("Stock Qty");
746
			row.createCell(9).setCellValue("Stock Value");
747
			row.createCell(10).setCellValue("NOD Stock");
748
			row.createCell(11).setCellValue("Sales History(All-Sources)");
749
			row.createCell(12).setCellValue("Avg Sales(All-Sources)");
750
			row.createCell(13).setCellValue("Sales History(Website)");
751
			row.createCell(14).setCellValue("Avg Sales(Website)");
752
			row.createCell(15).setCellValue("Sales History(Ebay)");
753
			row.createCell(16).setCellValue("Avg Sales(Ebay)");
754
			row.createCell(17).setCellValue("Sales History(Snapdeal)");
755
			row.createCell(18).setCellValue("Avg Sales(Snapdeal)");
756
			row.createCell(19).setCellValue("Sales History(Flipkart)");
757
			row.createCell(20).setCellValue("Avg Sales(Flipkart)");
758
			row.createCell(21).setCellValue("Sales History(Amazon-MFN)");
759
			row.createCell(22).setCellValue("Avg Sales(Amazon-MFN)");
760
 
761
			int i=1;
762
			for(StockSaleDetail ssDetail : movingStockSaleList){
763
				row = movingSheet.createRow(i);
764
				row.createCell(0).setCellValue(ssDetail.getItemId()+"");
765
				row.createCell(1).setCellValue(ssDetail.getCategory());
766
				row.createCell(2).setCellValue(ssDetail.getProductGroup());
767
				row.createCell(3).setCellValue(ssDetail.getBrand());
768
				row.createCell(4).setCellValue(ssDetail.getModelName());
769
				row.createCell(5).setCellValue(ssDetail.getModelNumber());
770
				row.createCell(6).setCellValue(ssDetail.getColor());
771
				row.createCell(7).setCellValue(ssDetail.getBrand()+" "+ssDetail.getModelName()+" "+ssDetail.getModelNumber()+" "+ssDetail.getColor());
772
				row.createCell(8).setCellValue(ssDetail.getStockQuantity()+"");
773
				row.createCell(9).setCellValue(ssDetail.getStockValue()+"");
774
				row.createCell(10).setCellValue(ssDetail.getNodStock()+"");
775
				row.createCell(11).setCellValue(ssDetail.getSalesHistoryAll());
776
				row.createCell(12).setCellValue(ssDetail.getAvgSalesAll()+"");
777
				row.createCell(13).setCellValue(ssDetail.getSalesHistoryWS());
778
				row.createCell(14).setCellValue(ssDetail.getAvgSalesWS()+"");
779
				row.createCell(15).setCellValue(ssDetail.getSalesHistoryEbay());
780
				row.createCell(16).setCellValue(ssDetail.getAvgSalesEbay()+"");
781
				row.createCell(17).setCellValue(ssDetail.getSalesHistorySD());
782
				row.createCell(18).setCellValue(ssDetail.getAvgSalesSD()+"");
783
				row.createCell(19).setCellValue(ssDetail.getSalesHistoryFK());
784
				row.createCell(20).setCellValue(ssDetail.getAvgSalesFK()+"");
785
				row.createCell(21).setCellValue(ssDetail.getSalesHistoryMFN());
786
				row.createCell(22).setCellValue(ssDetail.getAvgSalesMFN());
787
				i++;
788
			}
789
 
790
			row = nonMovingSheet.createRow(0);
791
 
792
			row.createCell(0).setCellValue("ItemId");
793
			row.createCell(1).setCellValue("Category");
794
			row.createCell(2).setCellValue("ProductGroup");
795
			row.createCell(3).setCellValue("Brand");
796
			row.createCell(4).setCellValue("Model Name");
797
			row.createCell(5).setCellValue("Model Number");
798
			row.createCell(6).setCellValue("Color");
799
			row.createCell(7).setCellValue("Product");
800
			row.createCell(8).setCellValue("Stock Qty");
801
			row.createCell(9).setCellValue("Stock Value");
802
			row.createCell(10).setCellValue("NOD Stock");
803
			row.createCell(11).setCellValue("Sales History(All-Sources)");
804
			row.createCell(12).setCellValue("Avg Sales(All-Sources)");
805
			row.createCell(13).setCellValue("Sales History(Website)");
806
			row.createCell(14).setCellValue("Avg Sales(Website)");
807
			row.createCell(15).setCellValue("Sales History(Ebay)");
808
			row.createCell(16).setCellValue("Avg Sales(Ebay)");
809
			row.createCell(17).setCellValue("Sales History(Snapdeal)");
810
			row.createCell(18).setCellValue("Avg Sales(Snapdeal)");
811
			row.createCell(19).setCellValue("Sales History(Flipkart)");
812
			row.createCell(20).setCellValue("Avg Sales(Flipkart)");
813
			row.createCell(21).setCellValue("Sales History(Amazon-MFN)");
814
			row.createCell(22).setCellValue("Avg Sales(Amazon-MFN)");
815
 
816
			i=1;
817
			for(StockSaleDetail ssDetail : nonMovingStockSaleList){
12179 manish.sha 818
				row = nonMovingSheet.createRow(i);
12166 manish.sha 819
				row.createCell(0).setCellValue(ssDetail.getItemId()+"");
820
				row.createCell(1).setCellValue(ssDetail.getCategory());
821
				row.createCell(2).setCellValue(ssDetail.getProductGroup());
822
				row.createCell(3).setCellValue(ssDetail.getBrand());
823
				row.createCell(4).setCellValue(ssDetail.getModelName());
824
				row.createCell(5).setCellValue(ssDetail.getModelNumber());
825
				row.createCell(6).setCellValue(ssDetail.getColor());
826
				row.createCell(7).setCellValue(ssDetail.getBrand()+" "+ssDetail.getModelName()+" "+ssDetail.getModelNumber()+" "+ssDetail.getColor());
827
				row.createCell(8).setCellValue(ssDetail.getStockQuantity()+"");
828
				row.createCell(9).setCellValue(ssDetail.getStockValue()+"");
829
				row.createCell(10).setCellValue(ssDetail.getNodStock()+"");
830
				row.createCell(11).setCellValue(ssDetail.getSalesHistoryAll());
831
				row.createCell(12).setCellValue(ssDetail.getAvgSalesAll()+"");
832
				row.createCell(13).setCellValue(ssDetail.getSalesHistoryWS());
833
				row.createCell(14).setCellValue(ssDetail.getAvgSalesWS()+"");
834
				row.createCell(15).setCellValue(ssDetail.getSalesHistoryEbay());
835
				row.createCell(16).setCellValue(ssDetail.getAvgSalesEbay()+"");
836
				row.createCell(17).setCellValue(ssDetail.getSalesHistorySD());
837
				row.createCell(18).setCellValue(ssDetail.getAvgSalesSD()+"");
838
				row.createCell(19).setCellValue(ssDetail.getSalesHistoryFK());
839
				row.createCell(20).setCellValue(ssDetail.getAvgSalesFK()+"");
840
				row.createCell(21).setCellValue(ssDetail.getSalesHistoryMFN());
841
				row.createCell(22).setCellValue(ssDetail.getAvgSalesMFN());
842
				i++;
843
			}
844
 
845
			row = slowMovingSheet.createRow(0);
846
 
847
			row.createCell(0).setCellValue("ItemId");
848
			row.createCell(1).setCellValue("Category");
849
			row.createCell(2).setCellValue("ProductGroup");
850
			row.createCell(3).setCellValue("Brand");
851
			row.createCell(4).setCellValue("Model Name");
852
			row.createCell(5).setCellValue("Model Number");
853
			row.createCell(6).setCellValue("Color");
854
			row.createCell(7).setCellValue("Product");
855
			row.createCell(8).setCellValue("Stock Qty");
856
			row.createCell(9).setCellValue("Stock Value");
857
			row.createCell(10).setCellValue("NOD Stock");
858
			row.createCell(11).setCellValue("Sales History(All-Sources)");
859
			row.createCell(12).setCellValue("Avg Sales(All-Sources)");
860
			row.createCell(13).setCellValue("Sales History(Website)");
861
			row.createCell(14).setCellValue("Avg Sales(Website)");
862
			row.createCell(15).setCellValue("Sales History(Ebay)");
863
			row.createCell(16).setCellValue("Avg Sales(Ebay)");
864
			row.createCell(17).setCellValue("Sales History(Snapdeal)");
865
			row.createCell(18).setCellValue("Avg Sales(Snapdeal)");
866
			row.createCell(19).setCellValue("Sales History(Flipkart)");
867
			row.createCell(20).setCellValue("Avg Sales(Flipkart)");
868
			row.createCell(21).setCellValue("Sales History(Amazon-MFN)");
869
			row.createCell(22).setCellValue("Avg Sales(Amazon-MFN)");
870
 
871
			i=1;
872
			for(StockSaleDetail ssDetail : slowMovingStockSaleList){
12179 manish.sha 873
				row = slowMovingSheet.createRow(i);
12166 manish.sha 874
				row.createCell(0).setCellValue(ssDetail.getItemId()+"");
875
				row.createCell(1).setCellValue(ssDetail.getCategory());
876
				row.createCell(2).setCellValue(ssDetail.getProductGroup());
877
				row.createCell(3).setCellValue(ssDetail.getBrand());
878
				row.createCell(4).setCellValue(ssDetail.getModelName());
879
				row.createCell(5).setCellValue(ssDetail.getModelNumber());
880
				row.createCell(6).setCellValue(ssDetail.getColor());
881
				row.createCell(7).setCellValue(ssDetail.getBrand()+" "+ssDetail.getModelName()+" "+ssDetail.getModelNumber()+" "+ssDetail.getColor());
882
				row.createCell(8).setCellValue(ssDetail.getStockQuantity()+"");
883
				row.createCell(9).setCellValue(ssDetail.getStockValue()+"");
884
				row.createCell(10).setCellValue(ssDetail.getNodStock()+"");
885
				row.createCell(11).setCellValue(ssDetail.getSalesHistoryAll());
886
				row.createCell(12).setCellValue(ssDetail.getAvgSalesAll()+"");
887
				row.createCell(13).setCellValue(ssDetail.getSalesHistoryWS());
888
				row.createCell(14).setCellValue(ssDetail.getAvgSalesWS()+"");
889
				row.createCell(15).setCellValue(ssDetail.getSalesHistoryEbay());
890
				row.createCell(16).setCellValue(ssDetail.getAvgSalesEbay()+"");
891
				row.createCell(17).setCellValue(ssDetail.getSalesHistorySD());
892
				row.createCell(18).setCellValue(ssDetail.getAvgSalesSD()+"");
893
				row.createCell(19).setCellValue(ssDetail.getSalesHistoryFK());
894
				row.createCell(20).setCellValue(ssDetail.getAvgSalesFK()+"");
895
				row.createCell(21).setCellValue(ssDetail.getSalesHistoryMFN());
896
				row.createCell(22).setCellValue(ssDetail.getAvgSalesMFN());
897
				i++;
898
			}
899
 
12177 manish.sha 900
			FileOutputStream out = null;
12166 manish.sha 901
			if(mobTab){
902
				out = new FileOutputStream(stockSalesReportMT);
903
			} else {
904
				out = new FileOutputStream(stockSalesReportEMT);
905
			}
12177 manish.sha 906
			workbook.write(out);
12166 manish.sha 907
			out.close();
908
			System.out.println("Excel written successfully..");
909
		}catch(Exception e){
910
			e.printStackTrace();
911
		}
912
 
913
	}
914
 
915
	public static void main(String[] args) {
916
		createAndMailReport();
917
	}
918
 
919
}