Subversion Repositories SmartDukaan

Rev

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

Rev 35852 Rev 36181
Line 794... Line 794...
794
                        })
794
                        })
795
                        .map(Map.Entry::getKey)
795
                        .map(Map.Entry::getKey)
796
                        .collect(Collectors.toList());
796
                        .collect(Collectors.toList());
797
            }
797
            }
798
 
798
 
799
            // Filter to only external, ACTIVE stores (collection plan not required)
799
            // Filter to only external, ACTIVE or REVIVAL stores (collection plan not required)
800
            Map<Integer, Integer> finalAllCollectionRankMap = allCollectionRankMap;
800
            Map<Integer, Integer> finalAllCollectionRankMap = allCollectionRankMap;
801
            Map<Integer, FofoStore> finalFofoStoresMap = fofoStoresMap;
801
            Map<Integer, FofoStore> finalFofoStoresMap = fofoStoresMap;
802
            List<Integer> validFofoIds = fofoIds.stream()
802
            List<Integer> validFofoIds = fofoIds.stream()
803
                    .filter(fofoId -> {
803
                    .filter(fofoId -> {
804
                        FofoStore store = finalFofoStoresMap.get(fofoId);
804
                        FofoStore store = finalFofoStoresMap.get(fofoId);
805
                        if (store == null || store.isInternal()) {
805
                        if (store == null || store.isInternal()) {
806
                            return false;
806
                            return false;
807
                        }
807
                        }
808
                        // Only include ACTIVE partners (not Low Sale, not Disputed, not Billing Pending)
808
                        // Only include ACTIVE or REVIVAL partners (not Low Sale, not Disputed, not Billing Pending)
809
                        return ActivationType.ACTIVE.equals(store.getActivationType());
809
                        return ActivationType.ACTIVE.equals(store.getActivationType())
-
 
810
                                || ActivationType.REVIVAL.equals(store.getActivationType());
810
                    })
811
                    })
811
                    .collect(Collectors.toList());
812
                    .collect(Collectors.toList());
812
 
813
 
813
            if (validFofoIds.isEmpty()) {
814
            if (validFofoIds.isEmpty()) {
814
                continue;
815
                continue;
Line 821... Line 822...
821
            Set<Integer> mtdFofoIds = mtdFofoIdsByAuthId.getOrDefault(rbmAuthId, Collections.emptySet());
822
            Set<Integer> mtdFofoIds = mtdFofoIdsByAuthId.getOrDefault(rbmAuthId, Collections.emptySet());
822
            targetModel.setPartnerCount(mtdFofoIds.size());
823
            targetModel.setPartnerCount(mtdFofoIds.size());
823
 
824
 
824
            // Categorize each partner - each partner belongs to ONE category only
825
            // Categorize each partner - each partner belongs to ONE category only
825
            // Priority: PlanToday > CarryForward > ZeroBilling > Untouched > FuturePlan > Normal
826
            // Priority: PlanToday > CarryForward > ZeroBilling > Untouched > FuturePlan > Normal
-
 
827
            // Revival is counted separately (just for display, doesn't affect categorization)
826
            Set<Integer> planTodayPartners = new HashSet<>();
828
            Set<Integer> planTodayPartners = new HashSet<>();
827
            Set<Integer> carryForwardPartners = new HashSet<>();
829
            Set<Integer> carryForwardPartners = new HashSet<>();
828
            Set<Integer> untouchedPartners = new HashSet<>();
830
            Set<Integer> untouchedPartners = new HashSet<>();
829
            Set<Integer> zeroBillingPartners = new HashSet<>();
831
            Set<Integer> zeroBillingPartners = new HashSet<>();
830
            Set<Integer> futurePlanPartners = new HashSet<>();
832
            Set<Integer> futurePlanPartners = new HashSet<>();
831
            Set<Integer> normalPartners = new HashSet<>();
833
            Set<Integer> normalPartners = new HashSet<>();
-
 
834
            Set<Integer> revivalPartners = new HashSet<>();
832
 
835
 
833
            for (Integer fofoId : validFofoIds) {
836
            for (Integer fofoId : validFofoIds) {
834
                // Get collection plan rank (from optimized rank map)
837
                // Get collection plan rank (from optimized rank map)
835
                int rank = allCollectionRankMap.getOrDefault(fofoId, 5); // default to Normal if no plan
838
                int rank = allCollectionRankMap.getOrDefault(fofoId, 5); // default to Normal if no plan
836
 
839
 
837
                // Check if partner has zero billing in MTD
840
                // Check if partner has zero billing in MTD
838
                boolean hasZeroBilling = !allMtdBilledFofoIds.contains(fofoId);
841
                boolean hasZeroBilling = !allMtdBilledFofoIds.contains(fofoId);
839
 
842
 
-
 
843
                // Count REVIVAL partners separately (just for display, doesn't affect categorization)
-
 
844
                FofoStore store = finalFofoStoresMap.get(fofoId);
-
 
845
                if (store != null && ActivationType.REVIVAL.equals(store.getActivationType())) {
-
 
846
                    revivalPartners.add(fofoId);
-
 
847
                }
-
 
848
 
840
                // Assign to category based on priority
849
                // Assign to category based on priority
841
                if (rank == 1) {
850
                if (rank == 1) {
842
                    planTodayPartners.add(fofoId);
851
                    planTodayPartners.add(fofoId);
843
                } else if (rank == 2) {
852
                } else if (rank == 2) {
844
                    carryForwardPartners.add(fofoId);
853
                    carryForwardPartners.add(fofoId);
Line 859... Line 868...
859
            targetModel.setCarryForward(carryForwardPartners.size());
868
            targetModel.setCarryForward(carryForwardPartners.size());
860
            targetModel.setUntouched(untouchedPartners.size());
869
            targetModel.setUntouched(untouchedPartners.size());
861
            targetModel.setZeroBilling(zeroBillingPartners.size());
870
            targetModel.setZeroBilling(zeroBillingPartners.size());
862
            targetModel.setFuturePlan(futurePlanPartners.size());
871
            targetModel.setFuturePlan(futurePlanPartners.size());
863
            targetModel.setNormal(normalPartners.size());
872
            targetModel.setNormal(normalPartners.size());
-
 
873
            targetModel.setRevival(revivalPartners.size());
864
 
874
 
865
            // Today Target = PlanToday + CarryForward + ZeroBilling + Untouched
875
            // Today Target = PlanToday + CarryForward + ZeroBilling + Untouched
866
            // These are mutually exclusive now, so we can sum them
876
            // These are mutually exclusive now, so we can sum them
867
            long todayTarget = planTodayPartners.size() +
877
            long todayTarget = planTodayPartners.size() +
868
                    carryForwardPartners.size() + zeroBillingPartners.size() + untouchedPartners.size();
878
                    carryForwardPartners.size() + zeroBillingPartners.size() + untouchedPartners.size();