Subversion Repositories SmartDukaan

Rev

Rev 36070 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 36070 Rev 36103
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;