Subversion Repositories SmartDukaan

Rev

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

Rev 33247 Rev 33336
Line 14... Line 14...
14
import com.spice.profitmandi.dao.entity.catalog.TagListing;
14
import com.spice.profitmandi.dao.entity.catalog.TagListing;
15
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
15
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
16
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
16
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
17
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
17
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
18
import com.spice.profitmandi.dao.entity.fofo.*;
18
import com.spice.profitmandi.dao.entity.fofo.*;
19
import com.spice.profitmandi.dao.entity.transaction.LineItem;
-
 
20
import com.spice.profitmandi.dao.entity.transaction.Order;
-
 
21
import com.spice.profitmandi.dao.entity.transaction.Transaction;
-
 
22
import com.spice.profitmandi.dao.entity.transaction.TransactionApproval;
19
import com.spice.profitmandi.dao.entity.transaction.TransactionApproval;
-
 
20
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
23
import com.spice.profitmandi.dao.entity.user.Address;
21
import com.spice.profitmandi.dao.entity.user.Address;
24
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
22
import com.spice.profitmandi.dao.enumuration.dtr.PaymentOptionReferenceType;
25
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
23
import com.spice.profitmandi.dao.enumuration.transaction.OrderStatus;
26
import com.spice.profitmandi.dao.enumuration.transaction.TransactionApprovalStatus;
24
import com.spice.profitmandi.dao.enumuration.transaction.TransactionApprovalStatus;
27
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
25
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
28
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
26
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
29
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
27
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
30
import com.spice.profitmandi.dao.repository.dtr.*;
28
import com.spice.profitmandi.dao.repository.dtr.*;
31
import com.spice.profitmandi.dao.repository.fofo.*;
29
import com.spice.profitmandi.dao.repository.fofo.*;
32
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
30
import com.spice.profitmandi.dao.repository.inventory.StateRepository;
33
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
-
 
34
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
31
import com.spice.profitmandi.dao.repository.transaction.*;
35
import com.spice.profitmandi.dao.repository.transaction.TransactionApprovalRepository;
-
 
36
import com.spice.profitmandi.dao.repository.transaction.TransactionRepository;
-
 
37
import com.spice.profitmandi.dao.repository.user.AddressRepository;
32
import com.spice.profitmandi.dao.repository.user.AddressRepository;
-
 
33
import com.spice.profitmandi.dao.repository.user.CartRepository;
38
import com.spice.profitmandi.service.EmailService;
34
import com.spice.profitmandi.service.EmailService;
39
import com.spice.profitmandi.service.NotificationService;
35
import com.spice.profitmandi.service.NotificationService;
40
import com.spice.profitmandi.service.authentication.RoleManager;
36
import com.spice.profitmandi.service.authentication.RoleManager;
41
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
37
import com.spice.profitmandi.service.integrations.zest.InsuranceService;
42
import com.spice.profitmandi.service.integrations.zest.MobileInsurancePlan;
38
import com.spice.profitmandi.service.integrations.zest.MobileInsurancePlan;
43
import com.spice.profitmandi.service.order.BulkOrderService;
39
import com.spice.profitmandi.service.order.BulkOrderService;
44
import com.spice.profitmandi.service.order.OrderService;
40
import com.spice.profitmandi.service.order.OrderService;
45
import com.spice.profitmandi.service.pricing.PricingService;
41
import com.spice.profitmandi.service.pricing.PricingService;
46
import com.spice.profitmandi.service.transaction.TransactionService;
42
import com.spice.profitmandi.service.transaction.TransactionService;
47
import com.spice.profitmandi.service.user.RetailerService;
43
import com.spice.profitmandi.service.user.RetailerService;
-
 
44
import com.spice.profitmandi.service.wallet.WalletService;
48
import com.spice.profitmandi.service.whatsapp.WhatsappMessageService;
45
import com.spice.profitmandi.service.whatsapp.WhatsappMessageService;
49
import com.spice.profitmandi.service.whatsapp.WhatsappMessageType;
46
import com.spice.profitmandi.service.whatsapp.WhatsappMessageType;
50
import com.spice.profitmandi.web.model.LoginDetails;
47
import com.spice.profitmandi.web.model.LoginDetails;
51
import com.spice.profitmandi.web.util.CookiesProcessor;
48
import com.spice.profitmandi.web.util.CookiesProcessor;
52
import com.spice.profitmandi.web.util.MVCResponseSender;
49
import com.spice.profitmandi.web.util.MVCResponseSender;
-
 
50
import in.shop2020.model.v1.order.WalletReferenceType;
53
import org.apache.logging.log4j.LogManager;
51
import org.apache.logging.log4j.LogManager;
54
import org.apache.logging.log4j.Logger;
52
import org.apache.logging.log4j.Logger;
55
import org.json.JSONArray;
53
import org.json.JSONArray;
56
import org.json.JSONObject;
54
import org.json.JSONObject;
57
import org.springframework.beans.factory.annotation.Autowired;
55
import org.springframework.beans.factory.annotation.Autowired;
Line 64... Line 62...
64
import org.springframework.transaction.annotation.Transactional;
62
import org.springframework.transaction.annotation.Transactional;
65
import org.springframework.ui.Model;
63
import org.springframework.ui.Model;
66
import org.springframework.web.bind.annotation.*;
64
import org.springframework.web.bind.annotation.*;
67
import org.springframework.web.multipart.MultipartFile;
65
import org.springframework.web.multipart.MultipartFile;
68
 
66
 
-
 
67
import javax.mail.MessagingException;
69
import javax.servlet.http.HttpServletRequest;
68
import javax.servlet.http.HttpServletRequest;
70
import javax.servlet.http.HttpServletResponse;
69
import javax.servlet.http.HttpServletResponse;
71
import java.io.ByteArrayInputStream;
70
import java.io.ByteArrayInputStream;
72
import java.io.ByteArrayOutputStream;
71
import java.io.ByteArrayOutputStream;
-
 
72
import java.io.IOException;
73
import java.io.InputStream;
73
import java.io.InputStream;
74
import java.nio.charset.StandardCharsets;
74
import java.nio.charset.StandardCharsets;
75
import java.time.LocalDateTime;
75
import java.time.LocalDateTime;
76
import java.time.format.DateTimeFormatter;
76
import java.time.format.DateTimeFormatter;
77
import java.time.temporal.ChronoUnit;
77
import java.time.temporal.ChronoUnit;
Line 167... Line 167...
167
    private MouRepository mouRepository;
167
    private MouRepository mouRepository;
168
    @Autowired
168
    @Autowired
169
    private WhatsappMessageService whatsappMessageService;
169
    private WhatsappMessageService whatsappMessageService;
170
    @Autowired
170
    @Autowired
171
    private TransactionRepository transactionRepository;
171
    private TransactionRepository transactionRepository;
-
 
172
    @Autowired
-
 
173
    WalletService walletService;
-
 
174
    @Autowired
-
 
175
    CartRepository cartRepository;
-
 
176
    @Autowired
-
 
177
    UserWalletRepository userWalletRepository;
-
 
178
 
172
 
179
 
173
    @RequestMapping(value = "/order")
180
    @RequestMapping(value = "/order")
174
    public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
181
    public String orderIndex(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
175
            throws ProfitMandiBusinessException {
182
            throws ProfitMandiBusinessException {
176
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
183
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
Line 1262... Line 1269...
1262
        Map<Integer, JSONObject> contentMap = commonSolrService.getContentByCatalogIds(catalogIds);
1269
        Map<Integer, JSONObject> contentMap = commonSolrService.getContentByCatalogIds(catalogIds);
1263
        JSONObject jsonObj = contentMap.get(item.getCatalogItemId());
1270
        JSONObject jsonObj = contentMap.get(item.getCatalogItemId());
1264
        pendingOrderItem.setImgUrl(jsonObj.getString("imageUrl_s"));
1271
        pendingOrderItem.setImgUrl(jsonObj.getString("imageUrl_s"));
1265
        pendingOrder.setPendingOrderItems(Arrays.asList(pendingOrderItem));
1272
        pendingOrder.setPendingOrderItems(Arrays.asList(pendingOrderItem));
1266
        CustomerAddress customerAddress = customerAddressRepository.selectById(pendingOrder.getCustomerAddressId());
1273
        CustomerAddress customerAddress = customerAddressRepository.selectById(pendingOrder.getCustomerAddressId());
1267
 
-
 
1268
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy h:mm a");
1274
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy h:mm a");
1269
 
-
 
1270
        Map<String, Object> emailModel = new HashMap<>();
1275
        Map<String, Object> emailModel = new HashMap<>();
1271
        emailModel.put("customer", customerAddress);
1276
        emailModel.put("customer", customerAddress);
1272
        emailModel.put("pendingOrder", pendingOrder);
1277
        emailModel.put("pendingOrder", pendingOrder);
1273
        emailModel.put("date", dateTimeFormatter);
1278
        emailModel.put("date", dateTimeFormatter);
1274
        Customer customer = customerRepository.selectById(pendingOrder.getCustomerId());
1279
        Customer customer = customerRepository.selectById(pendingOrder.getCustomerId());
Line 1384... Line 1389...
1384
        return "online-order-item";
1389
        return "online-order-item";
1385
    }
1390
    }
1386
 
1391
 
1387
    //TODO Tejus
1392
    //TODO Tejus
1388
    @RequestMapping(value = "/getBulkOrder")
1393
    @RequestMapping(value = "/getBulkOrder")
1389
    public String getBulkOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
1394
    public String getBulkOrder(HttpServletRequest request, Model model) throws ProfitMandiBusinessException, MessagingException, IOException {
1390
        return "bulk-order";
1395
        return "bulk-order";
1391
    }
1396
    }
1392
 
1397
 
1393
    @PostMapping(value = "/bulkOrder/upload")
1398
    @PostMapping(value = "/bulkOrder/upload")
1394
    public String uploadCatalog(HttpServletRequest request, @RequestPart("file") MultipartFile file, Model model)
1399
    public String uploadCatalog(HttpServletRequest request, @RequestPart("file") MultipartFile file, Model model)
Line 1403... Line 1408...
1403
 
1408
 
1404
    // This method is use for sending all pending transaction to Transation Approval menu
1409
    // This method is use for sending all pending transaction to Transation Approval menu
1405
    @RequestMapping(value = "/transaction/pendingApprovals", method = RequestMethod.GET)
1410
    @RequestMapping(value = "/transaction/pendingApprovals", method = RequestMethod.GET)
1406
    public String getTransactionApproval(HttpServletRequest request, Model model) throws Exception {
1411
    public String getTransactionApproval(HttpServletRequest request, Model model) throws Exception {
1407
        List<TransactionApproval> transactionApprovals = transactionApprovalRepository.selectAllPending();
1412
        List<TransactionApproval> transactionApprovals = transactionApprovalRepository.selectAllPending();
1408
        // List<Integer> transactionAppprovalIds= Arrays.asList( 1135352, 1135353, 1135354);
-
 
1409
        LOGGER.info("list of Approval transaction Id " + transactionApprovals);
1413
        LOGGER.info("list of Approval transaction Id " + transactionApprovals);
1410
        List<TransctionApprovalModel> approvalModelList = new ArrayList<>();
1414
        List<TransactionApprovalModel> approvalModelList = bulkOrderService.getAllPendingTransactionApproval();
1411
        for (TransactionApproval transactionApproval : transactionApprovals) {
-
 
1412
            List<Order> orderList = orderRepository.selectAllByTransactionId(transactionApproval.getId());
-
 
1413
            Transaction transaction = transactionRepository.selectById(transactionApproval.getId());
-
 
1414
            List<LineItemModel> lineItemModelList = new ArrayList<>();
-
 
1415
            for (Order order : orderList) {
-
 
1416
                LineItem lineItem = order.getLineItem();
-
 
1417
                LineItemModel lineItemModel = new LineItemModel();
-
 
1418
                lineItemModel.setItemId(lineItem.getItemId());
-
 
1419
                lineItemModel.setItemName(lineItem.getItem().getItemDescription());
-
 
1420
                lineItemModel.setItemQuantity(lineItem.getQuantity());
-
 
1421
                lineItemModel.setSellingPrice(lineItem.getUnitPrice());
-
 
1422
                lineItemModel.setDp(tagListingRepository.selectByItemId(lineItem.getItemId()).getSellingPrice());
-
 
1423
                lineItemModelList.add(lineItemModel);
-
 
1424
            }
-
 
1425
            AuthUser authUser = authRepository.selectById(transaction.getCreatedBy());
-
 
1426
            TransctionApprovalModel transactionApprovalModel = new TransctionApprovalModel();
-
 
1427
            String retailerName = " ";
-
 
1428
            retailerName = orderList.get(0).getRetailerName();
-
 
1429
            transactionApprovalModel.setRetailerName(retailerName);
-
 
1430
            transactionApprovalModel.setCreatedBy(authUser.getFullName());
-
 
1431
            transactionApprovalModel.setCreatedOn(transaction.getCreateTimestamp());
-
 
1432
            transactionApprovalModel.setTransactionId(transactionApproval.getId());
-
 
1433
            transactionApprovalModel.setLineItemModels(lineItemModelList);
-
 
1434
            approvalModelList.add(transactionApprovalModel);
-
 
1435
 
-
 
1436
 
-
 
1437
        }
-
 
1438
 
-
 
1439
        model.addAttribute("approvalModelList", approvalModelList);
1415
        model.addAttribute("approvalModelList", approvalModelList);
1440
        return "transaction/transaction-approvals";
1416
        return "transaction/transaction-approvals";
1441
    }
1417
    }
1442
 
1418
 
1443
    @RequestMapping(value = "transaction/approval", method = RequestMethod.PUT)
1419
    @RequestMapping(value = "transaction/approval", method = RequestMethod.PUT)
Line 1457... Line 1433...
1457
 
1433
 
1458
    }
1434
    }
1459
 
1435
 
1460
    private void updateApprovalStatus(int transactionId, int approvalId, String approvedBy, LocalDateTime approvedOn, String remark, TransactionApprovalStatus transactionApprovalStatus) throws Exception {
1436
    private void updateApprovalStatus(int transactionId, int approvalId, String approvedBy, LocalDateTime approvedOn, String remark, TransactionApprovalStatus transactionApprovalStatus) throws Exception {
1461
        TransactionApproval transactionApproval = transactionApprovalRepository.selectById(transactionId);
1437
        TransactionApproval transactionApproval = transactionApprovalRepository.selectById(transactionId);
-
 
1438
        int retailerId = transactionRepository.selectById(transactionId).getRetailerId();
1462
        if (!transactionApproval.getStatus().equals(TransactionApprovalStatus.PENDING)) {
1439
        if (!transactionApproval.getStatus().equals(TransactionApprovalStatus.PENDING)) {
1463
            throw new ProfitMandiBusinessException("Transaction already Processed", "Transaction already Processed", "Transaction already Processed");
1440
            throw new ProfitMandiBusinessException("Transaction already Processed", "Transaction already Processed", "Transaction already Processed");
1464
        }
1441
        }
1465
        transactionApproval.setStatus(transactionApprovalStatus);
1442
        transactionApproval.setStatus(transactionApprovalStatus);
1466
        transactionApproval.setRemark(remark);
1443
        transactionApproval.setRemark(remark);
1467
        transactionApproval.setApprovalId(approvalId);
1444
        transactionApproval.setApprovalId(approvalId);
1468
        transactionApproval.setApprovedBy(approvedBy);
1445
        transactionApproval.setApprovedBy(approvedBy);
1469
        transactionApproval.setApprovedOn(approvedOn);
1446
        transactionApproval.setApprovedOn(approvedOn);
1470
        if (transactionApprovalStatus.equals(TransactionApprovalStatus.APPROVED)) {
1447
        if (transactionApprovalStatus.equals(TransactionApprovalStatus.APPROVED)) {
1471
            transactionService.processTransaction(transactionId);
1448
            transactionService.processTransaction(transactionId);
-
 
1449
        } else {
-
 
1450
            float totalAmount = 0;
-
 
1451
            // referense id = transaction id
-
 
1452
            // here refund the amount of an order
-
 
1453
            List<UserWalletHistory> uwhList = walletService.getAllByReference(retailerId, transactionId, WalletReferenceType.PURCHASE);
-
 
1454
            // Do is negative so that add amount in wallet
-
 
1455
            totalAmount = -uwhList.get(0).getAmount();
-
 
1456
            walletService.refundToWallet(retailerId, totalAmount, transactionId, WalletReferenceType.PURCHASE, "Order canceled");
1472
        }
1457
        }
1473
    }
1458
    }
1474
 
1459
 
1475
    @RequestMapping(value = "/bulkOrderTemplate", method = RequestMethod.GET)
1460
    @RequestMapping(value = "/bulkOrderTemplate", method = RequestMethod.GET)
1476
    public ResponseEntity<?> bulkOrderTemplate() throws Exception {
1461
    public ResponseEntity<?> bulkOrderTemplate() throws Exception {