| 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 |
|