Subversion Repositories SmartDukaan

Rev

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

Rev 24634 Rev 24635
Line 879... Line 879...
879
		}
879
		}
880
 
880
 
881
	}
881
	}
882
 
882
 
883
	public void dryRunSchemeReco() throws Exception {
883
	public void dryRunSchemeReco() throws Exception {
-
 
884
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
-
 
885
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
-
 
886
 
-
 
887
		List<UserWalletHistory> userWalletHistory = new ArrayList<>();
-
 
888
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
-
 
889
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
-
 
890
				.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
-
 
891
		Set<String> serialNumbersConsidered = new HashSet<>();
-
 
892
 
-
 
893
		LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
-
 
894
		LocalDateTime endDate = LocalDate.now().atStartOfDay();
-
 
895
		List<Purchase> purchases = purchaseRepository.selectAllBetweenPurchaseDate(startDate, endDate);
-
 
896
 
-
 
897
		purchases.stream().forEach(purchase -> {
-
 
898
			float amountToRollback = 0;
-
 
899
			String description = "Adjustment of Duplicate Scheme for Purchase Invoice "
-
 
900
					+ purchase.getPurchaseReference();
-
 
901
			Map<Integer, String> inventorySerialNumberMap = inventoryItemRepository.selectByPurchaseId(purchase.getId())
-
 
902
					.stream().filter(ii -> ii.getSerialNumber() != null)
-
 
903
					.collect(Collectors.toMap(InventoryItem::getId, InventoryItem::getSerialNumber));
-
 
904
			if (inventorySerialNumberMap.size() > 0) {
-
 
905
				for (Map.Entry<Integer, String> inventorySerialNumberEntry : inventorySerialNumberMap.entrySet()) {
-
 
906
					String serialNumber = inventorySerialNumberEntry.getValue();
-
 
907
					int inventoryItemId = inventorySerialNumberEntry.getKey();
-
 
908
					if (serialNumbersConsidered.contains(serialNumber)) {
-
 
909
						// This will rollback scheme for differenct orders for same serial
-
 
910
						List<SchemeInOut> sios = schemeInOutRepository
-
 
911
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
-
 
912
								.filter(x -> x.getRolledBackTimestamp() == null
-
 
913
										&& schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.IN))
-
 
914
								.collect(Collectors.toList());
-
 
915
						Collections.reverse(sios);
-
 
916
						for (SchemeInOut sio : sios) {
-
 
917
							sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
918
							amountToRollback += sio.getAmount();
-
 
919
							// sio.setSchemeType(SchemeType.OUT);
-
 
920
							sio.setSerialNumber(serialNumber);
-
 
921
							rolledbackSios.add(sio);
-
 
922
						}
-
 
923
						description = description.concat(" " + serialNumber + " ");
-
 
924
					} else {
-
 
925
						serialNumbersConsidered.add(serialNumber);
-
 
926
						List<Integer> schemesConsidered = new ArrayList<>();
-
 
927
						List<SchemeInOut> sios = schemeInOutRepository
-
 
928
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
-
 
929
								.filter(x -> x.getRolledBackTimestamp() == null
-
 
930
										&& schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.IN))
-
 
931
								.collect(Collectors.toList());
-
 
932
						Collections.reverse(sios);
-
 
933
						for (SchemeInOut sio : sios) {
-
 
934
							if (!schemesConsidered.contains(sio.getSchemeId())) {
-
 
935
								schemesConsidered.add(sio.getSchemeId());
-
 
936
								continue;
-
 
937
							}
-
 
938
							sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
939
							amountToRollback += sio.getAmount();
-
 
940
							// sio.setSchemeType(SchemeType.OUT);
-
 
941
							sio.setSerialNumber(serialNumber);
-
 
942
							rolledbackSios.add(sio);
-
 
943
						}
-
 
944
					}
-
 
945
 
-
 
946
				}
-
 
947
			}
-
 
948
			if (amountToRollback > 0) {
-
 
949
				Address address = addressRepository.selectAllByRetailerId(purchase.getFofoId(), 0, 10).get(0);
-
 
950
				UserWalletHistory uwh = new UserWalletHistory();
-
 
951
				uwh.setAmount(Math.round(amountToRollback));
-
 
952
				uwh.setDescription(description);
-
 
953
				uwh.setTimestamp(LocalDateTime.now());
-
 
954
				uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
-
 
955
				uwh.setReference(purchase.getId());
-
 
956
				uwh.setWalletId(userWalletMap.get(purchase.getFofoId()));
-
 
957
				uwh.setFofoId(purchase.getFofoId());
-
 
958
				uwh.setStoreCode(address.getName());
-
 
959
				userWalletHistory.add(uwh);
-
 
960
			}
-
 
961
		});
-
 
962
		ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
-
 
963
				Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
-
 
964
						"Timestamp"),
-
 
965
				userWalletHistory.stream()
-
 
966
						.map(x -> Arrays.asList(x.getWalletId(), x.getStoreCode(), x.getReferenceType(),
-
 
967
								x.getReference(), x.getAmount(), x.getDescription(), x.getTimestamp()))
-
 
968
						.collect(Collectors.toList()));
-
 
969
 
-
 
970
		ByteArrayOutputStream baosOuts = FileUtil.getCSVByteStream(
-
 
971
				Arrays.asList("Scheme ID", "SchemeType", "Store Code", "Serial Number", "Amount", "Created",
-
 
972
						"Rolledback"),
-
 
973
				rolledbackSios.stream()
-
 
974
						.map(x -> Arrays.asList(x.getSchemeId(), x.getSchemeType(), x.getStoreCode(),
-
 
975
								x.getSerialNumber(), x.getAmount(), x.getCreateTimestamp(), x.getRolledBackTimestamp()))
-
 
976
						.collect(Collectors.toList()));
-
 
977
 
-
 
978
		Utils.sendMailWithAttachments(googleMailSender,
-
 
979
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
-
 
980
				"Partner Excess Amount", "PFA",
-
 
981
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
-
 
982
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
-
 
983
 
-
 
984
		throw new Exception();
-
 
985
 
-
 
986
	}
-
 
987
 
-
 
988
	public void dryRunOutSchemeReco() throws Exception {
884
		List<UserWalletHistory> userWalletHistory = new ArrayList<>();
989
		List<UserWalletHistory> userWalletHistory = new ArrayList<>();
885
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
990
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
886
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
991
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
887
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
992
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
888
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
993
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
Line 909... Line 1014...
909
					int inventoryItemId = inventorySerialNumberEntry.getKey();
1014
					int inventoryItemId = inventorySerialNumberEntry.getKey();
910
					if (serialNumbersConsidered.contains(serialNumber)) {
1015
					if (serialNumbersConsidered.contains(serialNumber)) {
911
						// This will rollback scheme for differenct orders for same serial
1016
						// This will rollback scheme for differenct orders for same serial
912
						List<SchemeInOut> sios = schemeInOutRepository
1017
						List<SchemeInOut> sios = schemeInOutRepository
913
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
1018
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
-
 
1019
								.filter(x -> x.getRolledBackTimestamp() == null
914
								.filter(x -> x.getRolledBackTimestamp()==null && schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
1020
										&& schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
915
								.collect(Collectors.toList());
1021
								.collect(Collectors.toList());
916
						Collections.reverse(sios);
1022
						Collections.reverse(sios);
917
						for (SchemeInOut sio : sios) {
1023
						for (SchemeInOut sio : sios) {
918
							sio.setRolledBackTimestamp(LocalDateTime.now());
1024
							sio.setRolledBackTimestamp(LocalDateTime.now());
919
							amountToRollback += sio.getAmount();
1025
							amountToRollback += sio.getAmount();
920
							// sio.setSchemeType(SchemeType.OUT);
1026
							// sio.setSchemeType(SchemeType.OUT);
921
							sio.setSerialNumber(serialNumber);
1027
							sio.setSerialNumber(serialNumber);
922
							sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
1028
							sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
923
							rolledbackSios.add(sio);
1029
							rolledbackSios.add(sio);
924
						}
1030
						}
925
						description = description.concat(" "+  serialNumber +" ");
1031
						description = description.concat(" " + serialNumber + " ");
926
					} else {
1032
					} else {
927
						serialNumbersConsidered.add(serialNumber);
1033
						serialNumbersConsidered.add(serialNumber);
928
						List<Integer> schemesConsidered = new ArrayList<>();
1034
						List<Integer> schemesConsidered = new ArrayList<>();
929
						List<SchemeInOut> sios = schemeInOutRepository
1035
						List<SchemeInOut> sios = schemeInOutRepository
930
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
1036
								.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItemId))).stream()
-
 
1037
								.filter(x -> x.getRolledBackTimestamp() == null
931
								.filter(x -> x.getRolledBackTimestamp()==null && schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
1038
										&& schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
932
								.collect(Collectors.toList());
1039
								.collect(Collectors.toList());
933
						Collections.reverse(sios);
1040
						Collections.reverse(sios);
934
						for (SchemeInOut sio : sios) {
1041
						for (SchemeInOut sio : sios) {
935
							if (!schemesConsidered.contains(sio.getSchemeId())) {
1042
							if (!schemesConsidered.contains(sio.getSchemeId())) {
936
								schemesConsidered.add(sio.getSchemeId());
1043
								schemesConsidered.add(sio.getSchemeId());