| Line 590... |
Line 590... |
| 590 |
List<SchemeSummaryModel> inventoryPayoutModelToProcess = schemeSummaryModels.stream().filter(x -> x.isProcess()).collect(Collectors.toList());
|
590 |
List<SchemeSummaryModel> inventoryPayoutModelToProcess = schemeSummaryModels.stream().filter(x -> x.isProcess()).collect(Collectors.toList());
|
| 591 |
|
591 |
|
| 592 |
List<SchemeInOut> sios = inventoryPayoutModel.getSchemePayouts();
|
592 |
List<SchemeInOut> sios = inventoryPayoutModel.getSchemePayouts();
|
| 593 |
Map<SchemeType, List<SchemeInOut>> paidSchemeTypesMap = inventoryPayoutModel.getSchemePayouts().stream().collect(Collectors.groupingBy(x -> x.getScheme().getType()));
|
593 |
Map<SchemeType, List<SchemeInOut>> paidSchemeTypesMap = inventoryPayoutModel.getSchemePayouts().stream().collect(Collectors.groupingBy(x -> x.getScheme().getType()));
|
| 594 |
Map<Integer, SchemeInOut> paidSchemesMap = sios.stream().collect(Collectors.toMap(x -> x.getSchemeId(), x -> x));
|
594 |
Map<Integer, SchemeInOut> paidSchemesMap = sios.stream().collect(Collectors.toMap(x -> x.getSchemeId(), x -> x));
|
| - |
|
595 |
Map<SchemeType, Float> schemeTypeCancelledAmountMap = new HashMap<>();
|
| 595 |
|
596 |
|
| 596 |
double percentageToPay = 0d;
|
597 |
double percentageToPay = 0d;
|
| 597 |
double fixedToPay = 0d;
|
598 |
double fixedToPay = 0d;
|
| 598 |
Map<SchemeSummaryModel, AmountModel> payoutSchemeSummaryModelMap = new HashMap<>();
|
599 |
Map<SchemeSummaryModel, AmountModel> payoutSchemeSummaryModelMap = new HashMap<>();
|
| 599 |
for (SchemeSummaryModel schemeSummaryModelToProcess : inventoryPayoutModelToProcess) {
|
600 |
for (SchemeSummaryModel schemeSummaryModelToProcess : inventoryPayoutModelToProcess) {
|
| Line 615... |
Line 616... |
| 615 |
//Don't entertain if amount types do not match for same type
|
616 |
//Don't entertain if amount types do not match for same type
|
| 616 |
if (paidScheme.getAmountType().equals(schemeSummaryModelToProcess.getAmountType()) &&
|
617 |
if (paidScheme.getAmountType().equals(schemeSummaryModelToProcess.getAmountType()) &&
|
| 617 |
schemeSummaryModelToProcess.getAmount() > paidScheme.getAmount() + Utils.DOUBLE_EPSILON) {
|
618 |
schemeSummaryModelToProcess.getAmount() > paidScheme.getAmount() + Utils.DOUBLE_EPSILON) {
|
| 618 |
sio.setRolledBackTimestamp(LocalDateTime.now());
|
619 |
sio.setRolledBackTimestamp(LocalDateTime.now());
|
| 619 |
sio.setStatus(SchemePayoutStatus.REJECTED);
|
620 |
sio.setStatus(SchemePayoutStatus.REJECTED);
|
| 620 |
sio.setStatusDescription("Eligible for higher margin for " + sio.getSchemeType() + " new entry added");
|
621 |
sio.setStatusDescription("Eligible for higher margin for " + schemeSummaryModelToProcess.getSchemeType() + ", new entry added");
|
| - |
|
622 |
schemeTypeCancelledAmountMap.put(schemeSummaryModelToProcess.getSchemeType(), sio.getAmount());
|
| 621 |
if (paidScheme.getAmountType().equals(AmountType.PERCENTAGE)) {
|
623 |
if (paidScheme.getAmountType().equals(AmountType.PERCENTAGE)) {
|
| 622 |
percentageToPay += schemeSummaryModelToProcess.getAmount() - paidScheme.getAmount();
|
624 |
percentageToPay += schemeSummaryModelToProcess.getAmount() - paidScheme.getAmount();
|
| 623 |
} else {
|
625 |
} else {
|
| 624 |
fixedToPay += schemeSummaryModelToProcess.getAmount() - paidScheme.getAmount();
|
626 |
fixedToPay += schemeSummaryModelToProcess.getAmount() - paidScheme.getAmount();
|
| 625 |
}
|
627 |
}
|
| Line 652... |
Line 654... |
| 652 |
SchemeInOut sio = new SchemeInOut();
|
654 |
SchemeInOut sio = new SchemeInOut();
|
| 653 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
655 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
| 654 |
sio.setInventoryItemId(inventoryItem.getId());
|
656 |
sio.setInventoryItemId(inventoryItem.getId());
|
| 655 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
657 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
| 656 |
sio.setCreditTimestamp(LocalDateTime.now());
|
658 |
sio.setCreditTimestamp(LocalDateTime.now());
|
| 657 |
sio.setAmount((float) (fixedRollout * amountModel.getAmount() / fixedToPay));
|
659 |
sio.setAmount((float) (fixedRollout * amountModel.getAmount() / fixedToPay) + schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
| 658 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
660 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
| 659 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
661 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
| 660 |
else
|
662 |
else
|
| 661 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
663 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
| 662 |
schemeInOutRepository.persist(sio);
|
664 |
schemeInOutRepository.persist(sio);
|
| Line 677... |
Line 679... |
| 677 |
SchemeInOut sio = new SchemeInOut();
|
679 |
SchemeInOut sio = new SchemeInOut();
|
| 678 |
sio.setInventoryItemId(inventoryItem.getId());
|
680 |
sio.setInventoryItemId(inventoryItem.getId());
|
| 679 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
681 |
sio.setSchemeId(schemeSummaryModel.getSchemeId());
|
| 680 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
682 |
sio.setStatus(SchemePayoutStatus.CREDITED);
|
| 681 |
sio.setCreditTimestamp(LocalDateTime.now());
|
683 |
sio.setCreditTimestamp(LocalDateTime.now());
|
| 682 |
sio.setAmount((float) (percentageRollout * amountModel.getAmount() / percentageToPay));
|
684 |
sio.setAmount((float) (percentageRollout * amountModel.getAmount() / percentageToPay) +
|
| - |
|
685 |
schemeTypeCancelledAmountMap.getOrDefault(schemeSummaryModel.getSchemeType(), 0f));
|
| 683 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
686 |
if (schemeSummaryModel.getSchemeType().equals(SchemeType.IN))
|
| 684 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
687 |
sio.setStatusDescription("Credited for GRN of IMEI-" + inventoryItem.getSerialNumber());
|
| 685 |
else
|
688 |
else
|
| 686 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
689 |
sio.setStatusDescription("Credited for Sale of IMEI-" + inventoryItem.getSerialNumber());
|
| 687 |
schemeInOutRepository.persist(sio);
|
690 |
schemeInOutRepository.persist(sio);
|