| Line 644... |
Line 644... |
| 644 |
|
644 |
|
| 645 |
Map<String, Double> serialNumberPaid = offerPayouts.stream().filter(x -> x.getRejectTimestamp() == null).collect(Collectors.groupingBy(x -> x.getSerialNumber(), Collectors.summingDouble(x -> x.getSlabAmount())));
|
645 |
Map<String, Double> serialNumberPaid = offerPayouts.stream().filter(x -> x.getRejectTimestamp() == null).collect(Collectors.groupingBy(x -> x.getSerialNumber(), Collectors.summingDouble(x -> x.getSlabAmount())));
|
| 646 |
Map<Integer, Map<Integer, List<FofoOrderItem>>> criteriaPartnerwiseTertiary = offerRepository.getCriteriaWisePartnerTertiary(createOfferRequest);
|
646 |
Map<Integer, Map<Integer, List<FofoOrderItem>>> criteriaPartnerwiseTertiary = offerRepository.getCriteriaWisePartnerTertiary(createOfferRequest);
|
| 647 |
|
647 |
|
| 648 |
Map<String, AgeingSummaryModel> ageingSummaryModelsMap = null;
|
648 |
Map<String, AgeingSummaryModel> ageingSummaryModelsMap = null;
|
| 649 |
final Set<String> activatedImeis;
|
649 |
final Map<String, LocalDateTime> activatedImeisActiovationDateMap;
|
| 650 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
650 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
| 651 |
//All Serialnumbers for all eligible retailers
|
651 |
//All Serialnumbers for all eligible retailers
|
| 652 |
List<String> serialNumbers = criteriaPartnerwiseTertiary.entrySet().stream().flatMap(x -> x.getValue().entrySet().stream().flatMap(foiList -> foiList.getValue().stream()))
|
652 |
List<String> serialNumbers = criteriaPartnerwiseTertiary.entrySet().stream().flatMap(x -> x.getValue().entrySet().stream().flatMap(foiList -> foiList.getValue().stream()))
|
| 653 |
.flatMap(y -> y.getFofoLineItems().stream()).filter(fli -> fli.getSerialNumber() != null)
|
653 |
.flatMap(y -> y.getFofoLineItems().stream()).filter(fli -> fli.getSerialNumber() != null)
|
| 654 |
.map(x -> x.getSerialNumber()).collect(Collectors.toList());
|
654 |
.map(x -> x.getSerialNumber()).collect(Collectors.toList());
|
| 655 |
if (serialNumbers.size() > 0) {
|
655 |
if (serialNumbers.size() > 0) {
|
| 656 |
activatedImeis = activatedImeiRepository.selectBySerialNumbers(serialNumbers).stream()
|
656 |
activatedImeisActiovationDateMap = activatedImeiRepository.selectBySerialNumbers(serialNumbers).stream()
|
| 657 |
.filter(x -> createOfferRequest.isWithinRange(x.getActivationTimestamp()))
|
657 |
.filter(x -> createOfferRequest.isWithinRange(x.getActivationTimestamp()))
|
| 658 |
.map(x -> x.getSerialNumber()).collect(Collectors.toSet());
|
658 |
.collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x.getActivationTimestamp()));
|
| 659 |
ageingSummaryModelsMap = warehouseInventoryItemRepository.findStockAgeingByFofoIdSerialNumbers(0, serialNumbers).stream().collect(Collectors.toMap(x->x.getSerialNumber(), x->x));
|
659 |
ageingSummaryModelsMap = warehouseInventoryItemRepository.findStockAgeingByFofoIdSerialNumbers(0, serialNumbers).stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u,v)->v));
|
| 660 |
} else {
|
660 |
} else {
|
| 661 |
activatedImeis = null;
|
661 |
activatedImeisActiovationDateMap = null;
|
| 662 |
}
|
662 |
}
|
| 663 |
} else {
|
663 |
} else {
|
| 664 |
activatedImeis = null;
|
664 |
activatedImeisActiovationDateMap = null;
|
| 665 |
}
|
665 |
}
|
| 666 |
|
666 |
|
| 667 |
Map<Integer, Integer> userBaseQtyMap = new HashMap<>();
|
667 |
Map<Integer, Integer> userBaseQtyMap = new HashMap<>();
|
| 668 |
Map<Integer, Integer> userBaseValueMap = new HashMap<>();
|
668 |
Map<Integer, Integer> userBaseValueMap = new HashMap<>();
|
| 669 |
Map<Integer, Integer> eligibleBaseQtyMap = new HashMap<>();
|
669 |
Map<Integer, Integer> eligibleBaseQtyMap = new HashMap<>();
|
| Line 681... |
Line 681... |
| 681 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
681 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
| 682 |
Map<Integer, Integer> inventoryItemValueMap = new HashMap<>();
|
682 |
Map<Integer, Integer> inventoryItemValueMap = new HashMap<>();
|
| 683 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
683 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
| 684 |
fofoOrderItem.getFofoLineItems().stream().filter(x -> x.getSerialNumber() != null).forEach(
|
684 |
fofoOrderItem.getFofoLineItems().stream().filter(x -> x.getSerialNumber() != null).forEach(
|
| 685 |
lineItem -> {
|
685 |
lineItem -> {
|
| 686 |
if (activatedImeis == null || activatedImeis.contains(lineItem.getSerialNumber())) {
|
686 |
if (activatedImeisActiovationDateMap == null || activatedImeisActiovationDateMap.containsKey(lineItem.getSerialNumber())) {
|
| 687 |
inventoryItemValueMap.put(lineItem.getInventoryItemId(), (int) fofoOrderItem.getDp());
|
687 |
inventoryItemValueMap.put(lineItem.getInventoryItemId(), (int) fofoOrderItem.getDp());
|
| 688 |
}
|
688 |
}
|
| 689 |
}
|
689 |
}
|
| 690 |
);
|
690 |
);
|
| 691 |
}
|
691 |
}
|
| Line 699... |
Line 699... |
| 699 |
|
699 |
|
| 700 |
}
|
700 |
}
|
| 701 |
}
|
701 |
}
|
| 702 |
|
702 |
|
| 703 |
//As of now eligible sale is considered to be without special criteria like brand/
|
703 |
//As of now eligible sale is considered to be without special criteria like brand/
|
| - |
|
704 |
//CriteriaPayoutWise
|
| 704 |
for (ItemCriteriaPayout itemCriteriaPayout : createOfferRequest.getTargetSlabs().get(0).getItemCriteriaPayouts()) {
|
705 |
for (ItemCriteriaPayout itemCriteriaPayout : createOfferRequest.getTargetSlabs().get(0).getItemCriteriaPayouts()) {
|
| 705 |
int criteriaId = itemCriteriaPayout.getItemCriteria().getId();
|
706 |
int criteriaId = itemCriteriaPayout.getItemCriteria().getId();
|
| 706 |
Map<Integer, List<FofoOrderItem>> ordersMap = criteriaPartnerwiseTertiary.get(criteriaId);
|
707 |
Map<Integer, List<FofoOrderItem>> ordersMap = criteriaPartnerwiseTertiary.get(criteriaId);
|
| - |
|
708 |
//Partywise iteration
|
| 707 |
for (Map.Entry<Integer, List<FofoOrderItem>> orderEntry : ordersMap.entrySet()) {
|
709 |
for (Map.Entry<Integer, List<FofoOrderItem>> orderEntry : ordersMap.entrySet()) {
|
| 708 |
double totalRolloutAmount = 0;
|
710 |
double totalRolloutAmount = 0;
|
| 709 |
int fofoId = orderEntry.getKey();
|
711 |
int fofoId = orderEntry.getKey();
|
| 710 |
List<FofoOrderItem> fofoOrderItems = orderEntry.getValue();
|
712 |
List<FofoOrderItem> fofoOrderItems = orderEntry.getValue();
|
| 711 |
OfferRowModel offerRowModel = new OfferRowModel();
|
713 |
OfferRowModel offerRowModel = new OfferRowModel();
|
| Line 716... |
Line 718... |
| 716 |
Map<FofoLineItem, Integer> lineItemValueMap = new HashMap<>();
|
718 |
Map<FofoLineItem, Integer> lineItemValueMap = new HashMap<>();
|
| 717 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
719 |
if (createOfferRequest.getSchemeType().equals(OfferSchemeType.ACTIVATION)) {
|
| 718 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
720 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
| 719 |
fofoOrderItem.getFofoLineItems().stream().filter(x -> x.getSerialNumber() != null).forEach(
|
721 |
fofoOrderItem.getFofoLineItems().stream().filter(x -> x.getSerialNumber() != null).forEach(
|
| 720 |
lineItem -> {
|
722 |
lineItem -> {
|
| 721 |
if (activatedImeis == null || activatedImeis.contains(lineItem.getSerialNumber())) {
|
723 |
if (activatedImeisActiovationDateMap == null) {
|
| 722 |
lineItemValueMap.put(lineItem, (int) fofoOrderItem.getDp());
|
724 |
lineItemValueMap.put(lineItem, (int) fofoOrderItem.getDp());
|
| - |
|
725 |
|
| - |
|
726 |
} else if (activatedImeisActiovationDateMap.containsKey(lineItem.getSerialNumber())) {
|
| - |
|
727 |
if (itemCriteriaPayout.isWithinRange(activatedImeisActiovationDateMap.get(lineItem.getSerialNumber()))) {
|
| - |
|
728 |
lineItemValueMap.put(lineItem, (int) fofoOrderItem.getDp());
|
| - |
|
729 |
}
|
| 723 |
}
|
730 |
}
|
| - |
|
731 |
|
| 724 |
}
|
732 |
}
|
| 725 |
);
|
733 |
);
|
| 726 |
}
|
734 |
}
|
| 727 |
eligibleQty = lineItemValueMap.size();
|
735 |
eligibleQty = lineItemValueMap.size();
|
| 728 |
eligibleValue = lineItemValueMap.entrySet().stream().collect(Collectors.summingInt(x -> x.getValue()));
|
736 |
eligibleValue = lineItemValueMap.entrySet().stream().collect(Collectors.summingInt(x -> x.getValue()));
|
| Line 790... |
Line 798... |
| 790 |
if (finalPayout > 0) {
|
798 |
if (finalPayout > 0) {
|
| 791 |
List<Integer> inventoryItemIds = lineItemValueMap.keySet().stream().map(x -> x.getInventoryItemId()).collect(Collectors.toList());
|
799 |
List<Integer> inventoryItemIds = lineItemValueMap.keySet().stream().map(x -> x.getInventoryItemId()).collect(Collectors.toList());
|
| 792 |
Map<Integer, InventoryItem> inventoryItemsMap = inventoryItemRepository.selectAllByIds(inventoryItemIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
800 |
Map<Integer, InventoryItem> inventoryItemsMap = inventoryItemRepository.selectAllByIds(inventoryItemIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 793 |
for (Map.Entry<FofoLineItem, Integer> lineItemValueEntry : lineItemValueMap.entrySet()) {
|
801 |
for (Map.Entry<FofoLineItem, Integer> lineItemValueEntry : lineItemValueMap.entrySet()) {
|
| 794 |
FofoLineItem fofoLineItem = lineItemValueEntry.getKey();
|
802 |
FofoLineItem fofoLineItem = lineItemValueEntry.getKey();
|
| 795 |
if(ageingSummaryModelsMap.containsKey(fofoLineItem.getSerialNumber())) {
|
803 |
if (ageingSummaryModelsMap.containsKey(fofoLineItem.getSerialNumber())) {
|
| 796 |
if(ageingSummaryModelsMap.get(fofoLineItem.getSerialNumber()).isAgedAbove(300)) {
|
804 |
if (ageingSummaryModelsMap.get(fofoLineItem.getSerialNumber()).isAgedAbove(300)) {
|
| 797 |
continue;
|
805 |
continue;
|
| 798 |
}
|
806 |
}
|
| 799 |
}
|
807 |
}
|
| 800 |
double amount = 0;
|
808 |
double amount = 0;
|
| 801 |
int totalDpValue = lineItemValueMap.values().stream().collect(Collectors.summingInt(x -> x));
|
809 |
int totalDpValue = lineItemValueMap.values().stream().collect(Collectors.summingInt(x -> x));
|
| Line 1007... |
Line 1015... |
| 1007 |
}
|
1015 |
}
|
| 1008 |
Offer offer = offerRepository.selectById(createOfferRequest.getId());
|
1016 |
Offer offer = offerRepository.selectById(createOfferRequest.getId());
|
| 1009 |
offer.setProcessedTimestamp(LocalDateTime.now());
|
1017 |
offer.setProcessedTimestamp(LocalDateTime.now());
|
| 1010 |
}
|
1018 |
}
|
| 1011 |
|
1019 |
|
| - |
|
1020 |
private void rollbackPayout(int fofoId, int offerId, List<
|
| 1012 |
private void rollbackPayout(int fofoId, int offerId, List<OfferPayout> partnerPayouts, Set<String> returnedSerialNumbers) throws ProfitMandiBusinessException {
|
1021 |
OfferPayout> partnerPayouts, Set<String> returnedSerialNumbers) throws ProfitMandiBusinessException {
|
| 1013 |
LOGGER.info("Rollback payout called for offerId {}", offerId);
|
1022 |
LOGGER.info("Rollback payout called for offerId {}", offerId);
|
| 1014 |
float amountToRollback = 0;
|
1023 |
float amountToRollback = 0;
|
| 1015 |
int totalImeis = 0;
|
1024 |
int totalImeis = 0;
|
| 1016 |
for (OfferPayout partnerPayout : partnerPayouts) {
|
1025 |
for (OfferPayout partnerPayout : partnerPayouts) {
|
| 1017 |
LOGGER.info("serialNumberInventoryItemMap - {}", returnedSerialNumbers);
|
1026 |
LOGGER.info("serialNumberInventoryItemMap - {}", returnedSerialNumbers);
|
| Line 1027... |
Line 1036... |
| 1027 |
LOGGER.info("Amount to Rollback - {}", amountToRollback);
|
1036 |
LOGGER.info("Amount to Rollback - {}", amountToRollback);
|
| 1028 |
walletService.rollbackAmountFromWallet(fofoId, amountToRollback, offerId, WalletReferenceType.ADDITIONAL_SCHEME, "Stock Returned, total " + totalImeis + "pc(s)", LocalDateTime.now());
|
1037 |
walletService.rollbackAmountFromWallet(fofoId, amountToRollback, offerId, WalletReferenceType.ADDITIONAL_SCHEME, "Stock Returned, total " + totalImeis + "pc(s)", LocalDateTime.now());
|
| 1029 |
}
|
1038 |
}
|
| 1030 |
}
|
1039 |
}
|
| 1031 |
|
1040 |
|
| 1032 |
private Map<String, InventoryItem> getInventoryItemMap(int fofoId, Map<String, LineItem> serialNumberMap) throws ProfitMandiBusinessException {
|
1041 |
private Map<String, InventoryItem> getInventoryItemMap(int fofoId, Map<String, LineItem> serialNumberMap) throws
|
| - |
|
1042 |
ProfitMandiBusinessException {
|
| 1033 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
|
1043 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
|
| 1034 |
inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
|
1044 |
inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
|
| 1035 |
Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
|
1045 |
Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
|
| 1036 |
return inventoryItemMap;
|
1046 |
return inventoryItemMap;
|
| 1037 |
}
|
1047 |
}
|