Subversion Repositories SmartDukaan

Rev

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

Rev 24630 Rev 24631
Line 28... Line 28...
28
import org.apache.commons.io.output.ByteArrayOutputStream;
28
import org.apache.commons.io.output.ByteArrayOutputStream;
29
import org.apache.logging.log4j.LogManager;
29
import org.apache.logging.log4j.LogManager;
30
import org.apache.logging.log4j.Logger;
30
import org.apache.logging.log4j.Logger;
31
import org.apache.poi.EncryptedDocumentException;
31
import org.apache.poi.EncryptedDocumentException;
32
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
32
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
33
import org.apache.solr.common.util.Hash;
-
 
34
import org.springframework.beans.factory.annotation.Autowired;
33
import org.springframework.beans.factory.annotation.Autowired;
35
import org.springframework.beans.factory.annotation.Qualifier;
34
import org.springframework.beans.factory.annotation.Qualifier;
36
import org.springframework.beans.factory.annotation.Value;
35
import org.springframework.beans.factory.annotation.Value;
37
import org.springframework.core.io.ByteArrayResource;
36
import org.springframework.core.io.ByteArrayResource;
38
import org.springframework.mail.javamail.JavaMailSender;
37
import org.springframework.mail.javamail.JavaMailSender;
Line 886... Line 885...
886
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
885
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
887
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
886
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
888
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
887
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
889
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
888
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
890
				.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
889
				.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
891
		 /*LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
890
		LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
892
		 LocalDateTime endDate = startDate.plusMonths(1);
891
		LocalDateTime endDate = startDate.plusMonths(1);
893
		 List<FofoOrder> allOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
892
		List<FofoOrder> allOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
894
		 Collections.reverse(allOrders);*/
893
		// Collections.reverse(allOrders);
-
 
894
		// List<FofoOrder> allOrders =
895
		List<FofoOrder> allOrders = Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("UPGZ019/25"));
895
		// Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("UPGZ019/25"));
896
		Set<String> serialNumbersConsidered = new HashSet<>();
896
		Set<String> serialNumbersConsidered = new HashSet<>();
897
		allOrders.stream().forEach(fofoOrder -> {
897
		allOrders.stream().forEach(fofoOrder -> {
898
			String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
898
			String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
899
			Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
899
			Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
900
			float amountToRollback = 0;
900
			float amountToRollback = 0;
Line 902... Line 902...
902
			orderItems.forEach(x -> {
902
			orderItems.forEach(x -> {
903
				inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
903
				inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
904
						.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
904
						.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
905
			});
905
			});
906
			if (inventorySerialNumberMap.size() > 0) {
906
			if (inventorySerialNumberMap.size() > 0) {
-
 
907
				for (Map.Entry<Integer, String> inventorySerialNumberEntry : inventorySerialNumberMap.entrySet()) {
907
				for (String serialNumber : inventorySerialNumberMap.values()) {
908
					String serialNumber = inventorySerialNumberEntry.getValue();
-
 
909
					int inventoryItemId = inventorySerialNumberEntry.getKey();
908
					if(serialNumbersConsidered.contains(serialNumber)) {
910
					if (serialNumbersConsidered.contains(serialNumber)) {
-
 
911
						// This will rollback scheme for differenct orders for same serial
-
 
912
						List<SchemeInOut> sios = schemeInOutRepository
-
 
913
								.selectByInventoryItemIds(new HashSet<>(inventoryItemId)).stream()
-
 
914
								.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
-
 
915
								.collect(Collectors.toList());
909
						continue;
916
						Collections.reverse(sios);
-
 
917
						for (SchemeInOut sio : sios) {
-
 
918
							sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
919
							amountToRollback += sio.getAmount();
-
 
920
							// sio.setSchemeType(SchemeType.OUT);
-
 
921
							sio.setSerialNumber(serialNumber);
-
 
922
							sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
923
							rolledbackSios.add(sio);
910
					}
924
						}
-
 
925
						description = description.concat(" "+  serialNumber +" ");
-
 
926
					} else {
911
					serialNumbersConsidered.add(serialNumber);
927
						serialNumbersConsidered.add(serialNumber);
-
 
928
						List<Integer> schemesConsidered = new ArrayList<>();
912
					List<SchemeInOut> sios = schemeInOutRepository
929
						List<SchemeInOut> sios = schemeInOutRepository
913
							.selectAllDuplicate(fofoOrder.getFofoId(), Arrays.asList(serialNumber)).stream()
930
								.selectByInventoryItemIds(new HashSet<>(inventoryItemId)).stream()
914
							.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
931
								.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
915
							.collect(Collectors.toList());
932
								.collect(Collectors.toList());
916
					UserWalletHistory uwh = new UserWalletHistory();
-
 
917
					Set<Integer> schemesConsidered = new HashSet<>();
-
 
918
					Collections.reverse(sios);
933
						Collections.reverse(sios);
919
					for (SchemeInOut sio : sios) {
934
						for (SchemeInOut sio : sios) {
920
						if (!schemesConsidered.contains(sio.getSchemeId())) {
935
							if (!schemesConsidered.contains(sio.getSchemeId())) {
921
							schemesConsidered.add(sio.getSchemeId());
936
								schemesConsidered.add(sio.getSchemeId());
922
							continue;
937
								continue;
-
 
938
							}
-
 
939
							sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
940
							amountToRollback += sio.getAmount();
-
 
941
							// sio.setSchemeType(SchemeType.OUT);
-
 
942
							sio.setSerialNumber(serialNumber);
-
 
943
							sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
944
							rolledbackSios.add(sio);
923
						}
945
						}
924
						sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
925
						amountToRollback += sio.getAmount();
-
 
926
						sio.setSchemeType(SchemeType.OUT);
-
 
927
						sio.setSerialNumber(serialNumber);
-
 
928
						sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
929
						rolledbackSios.add(sio);
-
 
930
					}
-
 
931
					if (amountToRollback > 0) {
-
 
932
						uwh.setAmount(Math.round(amountToRollback));
-
 
933
						uwh.setDescription(description);
-
 
934
						uwh.setTimestamp(LocalDateTime.now());
-
 
935
						uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
-
 
936
						uwh.setReference(fofoOrder.getId());
-
 
937
						uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
-
 
938
						uwh.setFofoId(fofoOrder.getFofoId());
-
 
939
						uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
940
						userWalletHistory.add(uwh);
-
 
941
					}
946
					}
-
 
947
 
942
				}
948
				}
943
			}
949
			}
-
 
950
			if (amountToRollback > 0) {
-
 
951
				UserWalletHistory uwh = new UserWalletHistory();
-
 
952
				uwh.setAmount(Math.round(amountToRollback));
-
 
953
				uwh.setDescription(description);
-
 
954
				uwh.setTimestamp(LocalDateTime.now());
-
 
955
				uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
-
 
956
				uwh.setReference(fofoOrder.getId());
944
			// LOGGER.info("Found {} duplicate schemeouts for Orderid {}", sios.size(),
957
				uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
945
			// fofoOrder.getId());
958
				uwh.setFofoId(fofoOrder.getFofoId());
-
 
959
				uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
960
				userWalletHistory.add(uwh);
-
 
961
			}
946
		});
962
		});
947
 
963
 
948
		ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
964
		ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
949
				Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
965
				Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
950
						"Timestamp"),
966
						"Timestamp"),
Line 964... Line 980...
964
		Utils.sendMailWithAttachments(googleMailSender,
980
		Utils.sendMailWithAttachments(googleMailSender,
965
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
981
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
966
				"Partner Excess Amount", "PFA",
982
				"Partner Excess Amount", "PFA",
967
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
983
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
968
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
984
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
969
		
985
 
970
		throw new Exception();
986
		throw new Exception();
971
	}
987
	}
972
 
988
 
973
	public void dryRunSchemeOutReco1() throws Exception {
989
	public void dryRunSchemeOutReco1() throws Exception {
974
		List<Integer> references = Arrays.asList(6744, 7347, 8320, 8891, 9124, 9217, 9263, 9379);
990
		List<Integer> references = Arrays.asList(6744, 7347, 8320, 8891, 9124, 9217, 9263, 9379);
Line 1037... Line 1053...
1037
		Utils.sendMailWithAttachments(googleMailSender,
1053
		Utils.sendMailWithAttachments(googleMailSender,
1038
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
1054
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
1039
				"Partner Excess Amount", "PFA",
1055
				"Partner Excess Amount", "PFA",
1040
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
1056
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
1041
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
1057
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
1042
		
1058
 
1043
		throw new Exception();
1059
		throw new Exception();
1044
 
1060
 
1045
	}
1061
	}
1046
 
1062
 
1047
}
1063
}