Subversion Repositories SmartDukaan

Rev

Rev 32060 | Rev 32165 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32060 Rev 32155
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);