Subversion Repositories SmartDukaan

Rev

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

Rev 36772 Rev 36775
Line 788... Line 788...
788
        }
788
        }
789
        LocalDateTime closingDateTime = closingDate.plusDays(1).atStartOfDay();
789
        LocalDateTime closingDateTime = closingDate.plusDays(1).atStartOfDay();
790
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
790
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
791
        Set<Integer> retailersSet = customRetailerMap.keySet();
791
        Set<Integer> retailersSet = customRetailerMap.keySet();
792
 
792
 
793
        Map<Integer, Float> closingPurchaseMap = orderRepository.selectOpeningAmount(closingDateTime, retailersSet);
-
 
794
 
-
 
795
        Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
793
        Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
796
        Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream().collect(Collectors.toMap(x -> x.getValue().getId(), x -> x.getKey()));
794
        Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream().collect(Collectors.toMap(x -> x.getValue().getId(), x -> x.getKey()));
797
 
-
 
798
        Set<Integer> walletSet = walletRetailerMap.keySet();
795
        Set<Integer> walletSet = walletRetailerMap.keySet();
-
 
796
 
-
 
797
        // Closing uses the SAME model as the individual account statement (/account/statement):
799
        Map<Integer, Float> closingBalanceMap = userWalletHistoryRepository.getSumTillDateExcludingPurchase(closingDateTime, walletSet);
798
        //   Closing Balance = wallet balance + pending indent (in-transit orders) − loan outstanding (principal + interest)
800
        Map<Integer, Float> closingWalletMap = userWalletHistoryRepository.getSumTillDate(closingDateTime, walletSet);
799
        Map<Integer, Float> closingWalletMap = userWalletHistoryRepository.getSumTillDate(closingDateTime, walletSet);
801
        Map<Integer, Float> peindingIndentMap = transactionService.getPendingIndentValueMap(closingDateTime, Optional.empty());
800
        Map<Integer, Float> peindingIndentMap = transactionService.getPendingIndentValueMap(closingDateTime, Optional.empty());
-
 
801
        Map<Integer, Float> loanOutstandingMap = loanStatementRepository.getLoanOutstandingAtDate(retailersSet, closingDateTime);
802
 
802
 
803
        List<List<?>> rows = new ArrayList<>();
803
        List<List<?>> rows = new ArrayList<>();
804
        for (Map.Entry<Integer, Float> closingBalance : closingBalanceMap.entrySet()) {
804
        for (Map.Entry<Integer, Float> closingWalletEntry : closingWalletMap.entrySet()) {
805
            int walletId = closingBalance.getKey();
805
            int walletId = closingWalletEntry.getKey();
806
            int retailerId = walletRetailerMap.get(walletId);
806
            int retailerId = walletRetailerMap.get(walletId);
807
 
807
 
808
            float accountClosing = 0f;
808
            float wallet = closingWalletEntry.getValue() == null ? 0f : closingWalletEntry.getValue();
809
            if (!closingPurchaseMap.containsKey(retailerId)) {
809
            float pendingIndent = peindingIndentMap.getOrDefault(retailerId, 0f);
810
                accountClosing = closingBalance.getValue();
810
            float loanOutstanding = loanOutstandingMap.getOrDefault(retailerId, 0f);
811
            } else {
-
 
812
                accountClosing = closingBalance.getValue() - closingPurchaseMap.get(retailerId);
811
            float accountClosing = wallet + pendingIndent - loanOutstanding;
813
            }
-
 
814
 
812
 
815
            CustomRetailer cr = customRetailerMap.get(retailerId);
813
            CustomRetailer cr = customRetailerMap.get(retailerId);
816
 
814
 
817
            rows.add(Arrays.asList(retailerId, cr.getBusinessName(), cr.getAddress().getCity(), cr.getAddress().getState(), accountClosing, closingWalletMap.get(walletId), peindingIndentMap.get(retailerId)));
815
            rows.add(Arrays.asList(retailerId, cr.getBusinessName(), cr.getAddress().getCity(), cr.getAddress().getState(), accountClosing, wallet, pendingIndent, loanOutstanding));
818
        }
816
        }
819
 
817
 
820
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil.getCSVByteStream(Arrays.asList("Id", "Partner Name", "City", "State", "Closing Balance", "Closing Wallet", "In Transit"), rows);
818
        org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil.getCSVByteStream(Arrays.asList("Id", "Partner Name", "City", "State", "Closing Balance", "Closing Wallet", "In Transit", "Loan Outstanding"), rows);
821
        final HttpHeaders headers = new HttpHeaders();
819
        final HttpHeaders headers = new HttpHeaders();
822
        headers.set("Content-Type", "text/csv");
820
        headers.set("Content-Type", "text/csv");
823
        headers.set("Content-disposition", "inline; filename=account-statement-closing-." + StringUtils.toHyphenatedString(closingDate) + ".csv");
821
        headers.set("Content-disposition", "inline; filename=account-statement-closing-." + StringUtils.toHyphenatedString(closingDate) + ".csv");
824
        headers.setContentLength(byteArrayOutputStream.toByteArray().length);
822
        headers.setContentLength(byteArrayOutputStream.toByteArray().length);
825
 
823