Subversion Repositories SmartDukaan

Rev

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

Rev 29083 Rev 29811
Line 54... Line 54...
54
import com.spice.profitmandi.common.model.UnsettledPaymentModel;
54
import com.spice.profitmandi.common.model.UnsettledPaymentModel;
55
import com.spice.profitmandi.common.util.ExcelUtils;
55
import com.spice.profitmandi.common.util.ExcelUtils;
56
import com.spice.profitmandi.common.util.FileUtil;
56
import com.spice.profitmandi.common.util.FileUtil;
57
import com.spice.profitmandi.common.util.StringUtils;
57
import com.spice.profitmandi.common.util.StringUtils;
58
import com.spice.profitmandi.common.util.WalletHistoryModel;
58
import com.spice.profitmandi.common.util.WalletHistoryModel;
-
 
59
import com.spice.profitmandi.dao.entity.dtr.CreditAccount;
59
import com.spice.profitmandi.dao.entity.transaction.AddWalletRequest;
60
import com.spice.profitmandi.dao.entity.transaction.AddWalletRequest;
60
import com.spice.profitmandi.dao.entity.transaction.ManualPaymentType;
61
import com.spice.profitmandi.dao.entity.transaction.ManualPaymentType;
61
import com.spice.profitmandi.dao.entity.transaction.UnsettledPayment;
62
import com.spice.profitmandi.dao.entity.transaction.UnsettledPayment;
62
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
63
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
63
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
64
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
64
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
65
import com.spice.profitmandi.dao.enumuration.transaction.AddWalletRequestStatus;
65
import com.spice.profitmandi.dao.enumuration.transaction.TransactionType;
66
import com.spice.profitmandi.dao.enumuration.transaction.TransactionType;
66
import com.spice.profitmandi.dao.repository.catalog.AddWalletRequestRepository;
67
import com.spice.profitmandi.dao.repository.catalog.AddWalletRequestRepository;
67
import com.spice.profitmandi.dao.repository.catalog.ManualPaymentRequestRepository;
68
import com.spice.profitmandi.dao.repository.catalog.ManualPaymentRequestRepository;
68
import com.spice.profitmandi.dao.repository.catalog.UnsettledPaymentsRepository;
69
import com.spice.profitmandi.dao.repository.catalog.UnsettledPaymentsRepository;
-
 
70
import com.spice.profitmandi.dao.repository.dtr.CreditAccountRepository;
69
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
71
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
70
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
72
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
71
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
73
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
72
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
74
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
73
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
75
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
Line 170... Line 172...
170
 
172
 
171
	@Autowired
173
	@Autowired
172
	AddWalletRequestRepository addWalletRequestRepository;
174
	AddWalletRequestRepository addWalletRequestRepository;
173
 
175
 
174
	@Autowired
176
	@Autowired
175
	private RetailerRepository retailerRepository;
177
	private CreditAccountRepository creditAccountRepository;
176
 
-
 
177
	@Autowired
-
 
178
	private UserRepository userRepository;
-
 
179
	private static final Logger LOGGER = LogManager.getLogger(WalletController.class);
178
	private static final Logger LOGGER = LogManager.getLogger(WalletController.class);
180
 
179
 
181
	@PostMapping(value = "/wallet/upload")
180
	@PostMapping(value = "/wallet/upload")
182
	public String uploadWalletBulk(HttpServletRequest request, @RequestPart("file") MultipartFile file, Model model)
181
	public String uploadWalletBulk(HttpServletRequest request, @RequestPart("file") MultipartFile file, Model model)
183
			throws Exception {
182
			throws Exception {
Line 647... Line 646...
647
		return "walletStatement";
646
		return "walletStatement";
648
	}
647
	}
649
 
648
 
650
	@Autowired
649
	@Autowired
651
	TransactionService transactionService;
650
	TransactionService transactionService;
652
	
651
 
653
	@RequestMapping(value = "/account/reco", method = RequestMethod.GET)
652
	@RequestMapping(value = "/account/reco", method = RequestMethod.GET)
654
	public ResponseEntity<?> accountReco(HttpServletRequest request, @RequestParam LocalDate closingDate,
653
	public ResponseEntity<?> accountReco(HttpServletRequest request, @RequestParam LocalDate closingDate, Model model)
655
			Model model) throws Exception {
654
			throws Exception {
656
		boolean isAdmin = roleManager.isAdmin(cookiesProcessor.getCookiesObject(request).getRoleIds());
655
		boolean isAdmin = roleManager.isAdmin(cookiesProcessor.getCookiesObject(request).getRoleIds());
657
		if (!isAdmin) {
656
		if (!isAdmin) {
658
			throw new ProfitMandiBusinessException("Unauthorised access", "PartnerId", "Permission Denied");
657
			throw new ProfitMandiBusinessException("Unauthorised access", "PartnerId", "Permission Denied");
659
		}
658
		}
660
		LocalDateTime closingDateTime = LocalDate.now().atStartOfDay().plusDays(1);
659
		LocalDateTime closingDateTime = LocalDate.now().atStartOfDay().plusDays(1);
661
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
660
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
662
		Set<Integer> retailersSet = customRetailerMap.keySet();
661
		Set<Integer> retailersSet = customRetailerMap.keySet();
663
 
662
 
664
		Map<Integer, Float> closingPurchaseMap = orderRepository.selectOpeningAmount(closingDateTime, retailersSet);
663
		Map<Integer, Float> closingPurchaseMap = orderRepository.selectOpeningAmount(closingDateTime, retailersSet);
665
 
664
 
666
		
-
 
667
		Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
665
		Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
668
		Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream().collect(Collectors.toMap(x->x.getValue().getId(), x->x.getKey()));
666
		Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream()
-
 
667
				.collect(Collectors.toMap(x -> x.getValue().getId(), x -> x.getKey()));
669
		
668
 
670
		Set<Integer> walletSet = walletRetailerMap.keySet();
669
		Set<Integer> walletSet = walletRetailerMap.keySet();
671
		Map<Integer, Float> closingBalanceMap = userWalletHistoryRepository.getSumTillDateExcludingPurchase(closingDateTime, walletSet);
670
		Map<Integer, Float> closingBalanceMap = userWalletHistoryRepository
-
 
671
				.getSumTillDateExcludingPurchase(closingDateTime, walletSet);
672
		Map<Integer, Float> closingWalletMap = userWalletHistoryRepository.getSumTillDate(closingDateTime, walletSet);
672
		Map<Integer, Float> closingWalletMap = userWalletHistoryRepository.getSumTillDate(closingDateTime, walletSet);
673
		Map<Integer, Float> peindingIndentMap = transactionService.getPendingIndentValueMap();
673
		Map<Integer, Float> peindingIndentMap = transactionService.getPendingIndentValueMap();
674
		
674
 
675
		List<List<?>> rows = new ArrayList<>();
675
		List<List<?>> rows = new ArrayList<>();
676
		for (Map.Entry<Integer, Float> closingBalance : closingBalanceMap.entrySet()) {
676
		for (Map.Entry<Integer, Float> closingBalance : closingBalanceMap.entrySet()) {
677
			int walletId = closingBalance.getKey();
677
			int walletId = closingBalance.getKey();
678
			int retailerId = walletRetailerMap.get(walletId);
678
			int retailerId = walletRetailerMap.get(walletId);
679
			
679
 
680
			float accountClosing = 0f;
680
			float accountClosing = 0f;
681
			if (!closingPurchaseMap.containsKey(retailerId)) {
681
			if (!closingPurchaseMap.containsKey(retailerId)) {
682
				accountClosing = closingBalance.getValue();
682
				accountClosing = closingBalance.getValue();
683
			} else {
683
			} else {
684
				accountClosing = closingBalance.getValue() - closingPurchaseMap.get(retailerId);
684
				accountClosing = closingBalance.getValue() - closingPurchaseMap.get(retailerId);
685
			}
685
			}
686
			
686
 
687
			CustomRetailer cr = customRetailerMap.get(retailerId);
687
			CustomRetailer cr = customRetailerMap.get(retailerId);
688
 
688
 
689
			rows.add(Arrays.asList(retailerId, cr.getBusinessName(), cr.getAddress().getCity(),
689
			rows.add(Arrays.asList(retailerId, cr.getBusinessName(), cr.getAddress().getCity(),
690
					cr.getAddress().getState(), accountClosing, closingWalletMap.get(walletId), peindingIndentMap.get(retailerId)));
690
					cr.getAddress().getState(), accountClosing, closingWalletMap.get(walletId),
-
 
691
					peindingIndentMap.get(retailerId)));
691
		}
692
		}
692
		
-
 
693
 
693
 
694
		org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil
694
		org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil.getCSVByteStream(
695
				.getCSVByteStream(Arrays.asList("Id", "Partner Name", "City", "State", "Closing Balance", "Closing Wallet", "In Transit"), rows);
695
				Arrays.asList("Id", "Partner Name", "City", "State", "Closing Balance", "Closing Wallet", "In Transit"),
-
 
696
				rows);
696
		final HttpHeaders headers = new HttpHeaders();
697
		final HttpHeaders headers = new HttpHeaders();
697
		headers.set("Content-Type", "text/csv");
698
		headers.set("Content-Type", "text/csv");
698
		headers.set("Content-disposition",
699
		headers.set("Content-disposition",
699
				"inline; filename=account-statement-closing-." + StringUtils.toHyphenatedString(closingDate) + ".csv");
700
				"inline; filename=account-statement-closing-." + StringUtils.toHyphenatedString(closingDate) + ".csv");
700
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
701
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
Line 702... Line 703...
702
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
703
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
703
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
704
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
704
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
705
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
705
	}
706
	}
706
 
707
 
707
	
-
 
708
	@RequestMapping(value = "/account/closing-statements", method = RequestMethod.GET)
708
	@RequestMapping(value = "/account/closing-statements", method = RequestMethod.GET)
709
	public ResponseEntity<?> getAccountStatement(HttpServletRequest request, @RequestParam LocalDate closingDate,
709
	public ResponseEntity<?> getAccountStatement(HttpServletRequest request, @RequestParam LocalDate closingDate,
710
			Model model) throws Exception {
710
			Model model) throws Exception {
711
		boolean isAdmin = roleManager.isAdmin(cookiesProcessor.getCookiesObject(request).getRoleIds());
711
		boolean isAdmin = roleManager.isAdmin(cookiesProcessor.getCookiesObject(request).getRoleIds());
712
		if (!isAdmin) {
712
		if (!isAdmin) {
713
			throw new ProfitMandiBusinessException("Unauthorised access", "PartnerId", "Permission Denied");
713
			throw new ProfitMandiBusinessException("Unauthorised access", "PartnerId", "Permission Denied");
714
		}
714
		}
715
		LocalDateTime closingDateTime = closingDate.atStartOfDay().plusDays(1);
715
		LocalDateTime closingDateTime = closingDate.atStartOfDay().plusDays(1);
716
		
716
 
717
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
717
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
718
		Set<Integer> retailersSet = customRetailerMap.keySet();
718
		Set<Integer> retailersSet = customRetailerMap.keySet();
719
 
719
 
720
		Map<Integer, Float> closingPurchaseMap = orderRepository.selectOpeningAmount(closingDateTime, retailersSet);
720
		Map<Integer, Float> closingPurchaseMap = orderRepository.selectOpeningAmount(closingDateTime, retailersSet);
721
 
721
 
722
		
-
 
723
		Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
722
		Map<Integer, UserWallet> retailerWalletMap = walletService.getRetailerIdUserWalletMap(retailersSet);
724
		Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream().collect(Collectors.toMap(x->x.getValue().getId(), x->x.getKey()));
723
		Map<Integer, Integer> walletRetailerMap = retailerWalletMap.entrySet().stream()
-
 
724
				.collect(Collectors.toMap(x -> x.getValue().getId(), x -> x.getKey()));
725
		
725
 
726
		Set<Integer> walletSet = walletRetailerMap.keySet();
726
		Set<Integer> walletSet = walletRetailerMap.keySet();
727
		Map<Integer, Float> closingBalanceMap = userWalletHistoryRepository.getSumTillDateExcludingPurchase(closingDateTime, walletSet);
727
		Map<Integer, Float> closingBalanceMap = userWalletHistoryRepository
-
 
728
				.getSumTillDateExcludingPurchase(closingDateTime, walletSet);
728
		
729
 
729
		List<List<?>> rows = new ArrayList<>();
730
		List<List<?>> rows = new ArrayList<>();
730
		for (Map.Entry<Integer, Float> closingWalletBalance : closingBalanceMap.entrySet()) {
731
		for (Map.Entry<Integer, Float> closingWalletBalance : closingBalanceMap.entrySet()) {
731
			int walletId = closingWalletBalance.getKey();
732
			int walletId = closingWalletBalance.getKey();
732
			int retailerId = walletRetailerMap.get(walletId);
733
			int retailerId = walletRetailerMap.get(walletId);
733
			if (!closingPurchaseMap.containsKey(retailerId)) {
734
			if (!closingPurchaseMap.containsKey(retailerId)) {
Line 1041... Line 1042...
1041
 
1042
 
1042
		addWalletRequestRepository.persist(addWalletRequest);
1043
		addWalletRequestRepository.persist(addWalletRequest);
1043
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1044
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
1044
		return "response";
1045
		return "response";
1045
	}
1046
	}
-
 
1047
 
-
 
1048
	@RequestMapping(value = "/getCreditDetail", method = RequestMethod.GET)
-
 
1049
	public String getCreditDetail(HttpServletRequest request, Model model) throws Exception {
-
 
1050
		List<CreditAccount> creditAccounts = creditAccountRepository.selectAll();
-
 
1051
		Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
-
 
1052
 
-
 
1053
		model.addAttribute("creditAccounts", creditAccounts);
-
 
1054
		model.addAttribute("customRetailers", customRetailers);
-
 
1055
		return "partner-credit-detail";
-
 
1056
	}
-
 
1057
 
-
 
1058
	@RequestMapping(value = "/activateKred", method = RequestMethod.POST)
-
 
1059
	public String activateKred(HttpServletRequest request, @RequestParam int fofoId, Model model) throws Exception {
-
 
1060
		CreditAccount creditAccount = creditAccountRepository.selectByFofoId(fofoId);
-
 
1061
 
-
 
1062
		creditAccount.setActive(true);
-
 
1063
 
-
 
1064
		Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
-
 
1065
 
-
 
1066
		model.addAttribute("creditAccount", creditAccount);
-
 
1067
		model.addAttribute("customRetailers", customRetailers);
-
 
1068
		return "partner-credit-detail-row";
-
 
1069
	}
-
 
1070
 
-
 
1071
	@RequestMapping(value = "/deactivateKred", method = RequestMethod.POST)
-
 
1072
	public String deactivateKred(HttpServletRequest request, @RequestParam int fofoId, Model model) throws Exception {
-
 
1073
		CreditAccount creditAccount = creditAccountRepository.selectByFofoId(fofoId);
-
 
1074
 
-
 
1075
		creditAccount.setActive(false);
-
 
1076
 
-
 
1077
		Map<Integer, CustomRetailer> customRetailers = retailerService.getAllFofoRetailers();
-
 
1078
 
-
 
1079
		model.addAttribute("creditAccount", creditAccount);
-
 
1080
		model.addAttribute("customRetailers", customRetailers);
-
 
1081
		return "partner-credit-detail-row";
-
 
1082
	}
-
 
1083
 
1046
}
1084
}