| Line 497... |
Line 497... |
| 497 |
schemeInOut.setStatus(SchemePayoutStatus.PENDING);
|
497 |
schemeInOut.setStatus(SchemePayoutStatus.PENDING);
|
| 498 |
schemeInOut.setStatusDescription("Subject to investment days maintained");
|
498 |
schemeInOut.setStatusDescription("Subject to investment days maintained");
|
| 499 |
return 0;
|
499 |
return 0;
|
| 500 |
} else {
|
500 |
} else {
|
| 501 |
schemeInOut.setStatus(SchemePayoutStatus.CREDITED);
|
501 |
schemeInOut.setStatus(SchemePayoutStatus.CREDITED);
|
| - |
|
502 |
if(scheme.getType().equals(SchemeType.IN)) {
|
| - |
|
503 |
schemeInOut.setStatusDescription("Credited for GRN of IMEI#" + inventoryItem.getSerialNumber());
|
| - |
|
504 |
}
|
| 502 |
schemeInOut.setStatusDescription("Credited for sale of IMEI#" + inventoryItem.getSerialNumber());
|
505 |
schemeInOut.setStatusDescription("Credited for sale of IMEI#" + inventoryItem.getSerialNumber());
|
| 503 |
schemeInOut.setCreditTimestamp(LocalDateTime.now());
|
506 |
schemeInOut.setCreditTimestamp(LocalDateTime.now());
|
| 504 |
}
|
507 |
}
|
| 505 |
}
|
508 |
}
|
| 506 |
return amountToCredit;
|
509 |
return amountToCredit;
|
| Line 672... |
Line 675... |
| 672 |
}
|
675 |
}
|
| 673 |
return schemes;
|
676 |
return schemes;
|
| 674 |
}
|
677 |
}
|
| 675 |
|
678 |
|
| 676 |
@Override
|
679 |
@Override
|
| - |
|
680 |
//This is being called to reverse schemes while processing price Drop
|
| 677 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
|
681 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int priceDropId, String reversalReason)
|
| 678 |
throws ProfitMandiBusinessException {
|
682 |
throws ProfitMandiBusinessException {
|
| 679 |
PriceDrop priceDrop = priceDropRepository.selectById(priceDropId);
|
683 |
PriceDrop priceDrop = priceDropRepository.selectById(priceDropId);
|
| 680 |
Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
|
684 |
Map<Integer, List<InventoryItem>> purchaseInventoryListMap = inventoryItems.stream()
|
| 681 |
.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
|
685 |
.collect(Collectors.groupingBy(InventoryItem::getPurchaseId, Collectors.toList()));
|
| Line 698... |
Line 702... |
| 698 |
Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size())
|
702 |
Map<Integer, Scheme> schemesMap = schemeRepository.selectBySchemeIds(schemeIds, 0, schemeIds.size())
|
| 699 |
.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
703 |
.stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 700 |
for (SchemeInOut schemeInOut : schemeInOuts) {
|
704 |
for (SchemeInOut schemeInOut : schemeInOuts) {
|
| 701 |
InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
|
705 |
InventoryItem ii = inventoryItemsMap.get(schemeInOut.getInventoryItemId());
|
| 702 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
706 |
Scheme scheme = schemesMap.get(schemeInOut.getSchemeId());
|
| 703 |
if (scheme.getType().equals(SchemeType.OUT))
|
- |
|
| 704 |
continue;
|
- |
|
| 705 |
if (scheme.getAmountType().equals(AmountType.FIXED)) {
|
707 |
if (scheme.getAmountType().equals(AmountType.FIXED)) {
|
| 706 |
continue;
|
708 |
continue;
|
| 707 |
}
|
709 |
}
|
| 708 |
if (schemeInOut.getRolledBackTimestamp() == null) {
|
710 |
if (scheme.getType().equals(SchemeType.IN) && schemeInOut.getRolledBackTimestamp() == null) {
|
| 709 |
float newAmount = getAmount(ii, scheme);
|
711 |
float newAmount = getAmount(ii, scheme);
|
| 710 |
if (schemeInOut.getAmount() - newAmount >= 0.01f) {
|
712 |
if (schemeInOut.getAmount() - newAmount >= 0.01f) {
|
| 711 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
713 |
schemeInOut.setRolledBackTimestamp(LocalDateTime.now());
|
| 712 |
schemeInOutRepository.persist(schemeInOut);
|
714 |
|
| 713 |
SchemeInOut sioNew = new SchemeInOut();
|
715 |
SchemeInOut sioNew = new SchemeInOut();
|
| 714 |
sioNew.setAmount(newAmount);
|
716 |
sioNew.setAmount(newAmount);
|
| - |
|
717 |
sioNew.setStatus(schemeInOut.getStatus());
|
| - |
|
718 |
sioNew.setStatusDescription(schemeInOut.getStatusDescription());
|
| 715 |
sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
|
719 |
sioNew.setInventoryItemId(schemeInOut.getInventoryItemId());
|
| 716 |
sioNew.setSchemeId(schemeInOut.getSchemeId());
|
720 |
sioNew.setSchemeId(schemeInOut.getSchemeId());
|
| 717 |
schemeInOutRepository.persist(sioNew);
|
721 |
schemeInOutRepository.persist(sioNew);
|
| - |
|
722 |
|
| - |
|
723 |
schemeInOut.setStatus(SchemePayoutStatus.REJECTED);
|
| - |
|
724 |
schemeInOut.setStatusDescription("Pricedrop processed, new entries added");
|
| - |
|
725 |
//IF not credited then dont consider any credit/debit for that sio entry
|
| - |
|
726 |
if(schemeInOut.getCreditTimestamp()!=null) {
|
| 718 |
amountToCredit += sioNew.getAmount();
|
727 |
amountToCredit += sioNew.getAmount();
|
| 719 |
amountToDebit += schemeInOut.getAmount();
|
728 |
amountToDebit += schemeInOut.getAmount();
|
| - |
|
729 |
}
|
| 720 |
}
|
730 |
}
|
| 721 |
|
731 |
|
| 722 |
}
|
732 |
}
|
| 723 |
}
|
733 |
}
|
| 724 |
int fofoId = inventoryItems.get(0).getFofoId();
|
734 |
int fofoId = inventoryItems.get(0).getFofoId();
|
| Line 734... |
Line 744... |
| 734 |
}
|
744 |
}
|
| 735 |
}
|
745 |
}
|
| 736 |
}
|
746 |
}
|
| 737 |
|
747 |
|
| 738 |
@Override
|
748 |
@Override
|
| - |
|
749 |
//Always being called from cancel order means no SCHEME IN is considered
|
| 739 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
|
750 |
public void reverseSchemes(List<InventoryItem> inventoryItems, int reversalReference, String reversalReason,
|
| 740 |
SchemeType schemeType) throws ProfitMandiBusinessException {
|
751 |
SchemeType schemeType) throws ProfitMandiBusinessException {
|
| 741 |
Map<Integer, InventoryItem> inventoryItemsMap = inventoryItems.stream()
|
752 |
Map<Integer, InventoryItem> inventoryItemsMap = inventoryItems.stream()
|
| 742 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
753 |
.collect(Collectors.toMap(x -> x.getId(), x -> x));
|
| 743 |
List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
|
754 |
List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(inventoryItemsMap.keySet());
|
| Line 758... |
Line 769... |
| 758 |
}
|
769 |
}
|
| 759 |
}
|
770 |
}
|
| 760 |
}
|
771 |
}
|
| 761 |
int fofoId = inventoryItems.get(0).getFofoId();
|
772 |
int fofoId = inventoryItems.get(0).getFofoId();
|
| 762 |
WalletReferenceType walletReferenceType = schemeType.equals(SchemeType.OUT) ? WalletReferenceType.SCHEME_OUT
|
773 |
WalletReferenceType walletReferenceType = schemeType.equals(SchemeType.OUT) ? WalletReferenceType.SCHEME_OUT
|
| 763 |
: schemeType.equals(SchemeType.IN) ? WalletReferenceType.SCHEME_IN : WalletReferenceType.ACTIVATION_SCHEME;
|
774 |
: schemeType.equals(SchemeType.INVESTMENT) ? WalletReferenceType.INVESTMENT_PAYOUT : WalletReferenceType.ACTIVATION_SCHEME;
|
| 764 |
if (amountToRollback > 0) {
|
775 |
if (amountToRollback > 0) {
|
| 765 |
// TODO//
|
776 |
// TODO//
|
| 766 |
walletService.rollbackAmountFromWallet(fofoId, amountToRollback, reversalReference, walletReferenceType,
|
777 |
walletService.rollbackAmountFromWallet(fofoId, amountToRollback, reversalReference, walletReferenceType,
|
| 767 |
reversalReason, LocalDateTime.now());
|
778 |
reversalReason, LocalDateTime.now());
|
| 768 |
}
|
779 |
}
|
| Line 949... |
Line 960... |
| 949 |
pendingPayout.setCreditTimestamp(LocalDateTime.now());
|
960 |
pendingPayout.setCreditTimestamp(LocalDateTime.now());
|
| 950 |
pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
|
961 |
pendingPayout.setStatus(SchemePayoutStatus.CREDITED);
|
| 951 |
pendingPayout.setStatusDescription("Activation margin credited");
|
962 |
pendingPayout.setStatusDescription("Activation margin credited");
|
| 952 |
} else {
|
963 |
} else {
|
| 953 |
pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
|
964 |
pendingPayout.setStatus(SchemePayoutStatus.REJECTED);
|
| - |
|
965 |
pendingPayout.setRolledBackTimestamp(LocalDateTime.now());;
|
| 954 |
pendingPayout.setStatusDescription("Rejected, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
|
966 |
pendingPayout.setStatusDescription("Rejected, activated on " + FormattingUtils.formatDate(activatedImei.getActivationTimestamp()));
|
| 955 |
}
|
967 |
}
|
| 956 |
}
|
968 |
}
|
| 957 |
}
|
969 |
}
|
| 958 |
|
970 |
|