Subversion Repositories SmartDukaan

Rev

Rev 31057 | Rev 31059 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31057 Rev 31058
Line 389... Line 389...
389
		for (Item item : items) {
389
		for (Item item : items) {
390
			if (item.getType().equals(ItemType.SERIALIZED)) {
390
			if (item.getType().equals(ItemType.SERIALIZED)) {
391
				// TODO:handle null
391
				// TODO:handle null
392
				if (serializedInventoryItemMap.get(item.getId()) == null
392
				if (serializedInventoryItemMap.get(item.getId()) == null
393
						|| itemIdCustomFofoOrderItemMap.get(item.getId()).getSerialNumberDetails()
393
						|| itemIdCustomFofoOrderItemMap.get(item.getId()).getSerialNumberDetails()
394
						.size() != serializedInventoryItemMap.get(item.getId()).size()) {
394
								.size() != serializedInventoryItemMap.get(item.getId()).size()) {
395
 
395
 
396
					List<String> invalidSerialNumbers = itemIdCustomFofoOrderItemMap.get(item.getId())
396
					List<String> invalidSerialNumbers = itemIdCustomFofoOrderItemMap.get(item.getId())
397
							.getSerialNumberDetails().stream().map(x -> x.getSerialNumber())
397
							.getSerialNumberDetails().stream().map(x -> x.getSerialNumber())
398
							.collect(Collectors.toList());
398
							.collect(Collectors.toList());
399
					throw new ProfitMandiBusinessException("invalidSerialNumbers", invalidSerialNumbers, "FFORDR_1004");
399
					throw new ProfitMandiBusinessException("invalidSerialNumbers", invalidSerialNumbers, "FFORDR_1004");
Line 594... Line 594...
594
		so2.setOfferName(ScratchedGift.BLNT);
594
		so2.setOfferName(ScratchedGift.BLNT);
595
		so2.setCustomerId(customerId);
595
		so2.setCustomerId(customerId);
596
 
596
 
597
		LocalDate date = LocalDate.now();
597
		LocalDate date = LocalDate.now();
598
		LocalDateTime seven = LocalDateTime.of(date.getYear(), date.getMonth(), date.getDayOfMonth(), 7, 0);
598
		LocalDateTime seven = LocalDateTime.of(date.getYear(), date.getMonth(), date.getDayOfMonth(), 7, 0);
599
		LocalDateTime nine = LocalDateTime.of(date.getYear(), date.getMonth(), date.getDayOfMonth(), 7, 0);
599
		LocalDateTime nine = LocalDateTime.of(date.getYear(), date.getMonth(), date.getDayOfMonth(), 9, 0);
600
 
600
 
601
		if (LocalDateTime.now().isAfter(seven)) {
601
		if (LocalDateTime.now().isAfter(seven)) {
602
			so2.setUnlockedAt(nine.plusDays(1));
602
			so2.setUnlockedAt(nine.plusDays(1));
603
		} else {
603
		} else {
604
			so2.setUnlockedAt(nine);
604
			so2.setUnlockedAt(nine);
Line 1164... Line 1164...
1164
		}
1164
		}
1165
	}
1165
	}
1166
 
1166
 
1167
	@Override
1167
	@Override
1168
	public Map<String, Object> getSaleHistory(int fofoId, SearchType searchType, String searchValue,
1168
	public Map<String, Object> getSaleHistory(int fofoId, SearchType searchType, String searchValue,
1169
											  LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1169
			LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1170
		long countItems = 0;
1170
		long countItems = 0;
1171
		List<FofoOrder> fofoOrders = new ArrayList<>();
1171
		List<FofoOrder> fofoOrders = new ArrayList<>();
1172
 
1172
 
1173
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1173
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1174
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, null, null,
1174
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, null, null,
Line 1209... Line 1209...
1209
		}
1209
		}
1210
		return map;
1210
		return map;
1211
	}
1211
	}
1212
 
1212
 
1213
	public ResponseEntity<?> downloadReportInCsv(org.apache.commons.io.output.ByteArrayOutputStream baos,
1213
	public ResponseEntity<?> downloadReportInCsv(org.apache.commons.io.output.ByteArrayOutputStream baos,
1214
												 List<List<?>> rows, String fileName) {
1214
			List<List<?>> rows, String fileName) {
1215
		final HttpHeaders headers = new HttpHeaders();
1215
		final HttpHeaders headers = new HttpHeaders();
1216
		headers.set("Content-Type", "text/csv");
1216
		headers.set("Content-Type", "text/csv");
1217
 
1217
 
1218
		headers.set("Content-disposition", "inline; filename=" + fileName + ".csv");
1218
		headers.set("Content-disposition", "inline; filename=" + fileName + ".csv");
1219
		headers.setContentLength(baos.toByteArray().length);
1219
		headers.setContentLength(baos.toByteArray().length);
Line 1224... Line 1224...
1224
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
1224
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
1225
	}
1225
	}
1226
 
1226
 
1227
	@Override
1227
	@Override
1228
	public Map<String, Object> getSaleHistoryPaginated(int fofoId, SearchType searchType, String searchValue,
1228
	public Map<String, Object> getSaleHistoryPaginated(int fofoId, SearchType searchType, String searchValue,
1229
													   LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1229
			LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1230
		List<FofoOrder> fofoOrders = new ArrayList<>();
1230
		List<FofoOrder> fofoOrders = new ArrayList<>();
1231
 
1231
 
1232
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1232
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1233
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, startDate,
1233
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, startDate,
1234
					endDate, offset, limit);
1234
					endDate, offset, limit);
Line 1273... Line 1273...
1273
		}
1273
		}
1274
		return serialNumbers;
1274
		return serialNumbers;
1275
	}
1275
	}
1276
 
1276
 
1277
	private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1277
	private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1278
								 Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1278
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1279
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
1279
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
1280
			int itemId = entry.getKey();
1280
			int itemId = entry.getKey();
1281
			CustomFofoOrderItem customFofoOrderItem = entry.getValue();
1281
			CustomFofoOrderItem customFofoOrderItem = entry.getValue();
1282
			LOGGER.info("CustomFofoOrderItem -- {}", customFofoOrderItem);
1282
			LOGGER.info("CustomFofoOrderItem -- {}", customFofoOrderItem);
1283
			PriceModel priceModel = itemIdMopPriceMap.get(itemId);
1283
			PriceModel priceModel = itemIdMopPriceMap.get(itemId);
1284
			Item item = itemRepository.selectById(itemId);
1284
			Item item = itemRepository.selectById(itemId);
1285
			if (!item.getBrand().equals("Live Demo")
1285
			if (!item.getBrand().equals("Live Demo")
1286
					&& (item.getCategoryId() == ProfitMandiConstants.MOBILE_CATEGORY_ID
1286
					&& (item.getCategoryId() == ProfitMandiConstants.MOBILE_CATEGORY_ID
1287
					|| item.getCategoryId() == ProfitMandiConstants.TABLET_CATEGORY_ID || item.getCategoryId() == ProfitMandiConstants.LED_CATEGORY_ID)
1287
							|| item.getCategoryId() == ProfitMandiConstants.TABLET_CATEGORY_ID
-
 
1288
							|| item.getCategoryId() == ProfitMandiConstants.LED_CATEGORY_ID)
1288
					&& customFofoOrderItem.getSerialNumberDetails().stream()
1289
					&& customFofoOrderItem.getSerialNumberDetails().stream()
1289
					.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
1290
							.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
1290
					.collect(Collectors.toList()).size() > 0) {
1291
							.collect(Collectors.toList()).size() > 0) {
1291
				if (Utils.compareFloat(priceModel.getPrice(),
1292
				if (Utils.compareFloat(priceModel.getPrice(),
1292
						customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount()) > 0) {
1293
						customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount()) > 0) {
1293
					throw new ProfitMandiBusinessException("Selling Price for ", item.getItemDescription(),
1294
					throw new ProfitMandiBusinessException("Selling Price for ", item.getItemDescription(),
1294
							"FFORDR_1010");
1295
							"FFORDR_1010");
1295
				}
1296
				}
Line 1303... Line 1304...
1303
			}
1304
			}
1304
		}
1305
		}
1305
	}
1306
	}
1306
 
1307
 
1307
	private void validateMopPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1308
	private void validateMopPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1308
								  Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1309
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1309
		Map<Integer, Float> invalidMopItemIdPriceMap = new HashMap<>();
1310
		Map<Integer, Float> invalidMopItemIdPriceMap = new HashMap<>();
1310
		for (Map.Entry<Integer, PriceModel> entry : itemIdMopPriceMap.entrySet()) {
1311
		for (Map.Entry<Integer, PriceModel> entry : itemIdMopPriceMap.entrySet()) {
1311
			CustomFofoOrderItem customFofoOrderItem = itemIdCustomFofoLineItemMap.get(entry.getKey());
1312
			CustomFofoOrderItem customFofoOrderItem = itemIdCustomFofoLineItemMap.get(entry.getKey());
1312
			Item item = itemRepository.selectById(customFofoOrderItem.getItemId());
1313
			Item item = itemRepository.selectById(customFofoOrderItem.getItemId());
1313
			if (!(item.getBrand().equals("Live Demo") || item.getCategoryId() != ProfitMandiConstants.MOBILE_CATEGORY_ID
1314
			if (!(item.getBrand().equals("Live Demo") || item.getCategoryId() != ProfitMandiConstants.MOBILE_CATEGORY_ID
1314
					|| item.getCategoryId() != ProfitMandiConstants.TABLET_CATEGORY_ID)
1315
					|| item.getCategoryId() != ProfitMandiConstants.TABLET_CATEGORY_ID)
1315
					&& customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount() < entry
1316
					&& customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount() < entry
1316
					.getValue().getPrice()) {
1317
							.getValue().getPrice()) {
1317
				invalidMopItemIdPriceMap.put(entry.getKey(), customFofoOrderItem.getSellingPrice());
1318
				invalidMopItemIdPriceMap.put(entry.getKey(), customFofoOrderItem.getSellingPrice());
1318
			}
1319
			}
1319
		}
1320
		}
1320
 
1321
 
1321
		if (!invalidMopItemIdPriceMap.isEmpty()) {
1322
		if (!invalidMopItemIdPriceMap.isEmpty()) {
Line 1325... Line 1326...
1325
		}
1326
		}
1326
 
1327
 
1327
	}
1328
	}
1328
 
1329
 
1329
	private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
1330
	private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
1330
												   Map<Integer, Integer> inventoryItemQuantityUsed, int fofoOrderId) {
1331
			Map<Integer, Integer> inventoryItemQuantityUsed, int fofoOrderId) {
1331
		for (InventoryItem inventoryItem : inventoryItems) {
1332
		for (InventoryItem inventoryItem : inventoryItems) {
1332
			inventoryItem.setLastScanType(ScanType.SALE);
1333
			inventoryItem.setLastScanType(ScanType.SALE);
1333
			ScanRecord scanRecord = new ScanRecord();
1334
			ScanRecord scanRecord = new ScanRecord();
1334
			scanRecord.setInventoryItemId(inventoryItem.getId());
1335
			scanRecord.setInventoryItemId(inventoryItem.getId());
1335
			scanRecord.setFofoId(fofoId);
1336
			scanRecord.setFofoId(fofoId);
Line 1342... Line 1343...
1342
 
1343
 
1343
		}
1344
		}
1344
	}
1345
	}
1345
 
1346
 
1346
	private void createFofoLineItem(int fofoOrderItemId, Set<InventoryItem> inventoryItems,
1347
	private void createFofoLineItem(int fofoOrderItemId, Set<InventoryItem> inventoryItems,
1347
									Map<Integer, Integer> inventoryItemIdQuantityUsed) {
1348
			Map<Integer, Integer> inventoryItemIdQuantityUsed) {
1348
		for (InventoryItem inventoryItem : inventoryItems) {
1349
		for (InventoryItem inventoryItem : inventoryItems) {
1349
			FofoLineItem fofoLineItem = new FofoLineItem();
1350
			FofoLineItem fofoLineItem = new FofoLineItem();
1350
			fofoLineItem.setFofoOrderItemId(fofoOrderItemId);
1351
			fofoLineItem.setFofoOrderItemId(fofoOrderItemId);
1351
			fofoLineItem.setSerialNumber(inventoryItem.getSerialNumber());
1352
			fofoLineItem.setSerialNumber(inventoryItem.getSerialNumber());
1352
			fofoLineItem.setInventoryItemId(inventoryItem.getId());
1353
			fofoLineItem.setInventoryItemId(inventoryItem.getId());
Line 1354... Line 1355...
1354
			fofoLineItemRepository.persist(fofoLineItem);
1355
			fofoLineItemRepository.persist(fofoLineItem);
1355
		}
1356
		}
1356
	}
1357
	}
1357
 
1358
 
1358
	private FofoOrderItem createAndGetFofoOrderItem(CustomFofoOrderItem customFofoOrderItem, int fofoOrderId,
1359
	private FofoOrderItem createAndGetFofoOrderItem(CustomFofoOrderItem customFofoOrderItem, int fofoOrderId,
1359
													Map<Integer, Item> itemMap, Set<InventoryItem> inventoryItems, Integer stateId)
1360
			Map<Integer, Item> itemMap, Set<InventoryItem> inventoryItems, Integer stateId)
1360
			throws ProfitMandiBusinessException {
1361
			throws ProfitMandiBusinessException {
1361
		FofoOrderItem fofoOrderItem = new FofoOrderItem();
1362
		FofoOrderItem fofoOrderItem = new FofoOrderItem();
1362
		fofoOrderItem.setItemId(customFofoOrderItem.getItemId());
1363
		fofoOrderItem.setItemId(customFofoOrderItem.getItemId());
1363
		fofoOrderItem.setQuantity(customFofoOrderItem.getQuantity());
1364
		fofoOrderItem.setQuantity(customFofoOrderItem.getQuantity());
1364
		fofoOrderItem.setSellingPrice(customFofoOrderItem.getSellingPrice());
1365
		fofoOrderItem.setSellingPrice(customFofoOrderItem.getSellingPrice());
Line 1445... Line 1446...
1445
 
1446
 
1446
		return fofoOrderItem;
1447
		return fofoOrderItem;
1447
	}
1448
	}
1448
 
1449
 
1449
	private void updateCurrentInventorySnapshot(List<CurrentInventorySnapshot> currentInventorySnapshots, int fofoId,
1450
	private void updateCurrentInventorySnapshot(List<CurrentInventorySnapshot> currentInventorySnapshots, int fofoId,
1450
												int itemId, int quantity) throws ProfitMandiBusinessException {
1451
			int itemId, int quantity) throws ProfitMandiBusinessException {
1451
		for (CurrentInventorySnapshot currentInventorySnapshot : currentInventorySnapshots) {
1452
		for (CurrentInventorySnapshot currentInventorySnapshot : currentInventorySnapshots) {
1452
			if (currentInventorySnapshot.getItemId() == itemId && currentInventorySnapshot.getFofoId() == fofoId) {
1453
			if (currentInventorySnapshot.getItemId() == itemId && currentInventorySnapshot.getFofoId() == fofoId) {
1453
				currentInventorySnapshotRepository.updateAvailabilityByItemIdAndFofoId(itemId, fofoId,
1454
				currentInventorySnapshotRepository.updateAvailabilityByItemIdAndFofoId(itemId, fofoId,
1454
						currentInventorySnapshot.getAvailability() - quantity);
1455
						currentInventorySnapshot.getAvailability() - quantity);
1455
			}
1456
			}
Line 1470... Line 1471...
1470
			}
1471
			}
1471
		}
1472
		}
1472
	}
1473
	}
1473
 
1474
 
1474
	private FofoOrder createAndGetFofoOrder(int customerId, String customerGstNumber, int fofoId, String documentNumber,
1475
	private FofoOrder createAndGetFofoOrder(int customerId, String customerGstNumber, int fofoId, String documentNumber,
1475
											float totalAmount, int customerAddressId) {
1476
			float totalAmount, int customerAddressId) {
1476
		FofoOrder fofoOrder = new FofoOrder();
1477
		FofoOrder fofoOrder = new FofoOrder();
1477
		fofoOrder.setCustomerGstNumber(customerGstNumber);
1478
		fofoOrder.setCustomerGstNumber(customerGstNumber);
1478
		fofoOrder.setCustomerId(customerId);
1479
		fofoOrder.setCustomerId(customerId);
1479
		fofoOrder.setFofoId(fofoId);
1480
		fofoOrder.setFofoId(fofoId);
1480
		fofoOrder.setInvoiceNumber(documentNumber);
1481
		fofoOrder.setInvoiceNumber(documentNumber);
Line 1483... Line 1484...
1483
		fofoOrderRepository.persist(fofoOrder);
1484
		fofoOrderRepository.persist(fofoOrder);
1484
		return fofoOrder;
1485
		return fofoOrder;
1485
	}
1486
	}
1486
 
1487
 
1487
	private void validateItemsSerializedNonSerialized(List<Item> items,
1488
	private void validateItemsSerializedNonSerialized(List<Item> items,
1488
													  Map<Integer, CustomFofoOrderItem> customFofoOrderItemMap) throws ProfitMandiBusinessException {
1489
			Map<Integer, CustomFofoOrderItem> customFofoOrderItemMap) throws ProfitMandiBusinessException {
1489
		List<Integer> invalidItemIdSerialNumbers = new ArrayList<Integer>();
1490
		List<Integer> invalidItemIdSerialNumbers = new ArrayList<Integer>();
1490
		List<Integer> itemIdNonSerializedSerialNumbers = new ArrayList<Integer>();
1491
		List<Integer> itemIdNonSerializedSerialNumbers = new ArrayList<Integer>();
1491
		for (Item i : items) {
1492
		for (Item i : items) {
1492
			CustomFofoOrderItem customFofoOrderItem = customFofoOrderItemMap.get(i.getId());
1493
			CustomFofoOrderItem customFofoOrderItem = customFofoOrderItemMap.get(i.getId());
1493
			if (i.getType().equals(ItemType.SERIALIZED)) {
1494
			if (i.getType().equals(ItemType.SERIALIZED)) {
Line 1517... Line 1518...
1517
					"FFORDR_1014");
1518
					"FFORDR_1014");
1518
		}
1519
		}
1519
	}
1520
	}
1520
 
1521
 
1521
	private void validateCurrentInventorySnapshotQuantities(List<CurrentInventorySnapshot> currentInventorySnapshots,
1522
	private void validateCurrentInventorySnapshotQuantities(List<CurrentInventorySnapshot> currentInventorySnapshots,
1522
															Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap) throws ProfitMandiBusinessException {
1523
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap) throws ProfitMandiBusinessException {
1523
		if (itemIdCustomFofoOrderItemMap.keySet().size() != currentInventorySnapshots.size()) {
1524
		if (itemIdCustomFofoOrderItemMap.keySet().size() != currentInventorySnapshots.size()) {
1524
			throw new ProfitMandiBusinessException("quantiiesSize", currentInventorySnapshots.size(), "");
1525
			throw new ProfitMandiBusinessException("quantiiesSize", currentInventorySnapshots.size(), "");
1525
		}
1526
		}
1526
		List<ItemIdQuantityAvailability> itemIdQuantityAvailabilities = new ArrayList<>(); // this is for error
1527
		List<ItemIdQuantityAvailability> itemIdQuantityAvailabilities = new ArrayList<>(); // this is for error
1527
		LOGGER.info("currentInventorySnapshots " + currentInventorySnapshots);
1528
		LOGGER.info("currentInventorySnapshots " + currentInventorySnapshots);
Line 1549... Line 1550...
1549
					"FFORDR_1015");
1550
					"FFORDR_1015");
1550
		}
1551
		}
1551
	}
1552
	}
1552
 
1553
 
1553
	private int getItemIdFromSerialNumber(Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap,
1554
	private int getItemIdFromSerialNumber(Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap,
1554
										  String serialNumber) {
1555
			String serialNumber) {
1555
		int itemId = 0;
1556
		int itemId = 0;
1556
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoOrderItemMap.entrySet()) {
1557
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoOrderItemMap.entrySet()) {
1557
			Set<SerialNumberDetail> serialNumberDetails = entry.getValue().getSerialNumberDetails();
1558
			Set<SerialNumberDetail> serialNumberDetails = entry.getValue().getSerialNumberDetails();
1558
			for (SerialNumberDetail serialNumberDetail : serialNumberDetails) {
1559
			for (SerialNumberDetail serialNumberDetail : serialNumberDetails) {
1559
				if (serialNumberDetail.getSerialNumber().equals(serialNumber)) {
1560
				if (serialNumberDetail.getSerialNumber().equals(serialNumber)) {
Line 1941... Line 1942...
1941
		for (InventoryItem inventoryItem : inventoryItems) {
1942
		for (InventoryItem inventoryItem : inventoryItems) {
1942
			List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByInventoryItemId(inventoryItem.getId());
1943
			List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByInventoryItemId(inventoryItem.getId());
1943
			FofoLineItem fofoLineItem = fofoLineItems.get(0);
1944
			FofoLineItem fofoLineItem = fofoLineItems.get(0);
1944
			FofoOrderItem fofoOrderItem = fofoOrderItemRepository.selectById(fofoLineItem.getFofoOrderItemId());
1945
			FofoOrderItem fofoOrderItem = fofoOrderItemRepository.selectById(fofoLineItem.getFofoOrderItemId());
1945
			FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(fofoOrderItem.getOrderId());
1946
			FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(fofoOrderItem.getOrderId());
1946
			String reversalReason = "Scheme rolled back as activation date is invalid for imei " + inventoryItem.getSerialNumber();
1947
			String reversalReason = "Scheme rolled back as activation date is invalid for imei "
-
 
1948
					+ inventoryItem.getSerialNumber();
1947
			schemeService.reverseSchemes(Arrays.asList(inventoryItem), fofoOrder.getId(), reversalReason,
1949
			schemeService.reverseSchemes(Arrays.asList(inventoryItem), fofoOrder.getId(), reversalReason,
1948
					Arrays.asList(SchemeType.ACTIVATION));
1950
					Arrays.asList(SchemeType.ACTIVATION));
1949
			schemeService.reverseSchemes(Arrays.asList(inventoryItem), fofoOrder.getId(), reversalReason,
1951
			schemeService.reverseSchemes(Arrays.asList(inventoryItem), fofoOrder.getId(), reversalReason,
1950
					Arrays.asList(SchemeType.SPECIAL_SUPPORT));
1952
					Arrays.asList(SchemeType.SPECIAL_SUPPORT));
1951
 
1953