Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21786 ashik.ali 1
package com.spice.profitmandi.common.util;
2
 
29930 amit.gupta 3
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
4
import com.spice.profitmandi.common.model.*;
5
import in.shop2020.model.v1.order.WalletReferenceType;
24052 amit.gupta 6
import org.apache.logging.log4j.LogManager;
7
import org.apache.logging.log4j.Logger;
21786 ashik.ali 8
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
29930 amit.gupta 9
import org.apache.poi.ss.usermodel.*;
21786 ashik.ali 10
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
22470 ashik.ali 11
import org.apache.poi.ss.util.CellRangeAddress;
12
import org.apache.poi.xssf.streaming.SXSSFSheet;
13
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
22247 amit.gupta 14
import org.apache.poi.xssf.usermodel.XSSFRow;
21786 ashik.ali 15
import org.apache.poi.xssf.usermodel.XSSFSheet;
16
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
17
 
29930 amit.gupta 18
import java.io.IOException;
19
import java.io.InputStream;
20
import java.io.OutputStream;
21
import java.time.LocalDateTime;
22
import java.time.ZoneId;
23
import java.util.*;
21786 ashik.ali 24
 
25
public class ExcelUtils {
26
	private static final String TAG_ID = "Tag Id";
27
	private static final String TAG_LABEL = "Tag Label";
28
	private static final String ITEM_ID = "Item Id";
29
	private static final String BRAND = "Brand";
30
	private static final String MODEL_NAME = "Model Name";
31
	private static final String MODEL_NUMBER = "Model Number";
32
	private static final String COLOR = "Color";
33
	private static final String SELLING_PRICE = "Selling Price";
22204 amit.gupta 34
	private static final String MOP = "MOP";
21786 ashik.ali 35
	private static final String SUPPORT_PRICE = "Support Price";
36
	private static final String START_DATE = "Start Date";
37
	private static final String TAG_LISTING = "Tag Listing";
24107 govind 38
	private static final String FOFO_ID = "fofoId";
39
	private static final String STORE_NAME = "storeName";
40
	private static final String EMAIL = "email";
24119 govind 41
	private static final String TARGET_VALUE = "targetValue";
42
 
27064 amit.gupta 43
	private static final List<WalletReferenceType> BULK_WALLET_REFERENCES = Arrays.asList(
27390 amit.gupta 44
			WalletReferenceType.SCHEME_OUT,
27064 amit.gupta 45
			WalletReferenceType.BRAND_FEE, WalletReferenceType.FESTIVE_OFFER, WalletReferenceType.GOODWILL_GESTURE,
46
			WalletReferenceType.EOL, WalletReferenceType.ACTIVATION_SCHEME, WalletReferenceType.BRAND_PAYOUT,
47
			WalletReferenceType.SALES_MARKETING_SUPPORT, WalletReferenceType.INVESTMENT_PAYOUT,
27115 amit.gupta 48
			WalletReferenceType.CATEGORY_SPL_PAYOUT, WalletReferenceType.REFERRAL_INCENTIVES, WalletReferenceType.OTHERS
27064 amit.gupta 49
 
50
	);
51
 
23568 govind 52
	private static final Logger LOGGER = LogManager.getLogger(ExcelUtils.class);
24119 govind 53
 
54
	public static void main(String[] args) throws Throwable {
55
		// List<Integer> intervals = Arrays.asList(5, 10, 15, 20, 25);
56
		// writeInventoryItemAgingModels(inventoryItemAgingModels, intervals);
21786 ashik.ali 57
	}
24119 govind 58
 
22924 ashik.ali 59
	public static List<TagListingModel> parse(InputStream inputStream) throws Exception {
24119 govind 60
 
21786 ashik.ali 61
		List<TagListingModel> tagListings = new ArrayList<>();
62
		XSSFWorkbook myWorkBook = null;
24119 govind 63
		try {
64
			// FileInputStream fileInputStream = new
65
			// FileInputStream("/home/ashikali/tag_listing1.xlsx");
66
			myWorkBook = new XSSFWorkbook(inputStream);
67
 
21786 ashik.ali 68
			myWorkBook.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
24119 govind 69
			// Return first sheet from the XLSX workbook
21786 ashik.ali 70
			XSSFSheet mySheet = myWorkBook.getSheetAt(0);
22247 amit.gupta 71
			LOGGER.info("rowCellNum {}", mySheet.getLastRowNum());
24119 govind 72
 
73
			for (int rowNumber = 1; rowNumber <= mySheet.getLastRowNum(); rowNumber++) {
22247 amit.gupta 74
				XSSFRow row = mySheet.getRow(rowNumber);
75
				LOGGER.info("row {}", row);
76
				TagListingModel tagListing = new TagListingModel();
24119 govind 77
				if (row.getCell(0) != null && row.getCell(0).getCellTypeEnum() == CellType.NUMERIC) {
22247 amit.gupta 78
					tagListing.setTagId((Double.valueOf(row.getCell(0).getNumericCellValue())).intValue());
24119 govind 79
				} else {
80
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(TAG_ID,
81
							row.getCell(0).toString(), "TGLSTNG_VE_1010");
22226 amit.gupta 82
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
21786 ashik.ali 83
					throw profitMandiBusinessException;
84
				}
24119 govind 85
 
86
				if (row.getCell(2) != null && row.getCell(2).getCellTypeEnum() == CellType.NUMERIC) {
22247 amit.gupta 87
					tagListing.setItemId(Double.valueOf(row.getCell(2).toString()).intValue());
24119 govind 88
				} else {
89
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(
90
							ITEM_ID, row.getCell(2).toString(), "TGLSTNG_VE_1010");
22247 amit.gupta 91
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
92
					throw profitMandiBusinessException;
93
				}
22204 amit.gupta 94
 
24119 govind 95
				if (row.getCell(7) != null && row.getCell(7).getCellTypeEnum() == CellType.NUMERIC) {
22247 amit.gupta 96
					tagListing.setSellingPrice(Double.valueOf(row.getCell(7).toString()).floatValue());
24119 govind 97
				} else {
98
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(
99
							SELLING_PRICE, row.getCell(7), "TGLSTNG_VE_1010");
22226 amit.gupta 100
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
22209 amit.gupta 101
					throw profitMandiBusinessException;
21786 ashik.ali 102
				}
24119 govind 103
				if (row.getCell(8) != null && row.getCell(8).getCellTypeEnum() == CellType.NUMERIC) {
22247 amit.gupta 104
					tagListing.setMop(Double.valueOf(row.getCell(8).toString()).floatValue());
24119 govind 105
				} else {
106
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(MOP,
107
							row.getCell(8), "TGLSTNG_VE_1010");
22247 amit.gupta 108
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
109
					throw profitMandiBusinessException;
110
				}
24119 govind 111
				if (row.getCell(9) != null && row.getCell(9).getCellTypeEnum() == CellType.NUMERIC) {
22247 amit.gupta 112
					tagListing.setSupportPrice(Double.valueOf(row.getCell(9).toString()).floatValue());
24119 govind 113
				} else {
114
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(
115
							SUPPORT_PRICE, row.getCell(9).toString(), "TGLSTNG_VE_1010");
22247 amit.gupta 116
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
117
					throw profitMandiBusinessException;
118
				}
24119 govind 119
				if (row.getCell(10) != null && row.getCell(10).getCellTypeEnum() == CellType.NUMERIC) {
22563 amit.gupta 120
					tagListing.setMaxDiscountPrice(Double.valueOf(row.getCell(10).toString()).floatValue());
24119 govind 121
				} else {
122
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(
123
							SUPPORT_PRICE, row.getCell(10).toString(), "TGLSTNG_VE_1010");
22563 amit.gupta 124
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
125
					throw profitMandiBusinessException;
126
				}
24119 govind 127
				if (row.getCell(11) != null && HSSFDateUtil.isCellDateFormatted(row.getCell(11))) {
22865 amit.gupta 128
					Date date = row.getCell(11).getDateCellValue();
22247 amit.gupta 129
					LocalDateTime startDate = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
130
					tagListing.setStartDate(startDate);
24119 govind 131
				} else {
132
					ProfitMandiBusinessException profitMandiBusinessException = new ProfitMandiBusinessException(
133
							START_DATE, row.getCell(11).toString(), "TGLSTNG_VE_1010");
22247 amit.gupta 134
					LOGGER.error("Excel file parse error : ", profitMandiBusinessException);
24119 govind 135
					throw profitMandiBusinessException;
22247 amit.gupta 136
				}
137
				tagListings.add(tagListing);
21786 ashik.ali 138
			}
139
			myWorkBook.close();
24119 govind 140
		} catch (IOException ioException) {
22206 amit.gupta 141
			ioException.printStackTrace();
24119 govind 142
			throw new ProfitMandiBusinessException(ProfitMandiConstants.EXCEL_FILE, ioException.getMessage(),
143
					"EXL_VE_1000");
22247 amit.gupta 144
		} finally {
24119 govind 145
			if (myWorkBook != null) {
21786 ashik.ali 146
				try {
147
					myWorkBook.close();
148
				} catch (IOException e) {
149
					// TODO Auto-generated catch block
150
					e.printStackTrace();
151
				}
152
			}
153
		}
154
		return tagListings;
155
	}
24119 govind 156
 
157
	public static void writeInventoryItemAgingModels(List<InventoryItemAgingModel> inventoryItemAgingModels,
158
			List<Integer> intervals, OutputStream outputStream) {
22470 ashik.ali 159
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 160
 
161
		// CreationHelper createHelper = workbook.getCreationHelper();
26976 amit.gupta 162
		boolean showPartner = inventoryItemAgingModels.get(0).getFofoId() > 0;
26974 amit.gupta 163
		int nonValueColumns = showPartner ? 9 : 6;
22470 ashik.ali 164
		SXSSFSheet sheet = workbook.createSheet("InventoryItemAging");
165
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
166
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
167
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
168
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
169
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));
170
		sheet.addMergedRegion(new CellRangeAddress(0, 1, 5, 5));
27064 amit.gupta 171
 
26961 amit.gupta 172
		int rowIndex = 0;
173
		Row rowHeader = sheet.createRow(rowIndex++);
174
		Row rowPriceQuantity = sheet.createRow(rowIndex++);
27064 amit.gupta 175
		int i = 0;
176
		if (showPartner) {
26961 amit.gupta 177
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 6, 6));
178
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 7, 7));
26974 amit.gupta 179
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 8, 8));
26983 amit.gupta 180
		}
181
		sheet.trackAllColumnsForAutoSizing();
27064 amit.gupta 182
		if (showPartner) {
26961 amit.gupta 183
			Cell cellFofoIdHeader = rowHeader.createCell(i++);
184
			cellFofoIdHeader.setCellValue("Partner Id");
185
			Cell cellStoreCodeHeader = rowHeader.createCell(i++);
186
			cellStoreCodeHeader.setCellValue("Store Code");
187
			Cell cellStoreNameHeader = rowHeader.createCell(i++);
188
			cellStoreNameHeader.setCellValue("Store Name");
189
		}
190
		Cell cellItemIdHeader = rowHeader.createCell(i++);
22470 ashik.ali 191
		cellItemIdHeader.setCellValue("Item Id");
26961 amit.gupta 192
		Cell cellBrandHeader = rowHeader.createCell(i++);
22470 ashik.ali 193
		cellBrandHeader.setCellValue("Brand");
26961 amit.gupta 194
		Cell cellModelNameHeader = rowHeader.createCell(i++);
22470 ashik.ali 195
		cellModelNameHeader.setCellValue("Model Name");
26961 amit.gupta 196
		Cell cellModelNumberHeader = rowHeader.createCell(i++);
22470 ashik.ali 197
		cellModelNumberHeader.setCellValue("Model Number");
26961 amit.gupta 198
		Cell cellColorHeader = rowHeader.createCell(i++);
22470 ashik.ali 199
		cellColorHeader.setCellValue("Color");
26961 amit.gupta 200
		Cell cellTypeHeader = rowHeader.createCell(i++);
22470 ashik.ali 201
		cellTypeHeader.setCellValue("Item Type");
26961 amit.gupta 202
		for (int index = 0; index <= intervals.size(); index++) {
203
			Cell cellHeader = rowHeader.createCell(i++);
24119 govind 204
			if (index == 0) {
205
				cellHeader.setCellValue("Less Than " + intervals.get(index) + " Days");
206
			} else if (index < intervals.size()) {
22470 ashik.ali 207
				cellHeader.setCellValue(intervals.get(index - 1) + " - " + intervals.get(index) + " Days");
24119 govind 208
			} else {
209
				cellHeader.setCellValue("More Than " + intervals.get(index - 1) + " Days");
22470 ashik.ali 210
			}
27064 amit.gupta 211
			sheet.addMergedRegion(new CellRangeAddress(0, 0, i - 1, i));
26961 amit.gupta 212
			rowHeader.createCell(i++);
27064 amit.gupta 213
			Cell cellPrice = rowPriceQuantity.createCell(i - 2);
22470 ashik.ali 214
			cellPrice.setCellValue("Price");
27064 amit.gupta 215
			Cell cellQuantity = rowPriceQuantity.createCell(i - 1);
22470 ashik.ali 216
			cellQuantity.setCellValue("Quantity");
217
		}
26961 amit.gupta 218
 
22470 ashik.ali 219
		Font font = workbook.createFont();
26961 amit.gupta 220
		font.setBold(true);
22470 ashik.ali 221
		CellStyle cellStyle = workbook.createCellStyle();
222
		cellStyle.setFont(font);
27064 amit.gupta 223
		for (int j = 0; j < nonValueColumns + ((intervals.size() + 1)) * 2; j++) {
26961 amit.gupta 224
			rowHeader.getCell(j).setCellStyle(cellStyle);
26975 amit.gupta 225
			if (rowPriceQuantity.getCell(j) != null) {
226
				rowPriceQuantity.getCell(j).setCellStyle(cellStyle);
22470 ashik.ali 227
			}
228
		}
26961 amit.gupta 229
		for (InventoryItemAgingModel inventoryItemAgingModel : inventoryItemAgingModels) {
27064 amit.gupta 230
			i = 0;
26961 amit.gupta 231
			Row rowValues = sheet.createRow(rowIndex++);
27064 amit.gupta 232
			if (showPartner) {
26983 amit.gupta 233
				rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getFofoId());
234
				rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getStoreCode());
235
				rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getStoreName());
26961 amit.gupta 236
			}
237
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getItemId());
238
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getBrand());
239
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getModelName());
240
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getModelNumber());
241
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getColor());
242
			rowValues.createCell(i++).setCellValue(inventoryItemAgingModel.getItemType().toString());
24119 govind 243
			List<InventoryItemAgingValue> inventoryItemAgingValues = inventoryItemAgingModel.getValues();
244
			// LOGGER.info("inventoryItemAgingValues {}", inventoryItemAgingValues);
26961 amit.gupta 245
			for (InventoryItemAgingValue inventoryItemAgingValue : inventoryItemAgingValues) {
24119 govind 246
				if (inventoryItemAgingValue != null) {
26961 amit.gupta 247
					rowValues.createCell(i++).setCellValue(inventoryItemAgingValue.getPrice());
248
					rowValues.createCell(i++).setCellValue(inventoryItemAgingValue.getQuantity());
24119 govind 249
				} else {
26961 amit.gupta 250
					rowValues.createCell(i++).setCellValue("-");
251
					rowValues.createCell(i++).setCellValue("-");
24119 govind 252
				}
253
			}
254
		}
255
 
27064 amit.gupta 256
		for (int index = 0; index < nonValueColumns + ((intervals.size() + 1) * 2); index++) {
22470 ashik.ali 257
			sheet.autoSizeColumn(index);
258
		}
24119 govind 259
 
260
		try {
22486 ashik.ali 261
			workbook.write(outputStream);
24119 govind 262
			workbook.close();
263
		} catch (IOException ioException) {
264
			LOGGER.error("Unable to generate excel file", ioException);
265
		}
22470 ashik.ali 266
	}
24119 govind 267
 
25380 amit.gupta 268
	public static void writeItemCompleteLedgerModels(
269
			Map<String, List<ItemCompleteLedgerModel>> itemCompleteLedgerModelsMap, OutputStream outputStream) {
22521 ashik.ali 270
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 271
 
272
		// CreationHelper createHelper = workbook.getCreationHelper();
273
 
25380 amit.gupta 274
		for (Map.Entry<String, List<ItemCompleteLedgerModel>> itemCompleteLedgerModelsEntry : itemCompleteLedgerModelsMap
275
				.entrySet()) {
24215 amit.gupta 276
			SXSSFSheet sheet = workbook.createSheet(itemCompleteLedgerModelsEntry.getKey());
277
			List<ItemCompleteLedgerModel> itemCompleteLedgerModels = itemCompleteLedgerModelsEntry.getValue();
278
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0));
279
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 1, 1));
280
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 2, 2));
281
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 3, 3));
282
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 4, 4));
283
			sheet.addMergedRegion(new CellRangeAddress(0, 1, 5, 5));
284
			sheet.trackAllColumnsForAutoSizing();
25380 amit.gupta 285
 
24215 amit.gupta 286
			Row rowHeader = sheet.createRow(0);
287
			Cell cellItemIdHeader = rowHeader.createCell(0);
288
			cellItemIdHeader.setCellValue("Item Id");
289
			Cell cellBrandHeader = rowHeader.createCell(1);
290
			cellBrandHeader.setCellValue("Brand");
291
			Cell cellModelNameHeader = rowHeader.createCell(2);
292
			cellModelNameHeader.setCellValue("Model Name");
293
			Cell cellModelNumberHeader = rowHeader.createCell(3);
294
			cellModelNumberHeader.setCellValue("Model Number");
295
			Cell cellColorHeader = rowHeader.createCell(4);
296
			cellColorHeader.setCellValue("Color");
297
			Cell cellTypeHeader = rowHeader.createCell(5);
298
			cellTypeHeader.setCellValue("Item Type");
299
			Cell cellOpeningBalanceHeader = rowHeader.createCell(6);
300
			cellOpeningBalanceHeader.setCellValue("Opening Balance");
301
			Cell cellInwardsHeader = rowHeader.createCell(9);
302
			cellInwardsHeader.setCellValue("Inwards");
303
			Cell cellOutwardsHeader = rowHeader.createCell(12);
304
			cellOutwardsHeader.setCellValue("Outwards");
305
			Cell cellClosingBalanceHeader = rowHeader.createCell(15);
306
			cellClosingBalanceHeader.setCellValue("Closing Balance");
307
			Row rowQuantityRateValue = sheet.createRow(1);
25380 amit.gupta 308
 
24215 amit.gupta 309
			for (int index = 6; index < 18; index = index + 3) {
310
				Cell cellQuantityHeader = rowQuantityRateValue.createCell(index);
311
				cellQuantityHeader.setCellValue("Quantity");
312
				Cell cellRateHeader = rowQuantityRateValue.createCell(index + 1);
313
				cellRateHeader.setCellValue("Rate");
314
				Cell cellValueHeader = rowQuantityRateValue.createCell(index + 2);
315
				cellValueHeader.setCellValue("Value");
316
				sheet.addMergedRegion(new CellRangeAddress(0, 0, index, index + 2));
22521 ashik.ali 317
			}
24215 amit.gupta 318
			Font font = workbook.createFont();
319
			CellStyle cellStyle = workbook.createCellStyle();
320
			font.setBold(true);
321
			cellStyle.setAlignment(HorizontalAlignment.CENTER);
322
			// font.setFontHeight((short)16);
323
			cellStyle.setFont(font);
324
			for (int i = 0; i < 18; i++) {
325
				if (rowHeader.getCell(i) != null) {
326
					rowHeader.getCell(i).setCellStyle(cellStyle);
327
				}
24119 govind 328
			}
24215 amit.gupta 329
			int openingQuantityTotal = 0;
330
			float openingValueTotal = 0;
331
			int inwardsQuantityTotal = 0;
332
			float inwardsValueTotal = 0;
333
			int outwardsQuantityTotal = 0;
334
			float outwardsValueTotal = 0;
335
			int closingQuantityTotal = 0;
336
			float closingValueTotal = 0;
337
			for (int index = 0; index < itemCompleteLedgerModels.size(); index++) {
338
				ItemCompleteLedgerModel itemCompleteLedgerModel = itemCompleteLedgerModels.get(index);
339
				Row rowValues = sheet.createRow(index + 2);
340
				Cell cellItemId = rowValues.createCell(0);
341
				cellItemId.setCellValue(itemCompleteLedgerModel.getItemValue().getItemId());
342
				Cell cellBrand = rowValues.createCell(1);
343
				cellBrand.setCellValue(itemCompleteLedgerModel.getItemValue().getBrand());
344
				Cell cellModelName = rowValues.createCell(2);
345
				cellModelName.setCellValue(itemCompleteLedgerModel.getItemValue().getModelName());
346
				Cell cellModelNumber = rowValues.createCell(3);
347
				cellModelNumber.setCellValue(itemCompleteLedgerModel.getItemValue().getModelNumber());
348
				Cell cellColor = rowValues.createCell(4);
349
				cellColor.setCellValue(itemCompleteLedgerModel.getItemValue().getColor());
350
				Cell cellType = rowValues.createCell(5);
351
				cellType.setCellValue(itemCompleteLedgerModel.getItemValue().getItemType().toString());
352
				Cell cellOpeningQuantity = rowValues.createCell(6);
353
				Cell cellOpeningRate = rowValues.createCell(7);
354
				Cell cellOpeningValue = rowValues.createCell(8);
355
				if (itemCompleteLedgerModel.getOpeningLedger() == null) {
356
					cellOpeningQuantity.setCellValue("-");
357
					cellOpeningRate.setCellValue("-");
358
					cellOpeningValue.setCellValue("-");
359
				} else {
360
					cellOpeningQuantity.setCellValue(itemCompleteLedgerModel.getOpeningLedger().getQuantity());
361
					cellOpeningRate.setCellValue(itemCompleteLedgerModel.getOpeningLedger().getRate());
362
					cellOpeningValue.setCellValue(itemCompleteLedgerModel.getOpeningLedger().getValue());
25380 amit.gupta 363
					openingQuantityTotal = openingQuantityTotal
364
							+ itemCompleteLedgerModel.getOpeningLedger().getQuantity();
24215 amit.gupta 365
					openingValueTotal = openingValueTotal + itemCompleteLedgerModel.getOpeningLedger().getValue();
366
				}
367
				Cell cellInwardsQuantity = rowValues.createCell(9);
368
				Cell cellInwardsRate = rowValues.createCell(10);
369
				Cell cellInwardsValue = rowValues.createCell(11);
370
				if (itemCompleteLedgerModel.getInwardsLedger() == null) {
371
					cellInwardsQuantity.setCellValue("-");
372
					cellInwardsRate.setCellValue("-");
373
					cellInwardsValue.setCellValue("-");
374
				} else {
375
					cellInwardsQuantity.setCellValue(itemCompleteLedgerModel.getInwardsLedger().getQuantity());
376
					cellInwardsRate.setCellValue(itemCompleteLedgerModel.getInwardsLedger().getRate());
377
					cellInwardsValue.setCellValue(itemCompleteLedgerModel.getInwardsLedger().getValue());
25380 amit.gupta 378
					inwardsQuantityTotal = inwardsQuantityTotal
379
							+ itemCompleteLedgerModel.getInwardsLedger().getQuantity();
24215 amit.gupta 380
					inwardsValueTotal = inwardsValueTotal + itemCompleteLedgerModel.getInwardsLedger().getValue();
381
				}
382
				Cell cellOutwardsQuantity = rowValues.createCell(12);
383
				Cell cellOutwardsRate = rowValues.createCell(13);
384
				Cell cellOutwardsValue = rowValues.createCell(14);
385
				if (itemCompleteLedgerModel.getOutwardsLedger() == null) {
386
					cellOutwardsQuantity.setCellValue("-");
387
					cellOutwardsRate.setCellValue("-");
388
					cellOutwardsValue.setCellValue("-");
389
				} else {
390
					cellOutwardsQuantity.setCellValue(itemCompleteLedgerModel.getOutwardsLedger().getQuantity());
391
					cellOutwardsRate.setCellValue(itemCompleteLedgerModel.getOutwardsLedger().getRate());
392
					cellOutwardsValue.setCellValue(itemCompleteLedgerModel.getOutwardsLedger().getValue());
393
					outwardsQuantityTotal = outwardsQuantityTotal
394
							+ itemCompleteLedgerModel.getOutwardsLedger().getQuantity();
395
					outwardsValueTotal = outwardsValueTotal + itemCompleteLedgerModel.getOutwardsLedger().getValue();
396
				}
397
				Cell cellClosingQuantity = rowValues.createCell(15);
398
				Cell cellClosingRate = rowValues.createCell(16);
399
				Cell cellClosingValue = rowValues.createCell(17);
400
				if (itemCompleteLedgerModel.getClosingLedger() == null) {
401
					cellClosingQuantity.setCellValue("-");
402
					cellClosingRate.setCellValue("-");
403
					cellClosingValue.setCellValue("-");
404
				} else {
405
					cellClosingQuantity.setCellValue(itemCompleteLedgerModel.getClosingLedger().getQuantity());
406
					cellClosingRate.setCellValue(itemCompleteLedgerModel.getClosingLedger().getRate());
407
					cellClosingValue.setCellValue(itemCompleteLedgerModel.getClosingLedger().getValue());
25380 amit.gupta 408
					closingQuantityTotal = closingQuantityTotal
409
							+ itemCompleteLedgerModel.getClosingLedger().getQuantity();
24215 amit.gupta 410
					closingValueTotal = closingValueTotal + itemCompleteLedgerModel.getClosingLedger().getValue();
411
				}
24119 govind 412
			}
25380 amit.gupta 413
 
24215 amit.gupta 414
			Row rowTotal = sheet.createRow(itemCompleteLedgerModels.size() + 2);
25380 amit.gupta 415
 
24215 amit.gupta 416
			if (openingQuantityTotal > 0) {
417
				Cell cellOpeningQuantityTotal = rowTotal.createCell(6);
418
				cellOpeningQuantityTotal.setCellValue(openingQuantityTotal);
419
				Cell cellOpeningValueTotal = rowTotal.createCell(8);
420
				cellOpeningValueTotal.setCellValue(openingValueTotal);
24119 govind 421
			}
25380 amit.gupta 422
 
24215 amit.gupta 423
			if (inwardsQuantityTotal > 0) {
424
				Cell cellInwardsQuantityTotal = rowTotal.createCell(9);
425
				cellInwardsQuantityTotal.setCellValue(inwardsQuantityTotal);
426
				Cell cellInwardsValueTotal = rowTotal.createCell(11);
427
				cellInwardsValueTotal.setCellValue(inwardsValueTotal);
24119 govind 428
			}
25380 amit.gupta 429
 
24215 amit.gupta 430
			if (outwardsQuantityTotal > 0) {
431
				Cell cellOutwardsQuantityTotal = rowTotal.createCell(12);
432
				cellOutwardsQuantityTotal.setCellValue(outwardsQuantityTotal);
433
				Cell cellOutwardsValueTotal = rowTotal.createCell(14);
434
				cellOutwardsValueTotal.setCellValue(outwardsValueTotal);
435
			}
25380 amit.gupta 436
 
24215 amit.gupta 437
			if (closingQuantityTotal > 0) {
438
				Cell cellClosingQuantityTotal = rowTotal.createCell(15);
439
				cellClosingQuantityTotal.setCellValue(closingQuantityTotal);
440
				Cell cellClosingValueTotal = rowTotal.createCell(17);
441
				cellClosingValueTotal.setCellValue(closingValueTotal);
442
			}
25380 amit.gupta 443
 
24215 amit.gupta 444
			for (int index = 0; index < 18; index++) {
445
				sheet.autoSizeColumn(index);
446
			}
24119 govind 447
		}
24222 amit.gupta 448
		try {
449
			workbook.write(outputStream);
450
			workbook.close();
451
		} catch (IOException ioException) {
452
			LOGGER.error("Unable to generate excel file", ioException);
453
		}
22521 ashik.ali 454
	}
24119 govind 455
 
456
	public static void writeSchemeModels(List<SchemeModel> schemeModels, OutputStream outputStream) {
23017 ashik.ali 457
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 458
 
459
		// CreationHelper createHelper = workbook.getCreationHelper();
460
 
23017 ashik.ali 461
		SXSSFSheet sheet = workbook.createSheet("Schemes");
462
		sheet.trackAllColumnsForAutoSizing();
24119 govind 463
 
464
		Row rowHeader = sheet.createRow(0);
465
		Cell cellSchemeIdHeader = rowHeader.createCell(0);
23017 ashik.ali 466
		cellSchemeIdHeader.setCellValue("Scheme Id");
467
		Cell cellNameHeader = rowHeader.createCell(1);
468
		cellNameHeader.setCellValue("Name");
469
		Cell cellDescriptionHeader = rowHeader.createCell(2);
470
		cellDescriptionHeader.setCellValue("Description");
471
		Cell cellSchemeTypeHeader = rowHeader.createCell(3);
472
		cellSchemeTypeHeader.setCellValue("Scheme Type");
473
		Cell cellAmountTypeHeader = rowHeader.createCell(4);
474
		cellAmountTypeHeader.setCellValue("Amount Type");
475
		Cell cellAmountHeader = rowHeader.createCell(5);
476
		cellAmountHeader.setCellValue("Amount");
477
		Cell cellStartDateTimeHeader = rowHeader.createCell(6);
478
		cellStartDateTimeHeader.setCellValue("Start Date Time");
479
		Cell cellEndDateTimeHeader = rowHeader.createCell(7);
480
		cellEndDateTimeHeader.setCellValue("End Date Time");
481
		Cell cellCreatedAtHeader = rowHeader.createCell(8);
482
		cellCreatedAtHeader.setCellValue("Created At");
483
		Cell cellActiveHeader = rowHeader.createCell(9);
484
		cellActiveHeader.setCellValue("Active");
485
		Cell cellExpireHeader = rowHeader.createCell(10);
486
		cellExpireHeader.setCellValue("Expire");
487
		Cell cellCreatedByHeader = rowHeader.createCell(11);
488
		cellCreatedByHeader.setCellValue("Created By");
489
		Cell cellItemIdsHeader = rowHeader.createCell(12);
490
		cellItemIdsHeader.setCellValue("Item Ids");
491
		Cell cellRetailerIdsHeader = rowHeader.createCell(13);
492
		cellRetailerIdsHeader.setCellValue("Retailer Ids");
24119 govind 493
		// Row rowQuantityRateValue = sheet.createRow(1);
494
 
495
		/*
496
		 * for(int index = 6; index < 18; index = index + 3){ Cell cellQuantityHeader =
497
		 * rowQuantityRateValue.createCell(index);
498
		 * cellQuantityHeader.setCellValue("Quantity"); Cell cellRateHeader =
499
		 * rowQuantityRateValue.createCell(index + 1);
500
		 * cellRateHeader.setCellValue("Rate"); Cell cellValueHeader =
501
		 * rowQuantityRateValue.createCell(index + 2);
502
		 * cellValueHeader.setCellValue("Value"); sheet.addMergedRegion(new
503
		 * CellRangeAddress(0, 0, index, index + 2)); }
504
		 */
23017 ashik.ali 505
		Font font = workbook.createFont();
506
		CellStyle cellStyle = workbook.createCellStyle();
507
		font.setBold(true);
508
		cellStyle.setAlignment(HorizontalAlignment.CENTER);
24119 govind 509
		// font.setFontHeight((short)16);
23017 ashik.ali 510
		cellStyle.setFont(font);
24119 govind 511
		for (int i = 0; i < 14; i++) {
512
			if (rowHeader.getCell(i) != null) {
23017 ashik.ali 513
				rowHeader.getCell(i).setCellStyle(cellStyle);
514
			}
515
		}
516
 
24119 govind 517
		for (int index = 0; index < schemeModels.size(); index++) {
23017 ashik.ali 518
			SchemeModel schemeModel = schemeModels.get(index);
24119 govind 519
			// ItemCompleteLedgerModel itemCompleteLedgerModel =
520
			// itemCompleteLedgerModels.get(index);
521
			Row rowValues = sheet.createRow(index + 1);
522
			Cell cellSchemeId = rowValues.createCell(0);
23017 ashik.ali 523
			cellSchemeId.setCellValue(schemeModel.getSchemeId());
524
			Cell cellName = rowValues.createCell(1);
525
			cellName.setCellValue(schemeModel.getName());
526
			Cell cellDescription = rowValues.createCell(2);
527
			cellDescription.setCellValue(schemeModel.getDescription());
528
			Cell cellSchemeType = rowValues.createCell(3);
529
			cellSchemeType.setCellValue(schemeModel.getSchemeType());
530
			Cell cellAmountType = rowValues.createCell(4);
531
			cellAmountType.setCellValue(schemeModel.getAmountType());
532
			Cell cellAmount = rowValues.createCell(5);
533
			cellAmount.setCellValue(schemeModel.getAmount());
534
			Cell cellStartDateTime = rowValues.createCell(6);
535
			cellStartDateTime.setCellValue(schemeModel.getStartDateTime());
536
			Cell cellEndDateTime = rowValues.createCell(7);
537
			cellEndDateTime.setCellValue(schemeModel.getEndDateTime());
538
			Cell cellCreatedAt = rowValues.createCell(8);
539
			cellCreatedAt.setCellValue(schemeModel.getCreateTimestamp());
540
			Cell cellActive = rowValues.createCell(9);
24119 govind 541
			if (schemeModel.getActiveTimestamp() != null) {
23017 ashik.ali 542
				cellActive.setCellValue(schemeModel.getActiveTimestamp());
24119 govind 543
			} else {
23017 ashik.ali 544
				cellActive.setCellValue("False");
545
			}
546
			Cell cellExpire = rowValues.createCell(10);
24119 govind 547
			if (schemeModel.getExpireTimestamp() != null) {
23017 ashik.ali 548
				cellExpire.setCellValue(schemeModel.getExpireTimestamp());
24119 govind 549
			} else {
23017 ashik.ali 550
				cellExpire.setCellValue("False");
551
			}
552
			Cell cellCreatedBy = rowValues.createCell(11);
553
			cellCreatedBy.setCellValue(schemeModel.getCreatedBy());
554
			Cell cellItemIds = rowValues.createCell(12);
23338 ashik.ali 555
			cellItemIds.setCellValue(schemeModel.getItemStringMap().toString());
23017 ashik.ali 556
			Cell cellRetailerIds = rowValues.createCell(13);
557
			cellRetailerIds.setCellValue(schemeModel.getRetailerIdsString());
23338 ashik.ali 558
			int maxHeight = Math.max(schemeModel.getItemStringMap().size(), schemeModel.getRetailerIds().size());
24119 govind 559
			if (maxHeight > 1) {
560
				rowValues.setHeight((short) (maxHeight * 240));
23017 ashik.ali 561
			}
24119 govind 562
		}
563
 
564
		for (int index = 0; index < 14; index++) {
23017 ashik.ali 565
			sheet.autoSizeColumn(index);
566
		}
24119 govind 567
 
568
		try {
23017 ashik.ali 569
			workbook.write(outputStream);
24119 govind 570
			workbook.close();
571
		} catch (IOException ioException) {
572
			LOGGER.error("Unable to generate excel file", ioException);
573
		}
23017 ashik.ali 574
	}
24119 govind 575
 
576
	public static void writePriceDrop(Map<String, String> priceDropIMEIfofoId, int itemId, OutputStream outputStream) {
23819 govind 577
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 578
 
579
		// CreationHelper createHelper = workbook.getCreationHelper();
580
 
23819 govind 581
		SXSSFSheet sheet = workbook.createSheet("Schemes");
582
		sheet.trackAllColumnsForAutoSizing();
24119 govind 583
 
584
		Row rowHeader = sheet.createRow(0);
585
		Cell cellItemHeader = rowHeader.createCell(0);
586
		cellItemHeader.setCellValue("ITEMID");
23819 govind 587
		Cell cellIMEIHeader = rowHeader.createCell(1);
588
		cellIMEIHeader.setCellValue("IMEI");
589
		Cell cellFOFOIDHeader = rowHeader.createCell(2);
590
		cellFOFOIDHeader.setCellValue("RETAILERNAME");
24119 govind 591
		// Row rowQuantityRateValue = sheet.createRow(1);
592
 
593
		/*
594
		 * for(int index = 6; index < 18; index = index + 3){ Cell cellQuantityHeader =
595
		 * rowQuantityRateValue.createCell(index);
596
		 * cellQuantityHeader.setCellValue("Quantity"); Cell cellRateHeader =
597
		 * rowQuantityRateValue.createCell(index + 1);
598
		 * cellRateHeader.setCellValue("Rate"); Cell cellValueHeader =
599
		 * rowQuantityRateValue.createCell(index + 2);
600
		 * cellValueHeader.setCellValue("Value"); sheet.addMergedRegion(new
601
		 * CellRangeAddress(0, 0, index, index + 2)); }
602
		 */
23819 govind 603
		Font font = workbook.createFont();
604
		CellStyle cellStyle = workbook.createCellStyle();
605
		font.setBold(true);
606
		cellStyle.setAlignment(HorizontalAlignment.CENTER);
24119 govind 607
		// font.setFontHeight((short)16);
23819 govind 608
		cellStyle.setFont(font);
24119 govind 609
		for (int i = 0; i < 14; i++) {
610
			if (rowHeader.getCell(i) != null) {
23819 govind 611
				rowHeader.getCell(i).setCellStyle(cellStyle);
612
			}
613
		}
24119 govind 614
		LinkedHashMap<String, String> priceAmount = new LinkedHashMap<>(priceDropIMEIfofoId);
615
		Set<String> keyset = priceAmount.keySet();
23819 govind 616
		int rownum = 1;
617
		for (String key : keyset) {
24119 govind 618
			Row row = sheet.createRow(rownum++);
619
			String objArr = priceAmount.get(key);
620
			int cellnum = 0;
621
			Cell cell = row.createCell(cellnum++);
622
			cell.setCellValue(itemId);
623
			Cell cell1 = row.createCell(cellnum++);
624
			cell1.setCellValue(key);
625
			Cell cell2 = row.createCell(cellnum++);
626
			cell2.setCellValue(priceAmount.get(key));
627
		}
628
 
629
		for (int index = 0; index < 14; index++) {
23819 govind 630
			sheet.autoSizeColumn(index);
631
		}
24119 govind 632
 
633
		try {
23819 govind 634
			workbook.write(outputStream);
24119 govind 635
			workbook.close();
636
		} catch (IOException ioException) {
637
			LOGGER.error("Unable to generate excel file", ioException);
638
		}
23819 govind 639
	}
24119 govind 640
 
641
	public static void writePriceDropForAllIMEI(Map<String, String> priceDropAmount, OutputStream outputStream) {
23819 govind 642
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 643
 
644
		// CreationHelper createHelper = workbook.getCreationHelper();
645
 
23819 govind 646
		SXSSFSheet sheet = workbook.createSheet("Schemes");
647
		sheet.trackAllColumnsForAutoSizing();
24119 govind 648
 
649
		Row rowHeader = sheet.createRow(0);
650
		Cell cellItemHeader = rowHeader.createCell(0);
651
		cellItemHeader.setCellValue("Itemdescription");
23819 govind 652
		Cell cellIMEIHeader = rowHeader.createCell(1);
653
		cellIMEIHeader.setCellValue("IMEI");
24119 govind 654
		// Row rowQuantityRateValue = sheet.createRow(1);
655
 
656
		/*
657
		 * for(int index = 6; index < 18; index = index + 3){ Cell cellQuantityHeader =
658
		 * rowQuantityRateValue.createCell(index);
659
		 * cellQuantityHeader.setCellValue("Quantity"); Cell cellRateHeader =
660
		 * rowQuantityRateValue.createCell(index + 1);
661
		 * cellRateHeader.setCellValue("Rate"); Cell cellValueHeader =
662
		 * rowQuantityRateValue.createCell(index + 2);
663
		 * cellValueHeader.setCellValue("Value"); sheet.addMergedRegion(new
664
		 * CellRangeAddress(0, 0, index, index + 2)); }
665
		 */
23819 govind 666
		Font font = workbook.createFont();
667
		CellStyle cellStyle = workbook.createCellStyle();
668
		font.setBold(true);
669
		cellStyle.setAlignment(HorizontalAlignment.CENTER);
24119 govind 670
		// font.setFontHeight((short)16);
23819 govind 671
		cellStyle.setFont(font);
24119 govind 672
		for (int i = 0; i < 14; i++) {
673
			if (rowHeader.getCell(i) != null) {
23819 govind 674
				rowHeader.getCell(i).setCellStyle(cellStyle);
675
			}
676
		}
24119 govind 677
		Set<String> keyset = priceDropAmount.keySet();
23819 govind 678
		int rownum = 1;
679
		for (String key : keyset) {
24119 govind 680
			Row row = sheet.createRow(rownum++);
681
			String objArr = priceDropAmount.get(key);
682
			int cellnum = 0;
683
			Cell cell = row.createCell(cellnum++);
684
			cell.setCellValue(priceDropAmount.get(key));
685
			Cell cell1 = row.createCell(cellnum++);
686
			cell1.setCellValue(key);
687
		}
688
 
689
		for (int index = 0; index < 14; index++) {
23819 govind 690
			sheet.autoSizeColumn(index);
691
		}
24119 govind 692
 
693
		try {
23819 govind 694
			workbook.write(outputStream);
24119 govind 695
			workbook.close();
696
		} catch (IOException ioException) {
697
			LOGGER.error("Unable to generate excel file", ioException);
698
		}
23819 govind 699
	}
24119 govind 700
 
25380 amit.gupta 701
	public static void writeDailySaleReportVsTargetForPartner(Map<Integer, String> targetIdAndTargetNameMap,
702
			Map<Integer, Float> targetIdAndtargetValuesMap, Map<Integer, Double> targetIdAndsaleValuesMap,
24184 govind 703
			Map<Integer, CustomRetailer> targetIdAndCustomRetailerMap, Map<Integer, String> targetIdAndSlabNamesMap,
25380 amit.gupta 704
			Map<Integer, Double> targetIdAndsaleValuesPercentageMap,
705
			Map<Integer, Float> targetIdAndtargetdailyAverageSaleMap,
24184 govind 706
			Map<Integer, Double> targetIdAndRemainingTargetMap, Map<Integer, Double> targetIdAndtodayAchievementsMap,
25380 amit.gupta 707
			Map<Integer, String> targetIdAndSalesHeadMap, OutputStream outputStream) {
24184 govind 708
		SXSSFWorkbook workbook = new SXSSFWorkbook();
24119 govind 709
 
24184 govind 710
		// CreationHelper createHelper = workbook.getCreationHelper();
711
 
712
		SXSSFSheet sheet = workbook.createSheet("DailySaleReports");
713
		sheet.trackAllColumnsForAutoSizing();
714
 
715
		Row rowHeader = sheet.createRow(0);
24188 govind 716
		Cell cellStoreName = rowHeader.createCell(0);
717
		cellStoreName.setCellValue("Store Name");
24184 govind 718
		Cell cellBusiness = rowHeader.createCell(1);
719
		cellBusiness.setCellValue("Business Manager");
720
		Cell cellAssistant = rowHeader.createCell(2);
721
		cellAssistant.setCellValue("Assistant Manager");
24188 govind 722
		Cell cellSchemeName = rowHeader.createCell(3);
723
		cellSchemeName.setCellValue("Scheme Name");
24184 govind 724
		Cell cellTargetValue = rowHeader.createCell(4);
24188 govind 725
		cellTargetValue.setCellValue("Scheme Target");
726
		Cell cellMonthlySaleValue = rowHeader.createCell(5);
727
		cellMonthlySaleValue.setCellValue("Total Achievement");
728
		Cell cellMonthlySaleValuePercentage = rowHeader.createCell(6);
729
		cellMonthlySaleValuePercentage.setCellValue("Today Achievement Percentage");
730
		Cell cellDailyTargetValue = rowHeader.createCell(7);
731
		cellDailyTargetValue.setCellValue("Daily Target");
732
		Cell cellTodayAchievement = rowHeader.createCell(8);
733
		cellTodayAchievement.setCellValue("Today Achievement");
24184 govind 734
		Cell cellRemainingTarget = rowHeader.createCell(9);
24188 govind 735
		cellRemainingTarget.setCellValue("Remaining Target");
24184 govind 736
		Cell cellEligibility = rowHeader.createCell(10);
737
		cellEligibility.setCellValue("Eligibility");
738
		Font font = workbook.createFont();
739
		CellStyle cellStyle = workbook.createCellStyle();
740
		font.setBold(true);
741
		cellStyle.setAlignment(HorizontalAlignment.CENTER);
742
		// font.setFontHeight((short)16);
743
		cellStyle.setFont(font);
744
		for (int i = 0; i < 14; i++) {
745
			if (rowHeader.getCell(i) != null) {
746
				rowHeader.getCell(i).setCellStyle(cellStyle);
747
			}
748
		}
749
		int rownum = 1;
750
		for (Integer targetId : targetIdAndTargetNameMap.keySet()) {
751
			Row row = sheet.createRow(rownum++);
752
			int cellnum = 0;
24188 govind 753
			Cell cellPartner = row.createCell(cellnum++);
754
			if (targetIdAndCustomRetailerMap.get(targetId) != null) {
755
				cellPartner.setCellValue(targetIdAndCustomRetailerMap.get(targetId).getBusinessName());
24184 govind 756
			} else {
24188 govind 757
				cellPartner.setCellValue("-");
24184 govind 758
			}
25380 amit.gupta 759
 
24184 govind 760
			Cell cellBusinessManager = row.createCell(cellnum++);
24186 govind 761
			if (targetIdAndSalesHeadMap.get(targetId) != null) {
762
				if (targetIdAndSalesHeadMap.get(targetId).equals("Kamal")) {
24184 govind 763
					cellBusinessManager.setCellValue("Mohinder");
764
				} else {
24186 govind 765
					cellBusinessManager.setCellValue(targetIdAndSalesHeadMap.get(targetId));
24184 govind 766
				}
767
			} else {
768
				cellBusinessManager.setCellValue("-");
769
			}
770
			Cell cellAssistantManager = row.createCell(cellnum++);
771
			if (targetIdAndSalesHeadMap.get(targetId) != null) {
772
				if (targetIdAndSalesHeadMap.get(targetId).equals("Kamal")) {
773
					cellAssistantManager.setCellValue(targetIdAndSalesHeadMap.get(targetId));
774
				} else {
775
					cellAssistantManager.setCellValue("");
776
				}
777
			} else {
778
				cellAssistantManager.setCellValue("");
779
			}
24188 govind 780
			Cell cellTargetName = row.createCell(cellnum++);
25380 amit.gupta 781
			if (targetIdAndTargetNameMap.get(targetId) == null || targetIdAndTargetNameMap.get(targetId) == "") {
24188 govind 782
				cellTargetName.setCellValue("");
25380 amit.gupta 783
 
24186 govind 784
			} else {
24188 govind 785
				cellTargetName.setCellValue(targetIdAndTargetNameMap.get(targetId));
24186 govind 786
			}
24184 govind 787
			Cell cellMTDTargetValue = row.createCell(cellnum++);
788
			if (targetIdAndtargetValuesMap.get(targetId) != null) {
789
				cellMTDTargetValue.setCellValue(targetIdAndtargetValuesMap.get(targetId));
790
			} else {
791
				cellMTDTargetValue.setCellValue("-");
792
			}
793
			Cell cellMTDAchievement = row.createCell(cellnum++);
794
			if (targetIdAndsaleValuesMap.get(targetId) != null) {
795
				cellMTDAchievement.setCellValue(targetIdAndsaleValuesMap.get(targetId));
796
			} else {
797
				cellMTDAchievement.setCellValue(0);
798
			}
799
			Cell cellMTDAchievementPercentage = row.createCell(cellnum++);
800
			if (targetIdAndsaleValuesPercentageMap.get(targetId) != null) {
801
				cellMTDAchievementPercentage.setCellValue(targetIdAndsaleValuesPercentageMap.get(targetId) + "%");
802
			} else {
803
				cellMTDAchievementPercentage.setCellValue(0 + "%");
804
			}
805
 
24188 govind 806
			Cell cellDailyTargetValue1 = row.createCell(cellnum++);
807
			if (targetIdAndtargetdailyAverageSaleMap.get(targetId) != null) {
25380 amit.gupta 808
				String formatting = FormattingUtils
29930 amit.gupta 809
						.formatDecimal(targetIdAndtargetdailyAverageSaleMap.get(targetId));
24188 govind 810
				cellDailyTargetValue1.setCellValue(formatting);
811
			} else {
812
				cellDailyTargetValue1.setCellValue(0);
813
			}
814
			Cell cellTodayAchieveMentSaleValue = row.createCell(cellnum++);
815
			if (targetIdAndtodayAchievementsMap.get(targetId) != null) {
816
				cellTodayAchieveMentSaleValue.setCellValue(targetIdAndtodayAchievementsMap.get(targetId));
817
			} else {
818
				cellTodayAchieveMentSaleValue.setCellValue(0);
819
			}
25380 amit.gupta 820
 
24184 govind 821
			Cell cellRemaining = row.createCell(cellnum++);
822
			if (targetIdAndRemainingTargetMap.get(targetId) != null) {
823
				cellRemaining.setCellValue(targetIdAndRemainingTargetMap.get(targetId));
824
			} else {
825
				cellRemaining.setCellValue(0);
826
			}
827
 
828
			Cell cellEligible = row.createCell(cellnum++);
829
			if (targetIdAndSlabNamesMap.get(targetId) != null) {
830
				cellEligible.setCellValue(targetIdAndSlabNamesMap.get(targetId));
831
			} else {
832
				cellEligible.setCellValue("-");
833
			}
834
		}
835
 
836
		for (int index = 0; index < targetIdAndsaleValuesMap.size(); index++) {
837
			sheet.autoSizeColumn(index);
838
		}
839
 
840
		try {
841
			workbook.write(outputStream);
842
			workbook.close();
843
		} catch (IOException ioException) {
844
			LOGGER.error("Unable to generate excel file", ioException);
845
		}
846
	}
847
 
27064 amit.gupta 848
	public static List<WalletHistoryModel> parseWalletBulkCredit(InputStream inputStream) throws Exception {
849
		List<WalletHistoryModel> walletHistoryModels = new ArrayList<>();
850
		try (XSSFWorkbook myWorkBook = new XSSFWorkbook(inputStream)) {
851
 
852
			myWorkBook.setMissingCellPolicy(MissingCellPolicy.RETURN_BLANK_AS_NULL);
853
			// Return first sheet from the XLSX workbook
854
			XSSFSheet mySheet = myWorkBook.getSheetAt(0);
855
			LOGGER.info("rowCellNum {}", mySheet.getLastRowNum());
856
 
857
			for (int rowNumber = 1; rowNumber <= mySheet.getLastRowNum(); rowNumber++) {
858
				XSSFRow row = mySheet.getRow(rowNumber);
859
				LOGGER.info("row {}", row);
860
				WalletHistoryModel walletHistoryModel = new WalletHistoryModel();
861
				if (row.getCell(1) != null && row.getCell(1).getCellTypeEnum() == CellType.NUMERIC) {
862
					walletHistoryModel.setFofoId((int) row.getCell(1).getNumericCellValue());
863
				} else {
864
					throw new ProfitMandiBusinessException("Invalid Fofo Id", "row number " + rowNumber,
865
							"row number " + rowNumber);
866
				}
867
				if (row.getCell(2) != null && row.getCell(2).getCellTypeEnum() == CellType.STRING) {
868
					WalletReferenceType referenceType = WalletReferenceType
869
							.valueOf(row.getCell(2).getStringCellValue());
870
					if (!BULK_WALLET_REFERENCES.contains(referenceType)) {
871
						throw new ProfitMandiBusinessException("Invalid Reference type", "row number " + rowNumber,
872
								"row number " + rowNumber);
873
					}
874
					walletHistoryModel
875
							.setWalletReferenceType(WalletReferenceType.valueOf(row.getCell(2).getStringCellValue()));
876
				} else {
877
					throw new ProfitMandiBusinessException("Invalid ReferenceType", "row number " + rowNumber,
878
							"row number " + rowNumber);
879
				}
880
				if (row.getCell(3) != null && row.getCell(3).getCellTypeEnum() == CellType.NUMERIC) {
881
					Date businessDate = row.getCell(3).getDateCellValue();
27065 amit.gupta 882
					LocalDateTime businessDateTime = LocalDateTime.ofInstant(businessDate.toInstant(), ZoneId.systemDefault());
27064 amit.gupta 883
					walletHistoryModel.setBusinessDate(businessDateTime);
884
					;
885
				} else {
886
					throw new ProfitMandiBusinessException("Invalid Business Date", "row number " + rowNumber,
887
							"row number " + rowNumber);
888
				}
889
				if (row.getCell(4) != null && row.getCell(4).getCellTypeEnum() == CellType.NUMERIC) {
27065 amit.gupta 890
					double amount = row.getCell(4).getNumericCellValue();
27064 amit.gupta 891
					if (amount < 0) {
892
						throw new ProfitMandiBusinessException("Invalid Amount, only positive values",
893
								"row number " + rowNumber, "row number " + rowNumber);
894
					}
895
					walletHistoryModel.setAmount(amount);
896
				} else {
897
					throw new ProfitMandiBusinessException("Invalid Amount", "row number " + rowNumber,
898
							"row number " + rowNumber);
899
				}
27065 amit.gupta 900
				if (row.getCell(5) != null && row.getCell(5).getCellTypeEnum() == CellType.STRING) {
901
					String transactionType = row.getCell(5).getStringCellValue().toLowerCase();
27064 amit.gupta 902
					if (transactionType.equals("dr")) {
903
						walletHistoryModel.setAmount(-walletHistoryModel.getAmount());
904
					} else if (!transactionType.equals("cr")) {
905
						throw new ProfitMandiBusinessException("Invalid Transaction Type", "row number " + rowNumber,
906
								"row number " + rowNumber);
907
					}
908
				} else {
909
					throw new ProfitMandiBusinessException("Invalid Transaction Type", "row number " + rowNumber,
910
							"row number " + rowNumber);
911
				}
27065 amit.gupta 912
				if (row.getCell(6) != null && row.getCell(6).getCellTypeEnum() == CellType.STRING) {
28140 amit.gupta 913
					String description = row.getCell(6).getStringCellValue();
27064 amit.gupta 914
					walletHistoryModel.setDescription(description);
915
				} else {
916
					throw new ProfitMandiBusinessException("Invalid Transaction Type", "row number " + rowNumber,
917
							"row number " + rowNumber);
918
				}
27343 amit.gupta 919
				if (row.getCell(7) != null && row.getCell(7).getCellTypeEnum() == CellType.NUMERIC) {
920
					int reference = (int)row.getCell(7).getNumericCellValue();
921
					walletHistoryModel.setReference(reference);
922
				} else {
923
					throw new ProfitMandiBusinessException("Invalid Transaction Type", "row number " + rowNumber,
924
							"row number " + rowNumber);
925
				}
27064 amit.gupta 926
				walletHistoryModels.add(walletHistoryModel);
927
			}
928
			return walletHistoryModels;
929
		}
930
	}
931
 
21786 ashik.ali 932
}