Subversion Repositories SmartDukaan

Rev

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

Rev 28547 Rev 28795
Line 44... Line 44...
44
import com.spice.profitmandi.common.web.util.ResponseSender;
44
import com.spice.profitmandi.common.web.util.ResponseSender;
45
import com.spice.profitmandi.dao.entity.catalog.Item;
45
import com.spice.profitmandi.dao.entity.catalog.Item;
46
import com.spice.profitmandi.dao.entity.catalog.Scheme;
46
import com.spice.profitmandi.dao.entity.catalog.Scheme;
47
import com.spice.profitmandi.dao.entity.catalog.TagListing;
47
import com.spice.profitmandi.dao.entity.catalog.TagListing;
48
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
48
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
-
 
49
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
49
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
50
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
-
 
51
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
50
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
52
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
-
 
53
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
-
 
54
import com.spice.profitmandi.dao.entity.transaction.PriceDropIMEI;
51
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
55
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
52
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
56
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
-
 
57
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
53
import com.spice.profitmandi.dao.model.CreateOfferRequest;
58
import com.spice.profitmandi.dao.model.CreateOfferRequest;
54
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
59
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
55
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
60
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
56
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
61
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
57
import com.spice.profitmandi.dao.repository.catalog.StateGstRateRepository;
62
import com.spice.profitmandi.dao.repository.catalog.StateGstRateRepository;
58
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
63
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
59
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
64
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
60
import com.spice.profitmandi.dao.repository.dtr.Mongo;
65
import com.spice.profitmandi.dao.repository.dtr.Mongo;
-
 
66
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
61
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
67
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
-
 
68
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
62
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
69
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
-
 
70
import com.spice.profitmandi.dao.repository.transaction.PriceDropIMEIRepository;
-
 
71
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
63
import com.spice.profitmandi.service.authentication.RoleManager;
72
import com.spice.profitmandi.service.authentication.RoleManager;
64
import com.spice.profitmandi.service.inventory.InventoryService;
73
import com.spice.profitmandi.service.inventory.InventoryService;
65
import com.spice.profitmandi.service.offers.OfferService;
74
import com.spice.profitmandi.service.offers.OfferService;
66
import com.spice.profitmandi.service.scheme.SchemeService;
75
import com.spice.profitmandi.service.scheme.SchemeService;
67
import com.spice.profitmandi.service.user.RetailerService;
76
import com.spice.profitmandi.service.user.RetailerService;
Line 122... Line 131...
122
	private Mongo mongoClient;
131
	private Mongo mongoClient;
123
 
132
 
124
	@Autowired
133
	@Autowired
125
	private PartnerTypeChangeService partnerTypeChangeService;
134
	private PartnerTypeChangeService partnerTypeChangeService;
126
 
135
 
-
 
136
	@Autowired
-
 
137
	InventoryItemRepository inventoryItemRepository;
-
 
138
 
-
 
139
	@Autowired
-
 
140
	PriceDropIMEIRepository priceDropIMEIRepository;
-
 
141
 
-
 
142
	@Autowired
-
 
143
	PriceDropRepository priceDropRepository;
-
 
144
 
-
 
145
	@Autowired
-
 
146
	SchemeInOutRepository schemeInOutRepository;
-
 
147
 
127
	@RequestMapping(value = "/createScheme", method = RequestMethod.GET)
148
	@RequestMapping(value = "/createScheme", method = RequestMethod.GET)
128
	public String createScheme(HttpServletRequest request, Model model) {
149
	public String createScheme(HttpServletRequest request, Model model) {
129
		// Map<Integer, String> itemIdItemDescriptionMap =
150
		// Map<Integer, String> itemIdItemDescriptionMap =
130
		// inventoryService.getAllItemIdItemDescriptionMap();
151
		// inventoryService.getAllItemIdItemDescriptionMap();
131
		// model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
152
		// model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
Line 301... Line 322...
301
			@RequestParam(required = false) LocalDate date,
322
			@RequestParam(required = false) LocalDate date,
302
			@RequestParam(name = "limit", defaultValue = "10") int limit,
323
			@RequestParam(name = "limit", defaultValue = "10") int limit,
303
			@RequestParam(name = "searchItem", required = false, defaultValue = "0") int searchItem,
324
			@RequestParam(name = "searchItem", required = false, defaultValue = "0") int searchItem,
304
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
325
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
305
			@RequestParam(name = "partnerType", required = false, defaultValue = "") PartnerType partnerType,
326
			@RequestParam(name = "partnerType", required = false, defaultValue = "") PartnerType partnerType,
-
 
327
			@RequestParam(name = "searchImei", required = false, defaultValue = "") String searchImei, Model model)
306
			Model model) throws ProfitMandiBusinessException {
328
			throws ProfitMandiBusinessException {
307
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
329
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
308
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
330
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
309
		if (date == null) {
331
		if (date == null) {
310
			date = LocalDate.now();
332
			date = LocalDate.now();
311
		}
333
		}
Line 354... Line 376...
354
				model.addAttribute("mop", tagListing.getMop());
376
				model.addAttribute("mop", tagListing.getMop());
355
			}
377
			}
356
			schemes = schemeService.selectSchemeByPartnerType(partnerType, date, searchItem, isAdmin, offset, limit);
378
			schemes = schemeService.selectSchemeByPartnerType(partnerType, date, searchItem, isAdmin, offset, limit);
357
			model.addAttribute("schemes", schemes);
379
			model.addAttribute("schemes", schemes);
358
			if (schemes.size() == 0) {
380
			if (schemes.size() == 0) {
359
				return "schemes";
-
 
360
			}
-
 
361
			//For 7720(HR) remove investment
-
 
362
			if(item.getBrand().equals("Vivo") && fofoStoreRepository.getWarehousePartnerMap().get(7720).stream().filter(x->x.getId()==loginDetails.getFofoId()).count() > 0) {
-
 
363
				schemes = schemes.stream().filter(x->!x.getType().equals(SchemeType.INVESTMENT)).collect(Collectors.toList());
-
 
364
			}
-
 
365
			float nlc = tagListing.getSellingPrice();
-
 
366
			for (Scheme scheme : schemes) {
-
 
367
				if (scheme.getAmountType().equals(AmountType.PERCENTAGE)) {
-
 
368
					if (tagListing != null) {
381
				if (isAdmin)
369
						float taxRate = stateGstRateRepository.getIgstTaxRate(Arrays.asList(searchItem))
-
 
370
								.get(searchItem);
382
					return "schemes";
371
						float taxableSellingPrice = tagListing.getSellingPrice() / (1 + taxRate / 100);
-
 
372
						float amount = taxableSellingPrice * scheme.getAmount() / 100;
-
 
373
						scheme.setAmountModel(
-
 
374
								FormattingUtils.formatDecimalTwoDigits(amount) + " (" + scheme.getAmount() + "%)");
-
 
375
						nlc -= amount;
-
 
376
					}
383
				else {
377
 
384
 
378
					else {
-
 
379
						scheme.setAmountModel(scheme.getAmount() + "%");
-
 
380
					}
-
 
381
				} else {
-
 
382
					scheme.setAmountModel(scheme.getAmount() + "");
-
 
383
					nlc -= scheme.getAmount();
385
					return "schemes-partner";
384
				}
386
				}
385
			}
387
			}
-
 
388
			// For 7720(HR) remove investment
-
 
389
			int nlc = this.getNlc(item, loginDetails.getFofoId(), schemes, tagListing, searchItem);
386
			size = schemeService.selectSchemeCount(partnerType, date, searchItem, isAdmin);
390
			size = schemeService.selectSchemeCount(partnerType, date, searchItem, isAdmin);
387
			model.addAttribute("start", offset + 1);
391
			model.addAttribute("start", offset + 1);
388
			model.addAttribute("size", size);
392
			model.addAttribute("size", size);
389
			if (schemes.size() < limit) {
393
			if (schemes.size() < limit) {
390
				model.addAttribute("end", offset + schemes.size());
394
				model.addAttribute("end", offset + schemes.size());
391
			} else {
395
			} else {
392
				model.addAttribute("end", offset + limit);
396
				model.addAttribute("end", offset + limit);
393
			}
397
			}
394
			model.addAttribute("nlc", Math.round(nlc));
398
			model.addAttribute("nlc", Math.round(nlc));
-
 
399
		} else if (!(searchImei.equals(""))) {
-
 
400
 
-
 
401
			LOGGER.info("searchImei" + searchImei);
-
 
402
 
-
 
403
			InventoryItem inventoryItem = inventoryItemRepository.selectBySerialNumberFofoId(searchImei,
-
 
404
					loginDetails.getFofoId());
-
 
405
			List<SchemeInOut> schemeInOut = new ArrayList<>();
-
 
406
			Map<Integer, Scheme> schemeMap = new HashMap<>();
-
 
407
			if (inventoryItem != null) {
-
 
408
 
-
 
409
				LOGGER.info("inventoryItem" + inventoryItem);
-
 
410
 
-
 
411
				schemeInOut = schemeInOutRepository
-
 
412
						.selectByInventoryItemIds(new HashSet<>(Arrays.asList(inventoryItem.getId())));
-
 
413
 
-
 
414
				LOGGER.info("schemeInOut" + schemeInOut);
-
 
415
 
-
 
416
				if (!schemeInOut.isEmpty()) {
-
 
417
 
-
 
418
					List<Integer> schemeIds = schemeInOut.stream().map(x -> x.getSchemeId())
-
 
419
							.collect(Collectors.toList());
-
 
420
 
-
 
421
					schemes = schemeRepository.selectBySchemeIds(schemeIds);
-
 
422
					for (Scheme scheme : schemes) {
-
 
423
						if (scheme.getAmountType().equals(AmountType.PERCENTAGE)) {
-
 
424
							scheme.setAmountModel(scheme.getAmount() + "%");
-
 
425
						} else {
-
 
426
							scheme.setAmountModel(scheme.getAmount() + "");
-
 
427
						}
-
 
428
					}
-
 
429
 
-
 
430
					schemeMap = schemes.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
431
				}
-
 
432
			}
-
 
433
 
-
 
434
			model.addAttribute("schemeMap", schemeMap);
-
 
435
 
-
 
436
			model.addAttribute("schemeInOut", schemeInOut);
-
 
437
 
395
		}
438
		}
396
		model.addAttribute("searchItem", searchItem);
439
		model.addAttribute("searchItem", searchItem);
397
		model.addAttribute("searchTerm", searchTerm);
440
		model.addAttribute("searchTerm", searchTerm);
398
		model.addAttribute("partnerType", partnerType);
441
		model.addAttribute("partnerType", partnerType);
399
		model.addAttribute("isAdmin", isAdmin);
442
		model.addAttribute("isAdmin", isAdmin);
Line 402... Line 445...
402
		// model.addAttribute("roleTypes", loginDetails.getRoleTypes());
445
		// model.addAttribute("roleTypes", loginDetails.getRoleTypes());
403
		if (isAdmin)
446
		if (isAdmin)
404
			return "schemes";
447
			return "schemes";
405
		else {
448
		else {
406
			List<CreateOfferRequest> offers = new ArrayList<>();
449
			List<CreateOfferRequest> offers = new ArrayList<>();
-
 
450
			List<PriceDropIMEI> priceDropImeis = new ArrayList<>();
407
			if (searchItem > 0) {
451
			if (searchItem > 0) {
408
				offers = offerService.getPublishedOffers(date, loginDetails.getFofoId(), searchItem);
452
				offers = offerService.getPublishedOffers(date, loginDetails.getFofoId(), searchItem);
409
			}
453
			}
-
 
454
			if (!(searchImei.equals(""))) {
-
 
455
				InventoryItem inventoryItem = inventoryItemRepository.selectBySerialNumberFofoId(searchImei,
-
 
456
						loginDetails.getFofoId());
-
 
457
 
-
 
458
				offers = offerService.getPublishedOffers(date, loginDetails.getFofoId(), inventoryItem.getItemId());
-
 
459
				priceDropImeis = priceDropIMEIRepository.selectByFofoIdImei(loginDetails.getFofoId(), searchImei);
-
 
460
				for (PriceDropIMEI priceDropIMEI : priceDropImeis) {
-
 
461
					int priceDropId = priceDropIMEI.getPriceDropId();
-
 
462
					PriceDrop pd = priceDropRepository.selectById(priceDropId);
-
 
463
 
-
 
464
					priceDropIMEI.setPriceDrop(pd);
-
 
465
				}
-
 
466
			}
410
			FofoStore fs = fofoStoreRepository.selectByRetailerId(loginDetails.getFofoId());
467
			FofoStore fs = fofoStoreRepository.selectByRetailerId(loginDetails.getFofoId());
411
 
468
 
412
			model.addAttribute("offers", offers);
469
			model.addAttribute("offers", offers);
413
			model.addAttribute("partnerCode", fs.getCode());
470
			model.addAttribute("partnerCode", fs.getCode());
-
 
471
			model.addAttribute("fofoId", fs.getId());
-
 
472
			model.addAttribute("priceDropImeis", priceDropImeis);
414
			return "schemes-partner";
473
			return "schemes-partner";
415
		}
474
		}
416
	}
475
	}
417
 
476
 
-
 
477
	private int getNlc(Item item, int fofoId, List<Scheme> schemes, TagListing tagListing, int itemId)
-
 
478
			throws ProfitMandiBusinessException {
-
 
479
 
-
 
480
		if (item.getBrand().equals("Vivo") && fofoStoreRepository.getWarehousePartnerMap().get(7720).stream()
-
 
481
				.filter(x -> x.getId() == fofoId).count() > 0) {
-
 
482
			schemes = schemes.stream().filter(x -> !x.getType().equals(SchemeType.INVESTMENT))
-
 
483
					.collect(Collectors.toList());
-
 
484
		}
-
 
485
		float nlc = tagListing.getSellingPrice();
-
 
486
		for (Scheme scheme : schemes) {
-
 
487
			if (scheme.getAmountType().equals(AmountType.PERCENTAGE)) {
-
 
488
				if (tagListing != null) {
-
 
489
					float taxRate = stateGstRateRepository.getIgstTaxRate(Arrays.asList(itemId)).get(itemId);
-
 
490
					float taxableSellingPrice = tagListing.getSellingPrice() / (1 + taxRate / 100);
-
 
491
					float amount = taxableSellingPrice * scheme.getAmount() / 100;
-
 
492
					scheme.setAmountModel(
-
 
493
							FormattingUtils.formatDecimalTwoDigits(amount) + " (" + scheme.getAmount() + "%)");
-
 
494
					nlc -= amount;
-
 
495
				}
-
 
496
 
-
 
497
				else {
-
 
498
					scheme.setAmountModel(scheme.getAmount() + "%");
-
 
499
				}
-
 
500
			} else {
-
 
501
				scheme.setAmountModel(scheme.getAmount() + "");
-
 
502
				nlc -= scheme.getAmount();
-
 
503
			}
-
 
504
		}
-
 
505
 
-
 
506
		return Math.round(nlc);
-
 
507
 
-
 
508
	}
-
 
509
 
418
	@RequestMapping(value = "/getPaginatedSchemes", method = RequestMethod.GET)
510
	@RequestMapping(value = "/getPaginatedSchemes", method = RequestMethod.GET)
419
	public String getPaginatedSchemes(HttpServletRequest request, @RequestParam(required = false) LocalDate date,
511
	public String getPaginatedSchemes(HttpServletRequest request, @RequestParam(required = false) LocalDate date,
420
			@RequestParam(name = "offset", defaultValue = "0") int offset,
512
			@RequestParam(name = "offset", defaultValue = "0") int offset,
421
			@RequestParam(name = "limit", defaultValue = "10") int limit,
513
			@RequestParam(name = "limit", defaultValue = "10") int limit,
422
			@RequestParam(name = "partnerType", required = false, defaultValue = "ALL") PartnerType partnerType,
514
			@RequestParam(name = "partnerType", required = false, defaultValue = "ALL") PartnerType partnerType,