Subversion Repositories SmartDukaan

Rev

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

Rev 33775 Rev 33809
Line 18... Line 18...
18
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
18
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
19
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
19
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
20
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
20
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
21
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
21
import com.spice.profitmandi.dao.repository.fofo.PendingOrderItemRepository;
22
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
22
import com.spice.profitmandi.dao.repository.fofo.PendingOrderService;
23
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
23
import com.spice.profitmandi.dao.repository.transaction.*;
24
import com.spice.profitmandi.dao.repository.transaction.StatementDetailModel;
-
 
25
import com.spice.profitmandi.dao.repository.transaction.UserWalletHistoryRepository;
-
 
26
import com.spice.profitmandi.service.authentication.RoleManager;
24
import com.spice.profitmandi.service.authentication.RoleManager;
27
import com.spice.profitmandi.service.order.OrderService;
25
import com.spice.profitmandi.service.order.OrderService;
28
import com.spice.profitmandi.service.transaction.TransactionService;
26
import com.spice.profitmandi.service.transaction.TransactionService;
29
import com.spice.profitmandi.service.user.RetailerService;
27
import com.spice.profitmandi.service.user.RetailerService;
30
import com.spice.profitmandi.service.wallet.WalletService;
28
import com.spice.profitmandi.service.wallet.WalletService;
Line 88... Line 86...
88
    private WalletService walletService;
86
    private WalletService walletService;
89
    @Autowired
87
    @Autowired
90
    private UserWalletHistoryRepository userWalletHistoryRepository;
88
    private UserWalletHistoryRepository userWalletHistoryRepository;
91
    @Autowired
89
    @Autowired
92
    private TransactionService transactionService;
90
    private TransactionService transactionService;
-
 
91
    @Autowired
-
 
92
    private LoanStatementRepository loanStatementRepository;
93
 
93
 
94
    @PostMapping(value = "/reports/{projectName}/{fileName}")
94
    @PostMapping(value = "/reports/{projectName}/{fileName}")
95
    public ResponseEntity<?> fetchReport(HttpServletRequest request, @PathVariable String fileName,
95
    public ResponseEntity<?> fetchReport(HttpServletRequest request, @PathVariable String fileName,
96
                                         @PathVariable ReporticoProject projectName, @RequestBody Map<String, String> paramsMap)
96
                                         @PathVariable ReporticoProject projectName, @RequestBody Map<String, String> paramsMap)
97
            throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
97
            throws ProfitMandiBusinessException, UnsupportedOperationException, IOException {
Line 1129... Line 1129...
1129
        model.addAttribute("grandTotalDebit", grandTotalDebit);
1129
        model.addAttribute("grandTotalDebit", grandTotalDebit);
1130
        model.addAttribute("grandTotalCredit", grandTotalCredit);
1130
        model.addAttribute("grandTotalCredit", grandTotalCredit);
1131
 
1131
 
1132
        return "account-statement-list";
1132
        return "account-statement-list";
1133
    }
1133
    }
-
 
1134
 
-
 
1135
    @RequestMapping(value = "/loan/loan-statement", method = RequestMethod.GET)
-
 
1136
    public String loanStatement(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
-
 
1137
                                @RequestParam(required = false) LocalDate startDate,
-
 
1138
                                @RequestParam(required = false) LocalDate endDate)
-
 
1139
            throws Exception {
-
 
1140
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1141
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1142
 
-
 
1143
        model.addAttribute("isAdmin", isAdmin);
-
 
1144
 
-
 
1145
        return "partner-loan-statement";
-
 
1146
 
-
 
1147
    }
-
 
1148
 
-
 
1149
    @RequestMapping(value = "/loan/partner-loan-statement-report", method = RequestMethod.GET)
-
 
1150
    public String partnerLoanStatement(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
-
 
1151
                                       @RequestParam(required = false) LocalDateTime startDate,
-
 
1152
                                       @RequestParam(required = false) LocalDateTime endDate)
-
 
1153
            throws Exception {
-
 
1154
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1155
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1156
        int partnerId = 0;
-
 
1157
 
-
 
1158
        if (fofoId > 0) {
-
 
1159
            partnerId = fofoId;
-
 
1160
        } else {
-
 
1161
            partnerId = loginDetails.getFofoId();
-
 
1162
        }
-
 
1163
 
-
 
1164
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(partnerId);
-
 
1165
 
-
 
1166
        List<LoanStatementReportModel> loanStatementReportModels = loanStatementRepository.selectByDatesAndStoreCode(startDate, endDate, fofoStore.getCode());
-
 
1167
 
-
 
1168
        model.addAttribute("isAdmin", isAdmin);
-
 
1169
        model.addAttribute("loanStatementReportModels", loanStatementReportModels);
-
 
1170
 
-
 
1171
        return "partner-loan-statement-summary";
-
 
1172
 
-
 
1173
    }
-
 
1174
 
-
 
1175
    @RequestMapping(value = "/loan/download-partner-loan-statement-report", method = RequestMethod.GET)
-
 
1176
    public ResponseEntity<?> downloadPartnerLoanStatement(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId,
-
 
1177
                                                          @RequestParam(required = false) LocalDateTime startDate,
-
 
1178
                                                          @RequestParam(required = false) LocalDateTime endDate)
-
 
1179
            throws Exception {
-
 
1180
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
-
 
1181
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
-
 
1182
 
-
 
1183
        int partnerId = 0;
-
 
1184
 
-
 
1185
        if (fofoId > 0) {
-
 
1186
            partnerId = fofoId;
-
 
1187
        } else {
-
 
1188
            partnerId = loginDetails.getFofoId();
-
 
1189
        }
-
 
1190
 
-
 
1191
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(partnerId);
-
 
1192
 
-
 
1193
        List<List<?>> rows = new ArrayList<>();
-
 
1194
 
-
 
1195
        List<LoanStatementReportModel> loanStatementReportModels = loanStatementRepository.selectByDatesAndStoreCode(startDate, endDate, fofoStore.getCode());// Extract the store name from the first loan statement
-
 
1196
        String storeName = loanStatementReportModels.get(0).getStoreName();
-
 
1197
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
-
 
1198
        for (LoanStatementReportModel loanStatement : loanStatementReportModels) {
-
 
1199
            rows.add(Arrays.asList(
-
 
1200
                    loanStatement.getCode(),  // Code
-
 
1201
                    String.valueOf(loanStatement.getId()),  // ID (convert int to string)
-
 
1202
                    loanStatement.getStoreName(),  // Store Name
-
 
1203
                    loanStatement.getState(),  // State
-
 
1204
                    loanStatement.getZone(),  // Zone
-
 
1205
                    loanStatement.getArea(),  // Area
-
 
1206
                    loanStatement.getTerritory(),  // Territory
-
 
1207
                    String.valueOf(loanStatement.getLoanId()),  // Loan ID
-
 
1208
                    loanStatement.getInterestRate().toString(),  // Interest Rate (BigDecimal to String)
-
 
1209
                    loanStatement.getIntialAmount().toString(),  // Initial Amount (BigDecimal to String)
-
 
1210
                    loanStatement.getPendingAmount().toString(),  // Pending Amount (BigDecimal to String)
-
 
1211
                    loanStatement.getCreatedOn().format(dateTimeFormatter),  // Created On (format LocalDateTime)
-
 
1212
                    loanStatement.getDueDate().format(dateTimeFormatter),  // Due Date (format LocalDateTime)
-
 
1213
                    loanStatement.getInterestAccrued().toString(),  // Interest Accrued (BigDecimal to String)
-
 
1214
                    loanStatement.getInterestPaid().toString(),  // Interest Paid (BigDecimal to String)
-
 
1215
                    String.valueOf(loanStatement.getFreeDays()),  // Free Days (convert int to string)
-
 
1216
                    loanStatement.getLoanReferenceType().toString(),  // Loan Reference Type (enum or string)
-
 
1217
                    loanStatement.getAmount().toString(),  // Amount (BigDecimal to String)
-
 
1218
                    loanStatement.getBusinessDate().format(dateTimeFormatter),  // Business Date (format LocalDateTime)
-
 
1219
                    loanStatement.getCreatedAt().format(dateTimeFormatter),  // Created At (format LocalDateTime)
-
 
1220
                    loanStatement.getDescription(),  // Description
-
 
1221
                    loanStatement.getStatus()  // Status (calculated value)
-
 
1222
            ));
-
 
1223
        }
-
 
1224
 
-
 
1225
        // Set up the headers and create the CSV
-
 
1226
        List<String> headers = Arrays.asList("Code", "ID", "Store Name", "State", "Zone", "Area", "Territory", "Loan ID",
-
 
1227
                "Interest Rate", "Initial Amount", "Pending Amount", "Created On", "Due Date",
-
 
1228
                "Interest Accrued", "Interest Paid", "Free Days", "Loan Reference Type",
-
 
1229
                "Amount", "Business Date", "Created At", "Description", "Status");
-
 
1230
 
-
 
1231
        // Create the CSV byte stream
-
 
1232
        org.apache.commons.io.output.ByteArrayOutputStream baos = FileUtil.getCSVByteStream(headers, rows);
-
 
1233
        ResponseEntity<?> responseEntity = orderService.downloadReportInCsv(baos, rows, "Partner Loan Summary Report");
-
 
1234
 
-
 
1235
        return responseEntity;
-
 
1236
 
-
 
1237
    }
1134
}
1238
}