| Line 10... |
Line 10... |
| 10 |
import com.spice.profitmandi.common.util.Utils;
|
10 |
import com.spice.profitmandi.common.util.Utils;
|
| 11 |
import com.spice.profitmandi.dao.entity.catalog.Item;
|
11 |
import com.spice.profitmandi.dao.entity.catalog.Item;
|
| 12 |
import com.spice.profitmandi.dao.entity.catalog.TagListing;
|
12 |
import com.spice.profitmandi.dao.entity.catalog.TagListing;
|
| 13 |
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
|
13 |
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
|
| 14 |
import com.spice.profitmandi.dao.entity.inventory.ItemPricingHistory;
|
14 |
import com.spice.profitmandi.dao.entity.inventory.ItemPricingHistory;
|
| - |
|
15 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
| 15 |
import com.spice.profitmandi.dao.entity.inventory.VendorItemPricing;
|
16 |
import com.spice.profitmandi.dao.entity.catalog.TagListingPriceLog;
|
| 16 |
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
|
17 |
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
|
| 17 |
import com.spice.profitmandi.dao.entity.transaction.PriceDropIMEI;
|
18 |
import com.spice.profitmandi.dao.entity.transaction.PriceDropIMEI;
|
| 18 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
19 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
| 19 |
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
|
20 |
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
|
| 20 |
import com.spice.profitmandi.dao.model.AmountModel;
|
21 |
import com.spice.profitmandi.dao.model.AmountModel;
|
| Line 25... |
Line 26... |
| 25 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
26 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
| 26 |
import com.spice.profitmandi.dao.repository.dtr.Mongo;
|
27 |
import com.spice.profitmandi.dao.repository.dtr.Mongo;
|
| 27 |
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
|
28 |
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
|
| 28 |
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
|
29 |
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
|
| 29 |
import com.spice.profitmandi.dao.repository.inventory.ItemPricingHistoryRepository;
|
30 |
import com.spice.profitmandi.dao.repository.inventory.ItemPricingHistoryRepository;
|
| 30 |
import com.spice.profitmandi.dao.repository.inventory.VendorItemPricingRepository;
|
31 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
| 31 |
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
|
32 |
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
|
| 32 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropIMEIRepository;
|
33 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropIMEIRepository;
|
| 33 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
|
34 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
|
| 34 |
import com.spice.profitmandi.service.NotificationService;
|
35 |
import com.spice.profitmandi.service.NotificationService;
|
| 35 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
36 |
import com.spice.profitmandi.service.authentication.RoleManager;
|
| 36 |
import com.spice.profitmandi.service.catalog.BrandsService;
|
37 |
import com.spice.profitmandi.service.catalog.BrandsService;
|
| 37 |
import com.spice.profitmandi.service.inventory.InventoryService;
|
38 |
import com.spice.profitmandi.service.inventory.InventoryService;
|
| 38 |
import com.spice.profitmandi.service.inventory.VendorCatalogPricingService;
|
39 |
import com.spice.profitmandi.service.inventory.VendorCatalogPricingService;
|
| 39 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
40 |
import com.spice.profitmandi.service.tag.TagListingPriceService;
|
| 40 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
- |
|
| 41 |
import com.spice.profitmandi.service.order.OrderService;
|
41 |
import com.spice.profitmandi.service.order.OrderService;
|
| 42 |
import com.spice.profitmandi.service.pricecircular.PriceCircularItemModelNew;
|
42 |
import com.spice.profitmandi.service.pricecircular.PriceCircularItemModelNew;
|
| 43 |
import com.spice.profitmandi.service.pricecircular.PriceCircularModel;
|
43 |
import com.spice.profitmandi.service.pricecircular.PriceCircularModel;
|
| 44 |
import com.spice.profitmandi.service.pricecircular.PriceCircularService;
|
44 |
import com.spice.profitmandi.service.pricecircular.PriceCircularService;
|
| 45 |
import com.spice.profitmandi.service.pricing.PriceDropService;
|
45 |
import com.spice.profitmandi.service.pricing.PriceDropService;
|
| Line 93... |
Line 93... |
| 93 |
@Autowired
|
93 |
@Autowired
|
| 94 |
private PriceDropRepository priceDropRepository;
|
94 |
private PriceDropRepository priceDropRepository;
|
| 95 |
@Autowired
|
95 |
@Autowired
|
| 96 |
private ObjectMapper objectMapper;
|
96 |
private ObjectMapper objectMapper;
|
| 97 |
@Autowired
|
97 |
@Autowired
|
| 98 |
private VendorItemPricingRepository vendorItemPricingRepository;
|
- |
|
| 99 |
@Autowired
|
- |
|
| 100 |
private VendorCatalogPricingService vendorCatalogPricingService;
|
98 |
private VendorCatalogPricingService vendorCatalogPricingService;
|
| 101 |
@Autowired
|
99 |
@Autowired
|
| - |
|
100 |
private TagListingPriceService tagListingPriceService;
|
| - |
|
101 |
@Autowired
|
| 102 |
private AuthRepository authRepository;
|
102 |
private AuthRepository authRepository;
|
| 103 |
@Autowired
|
103 |
@Autowired
|
| 104 |
@Qualifier("fofoInventoryService")
|
104 |
@Qualifier("fofoInventoryService")
|
| 105 |
private InventoryService inventoryService;
|
105 |
private InventoryService inventoryService;
|
| 106 |
@Autowired
|
106 |
@Autowired
|
| Line 245... |
Line 245... |
| 245 |
tagListing = tagListingRepository.selectByItemId(itemId);
|
245 |
tagListing = tagListingRepository.selectByItemId(itemId);
|
| 246 |
if (tagListing != null) {
|
246 |
if (tagListing != null) {
|
| 247 |
pm.setMop(tagListing.getMop());
|
247 |
pm.setMop(tagListing.getMop());
|
| 248 |
pm.setDp(tagListing.getSellingPrice());
|
248 |
pm.setDp(tagListing.getSellingPrice());
|
| 249 |
pm.setMrp(tagListing.getMrp());
|
249 |
pm.setMrp(tagListing.getMrp());
|
| 250 |
List<VendorItemPricing> vips = vendorItemPricingRepository.selectAll(itemId);
|
250 |
Float referenceTp = vendorCatalogPricingService.getReferenceTransferPrice(itemRepository.selectById(itemId).getCatalogItemId());
|
| 251 |
if (vips.size() > 0) {
|
251 |
if (referenceTp != null) {
|
| 252 |
VendorItemPricing vip = vips.get(0);
|
- |
|
| 253 |
pm.setNlc(vip.getNlc());
|
252 |
pm.setNlc(referenceTp);
|
| 254 |
pm.setTp(vip.getTp());
|
253 |
pm.setTp(referenceTp);
|
| 255 |
} else {
|
- |
|
| 256 |
throw new ProfitMandiBusinessException("Item Id", itemId, "Vendor item pricing does not exist");
|
- |
|
| 257 |
}
|
254 |
}
|
| 258 |
}
|
255 |
}
|
| 259 |
} catch (Exception e) {
|
256 |
} catch (Exception e) {
|
| 260 |
LOGGER.info("Chose item that doesn't exist");
|
257 |
LOGGER.info("Chose item that doesn't exist");
|
| 261 |
}
|
258 |
}
|
| Line 394... |
Line 391... |
| 394 |
priceDropModel.setAllColors(true);
|
391 |
priceDropModel.setAllColors(true);
|
| 395 |
if (this.validatePriceDrop(priceDropModel)) {
|
392 |
if (this.validatePriceDrop(priceDropModel)) {
|
| 396 |
TagListing tagListing = tagListingRepository.selectByItemId(priceDropModel.getItemId());
|
393 |
TagListing tagListing = tagListingRepository.selectByItemId(priceDropModel.getItemId());
|
| 397 |
float oldDp = tagListing.getSellingPrice();
|
394 |
float oldDp = tagListing.getSellingPrice();
|
| 398 |
float oldMop = tagListing.getMop();
|
395 |
float oldMop = tagListing.getMop();
|
| 399 |
float oldTp = 0;
|
- |
|
| 400 |
float newDp = priceDropModel.getDp();
|
396 |
float newDp = priceDropModel.getDp();
|
| 401 |
|
397 |
|
| 402 |
if (newDp != oldDp) {
|
398 |
if (newDp != oldDp) {
|
| 403 |
List<Item> allItems = null;
|
399 |
List<Item> allItems = null;
|
| 404 |
Item currentItem = itemRepository.selectById(priceDropModel.getItemId());
|
400 |
Item currentItem = itemRepository.selectById(priceDropModel.getItemId());
|
| - |
|
401 |
Float referenceTp = vendorCatalogPricingService.getReferenceTransferPrice(currentItem.getCatalogItemId());
|
| - |
|
402 |
float oldTp = referenceTp == null ? 0 : referenceTp;
|
| - |
|
403 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
| - |
|
404 |
AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
| - |
|
405 |
List<TagListingPriceLog> priceLogs = new ArrayList<>();
|
| 405 |
if (priceDropModel.isAllColors()) {
|
406 |
if (priceDropModel.isAllColors()) {
|
| 406 |
allItems = itemRepository.selectAllByCatalogItemId(currentItem.getCatalogItemId());
|
407 |
allItems = itemRepository.selectAllByCatalogItemId(currentItem.getCatalogItemId());
|
| 407 |
|
408 |
|
| 408 |
} else {
|
409 |
} else {
|
| 409 |
allItems = Arrays.asList(currentItem);
|
410 |
allItems = Arrays.asList(currentItem);
|
| 410 |
}
|
411 |
}
|
| 411 |
for (Item item : allItems) {
|
412 |
for (Item item : allItems) {
|
| 412 |
TagListing itemTagListing = tagListingRepository.selectByItemId(item.getId());
|
413 |
TagListing itemTagListing = tagListingRepository.selectByItemId(item.getId());
|
| 413 |
if (itemTagListing == null)
|
414 |
if (itemTagListing == null)
|
| 414 |
continue;
|
415 |
continue;
|
| 415 |
itemTagListing.setSellingPrice(newDp);
|
- |
|
| 416 |
itemTagListing.setMop(priceDropModel.getMop());
|
416 |
TagListingPriceLog priceLog = tagListingPriceService.setPrices(itemTagListing, newDp, priceDropModel.getMop(), null,
|
| 417 |
List<VendorItemPricing> vipList = vendorItemPricingRepository.selectAll(item.getId());
|
417 |
TagListingPriceLog.SOURCE_PRICE_DROP, authUser == null ? null : authUser.getId());
|
| 418 |
for (VendorItemPricing vip : vipList) {
|
- |
|
| 419 |
oldTp = vip.getNlc();
|
418 |
if (priceLog != null) {
|
| 420 |
vip.setDp(newDp);
|
419 |
priceLogs.add(priceLog);
|
| 421 |
vip.setMop(priceDropModel.getMop());
|
- |
|
| 422 |
//Lets not update NLC/TP as it has to be managed by Category Tea,
|
- |
|
| 423 |
//vip.setNlc(priceDropModel.getTp());
|
- |
|
| 424 |
//vip.setTp(priceDropModel.getTp());
|
- |
|
| 425 |
vendorItemPricingRepository.persist(vip);
|
- |
|
| 426 |
}
|
420 |
}
|
| 427 |
transactionService.updatePriceDrop(item.getId(), newDp);
|
421 |
transactionService.updatePriceDrop(item.getId(), newDp);
|
| 428 |
}
|
422 |
}
|
| 429 |
|
423 |
|
| 430 |
// Add to itemPricing history
|
424 |
// Add to itemPricing history
|
| Line 436... |
Line 430... |
| 436 |
// TODO: changedBy
|
430 |
// TODO: changedBy
|
| 437 |
iph.setChangedBy("me");
|
431 |
iph.setChangedBy("me");
|
| 438 |
iph.setCreateTimestamp(LocalDateTime.now());
|
432 |
iph.setCreateTimestamp(LocalDateTime.now());
|
| 439 |
itemPricingHistoryRepository.persist(iph);
|
433 |
itemPricingHistoryRepository.persist(iph);
|
| 440 |
|
434 |
|
| 441 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
- |
|
| 442 |
AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
- |
|
| 443 |
LocalDate effectedOn = priceDropModel.getAffectedDate() == null ? LocalDate.now() : priceDropModel.getAffectedDate().toLocalDate();
|
- |
|
| 444 |
vendorCatalogPricingService.applyPriceDrop(currentItem.getCatalogItemId(), newDp, priceDropModel.getMop(), effectedOn, authUser.getId());
|
- |
|
| 445 |
|
- |
|
| 446 |
PriceDrop priceDrop = new PriceDrop();
|
435 |
PriceDrop priceDrop = new PriceDrop();
|
| 447 |
priceDrop.setAffectedOn(priceDropModel.getAffectedDate());
|
436 |
priceDrop.setAffectedOn(priceDropModel.getAffectedDate());
|
| 448 |
priceDrop.setTp(oldTp);
|
437 |
priceDrop.setTp(oldTp);
|
| 449 |
priceDrop.setNlc(oldTp);
|
438 |
priceDrop.setNlc(oldTp);
|
| 450 |
priceDrop.setMop(oldMop);
|
439 |
priceDrop.setMop(oldMop);
|
| Line 452... |
Line 441... |
| 452 |
priceDrop.setAmount(oldDp - newDp);
|
441 |
priceDrop.setAmount(oldDp - newDp);
|
| 453 |
priceDrop.setNewDp(newDp);
|
442 |
priceDrop.setNewDp(newDp);
|
| 454 |
priceDrop.setCreatedOn(LocalDateTime.now());
|
443 |
priceDrop.setCreatedOn(LocalDateTime.now());
|
| 455 |
priceDrop.setCatalogItemId(currentItem.getCatalogItemId());
|
444 |
priceDrop.setCatalogItemId(currentItem.getCatalogItemId());
|
| 456 |
priceDropRepository.persist(priceDrop);
|
445 |
priceDropRepository.persist(priceDrop);
|
| - |
|
446 |
for (TagListingPriceLog priceLog : priceLogs) {
|
| - |
|
447 |
priceLog.setPriceDropId(priceDrop.getId());
|
| - |
|
448 |
}
|
| 457 |
priceDropService.priceDropStatus(priceDrop.getId());
|
449 |
priceDropService.priceDropStatus(priceDrop.getId());
|
| 458 |
response = true;
|
450 |
response = true;
|
| 459 |
|
451 |
|
| 460 |
this.sendPriceChangeNotification(priceDrop);
|
452 |
this.sendPriceChangeNotification(priceDrop);
|
| 461 |
|
453 |
|