Subversion Repositories SmartDukaan

Rev

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

Rev 30993 Rev 31030
Line 78... Line 78...
78
public class OrderServiceImpl implements OrderService {
78
public class OrderServiceImpl implements OrderService {
79
 
79
 
80
	private static final Logger LOGGER = LogManager.getLogger(OrderServiceImpl.class);
80
	private static final Logger LOGGER = LogManager.getLogger(OrderServiceImpl.class);
81
 
81
 
82
	private static Map<String, Integer> serialNumberOrderIdMap = new HashMap<>();
82
	private static Map<String, Integer> serialNumberOrderIdMap = new HashMap<>();
-
 
83
 
83
	static {
84
	static {
84
		serialNumberOrderIdMap.put("862897055749275", 67228);
85
		serialNumberOrderIdMap.put("862897055749275", 67228);
85
	}
86
	}
-
 
87
 
86
	@Autowired
88
	@Autowired
87
	@Qualifier("fofoInventoryItemRepository")
89
	@Qualifier("fofoInventoryItemRepository")
88
	private InventoryItemRepository inventoryItemRepository;
90
	private InventoryItemRepository inventoryItemRepository;
89
 
91
 
90
	@Autowired
92
	@Autowired
Line 378... Line 380...
378
 
380
 
379
		this.validateItemsSerializedNonSerialized(items, itemIdCustomFofoOrderItemMap);
381
		this.validateItemsSerializedNonSerialized(items, itemIdCustomFofoOrderItemMap);
380
 
382
 
381
		Map<Integer, Set<InventoryItem>> inventoryItemsToBill = new HashMap<>();
383
		Map<Integer, Set<InventoryItem>> inventoryItemsToBill = new HashMap<>();
382
		Map<Integer, Integer> inventoryItemIdQuantityUsed = new HashMap<>(); // to keep track of inventoryitem quanity
384
		Map<Integer, Integer> inventoryItemIdQuantityUsed = new HashMap<>(); // to keep track of inventoryitem quanity
383
																				// used for scan records insertion
385
		// used for scan records insertion
384
 
386
 
385
		LOGGER.info("itemMap keys {}", itemMap.keySet());
387
		LOGGER.info("itemMap keys {}", itemMap.keySet());
386
		// Lets reduce quantity and decide what inventory items to use.
388
		// Lets reduce quantity and decide what inventory items to use.
387
		for (Item item : items) {
389
		for (Item item : items) {
388
			if (item.getType().equals(ItemType.SERIALIZED)) {
390
			if (item.getType().equals(ItemType.SERIALIZED)) {
389
				// TODO:handle null
391
				// TODO:handle null
390
				if (serializedInventoryItemMap.get(item.getId()) == null
392
				if (serializedInventoryItemMap.get(item.getId()) == null
391
						|| itemIdCustomFofoOrderItemMap.get(item.getId()).getSerialNumberDetails()
393
						|| itemIdCustomFofoOrderItemMap.get(item.getId()).getSerialNumberDetails()
392
								.size() != serializedInventoryItemMap.get(item.getId()).size()) {
394
						.size() != serializedInventoryItemMap.get(item.getId()).size()) {
393
 
395
 
394
					List<String> invalidSerialNumbers = itemIdCustomFofoOrderItemMap.get(item.getId())
396
					List<String> invalidSerialNumbers = itemIdCustomFofoOrderItemMap.get(item.getId())
395
							.getSerialNumberDetails().stream().map(x -> x.getSerialNumber())
397
							.getSerialNumberDetails().stream().map(x -> x.getSerialNumber())
396
							.collect(Collectors.toList());
398
							.collect(Collectors.toList());
397
					throw new ProfitMandiBusinessException("invalidSerialNumbers", invalidSerialNumbers, "FFORDR_1004");
399
					throw new ProfitMandiBusinessException("invalidSerialNumbers", invalidSerialNumbers, "FFORDR_1004");
Line 1152... Line 1154...
1152
		}
1154
		}
1153
	}
1155
	}
1154
 
1156
 
1155
	@Override
1157
	@Override
1156
	public Map<String, Object> getSaleHistory(int fofoId, SearchType searchType, String searchValue,
1158
	public Map<String, Object> getSaleHistory(int fofoId, SearchType searchType, String searchValue,
1157
			LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1159
											  LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1158
		long countItems = 0;
1160
		long countItems = 0;
1159
		List<FofoOrder> fofoOrders = new ArrayList<>();
1161
		List<FofoOrder> fofoOrders = new ArrayList<>();
1160
 
1162
 
1161
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1163
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1162
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, null, null,
1164
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, null, null,
Line 1197... Line 1199...
1197
		}
1199
		}
1198
		return map;
1200
		return map;
1199
	}
1201
	}
1200
 
1202
 
1201
	public ResponseEntity<?> downloadReportInCsv(org.apache.commons.io.output.ByteArrayOutputStream baos,
1203
	public ResponseEntity<?> downloadReportInCsv(org.apache.commons.io.output.ByteArrayOutputStream baos,
1202
			List<List<?>> rows, String fileName) {
1204
												 List<List<?>> rows, String fileName) {
1203
		final HttpHeaders headers = new HttpHeaders();
1205
		final HttpHeaders headers = new HttpHeaders();
1204
		headers.set("Content-Type", "text/csv");
1206
		headers.set("Content-Type", "text/csv");
1205
 
1207
 
1206
		headers.set("Content-disposition", "inline; filename=" + fileName + ".csv");
1208
		headers.set("Content-disposition", "inline; filename=" + fileName + ".csv");
1207
		headers.setContentLength(baos.toByteArray().length);
1209
		headers.setContentLength(baos.toByteArray().length);
Line 1212... Line 1214...
1212
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
1214
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
1213
	}
1215
	}
1214
 
1216
 
1215
	@Override
1217
	@Override
1216
	public Map<String, Object> getSaleHistoryPaginated(int fofoId, SearchType searchType, String searchValue,
1218
	public Map<String, Object> getSaleHistoryPaginated(int fofoId, SearchType searchType, String searchValue,
1217
			LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1219
													   LocalDateTime startDate, LocalDateTime endDate, int offset, int limit) throws ProfitMandiBusinessException {
1218
		List<FofoOrder> fofoOrders = new ArrayList<>();
1220
		List<FofoOrder> fofoOrders = new ArrayList<>();
1219
 
1221
 
1220
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1222
		if (searchType == SearchType.CUSTOMER_MOBILE_NUMBER && !searchValue.isEmpty()) {
1221
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, startDate,
1223
			fofoOrders = fofoOrderRepository.selectByFofoIdAndCustomerMobileNumber(fofoId, searchValue, startDate,
1222
					endDate, offset, limit);
1224
					endDate, offset, limit);
Line 1261... Line 1263...
1261
		}
1263
		}
1262
		return serialNumbers;
1264
		return serialNumbers;
1263
	}
1265
	}
1264
 
1266
 
1265
	private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1267
	private void validateDpPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1266
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1268
								 Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1267
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
1269
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoLineItemMap.entrySet()) {
1268
			int itemId = entry.getKey();
1270
			int itemId = entry.getKey();
1269
			CustomFofoOrderItem customFofoOrderItem = entry.getValue();
1271
			CustomFofoOrderItem customFofoOrderItem = entry.getValue();
1270
			LOGGER.info("CustomFofoOrderItem -- {}", customFofoOrderItem);
1272
			LOGGER.info("CustomFofoOrderItem -- {}", customFofoOrderItem);
1271
			PriceModel priceModel = itemIdMopPriceMap.get(itemId);
1273
			PriceModel priceModel = itemIdMopPriceMap.get(itemId);
1272
			Item item = itemRepository.selectById(itemId);
1274
			Item item = itemRepository.selectById(itemId);
1273
			if (!item.getBrand().equals("Live Demo")
1275
			if (!item.getBrand().equals("Live Demo")
1274
					&& (item.getCategoryId() == ProfitMandiConstants.MOBILE_CATEGORY_ID
1276
					&& (item.getCategoryId() == ProfitMandiConstants.MOBILE_CATEGORY_ID
1275
					|| item.getCategoryId() == ProfitMandiConstants.TABLET_CATEGORY_ID || item.getCategoryId() == ProfitMandiConstants.LED_CATEGORY_ID)
1277
					|| item.getCategoryId() == ProfitMandiConstants.TABLET_CATEGORY_ID || item.getCategoryId() == ProfitMandiConstants.LED_CATEGORY_ID)
1276
					&& customFofoOrderItem.getSerialNumberDetails().stream()
1278
					&& customFofoOrderItem.getSerialNumberDetails().stream()
1277
							.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
1279
					.filter(x -> org.apache.commons.lang.StringUtils.isNotEmpty(x.getSerialNumber()))
1278
							.collect(Collectors.toList()).size() > 0) {
1280
					.collect(Collectors.toList()).size() > 0) {
1279
				if (Utils.compareFloat(priceModel.getPrice(),
1281
				if (Utils.compareFloat(priceModel.getPrice(),
1280
						customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount()) > 0) {
1282
						customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount()) > 0) {
1281
					throw new ProfitMandiBusinessException("Selling Price for ", item.getItemDescription(),
1283
					throw new ProfitMandiBusinessException("Selling Price for ", item.getItemDescription(),
1282
							"FFORDR_1010");
1284
							"FFORDR_1010");
1283
				}
1285
				}
Line 1291... Line 1293...
1291
			}
1293
			}
1292
		}
1294
		}
1293
	}
1295
	}
1294
 
1296
 
1295
	private void validateMopPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1297
	private void validateMopPrice(Map<Integer, PriceModel> itemIdMopPriceMap,
1296
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1298
								  Map<Integer, CustomFofoOrderItem> itemIdCustomFofoLineItemMap) throws ProfitMandiBusinessException {
1297
		Map<Integer, Float> invalidMopItemIdPriceMap = new HashMap<>();
1299
		Map<Integer, Float> invalidMopItemIdPriceMap = new HashMap<>();
1298
		for (Map.Entry<Integer, PriceModel> entry : itemIdMopPriceMap.entrySet()) {
1300
		for (Map.Entry<Integer, PriceModel> entry : itemIdMopPriceMap.entrySet()) {
1299
			CustomFofoOrderItem customFofoOrderItem = itemIdCustomFofoLineItemMap.get(entry.getKey());
1301
			CustomFofoOrderItem customFofoOrderItem = itemIdCustomFofoLineItemMap.get(entry.getKey());
1300
			Item item = itemRepository.selectById(customFofoOrderItem.getItemId());
1302
			Item item = itemRepository.selectById(customFofoOrderItem.getItemId());
1301
			if (!(item.getBrand().equals("Live Demo") || item.getCategoryId() != ProfitMandiConstants.MOBILE_CATEGORY_ID
1303
			if (!(item.getBrand().equals("Live Demo") || item.getCategoryId() != ProfitMandiConstants.MOBILE_CATEGORY_ID
1302
					|| item.getCategoryId() != ProfitMandiConstants.TABLET_CATEGORY_ID)
1304
					|| item.getCategoryId() != ProfitMandiConstants.TABLET_CATEGORY_ID)
1303
					&& customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount() < entry
1305
					&& customFofoOrderItem.getSellingPrice() + customFofoOrderItem.getDiscountAmount() < entry
1304
							.getValue().getPrice()) {
1306
					.getValue().getPrice()) {
1305
				invalidMopItemIdPriceMap.put(entry.getKey(), customFofoOrderItem.getSellingPrice());
1307
				invalidMopItemIdPriceMap.put(entry.getKey(), customFofoOrderItem.getSellingPrice());
1306
			}
1308
			}
1307
		}
1309
		}
1308
 
1310
 
1309
		if (!invalidMopItemIdPriceMap.isEmpty()) {
1311
		if (!invalidMopItemIdPriceMap.isEmpty()) {
Line 1313... Line 1315...
1313
		}
1315
		}
1314
 
1316
 
1315
	}
1317
	}
1316
 
1318
 
1317
	private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
1319
	private void updateInventoryItemsAndScanRecord(Set<InventoryItem> inventoryItems, int fofoId,
1318
			Map<Integer, Integer> inventoryItemQuantityUsed, int fofoOrderId) {
1320
												   Map<Integer, Integer> inventoryItemQuantityUsed, int fofoOrderId) {
1319
		for (InventoryItem inventoryItem : inventoryItems) {
1321
		for (InventoryItem inventoryItem : inventoryItems) {
1320
			inventoryItem.setLastScanType(ScanType.SALE);
1322
			inventoryItem.setLastScanType(ScanType.SALE);
1321
			ScanRecord scanRecord = new ScanRecord();
1323
			ScanRecord scanRecord = new ScanRecord();
1322
			scanRecord.setInventoryItemId(inventoryItem.getId());
1324
			scanRecord.setInventoryItemId(inventoryItem.getId());
1323
			scanRecord.setFofoId(fofoId);
1325
			scanRecord.setFofoId(fofoId);
Line 1330... Line 1332...
1330
 
1332
 
1331
		}
1333
		}
1332
	}
1334
	}
1333
 
1335
 
1334
	private void createFofoLineItem(int fofoOrderItemId, Set<InventoryItem> inventoryItems,
1336
	private void createFofoLineItem(int fofoOrderItemId, Set<InventoryItem> inventoryItems,
1335
			Map<Integer, Integer> inventoryItemIdQuantityUsed) {
1337
									Map<Integer, Integer> inventoryItemIdQuantityUsed) {
1336
		for (InventoryItem inventoryItem : inventoryItems) {
1338
		for (InventoryItem inventoryItem : inventoryItems) {
1337
			FofoLineItem fofoLineItem = new FofoLineItem();
1339
			FofoLineItem fofoLineItem = new FofoLineItem();
1338
			fofoLineItem.setFofoOrderItemId(fofoOrderItemId);
1340
			fofoLineItem.setFofoOrderItemId(fofoOrderItemId);
1339
			fofoLineItem.setSerialNumber(inventoryItem.getSerialNumber());
1341
			fofoLineItem.setSerialNumber(inventoryItem.getSerialNumber());
1340
			fofoLineItem.setInventoryItemId(inventoryItem.getId());
1342
			fofoLineItem.setInventoryItemId(inventoryItem.getId());
Line 1342... Line 1344...
1342
			fofoLineItemRepository.persist(fofoLineItem);
1344
			fofoLineItemRepository.persist(fofoLineItem);
1343
		}
1345
		}
1344
	}
1346
	}
1345
 
1347
 
1346
	private FofoOrderItem createAndGetFofoOrderItem(CustomFofoOrderItem customFofoOrderItem, int fofoOrderId,
1348
	private FofoOrderItem createAndGetFofoOrderItem(CustomFofoOrderItem customFofoOrderItem, int fofoOrderId,
1347
			Map<Integer, Item> itemMap, Set<InventoryItem> inventoryItems, Integer stateId)
1349
													Map<Integer, Item> itemMap, Set<InventoryItem> inventoryItems, Integer stateId)
1348
			throws ProfitMandiBusinessException {
1350
			throws ProfitMandiBusinessException {
1349
		FofoOrderItem fofoOrderItem = new FofoOrderItem();
1351
		FofoOrderItem fofoOrderItem = new FofoOrderItem();
1350
		fofoOrderItem.setItemId(customFofoOrderItem.getItemId());
1352
		fofoOrderItem.setItemId(customFofoOrderItem.getItemId());
1351
		fofoOrderItem.setQuantity(customFofoOrderItem.getQuantity());
1353
		fofoOrderItem.setQuantity(customFofoOrderItem.getQuantity());
1352
		fofoOrderItem.setSellingPrice(customFofoOrderItem.getSellingPrice());
1354
		fofoOrderItem.setSellingPrice(customFofoOrderItem.getSellingPrice());
Line 1433... Line 1435...
1433
 
1435
 
1434
		return fofoOrderItem;
1436
		return fofoOrderItem;
1435
	}
1437
	}
1436
 
1438
 
1437
	private void updateCurrentInventorySnapshot(List<CurrentInventorySnapshot> currentInventorySnapshots, int fofoId,
1439
	private void updateCurrentInventorySnapshot(List<CurrentInventorySnapshot> currentInventorySnapshots, int fofoId,
1438
			int itemId, int quantity) throws ProfitMandiBusinessException {
1440
												int itemId, int quantity) throws ProfitMandiBusinessException {
1439
		for (CurrentInventorySnapshot currentInventorySnapshot : currentInventorySnapshots) {
1441
		for (CurrentInventorySnapshot currentInventorySnapshot : currentInventorySnapshots) {
1440
			if (currentInventorySnapshot.getItemId() == itemId && currentInventorySnapshot.getFofoId() == fofoId) {
1442
			if (currentInventorySnapshot.getItemId() == itemId && currentInventorySnapshot.getFofoId() == fofoId) {
1441
				currentInventorySnapshotRepository.updateAvailabilityByItemIdAndFofoId(itemId, fofoId,
1443
				currentInventorySnapshotRepository.updateAvailabilityByItemIdAndFofoId(itemId, fofoId,
1442
						currentInventorySnapshot.getAvailability() - quantity);
1444
						currentInventorySnapshot.getAvailability() - quantity);
1443
			}
1445
			}
Line 1458... Line 1460...
1458
			}
1460
			}
1459
		}
1461
		}
1460
	}
1462
	}
1461
 
1463
 
1462
	private FofoOrder createAndGetFofoOrder(int customerId, String customerGstNumber, int fofoId, String documentNumber,
1464
	private FofoOrder createAndGetFofoOrder(int customerId, String customerGstNumber, int fofoId, String documentNumber,
1463
			float totalAmount, int customerAddressId) {
1465
											float totalAmount, int customerAddressId) {
1464
		FofoOrder fofoOrder = new FofoOrder();
1466
		FofoOrder fofoOrder = new FofoOrder();
1465
		fofoOrder.setCustomerGstNumber(customerGstNumber);
1467
		fofoOrder.setCustomerGstNumber(customerGstNumber);
1466
		fofoOrder.setCustomerId(customerId);
1468
		fofoOrder.setCustomerId(customerId);
1467
		fofoOrder.setFofoId(fofoId);
1469
		fofoOrder.setFofoId(fofoId);
1468
		fofoOrder.setInvoiceNumber(documentNumber);
1470
		fofoOrder.setInvoiceNumber(documentNumber);
Line 1471... Line 1473...
1471
		fofoOrderRepository.persist(fofoOrder);
1473
		fofoOrderRepository.persist(fofoOrder);
1472
		return fofoOrder;
1474
		return fofoOrder;
1473
	}
1475
	}
1474
 
1476
 
1475
	private void validateItemsSerializedNonSerialized(List<Item> items,
1477
	private void validateItemsSerializedNonSerialized(List<Item> items,
1476
			Map<Integer, CustomFofoOrderItem> customFofoOrderItemMap) throws ProfitMandiBusinessException {
1478
													  Map<Integer, CustomFofoOrderItem> customFofoOrderItemMap) throws ProfitMandiBusinessException {
1477
		List<Integer> invalidItemIdSerialNumbers = new ArrayList<Integer>();
1479
		List<Integer> invalidItemIdSerialNumbers = new ArrayList<Integer>();
1478
		List<Integer> itemIdNonSerializedSerialNumbers = new ArrayList<Integer>();
1480
		List<Integer> itemIdNonSerializedSerialNumbers = new ArrayList<Integer>();
1479
		for (Item i : items) {
1481
		for (Item i : items) {
1480
			CustomFofoOrderItem customFofoOrderItem = customFofoOrderItemMap.get(i.getId());
1482
			CustomFofoOrderItem customFofoOrderItem = customFofoOrderItemMap.get(i.getId());
1481
			if (i.getType().equals(ItemType.SERIALIZED)) {
1483
			if (i.getType().equals(ItemType.SERIALIZED)) {
Line 1505... Line 1507...
1505
					"FFORDR_1014");
1507
					"FFORDR_1014");
1506
		}
1508
		}
1507
	}
1509
	}
1508
 
1510
 
1509
	private void validateCurrentInventorySnapshotQuantities(List<CurrentInventorySnapshot> currentInventorySnapshots,
1511
	private void validateCurrentInventorySnapshotQuantities(List<CurrentInventorySnapshot> currentInventorySnapshots,
1510
			Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap) throws ProfitMandiBusinessException {
1512
															Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap) throws ProfitMandiBusinessException {
1511
		if (itemIdCustomFofoOrderItemMap.keySet().size() != currentInventorySnapshots.size()) {
1513
		if (itemIdCustomFofoOrderItemMap.keySet().size() != currentInventorySnapshots.size()) {
1512
			throw new ProfitMandiBusinessException("quantiiesSize", currentInventorySnapshots.size(), "");
1514
			throw new ProfitMandiBusinessException("quantiiesSize", currentInventorySnapshots.size(), "");
1513
		}
1515
		}
1514
		List<ItemIdQuantityAvailability> itemIdQuantityAvailabilities = new ArrayList<>(); // this is for error
1516
		List<ItemIdQuantityAvailability> itemIdQuantityAvailabilities = new ArrayList<>(); // this is for error
1515
		LOGGER.info("currentInventorySnapshots " + currentInventorySnapshots);
1517
		LOGGER.info("currentInventorySnapshots " + currentInventorySnapshots);
Line 1537... Line 1539...
1537
					"FFORDR_1015");
1539
					"FFORDR_1015");
1538
		}
1540
		}
1539
	}
1541
	}
1540
 
1542
 
1541
	private int getItemIdFromSerialNumber(Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap,
1543
	private int getItemIdFromSerialNumber(Map<Integer, CustomFofoOrderItem> itemIdCustomFofoOrderItemMap,
1542
			String serialNumber) {
1544
										  String serialNumber) {
1543
		int itemId = 0;
1545
		int itemId = 0;
1544
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoOrderItemMap.entrySet()) {
1546
		for (Map.Entry<Integer, CustomFofoOrderItem> entry : itemIdCustomFofoOrderItemMap.entrySet()) {
1545
			Set<SerialNumberDetail> serialNumberDetails = entry.getValue().getSerialNumberDetails();
1547
			Set<SerialNumberDetail> serialNumberDetails = entry.getValue().getSerialNumberDetails();
1546
			for (SerialNumberDetail serialNumberDetail : serialNumberDetails) {
1548
			for (SerialNumberDetail serialNumberDetail : serialNumberDetails) {
1547
				if (serialNumberDetail.getSerialNumber().equals(serialNumber)) {
1549
				if (serialNumberDetail.getSerialNumber().equals(serialNumber)) {
Line 1922... Line 1924...
1922
				Arrays.asList(SchemeType.SPECIAL_SUPPORT));
1924
				Arrays.asList(SchemeType.SPECIAL_SUPPORT));
1923
 
1925
 
1924
	}
1926
	}
1925
 
1927
 
1926
	@Override
1928
	@Override
-
 
1929
	public void reverseActivationScheme(List<Integer> inventoryItemIds) throws ProfitMandiBusinessException {
-
 
1930
		List<InventoryItem> inventoryItems = inventoryItemRepository.selectAllByIds(inventoryItemIds);
-
 
1931
		for (InventoryItem inventoryItem : inventoryItems) {
-
 
1932
			List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByInventoryItemId(inventoryItem.getId());
-
 
1933
			FofoLineItem fofoLineItem = fofoLineItems.get(0);
-
 
1934
			FofoOrderItem fofoOrderItem = fofoOrderItemRepository.selectById(fofoLineItem.getFofoOrderItemId());
-
 
1935
			FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(fofoOrderItem.getOrderId());
-
 
1936
			String reversalReason = "Scheme rolled back as activation date is invalid for imei " + inventoryItem.getSerialNumber();
-
 
1937
			schemeService.reverseSchemes(Arrays.asList(inventoryItem), fofoOrder.getId(), reversalReason,
-
 
1938
					Arrays.asList(SchemeType.ACTIVATION));
-
 
1939
			schemeService.reverseSchemes(inventoryItems, fofoOrder.getId(), reversalReason,
-
 
1940
					Arrays.asList(SchemeType.SPECIAL_SUPPORT));
-
 
1941
 
-
 
1942
		}
-
 
1943
 
-
 
1944
	}
-
 
1945
 
-
 
1946
	@Override
1927
	public float getSales(int fofoId, LocalDateTime startDate, LocalDateTime endDate) {
1947
	public float getSales(int fofoId, LocalDateTime startDate, LocalDateTime endDate) {
1928
		Float sales = fofoOrderRepository.selectSaleSumGroupByFofoIds(startDate, endDate).get(fofoId);
1948
		Float sales = fofoOrderRepository.selectSaleSumGroupByFofoIds(startDate, endDate).get(fofoId);
1929
		return sales == null ? 0f : sales;
1949
		return sales == null ? 0f : sales;
1930
	}
1950
	}
1931
 
1951