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