| 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());
|