| Line 16... |
Line 16... |
| 16 |
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
|
16 |
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
|
| 17 |
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
|
17 |
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
|
| 18 |
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
|
18 |
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
|
| 19 |
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
|
19 |
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
|
| 20 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
20 |
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
|
| - |
|
21 |
import com.spice.profitmandi.dao.enumuration.catalog.StockTransactionType;
|
| 21 |
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
|
22 |
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
|
| 22 |
import com.spice.profitmandi.dao.enumuration.transaction.SchemePayoutStatus;
|
23 |
import com.spice.profitmandi.dao.enumuration.transaction.SchemePayoutStatus;
|
| 23 |
import com.spice.profitmandi.dao.model.AmountModel;
|
24 |
import com.spice.profitmandi.dao.model.AmountModel;
|
| 24 |
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
|
25 |
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
|
| 25 |
import com.spice.profitmandi.dao.model.DateRangeModel;
|
- |
|
| 26 |
import com.spice.profitmandi.dao.repository.catalog.*;
|
26 |
import com.spice.profitmandi.dao.repository.catalog.*;
|
| 27 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
27 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
| 28 |
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
|
28 |
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
|
| 29 |
import com.spice.profitmandi.dao.repository.fofo.*;
|
29 |
import com.spice.profitmandi.dao.repository.fofo.*;
|
| 30 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
|
30 |
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
|
| Line 91... |
Line 91... |
| 91 |
// "864562072802477", "864562072801651", "864562072801917", "864288066786274", "864562070789478", "864562070785930", "864562070788330", "864179066116929", "864470060972569", "867492065820095",
|
91 |
// "864562072802477", "864562072801651", "864562072801917", "864288066786274", "864562070789478", "864562070785930", "864562070788330", "864179066116929", "864470060972569", "867492065820095",
|
| 92 |
// "867940069618279", "863718065007331", "863718065001417", "860948069657616", "860948069562733", "860948069563939", "860948068569838", "860948068569598", "860948067443092", "860948067442912",
|
92 |
// "867940069618279", "863718065007331", "863718065001417", "860948069657616", "860948069562733", "860948069563939", "860948068569838", "860948068569598", "860948067443092", "860948067442912",
|
| 93 |
// "860948067442573", "860948069561750", "860948069561479", "860948069561974", "860948069562550", "860948069560679", "860948069560190", "860948069562691", "860948069735859"
|
93 |
// "860948067442573", "860948069561750", "860948069561479", "860948069561974", "860948069562550", "860948069560679", "860948069560190", "860948069562691", "860948069735859"
|
| 94 |
// );
|
94 |
// );
|
| 95 |
|
95 |
|
| 96 |
private static final List<SchemeType> ACTIVATION_SCHEME_TYPES = Arrays.asList(SchemeType.ACTIVATION, SchemeType.SPECIAL_SUPPORT, SchemeType.SELLOUT);
|
96 |
private static final List<SchemeType> ACTIVATION_SCHEME_TYPES = Arrays.asList(SchemeType.SPECIAL_SUPPORT, SchemeType.SELLOUT);
|
| 97 |
|
97 |
|
| 98 |
@Autowired
|
98 |
@Autowired
|
| 99 |
SchemeBlockedImeiRepository schemeBlockedImeiRepository;
|
99 |
SchemeBlockedImeiRepository schemeBlockedImeiRepository;
|
| 100 |
@Autowired
|
100 |
@Autowired
|
| 101 |
StateGstRateRepository stateGstRateRepository;
|
101 |
StateGstRateRepository stateGstRateRepository;
|
| Line 169... |
Line 169... |
| 169 |
schemeRepository.persist(scheme);
|
169 |
schemeRepository.persist(scheme);
|
| 170 |
for (int catalogId : createSchemeRequest.getCatalogIds()) {
|
170 |
for (int catalogId : createSchemeRequest.getCatalogIds()) {
|
| 171 |
SchemeItem schemeItem = new SchemeItem();
|
171 |
SchemeItem schemeItem = new SchemeItem();
|
| 172 |
schemeItem.setSchemeId(scheme.getId());
|
172 |
schemeItem.setSchemeId(scheme.getId());
|
| 173 |
schemeItem.setCatalogId(catalogId);
|
173 |
schemeItem.setCatalogId(catalogId);
|
| - |
|
174 |
schemeItem.setStartDate(createSchemeRequest.getStartDate());
|
| - |
|
175 |
schemeItem.setEndDate(createSchemeRequest.getEndDate());
|
| 174 |
schemeItemRepository.persist(schemeItem);
|
176 |
schemeItemRepository.persist(schemeItem);
|
| 175 |
}
|
177 |
}
|
| 176 |
|
178 |
|
| 177 |
for (int regionId : createSchemeRequest.getRegionIds()) {
|
179 |
for (int regionId : createSchemeRequest.getRegionIds()) {
|
| 178 |
SchemeRegion schemeRegion = new SchemeRegion();
|
180 |
SchemeRegion schemeRegion = new SchemeRegion();
|
| Line 432... |
Line 434... |
| 432 |
@Autowired
|
434 |
@Autowired
|
| 433 |
OfferPayoutRepository offerPayoutRepository;
|
435 |
OfferPayoutRepository offerPayoutRepository;
|
| 434 |
@Autowired
|
436 |
@Autowired
|
| 435 |
AgeingService ageingService;
|
437 |
AgeingService ageingService;
|
| 436 |
|
438 |
|
| 437 |
|
- |
|
| 438 |
public void processSchemeIn(int purchaseId, int retailerId) throws ProfitMandiBusinessException {
|
439 |
public void processSchemeIn(int purchaseId, int retailerId) throws ProfitMandiBusinessException {
|
| 439 |
LOGGER.info("Processing scheme in for purchaseId - {}", purchaseId);
|
440 |
LOGGER.info("Processing scheme in for purchaseId - {}", purchaseId);
|
| 440 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
441 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(purchaseId, retailerId);
|
| 441 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
- |
|
| 442 |
processSchemeIn(purchase, inventoryItems);
|
- |
|
| 443 |
|
- |
|
| 444 |
}
|
- |
|
| 445 |
|
- |
|
| 446 |
private void processSchemeIn(Purchase purchase, List<InventoryItem> inventoryItems) throws ProfitMandiBusinessException {
|
- |
|
| 447 |
if (inventoryItems.stream().filter(x -> x.getPurchaseId() != purchase.getId()).collect(Collectors.toList()).size() > 0) {
|
- |
|
| 448 |
throw new ProfitMandiBusinessException("", "Invalid purchase id for inventory item", "SCHM_1009");
|
- |
|
| 449 |
}
|
- |
|
| 450 |
PartnerType partnerType = partnerTypeChangeService.getTypeOnMonth(purchase.getFofoId(),
|
442 |
PartnerType partnerType = partnerTypeChangeService.getTypeOnMonth(retailerId,
|
| 451 |
YearMonth.from(purchase.getCreateTimestamp()));
|
443 |
YearMonth.from(purchase.getCreateTimestamp()));
|
| - |
|
444 |
List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchaseId);
|
| 452 |
//Remove imeis from blocked imeis list
|
445 |
//Remove imeis from blocked imeis list
|
| 453 |
List<String> blocked_imeis = this.getBlockedImeis();
|
446 |
List<String> blockedImeis = this.getBlockedImeis();
|
| 454 |
inventoryItems = inventoryItems.stream().filter(inventoryItem -> !blocked_imeis.contains(inventoryItem.getSerialNumber())).collect(Collectors.toList());
|
447 |
inventoryItems = inventoryItems.stream().filter(inventoryItem -> !blockedImeis.contains(inventoryItem.getSerialNumber())).collect(Collectors.toList());
|
| 455 |
if (inventoryItems.size() == 0) return;
|
448 |
if (inventoryItems.size() == 0) return;
|
| 456 |
|
449 |
|
| 457 |
Set<Integer> itemIds = inventoryItems.stream().map(x -> x.getItemId()).collect(Collectors.toSet());
|
450 |
Set<Integer> itemIds = inventoryItems.stream().map(x -> x.getItemId()).collect(Collectors.toSet());
|
| 458 |
Map<Integer, Item> itemsMap = itemRepository.selectByIds(itemIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
451 |
Map<Integer, Item> itemsMap = itemRepository.selectByIds(itemIds).stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 459 |
inventoryItems.stream().forEach(x -> x.setItem(itemsMap.get(x.getItemId())));
|
452 |
inventoryItems.stream().forEach(x -> x.setItem(itemsMap.get(x.getItemId())));
|
| 460 |
|
453 |
|
| 461 |
|
454 |
|
| 462 |
LocalDateTime billingDate = purchaseService.getBillingDateOfPurchase(purchase.getId());
|
455 |
LocalDateTime billingDate = purchaseService.getBillingDateOfPurchase(purchaseId);
|
| 463 |
Set<Integer> itemIdsSet = tagListingRepository.selectByItemIdsAndTagIds(itemIds, tagIds).stream()
|
456 |
Set<Integer> itemIdsSet = tagListingRepository.selectByItemIdsAndTagIds(itemIds, tagIds).stream()
|
| 464 |
.filter(x -> x.getEolDate() == null || x.getEolDate().isAfter(billingDate)).map(x -> x.getItemId())
|
457 |
.filter(x -> x.getEolDate() == null || x.getEolDate().isAfter(billingDate)).map(x -> x.getItemId())
|
| 465 |
.collect(Collectors.toSet());
|
458 |
.collect(Collectors.toSet());
|
| 466 |
// Only consider inventory items that were not returned and not eol
|
459 |
// Only consider inventory items that were not returned and not eol
|
| 467 |
inventoryItems = inventoryItems.stream().filter(x -> itemIdsSet.contains(x.getItemId()))
|
460 |
inventoryItems = inventoryItems.stream().filter(x -> itemIdsSet.contains(x.getItemId()))
|
| Line 469... |
Line 462... |
| 469 |
.filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
|
462 |
.filter(x -> !x.getLastScanType().equals(ScanType.PURCHASE_RET)).collect(Collectors.toList());
|
| 470 |
|
463 |
|
| 471 |
if (inventoryItems.size() == 0) return;
|
464 |
if (inventoryItems.size() == 0) return;
|
| 472 |
|
465 |
|
| 473 |
Map<Integer, List<InventoryItem>> catalogInventoryItemMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getItem().getCatalogItemId()));
|
466 |
Map<Integer, List<InventoryItem>> catalogInventoryItemMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getItem().getCatalogItemId()));
|
| 474 |
Map<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSchemeSummaryMap = tagListingRepository.getModelSchemesByCatalogIdsAndType(purchase.getFofoId(),
|
467 |
Map<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSchemeSummaryMap = tagListingRepository.getModelSchemesByCatalogIdsAndType(retailerId,
|
| 475 |
partnerType, new ArrayList<>(catalogInventoryItemMap.keySet()), billingDate);
|
468 |
partnerType, new ArrayList<>(catalogInventoryItemMap.keySet()), billingDate);
|
| 476 |
|
469 |
|
| 477 |
|
470 |
|
| 478 |
int itemsCount = 0;
|
471 |
int itemsCount = 0;
|
| 479 |
float totalCashback = 0;
|
472 |
float totalCashback = 0;
|
| 480 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogSchemeSummaryMap.entrySet()) {
|
473 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogSchemeSummaryMap.entrySet()) {
|
| 481 |
CatalogSummaryModel catalogSummaryModel = catalogSummaryModelListEntry.getKey();
|
474 |
CatalogSummaryModel catalogSummaryModel = catalogSummaryModelListEntry.getKey();
|
| 482 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue().stream().filter(x -> x != null).collect(Collectors.toList());
|
475 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue().stream().filter(x -> x != null).collect(Collectors.toList());
|
| 483 |
schemeSummaryModels.stream().filter(x -> x != null && x.getSchemeType().equals(SchemeType.IN)).forEach(x -> x.setProcess(true));
|
476 |
schemeSummaryModels.stream().filter(x -> x != null && x.getSchemeType().getTransactionType().equals(StockTransactionType.IN)).forEach(x -> x.setProcess(true));
|
| 484 |
if (schemeSummaryModels.stream().filter(x -> x.isProcess()).count() == 0) continue;
|
477 |
if (schemeSummaryModels.stream().filter(x -> x.isProcess()).count() == 0) continue;
|
| 485 |
List<InventoryItem> modelInventoryItems = catalogInventoryItemMap.get(catalogSummaryModel.getCatalogId());
|
478 |
List<InventoryItem> modelInventoryItems = catalogInventoryItemMap.get(catalogSummaryModel.getCatalogId());
|
| 486 |
for (InventoryItem inventoryItem : modelInventoryItems) {
|
479 |
for (InventoryItem inventoryItem : modelInventoryItems) {
|
| 487 |
float inventoryItemCashback = this.createSchemeInOut(schemeSummaryModels, inventoryItem);
|
480 |
float inventoryItemCashback = this.createSchemeInOut(schemeSummaryModels, inventoryItem);
|
| 488 |
if (inventoryItemCashback > 0) {
|
481 |
if (inventoryItemCashback > 0) {
|
| Line 491... |
Line 484... |
| 491 |
}
|
484 |
}
|
| 492 |
}
|
485 |
}
|
| 493 |
}
|
486 |
}
|
| 494 |
|
487 |
|
| 495 |
|
488 |
|
| 496 |
LOGGER.info("Items count for purchase id {} is {}", purchase.getId(), itemsCount);
|
489 |
LOGGER.info("Items count for purchase id {} is {}", purchaseId, itemsCount);
|
| 497 |
if (itemsCount > 0) {
|
490 |
if (itemsCount > 0) {
|
| 498 |
walletService.addAmountToWallet(
|
491 |
walletService.addAmountToWallet(
|
| 499 |
purchase.getFofoId(), purchase.getId(), WalletReferenceType.SCHEME_IN, "Added for SCHEME IN against invoice "
|
492 |
retailerId, purchaseId, WalletReferenceType.SCHEME_IN, "Added for SCHEME IN against invoice "
|
| 500 |
+ purchase.getPurchaseReference() + " (total " + itemsCount + " pcs)",
|
493 |
+ purchase.getPurchaseReference() + " (total " + itemsCount + " pcs)",
|
| 501 |
totalCashback, purchase.getCreateTimestamp());
|
494 |
totalCashback, purchase.getCreateTimestamp());
|
| 502 |
LOGGER.info("Added Rs.{} for SCHEME IN against invoice {} total pcs({}) {}", totalCashback,
|
495 |
LOGGER.info("Added Rs.{} for SCHEME IN against invoice {} total pcs({}) {}", totalCashback,
|
| 503 |
purchase.getPurchaseReference(), itemsCount);
|
496 |
purchase.getPurchaseReference(), itemsCount);
|
| 504 |
}
|
497 |
}
|
| - |
|
498 |
|
| 505 |
}
|
499 |
}
|
| 506 |
|
500 |
|
| 507 |
|
501 |
|
| 508 |
// We are maintaining price drop after grn
|
502 |
// We are maintaining price drop after grn
|
| 509 |
private float getAmount(InventoryItem inventoryItem, Scheme scheme) throws ProfitMandiBusinessException {
|
503 |
private float getAmount(InventoryItem inventoryItem, Scheme scheme) throws ProfitMandiBusinessException {
|
| Line 514... |
Line 508... |
| 514 |
float dpForCalc = 0;
|
508 |
float dpForCalc = 0;
|
| 515 |
float taxableSellingPrice = 0;
|
509 |
float taxableSellingPrice = 0;
|
| 516 |
|
510 |
|
| 517 |
//float totalTaxRate = stateGstRateRepository.getTotalTaxRate(inventoryItem.getItemId());
|
511 |
//float totalTaxRate = stateGstRateRepository.getTotalTaxRate(inventoryItem.getItemId());
|
| 518 |
if (scheme.getAmountType().equals(AmountType.PERCENTAGE)) {
|
512 |
if (scheme.getAmountType().equals(AmountType.PERCENTAGE)) {
|
| 519 |
if (scheme.getType().equals(SchemeType.IN)) {
|
513 |
if (scheme.getType().getTransactionType().equals(StockTransactionType.IN)) {
|
| 520 |
dpForCalc = inventoryItem.getUnitPrice() - inventoryItem.getPriceDropAmount();
|
514 |
dpForCalc = inventoryItem.getUnitPrice() - inventoryItem.getPriceDropAmount();
|
| 521 |
} else {
|
515 |
} else {
|
| 522 |
try {
|
516 |
try {
|
| 523 |
dpForCalc = Math.min(inventoryItem.getUnitPrice() - inventoryItem.getPriceDropAmount(),
|
517 |
dpForCalc = Math.min(inventoryItem.getUnitPrice() - inventoryItem.getPriceDropAmount(),
|
| 524 |
tagListingRepository.selectByItemId(inventoryItem.getItemId()).getSellingPrice());
|
518 |
tagListingRepository.selectByItemId(inventoryItem.getItemId()).getSellingPrice());
|
| Line 533... |
Line 527... |
| 533 |
amount = dpForCalc * scheme.getAmount() / 100;
|
527 |
amount = dpForCalc * scheme.getAmount() / 100;
|
| 534 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
|
528 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t%f\t%f\t%f\t%f", inventoryItem.getId(),
|
| 535 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
529 |
inventoryItem.getSerialNumber(), inventoryItem.getItemId(), scheme.getId(), scheme.getName(),
|
| 536 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
|
530 |
scheme.getType(), scheme.getAmountType(), scheme.getPartnerType(), dpForCalc, taxableSellingPrice,
|
| 537 |
scheme.getAmount(), amount));
|
531 |
scheme.getAmount(), amount));
|
| 538 |
} else if (scheme.getType().equals(SchemeType.IN)) {
|
532 |
} else if (scheme.getType().getTransactionType().equals(StockTransactionType.IN)) {
|
| 539 |
amount = scheme.getAmount();
|
533 |
amount = scheme.getAmount();
|
| 540 |
}
|
534 |
}
|
| 541 |
return amount;
|
535 |
return amount;
|
| 542 |
}
|
536 |
}
|
| 543 |
|
537 |
|
| 544 |
//Only in and activation margins are allowed to be rolled out more than twice
|
538 |
//Only in and activation margins are allowed to be rolled out more than twice
|
| 545 |
private float createSchemeInOut(List<SchemeSummaryModel> schemeSummaryModels, InventoryItem inventoryItem) throws ProfitMandiBusinessException {
|
539 |
private float createSchemeInOut(List<SchemeSummaryModel> schemeSummaryModels, InventoryItem inventoryItem) throws ProfitMandiBusinessException {
|
| 546 |
LOGGER.info("schemeSummaryModels - {}", schemeSummaryModels);
|
540 |
LOGGER.info("schemeSummaryModels - {}", schemeSummaryModels);
|
| 547 |
InventoryPayoutModel inventoryPayoutModel = priceCircularService.getPayouts(inventoryItem);
|
541 |
InventoryPayoutModel inventoryPayoutModel = priceCircularService.getPayouts(inventoryItem);
|
| 548 |
|
- |
|
| 549 |
LOGGER.info("inventoryPayoutModel - {}", inventoryPayoutModel);
|
- |
|
| 550 |
|
- |
|
| 551 |
//Get all schemes
|
542 |
//Get all schemes
|
| 552 |
List<SchemeSummaryModel> inventoryPayoutModelToProcess = schemeSummaryModels.stream().filter(x -> x.isProcess()).collect(Collectors.toList());
|
543 |
List<SchemeSummaryModel> inventoryPayoutModelToProcess = schemeSummaryModels.stream().filter(x -> x.isProcess()).collect(Collectors.toList());
|
| 553 |
|
544 |
|
| 554 |
List<SchemeInOut> paidSios = inventoryPayoutModel.getPaidSios();
|
545 |
List<SchemeInOut> paidSios = inventoryPayoutModel.getPaidSios();
|
| 555 |
List<SchemeInOut> pendingSios = inventoryPayoutModel.getPendingSios();
|
546 |
List<SchemeInOut> pendingSios = inventoryPayoutModel.getPendingSios();
|
| Line 563... |
Line 554... |
| 563 |
Map<SchemeSummaryModel, AmountModel> payoutSchemeSummaryModelMap = new HashMap<>();
|
554 |
Map<SchemeSummaryModel, AmountModel> payoutSchemeSummaryModelMap = new HashMap<>();
|
| 564 |
for (SchemeSummaryModel schemeSummaryModelToProcess : inventoryPayoutModelToProcess) {
|
555 |
for (SchemeSummaryModel schemeSummaryModelToProcess : inventoryPayoutModelToProcess) {
|
| 565 |
if (paidSchemesMap.containsKey(schemeSummaryModelToProcess.getSchemeId()) || pendingSchemesMap.containsKey(schemeSummaryModelToProcess.getSchemeId()))
|
556 |
if (paidSchemesMap.containsKey(schemeSummaryModelToProcess.getSchemeId()) || pendingSchemesMap.containsKey(schemeSummaryModelToProcess.getSchemeId()))
|
| 566 |
continue;
|
557 |
continue;
|
| 567 |
//If different type but on higher side provide the higher margin
|
558 |
//If different type but on higher side provide the higher margin
|
| 568 |
if (Arrays.asList(SchemeType.ACTIVATION, SchemeType.SPECIAL_SUPPORT).contains(schemeSummaryModelToProcess.getSchemeType())) {
|
559 |
if (Arrays.asList(SchemeType.SPECIAL_SUPPORT).contains(schemeSummaryModelToProcess.getSchemeType())) {
|
| 569 |
Scheme scheme = schemeRepository.selectById(schemeSummaryModelToProcess.getSchemeId());
|
560 |
Scheme scheme = schemeRepository.selectById(schemeSummaryModelToProcess.getSchemeId());
|
| 570 |
//Create only if the activation if the activation date is not known
|
561 |
//Create only if the activation if the activation date is not known
|
| 571 |
ActivatedImei activatedImei = activatedImeiRepository.selectBySerialNumber(inventoryItem.getSerialNumber());
|
562 |
ActivatedImei activatedImei = activatedImeiRepository.selectBySerialNumber(inventoryItem.getSerialNumber());
|
| 572 |
if (activatedImei == null || activatedImei.getActivationTimestamp() == null) {
|
563 |
if (activatedImei == null || activatedImei.getActivationTimestamp() == null) {
|
| 573 |
SchemeInOut sio = new SchemeInOut();
|
564 |
SchemeInOut sio = new SchemeInOut();
|
| Line 576... |
Line 567... |
| 576 |
sio.setSchemeId(schemeSummaryModelToProcess.getSchemeId());
|
567 |
sio.setSchemeId(schemeSummaryModelToProcess.getSchemeId());
|
| 577 |
sio.setStatusDescription("Activation pending for IMEI#" + inventoryItem.getSerialNumber());
|
568 |
sio.setStatusDescription("Activation pending for IMEI#" + inventoryItem.getSerialNumber());
|
| 578 |
sio.setStatus(SchemePayoutStatus.PENDING);
|
569 |
sio.setStatus(SchemePayoutStatus.PENDING);
|
| 579 |
schemeInOutRepository.persist(sio);
|
570 |
schemeInOutRepository.persist(sio);
|
| 580 |
}
|
571 |
}
|
| 581 |
} else if (!SchemeType.IN.equals(schemeSummaryModelToProcess.getSchemeType())) {
|
572 |
} else if (!StockTransactionType.IN.equals(schemeSummaryModelToProcess.getSchemeType().getTransactionType())) {
|
| 582 |
//We have got non repeating scheme type
|
573 |
//We have got non repeating scheme type
|
| 583 |
if (paidSchemeTypesMap.containsKey(schemeSummaryModelToProcess.getSchemeType())) {
|
574 |
if (paidSchemeTypesMap.containsKey(schemeSummaryModelToProcess.getSchemeType())) {
|
| 584 |
SchemeInOut sio = paidSchemeTypesMap.get(schemeSummaryModelToProcess.getSchemeType()).get(0);
|
575 |
SchemeInOut sio = paidSchemeTypesMap.get(schemeSummaryModelToProcess.getSchemeType()).get(0);
|
| 585 |
Scheme paidScheme = sio.getScheme();
|
576 |
Scheme paidScheme = sio.getScheme();
|
| 586 |
//Don't entertain if amount types do not match for same type
|
577 |
//Don't entertain if amount types do not match for same type
|
| Line 625... |
Line 616... |
| 625 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
616 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
| 626 |
sio.setInventoryItemId(inventoryItem.getId());
|
617 |
sio.setInventoryItemId(inventoryItem.getId());
|
| 627 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
618 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
| 628 |
sio.setCreditTimestamp(LocalDateTime.now());
|
619 |
sio.setCreditTimestamp(LocalDateTime.now());
|
| 629 |
sio.setAmount((float) (fixedRollout * amountModel.getAmount() / fixedToPay) + schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
620 |
sio.setAmount((float) (fixedRollout * amountModel.getAmount() / fixedToPay) + schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
| 630 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
621 |
if (schemeSummaryModel.getSchemeType().getTransactionType().equals(StockTransactionType.IN))
|
| 631 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
622 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
| 632 |
else
|
623 |
else
|
| 633 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
624 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
| 634 |
schemeInOutRepository.persist(sio);
|
625 |
schemeInOutRepository.persist(sio);
|
| 635 |
}
|
626 |
}
|
| Line 651... |
Line 642... |
| 651 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
642 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
| 652 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
643 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
| 653 |
sio.setCreditTimestamp(LocalDateTime.now());
|
644 |
sio.setCreditTimestamp(LocalDateTime.now());
|
| 654 |
sio.setAmount((float) (percentageRollout * amountModel.getAmount() / percentageToPay) +
|
645 |
sio.setAmount((float) (percentageRollout * amountModel.getAmount() / percentageToPay) +
|
| 655 |
schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
646 |
schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
| 656 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
647 |
if (schemeSummaryModel.getSchemeType().getTransactionType().equals(StockTransactionType.IN))
|
| 657 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
648 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
| 658 |
else
|
649 |
else
|
| 659 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
650 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
| 660 |
schemeInOutRepository.persist(sio);
|
651 |
schemeInOutRepository.persist(sio);
|
| 661 |
}
|
652 |
}
|
| Line 740... |
Line 731... |
| 740 |
|
731 |
|
| 741 |
Map<Integer, List<InventoryItem>> catalogInventoryItemMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getItem().getCatalogItemId()));
|
732 |
Map<Integer, List<InventoryItem>> catalogInventoryItemMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getItem().getCatalogItemId()));
|
| 742 |
Map<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSchemeSummaryMap = tagListingRepository.getModelSchemesByCatalogIdsAndType(retailerId,
|
733 |
Map<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSchemeSummaryMap = tagListingRepository.getModelSchemesByCatalogIdsAndType(retailerId,
|
| 743 |
partnerType, new ArrayList<>(catalogInventoryItemMap.keySet()), fofoOrder.getCreateTimestamp());
|
734 |
partnerType, new ArrayList<>(catalogInventoryItemMap.keySet()), fofoOrder.getCreateTimestamp());
|
| 744 |
|
735 |
|
| - |
|
736 |
LOGGER.info("catalogSchemeSummaryMap - {}", catalogSchemeSummaryMap);
|
| - |
|
737 |
|
| 745 |
|
738 |
|
| 746 |
int count = 0;
|
739 |
int count = 0;
|
| 747 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogSchemeSummaryMap.entrySet()) {
|
740 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogSchemeSummaryMap.entrySet()) {
|
| 748 |
CatalogSummaryModel catalogSummaryModel = catalogSummaryModelListEntry.getKey();
|
741 |
CatalogSummaryModel catalogSummaryModel = catalogSummaryModelListEntry.getKey();
|
| 749 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue().stream().filter(x -> x != null).collect(Collectors.toList());
|
742 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue().stream().filter(x -> x != null).collect(Collectors.toList());
|
| 750 |
List<SchemeType> allOutSchemeTypes = new ArrayList<>();
|
- |
|
| 751 |
allOutSchemeTypes.addAll(Arrays.asList(SchemeType.ACTIVATION, SchemeType.INVESTMENT, SchemeType.SPECIAL_SUPPORT, SchemeType.SELLOUT));
|
- |
|
| 752 |
allOutSchemeTypes.addAll(OUT_SCHEME_TYPES);
|
- |
|
| - |
|
743 |
|
| 753 |
schemeSummaryModels.stream().filter(x -> allOutSchemeTypes.contains(x.getSchemeType())).forEach(x -> x.setProcess(true));
|
744 |
schemeSummaryModels.stream().filter(x -> x.getSchemeType().getTransactionType().equals(StockTransactionType.OUT)).forEach(x -> x.setProcess(true));
|
| 754 |
if (schemeSummaryModels.stream().filter(x -> x.isProcess()).count() == 0) continue;
|
745 |
if (schemeSummaryModels.stream().filter(x -> x.isProcess()).count() == 0) continue;
|
| 755 |
|
746 |
|
| 756 |
List<InventoryItem> modelInventoryItems = catalogInventoryItemMap.get(catalogSummaryModel.getCatalogId());
|
747 |
List<InventoryItem> modelInventoryItems = catalogInventoryItemMap.get(catalogSummaryModel.getCatalogId());
|
| 757 |
for (InventoryItem inventoryItem : modelInventoryItems) {
|
748 |
for (InventoryItem inventoryItem : modelInventoryItems) {
|
| 758 |
float inventoryItemCashback = this.createSchemeInOut(schemeSummaryModels, inventoryItem);
|
749 |
float inventoryItemCashback = this.createSchemeInOut(schemeSummaryModels, inventoryItem);
|
| Line 811... |
Line 802... |
| 811 |
int inventoryItemId = schemeInOut.getInventoryItemId();
|
802 |
int inventoryItemId = schemeInOut.getInventoryItemId();
|
| 812 |
if (schemeInOut.getRolledBackTimestamp() == null) {
|
803 |
if (schemeInOut.getRolledBackTimestamp() == null) {
|
| 813 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
804 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
| 814 |
if (schemeInOut.getStatus() == null || schemeInOut.getStatus().equals(SchemePayoutStatus.CREDITED)) {
|
805 |
if (schemeInOut.getStatus() == null || schemeInOut.getStatus().equals(SchemePayoutStatus.CREDITED)) {
|
| 815 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
806 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
| 816 |
if (scheme.getType().equals(SchemeType.IN)) {
|
807 |
if (scheme.getType().getTransactionType().equals(StockTransactionType.IN)) {
|
| 817 |
schemePayoutMap = inSchemesMap;
|
808 |
schemePayoutMap = inSchemesMap;
|
| 818 |
} else {
|
809 |
} else {
|
| 819 |
schemePayoutMap = outSchemesMap;
|
810 |
schemePayoutMap = outSchemesMap;
|
| 820 |
}
|
811 |
}
|
| 821 |
if (!schemePayoutMap.containsKey(inventoryItemId)) {
|
812 |
if (!schemePayoutMap.containsKey(inventoryItemId)) {
|
| Line 905... |
Line 896... |
| 905 |
InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
|
896 |
InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
|
| 906 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
897 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
| 907 |
if (scheme.getAmountType().equals(AmountType.FIXED)) {
|
898 |
if (scheme.getAmountType().equals(AmountType.FIXED)) {
|
| 908 |
continue;
|
899 |
continue;
|
| 909 |
}
|
900 |
}
|
| 910 |
if (scheme.getType().equals(SchemeType.IN) && schemeInOut.getRolledBackTimestamp() == null) {
|
901 |
if (scheme.getType().getTransactionType().equals(StockTransactionType.IN) && schemeInOut.getRolledBackTimestamp() == null) {
|
| 911 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
902 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
| 912 |
schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
|
903 |
schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
|
| 913 |
schemeInOut.setStatusDescription("Margin reversed due to price drop");
|
904 |
schemeInOut.setStatusDescription("Margin reversed due to price drop");
|
| 914 |
// IF not credited then dont consider any credit/debit for that sio entry
|
905 |
// IF not credited then dont consider any credit/debit for that sio entry
|
| 915 |
if (schemeInOut.getCreditTimestamp() != null) {
|
906 |
if (schemeInOut.getCreditTimestamp() != null) {
|
| Line 977... |
Line 968... |
| 977 |
}
|
968 |
}
|
| 978 |
}
|
969 |
}
|
| 979 |
}
|
970 |
}
|
| 980 |
|
971 |
|
| 981 |
int fofoId = inventoryItems.get(0).getFofoId();
|
972 |
int fofoId = inventoryItems.get(0).getFofoId();
|
| - |
|
973 |
WalletReferenceType walletReferenceType = WalletReferenceType.ACTIVATION_SCHEME;
|
| - |
|
974 |
|
| 982 |
WalletReferenceType walletReferenceType = schemeTypes.containsAll(SchemeService.OUT_SCHEME_TYPES) ? WalletReferenceType.SCHEME_OUT
|
975 |
/*schemeTypes.containsAll(SchemeService.OUT_SCHEME_TYPES) ? WalletReferenceType.SCHEME_OUT
|
| 983 |
: schemeTypes.contains(SchemeType.ACTIVATION) ? WalletReferenceType.ACTIVATION_SCHEME
|
976 |
: schemeTypes.contains(SchemeType.ACTIVATION) ? WalletReferenceType.ACTIVATION_SCHEME
|
| 984 |
: schemeTypes.contains(SchemeType.SPECIAL_SUPPORT) ? WalletReferenceType.SPECIAL_SUPPORT
|
977 |
: schemeTypes.contains(SchemeType.SPECIAL_SUPPORT) ? WalletReferenceType.SPECIAL_SUPPORT
|
| 985 |
: schemeTypes.contains(SchemeType.INVESTMENT) ? WalletReferenceType.SCHEME_OUT : null;
|
978 |
: schemeTypes.contains(SchemeType.INVESTMENT) ? WalletReferenceType.SCHEME_OUT : null;*/
|
| 986 |
List<UserWalletHistory> userWalletHistoryList = null;
|
979 |
List<UserWalletHistory> userWalletHistoryList = null;
|
| 987 |
if (amountToRollback > 0 && walletReferenceType != null) {
|
980 |
if (amountToRollback > 0 && walletReferenceType != null) {
|
| 988 |
// Mark appropriate reference of rollback investment margin
|
981 |
// Mark appropriate reference of rollback investment margin
|
| 989 |
if (schemeTypes.contains(SchemeType.INVESTMENT) && schemeTypeMap.containsKey(SchemeType.INVESTMENT)) {
|
982 |
if (schemeTypes.contains(SchemeType.INVESTMENT) && schemeTypeMap.containsKey(SchemeType.INVESTMENT)) {
|
| 990 |
LocalDateTime creditTime = schemeTypeMap.get(SchemeType.INVESTMENT).getCreditTimestamp();
|
983 |
LocalDateTime creditTime = schemeTypeMap.get(SchemeType.INVESTMENT).getCreditTimestamp();
|
| Line 1046... |
Line 1039... |
| 1046 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogModelMap.entrySet()) {
|
1039 |
for (Map.Entry<CatalogSummaryModel, List<SchemeSummaryModel>> catalogSummaryModelListEntry : catalogModelMap.entrySet()) {
|
| 1047 |
int catalogItemId = catalogSummaryModelListEntry.getKey().getCatalogId();
|
1040 |
int catalogItemId = catalogSummaryModelListEntry.getKey().getCatalogId();
|
| 1048 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue();
|
1041 |
List<SchemeSummaryModel> schemeSummaryModels = catalogSummaryModelListEntry.getValue();
|
| 1049 |
|
1042 |
|
| 1050 |
float totalCashback = schemeSummaryModels.stream()
|
1043 |
float totalCashback = schemeSummaryModels.stream()
|
| 1051 |
.filter(x -> Arrays.asList(SchemeType.ACTIVATION, SchemeType.SPECIAL_SUPPORT, SchemeType.SELLOUT).contains(x.getSchemeType())
|
1044 |
.filter(x -> Arrays.asList(SchemeType.SPECIAL_SUPPORT, SchemeType.SELLOUT).contains(x.getSchemeType())
|
| 1052 |
&& x.getAmountType().equals(AmountType.FIXED))
|
1045 |
&& x.getAmountType().equals(AmountType.FIXED))
|
| 1053 |
.collect(Collectors.summingDouble(x -> x.getAmount())).floatValue();
|
1046 |
.collect(Collectors.summingDouble(x -> x.getAmount())).floatValue();
|
| 1054 |
catalogCashbackMap.put(catalogItemId, totalCashback);
|
1047 |
catalogCashbackMap.put(catalogItemId, totalCashback);
|
| 1055 |
}
|
1048 |
}
|
| 1056 |
return catalogCashbackMap;
|
1049 |
return catalogCashbackMap;
|
| Line 1075... |
Line 1068... |
| 1075 |
|
1068 |
|
| 1076 |
@Override
|
1069 |
@Override
|
| 1077 |
public void processSchemeIn(List<InventoryItem> inventoryItems) throws ProfitMandiBusinessException {
|
1070 |
public void processSchemeIn(List<InventoryItem> inventoryItems) throws ProfitMandiBusinessException {
|
| 1078 |
Map<Integer, List<InventoryItem>> purchaseIdInventoryItemsMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getPurchaseId()));
|
1071 |
Map<Integer, List<InventoryItem>> purchaseIdInventoryItemsMap = inventoryItems.stream().collect(Collectors.groupingBy(x -> x.getPurchaseId()));
|
| 1079 |
for (Map.Entry<Integer, List<InventoryItem>> purchaseIdInventoryItemEntry : purchaseIdInventoryItemsMap.entrySet()) {
|
1072 |
for (Map.Entry<Integer, List<InventoryItem>> purchaseIdInventoryItemEntry : purchaseIdInventoryItemsMap.entrySet()) {
|
| 1080 |
Purchase purchase = purchaseRepository.selectById(purchaseIdInventoryItemEntry.getKey());
|
1073 |
int retailerId = purchaseIdInventoryItemEntry.getValue().get(0).getFofoId();
|
| 1081 |
this.processSchemeIn(purchase, purchaseIdInventoryItemEntry.getValue());
|
1074 |
this.processSchemeIn(purchaseIdInventoryItemEntry.getKey(), retailerId);
|
| 1082 |
}
|
1075 |
}
|
| 1083 |
}
|
1076 |
}
|
| 1084 |
|
1077 |
|
| 1085 |
@Autowired
|
1078 |
@Autowired
|
| 1086 |
FofoStoreRepository fofoStoreRepository;
|
1079 |
FofoStoreRepository fofoStoreRepository;
|
| Line 1157... |
Line 1150... |
| 1157 |
Set<Integer> inventoryIds = new HashSet<>();
|
1150 |
Set<Integer> inventoryIds = new HashSet<>();
|
| 1158 |
for (SchemeInOut pendingPayout : pendingPayouts) {
|
1151 |
for (SchemeInOut pendingPayout : pendingPayouts) {
|
| 1159 |
schemeIds.add(pendingPayout.getSchemeId());
|
1152 |
schemeIds.add(pendingPayout.getSchemeId());
|
| 1160 |
}
|
1153 |
}
|
| 1161 |
Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, 0).stream()
|
1154 |
Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, 0).stream()
|
| 1162 |
.filter(x -> x.getType().equals(SchemeType.ACTIVATION) || x.getType().equals(SchemeType.SPECIAL_SUPPORT))
|
1155 |
.filter(x -> x.getType().equals(SchemeType.SPECIAL_SUPPORT))
|
| 1163 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
1156 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 1164 |
pendingPayouts = pendingPayouts.stream().filter(x -> schemesMap.get(x.getSchemeId()) != null)
|
1157 |
pendingPayouts = pendingPayouts.stream().filter(x -> schemesMap.get(x.getSchemeId()) != null)
|
| 1165 |
.collect(Collectors.toList());
|
1158 |
.collect(Collectors.toList());
|
| 1166 |
|
1159 |
|
| 1167 |
for (SchemeInOut pendingPayout : pendingPayouts) {
|
1160 |
for (SchemeInOut pendingPayout : pendingPayouts) {
|
| Line 1198... |
Line 1191... |
| 1198 |
AmountModel amountModel = new AmountModel();
|
1191 |
AmountModel amountModel = new AmountModel();
|
| 1199 |
amountModel.setAmount(scheme.getAmount());
|
1192 |
amountModel.setAmount(scheme.getAmount());
|
| 1200 |
amountModel.setAmountType(scheme.getAmountType());
|
1193 |
amountModel.setAmountType(scheme.getAmountType());
|
| 1201 |
double amountToRollout = inventoryPayoutModel.getRolloutAmount(amountModel);
|
1194 |
double amountToRollout = inventoryPayoutModel.getRolloutAmount(amountModel);
|
| 1202 |
pendingPayout.setAmount((float) amountToRollout);
|
1195 |
pendingPayout.setAmount((float) amountToRollout);
|
| 1203 |
if (scheme.getType().equals(SchemeType.ACTIVATION)) {
|
- |
|
| 1204 |
walletService.addAmountToWallet(fofoId, orderId, WalletReferenceType.ACTIVATION_SCHEME,
|
- |
|
| 1205 |
"Activation margin for " + ii.getItem().getItemDescriptionNoColor() + ", Imei - " + serialNumber, (float) amountToRollout,
|
- |
|
| 1206 |
fofoOrder.getCreateTimestamp());
|
- |
|
| 1207 |
pendingPayout.setStatusDescription("Activation margin credited, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
|
- |
|
| 1208 |
} else {
|
- |
|
| 1209 |
walletService.addAmountToWallet(fofoId, orderId, WalletReferenceType.SPECIAL_SUPPORT,
|
1196 |
walletService.addAmountToWallet(fofoId, orderId, WalletReferenceType.SPECIAL_SUPPORT,
|
| 1210 |
"Special Support for " + ii.getItem().getItemDescriptionNoColor() + ", Imei - " + serialNumber, (float) amountToRollout,
|
1197 |
"Special Support for " + ii.getItem().getItemDescriptionNoColor() + ", Imei - " + serialNumber, (float) amountToRollout,
|
| 1211 |
fofoOrder.getCreateTimestamp());
|
1198 |
fofoOrder.getCreateTimestamp());
|
| 1212 |
pendingPayout.setStatusDescription("Special support credited, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
|
1199 |
pendingPayout.setStatusDescription("Special support credited, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
|
| 1213 |
}
|
- |
|
| - |
|
1200 |
|
| 1214 |
pendingPayout.setCreditTimestamp(LocalDateTime.now());
|
1201 |
pendingPayout.setCreditTimestamp(LocalDateTime.now());
|
| 1215 |
pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
|
1202 |
pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
|
| 1216 |
} else {
|
1203 |
} else {
|
| 1217 |
pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
|
1204 |
pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
|
| 1218 |
pendingPayout.setRolledBackTimestamp(LocalDateTime.now());
|
1205 |
pendingPayout.setRolledBackTimestamp(LocalDateTime.now());
|
| Line 1235... |
Line 1222... |
| 1235 |
SchemesImeisModel schemesImeisModel = imeiListEntry.getValue().get(0);
|
1222 |
SchemesImeisModel schemesImeisModel = imeiListEntry.getValue().get(0);
|
| 1236 |
List<Integer> schemeIds = imeiListEntry.getValue().stream().map(x -> x.getSchemeId()).collect(Collectors.toList());
|
1223 |
List<Integer> schemeIds = imeiListEntry.getValue().stream().map(x -> x.getSchemeId()).collect(Collectors.toList());
|
| 1237 |
LOGGER.info("Serial Number - {}, Scheme IDs - {}", schemesImeisModel.getImei(), schemeIds);
|
1224 |
LOGGER.info("Serial Number - {}, Scheme IDs - {}", schemesImeisModel.getImei(), schemeIds);
|
| 1238 |
InventoryItem inventoryItem = inventoryItemRepository.selectById(schemesImeisModel.getInventoryItemId());
|
1225 |
InventoryItem inventoryItem = inventoryItemRepository.selectById(schemesImeisModel.getInventoryItemId());
|
| 1239 |
List<Scheme> schemes = schemeRepository.selectBySchemeIds(schemeIds);
|
1226 |
List<Scheme> schemes = schemeRepository.selectBySchemeIds(schemeIds);
|
| 1240 |
List<Scheme> supportSchemes = schemes.stream().filter(x -> Arrays.asList(SchemeType.SPECIAL_SUPPORT, SchemeType.ACTIVATION).contains(x.getType())).collect(Collectors.toList());
|
1227 |
List<Scheme> supportSchemes = schemes.stream().filter(x -> Arrays.asList(SchemeType.SPECIAL_SUPPORT).contains(x.getType())).collect(Collectors.toList());
|
| 1241 |
if (supportSchemes.size() > 0) {
|
1228 |
if (supportSchemes.size() > 0) {
|
| 1242 |
for (Scheme scheme : supportSchemes) {
|
1229 |
for (Scheme scheme : supportSchemes) {
|
| 1243 |
List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
|
1230 |
List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByScheme(scheme.getId(), inventoryItem.getId());
|
| 1244 |
if (schemeInOuts.stream().filter(x -> Arrays.asList(SchemePayoutStatus.CREDITED, SchemePayoutStatus.PENDING).contains(x.getStatus())).count() > 0) {
|
1231 |
if (schemeInOuts.stream().filter(x -> Arrays.asList(SchemePayoutStatus.CREDITED, SchemePayoutStatus.PENDING).contains(x.getStatus())).count() > 0) {
|
| 1245 |
continue;
|
1232 |
continue;
|