| Line 1030... |
Line 1030... |
| 1030 |
}
|
1030 |
}
|
| 1031 |
}
|
1031 |
}
|
| 1032 |
}
|
1032 |
}
|
| 1033 |
|
1033 |
|
| 1034 |
@Override
|
1034 |
@Override
|
| - |
|
1035 |
public void restoreSchemes(List<Integer> inventoryItemIds, String debitNoteNumber) throws Exception {
|
| - |
|
1036 |
String rollbackDescription = "Schemes rolled back for DebitNote #" + debitNoteNumber;
|
| - |
|
1037 |
|
| - |
|
1038 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectAllByIds(inventoryItemIds);
|
| - |
|
1039 |
Map<Integer, InventoryItem> inventoryItemMap = inventoryItems.stream()
|
| - |
|
1040 |
.collect(Collectors.toMap(InventoryItem::getId, x -> x));
|
| - |
|
1041 |
Map<Integer, Integer> purchasePartnerMap = inventoryItems.stream()
|
| - |
|
1042 |
.collect(Collectors.toMap(InventoryItem::getPurchaseId, InventoryItem::getFofoId, (u, v) -> u));
|
| - |
|
1043 |
|
| - |
|
1044 |
List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds));
|
| - |
|
1045 |
List<Integer> schemeIds = schemeInOuts.stream().map(SchemeInOut::getSchemeId).distinct()
|
| - |
|
1046 |
.collect(Collectors.toList());
|
| - |
|
1047 |
if (schemeIds.isEmpty()) return;
|
| - |
|
1048 |
|
| - |
|
1049 |
List<Scheme> schemes = schemeRepository.selectBySchemeIds(schemeIds);
|
| - |
|
1050 |
Map<Integer, Scheme> schemesMap = schemes.stream().collect(Collectors.toMap(Scheme::getId, x -> x));
|
| - |
|
1051 |
Map<Integer, Float> inSchemesRestoreMap = new HashMap<>();
|
| - |
|
1052 |
|
| - |
|
1053 |
for (SchemeInOut schemeInOut : schemeInOuts) {
|
| - |
|
1054 |
if (schemeInOut.getStatus() != null
|
| - |
|
1055 |
&& schemeInOut.getStatus().equals(SchemePayoutStatus.REJECTED)
|
| - |
|
1056 |
&& rollbackDescription.equals(schemeInOut.getStatusDescription())) {
|
| - |
|
1057 |
|
| - |
|
1058 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
| - |
|
1059 |
if (scheme != null && scheme.getType().getTransactionType().equals(StockTransactionType.IN)) {
|
| - |
|
1060 |
int inventoryItemId = schemeInOut.getInventoryItemId();
|
| - |
|
1061 |
inSchemesRestoreMap.merge(inventoryItemId, schemeInOut.getAmount(), Float::sum);
|
| - |
|
1062 |
}
|
| - |
|
1063 |
|
| - |
|
1064 |
schemeInOut.setStatus(SchemePayoutStatus.CREDITED);
|
| - |
|
1065 |
schemeInOut.setStatusDescription("Restored: DN rejection reversal #" + debitNoteNumber);
|
| - |
|
1066 |
schemeInOut.setRolledBackTimestamp(null);
|
| - |
|
1067 |
}
|
| - |
|
1068 |
}
|
| - |
|
1069 |
|
| - |
|
1070 |
Map<Integer, Double> purchaseRestoreAmountMap = inSchemesRestoreMap.entrySet().stream()
|
| - |
|
1071 |
.collect(Collectors.groupingBy(
|
| - |
|
1072 |
x -> inventoryItemMap.get(x.getKey()).getPurchaseId(),
|
| - |
|
1073 |
Collectors.summingDouble(Map.Entry::getValue)));
|
| - |
|
1074 |
|
| - |
|
1075 |
String restoreReason = "Scheme restored: DN rejection reversal #" + debitNoteNumber;
|
| - |
|
1076 |
for (Map.Entry<Integer, Double> entry : purchaseRestoreAmountMap.entrySet()) {
|
| - |
|
1077 |
int purchaseId = entry.getKey();
|
| - |
|
1078 |
Double amountToRestore = entry.getValue();
|
| - |
|
1079 |
if (amountToRestore != null && amountToRestore > 0) {
|
| - |
|
1080 |
walletService.addAmountToWallet(purchasePartnerMap.get(purchaseId), purchaseId,
|
| - |
|
1081 |
WalletReferenceType.SCHEME_IN, restoreReason,
|
| - |
|
1082 |
amountToRestore.floatValue(), LocalDateTime.now());
|
| - |
|
1083 |
}
|
| - |
|
1084 |
}
|
| - |
|
1085 |
}
|
| - |
|
1086 |
|
| - |
|
1087 |
@Override
|
| 1035 |
public Map<String, Object> getSchemes(Set<Integer> roleIds, int offset, int limit)
|
1088 |
public Map<String, Object> getSchemes(Set<Integer> roleIds, int offset, int limit)
|
| 1036 |
throws ProfitMandiBusinessException {
|
1089 |
throws ProfitMandiBusinessException {
|
| 1037 |
Map<String, Object> map = new HashMap<>();
|
1090 |
Map<String, Object> map = new HashMap<>();
|
| 1038 |
List<Scheme> schemes = null;
|
1091 |
List<Scheme> schemes = null;
|
| 1039 |
long size = 0;
|
1092 |
long size = 0;
|