Subversion Repositories SmartDukaan

Rev

Rev 37623 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 37623 Rev 37637
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