function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Harjeet SinghHarjeet Singh 

Restrict an user to proceed in absence of a validation not met

Hi All,
I have a requiremnt which i am describing below:
There is a button called "Continue" on UI. When an user clicks on it it will redirect to some other page. But prior to that one validations need to be done. As you people can see in the screen shot which i attached here is there is checkbox along with the name of each subscription. So my requirement is if an user does not select any single subscription with "Active" status and if user clicks on proceed button an error message must be thrown "Please select al least one active subscription".
I am attaching the corresponding code and Visual force page with the screen shot.
public with sharing class AccountActionsWrapper
{       
    public String contextItem{get;set;}   
    public set<Id> selectedContactIds{get;set;}
    public String accountName {get; set;}
    public string accountid;
    public String selectedActions{get;set;}
    public boolean AccountBool{get;set;}
    public List<Account> accounts {get; set;}
    public List<csord__Service__c> vLstServ{ get; set; }
    public Id acctId {get; set;}
    public integer size{get;set;}
    public Map<Id, List<csord__Service__c>> memIdServListMap { get; set; }
    public integer noOfRecords{get;set;}
    public Date dat {get;set;}
    Set<Id> SubIds = new Set<Id>();
    public boolean Display{get;set;}
     Map<Id, csord__Subscription__c> subMap = new Map<Id, csord__Subscription__c>();
    public List<csord__Subscription__c>vLstSubscriptions{get;set;}
    public List<wrapSubscription> wrapSubscriptionList {get; set;}
    public List<csord__Subscription__c> selectedSubscriptions{get;set;} 
    public Boolean isCancel{get;set;}
    public String query {get; set;}
    public String dateError {get;set;}
    public String currentDateValue { get; set; }

    public ApexPages.StandardSetController setCon {
        get{
            if(setCon == null){
           size =20; 
           accountid=ApexPages.currentPage().getParameters().get('id');
           selectedContactIds= new Set<Id>();       
           setCon= new ApexPages.StandardSetController( [select Id, Name,csord__Status__c,MACD_in_progress__c , csord__Account__c from csord__Subscription__c where csord__Account__c=:accountid] );
           this.setCon.setpageNumber(1);
           setCon.setPageSize(size);
           noOfRecords = setCon.getResultSize();            
            }
            return setCon;
        }set;
    }
    
     public AccountActionsWrapper() 
     {
       selectedActions='Take Over';
       if(selectedActions=='Take Over')
       {
          AccountBool=true; 
       } 
      }
        
    public List<SelectOption> getActions() {
        List<SelectOption> Actions= new List<SelectOption>();
        Actions.add(new SelectOption('Take Over','Take Over'));
        Actions.add(new SelectOption('Invoice Switch','Invoice Switch'));
        Actions.add(new SelectOption('Move','Move'));
        return Actions;
    }
    public void getDisplayAccount()
    {
        if(selectedActions!='Take Over')
        {
           AccountBool=false; 
        }
        else
        {
             AccountBool=true;
        }
    }
    
    //function to get date value    
     public void getValue(){
      System.debug('*************'+currentDateValue);
      
    
     }
     
     //Function to retrieving account detail in pop-up upon clicking on Lookup in VF page
     public PageReference runQuery()
    {
        List<List<Account>> searchResults=[FIND :query IN ALL FIELDS RETURNING Account (id, name, billingstreet, billingcity, billingpostalcode)];
        accounts=searchResults[0];
        return null;
    }   
    
    public void doSelectItem()
    {
      this.selectedContactIds.add(this.contextItem);
    } 
    public void doDeselectItem()
    {
      this.selectedContactIds.remove(this.contextItem);
    } 
    public Integer getSelectedCount()
    {
      return this.selectedContactIds.size();
    }
    public void doNext()
    { 
      if(this.setCon.getHasNext())
         this.setCon.next();
    } 
    public void doPrevious()
    {
      if(this.setCon.getHasPrevious())
         this.setCon.previous();
    }
    public void doStart() 
    { 
      if(this.setCon.getHasPrevious())
         this.setCon.previous();
    }
    public void doEnd() 
    { 
      if(this.setCon.getHasNext())
         this.setCon.next();
   }
     
    public List<wrapSubscription> getSubscriptions()
    { 
        
        List<wrapSubscription> rows = new List<wrapSubscription>(); 
        //vLstSubscriptions = [select Id, Name,csord__Status__c, csord__Account__c,(select Id,Billing_Account_Number__c from csord__Services__r) from csord__Subscription__c where csord__Account__c=:accountid limit 100];
        for(sObject r : this.setCon.getRecords())
        {
            csord__Subscription__c c = (csord__Subscription__c)r;
            wrapSubscription row = new wrapSubscription(c,vLstServ);
            if(this.selectedContactIds.contains(c.Id))
            {
                row.selected=true;
            }
            else
            {
                row.selected=false;
            }
            rows.add(row);
        }
        return rows;
         
    }
    public PageReference cancel()
    {
        return new PageReference('/'+accountid);
    }
    public Boolean getHasPrevious()
    { 
        return this.setCon.getHasPrevious();
    } 
    public Boolean getHasNext()
    {
       return this.setCon.getHasNext(); 
    }  
    public Integer getPageNumber()
    {
       return this.setCon.getPageNumber();
    } 
    Public Integer getTotalPages()
    {
        Decimal totalSize = this.setCon.getResultSize();
        Decimal pageSize = this.setCon.getPageSize();
        Decimal pages = totalSize/pageSize; 
        return (Integer)pages.round(System.RoundingMode.CEILING);
    }  
    public class wrapSubscription
    { 
        public csord__Subscription__c sub {get; set;}        
        public Boolean selected {get; set;}
        public List<csord__Service__c> Serv{get;set;}
        public wrapSubscription(csord__Subscription__c c,List<csord__Service__c> vLstServ)
        {
            this.sub=c;
            this.Serv=vLstServ;
            this.selected=false;
        }
 
    }
}
<apex:page docType="html-5.0" controller="AccountActionsWrapper" sidebar="false" showHeader="false" id="pg" >

<head>
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" />
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
</head>


<!--for mm/dd/yyyy format-->
<!--<script>
       $(function(){
        $('.datepicker').datepicker({
             minDate: 0 
         }).on('changeDate', function(ev){
            $('#sDate1').text($('#datepicker').data('date'));
            $('#datepicker').datepicker('hide');
        });
    
    })
</script>-->

<!--for dd/mm/yyyy format-->
<script>
       $(function(){
        $('.datepicker').datepicker({ minDate: 0 , dateFormat: 'dd/mm/yy' }).on('changeDate', function(ev){
            $('#sDate1').text($('#datepicker').data('date'));
            $('#datepicker').datepicker('hide');
        });
    
    })
</script>


<script>
    var newWin=null;
    function openLookupPopup(name, id)
    {
        var url="/apex/LookupExamplePopup?namefield=" + name + "&idfield=" + id;
        newWin=window.open(url, 'Popup','height=500,width=600,left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,status=no');
        if (window.focus) 
        {
            newWin.focus();
        }
            
        return false;
    }
                  
    function closeLookupPopup()
    {
       if (null!=newWin)
       {
          newWin.close();
       }  
    }
    
  
    
     function doCheckboxChange(cb,itemId){ 
            if(cb.checked==true){
                aSelectItem(itemId);
            }
            else{
                aDeselectItem(itemId);
            }
        }
</script>

    <script type="text/javascript">
        function selectAllCheckboxes(obj,receivedInputID){
            var inputCheckBox = document.getElementsByTagName("input");
            for(var i=0; i<inputCheckBox.length; i++){
                if(inputCheckBox[i].id.indexOf(receivedInputID)!=-1){
                    inputCheckBox[i].checked = obj.checked;
                }
            }
        }
    </script>
   
    <apex:form >
    <apex:pageBlock >    
      <apex:pageBlockSection >    
        <apex:pageBlockSectionItem >
        Select the Action:
        <!--<apex:outputPanel>-->
          <apex:selectList value="{!selectedActions}" multiselect="false" size="1" >
                <apex:selectOptions value="{!Actions}"/>
                <apex:actionSupport event="onchange" action="{!getDisplayAccount}" reRender="panel"/>             
            </apex:selectList>
           </apex:pageBlockSectionItem>
           </apex:pageBlockSection>
      <apex:outputPanel >        
       <apex:pageBlockSection >     
           <apex:pageBlockSectionItem >          
           <apex:outputLabel value="Target Account"/>        
           <apex:outputPanel id="panel" >
            <apex:inputHidden value="{!acctId}" id="targetId"/>
            <apex:inputText size="40" value="{!accountName}" id="targetName" onFocus="this.blur()" disabled="{!!AccountBool}"/>&nbsp;
            
            <apex:outputLink rendered="{!AccountBool}" onclick="openLookupPopup('{!$Component.targetName}', '{!$Component.targetId}'); return false">Lookup</apex:outputLink>                    
          </apex:outputPanel>          
      </apex:pageBlockSectionItem>
      </apex:pageBlockSection>
      </apex:outputPanel>
               <apex:PageBlockSection >
            <apex:pageBlockSectionItem >
                <!--Date: <apex:input type="date" value="{!dat}" required="false"/>--> 
                Effective From:<apex:inputText id="datepicker" styleClass="datepicker"  value="{!currentDateValue}" required="false"/>              
            </apex:pageBlockSectionItem>           
            <!--<apex:input value="{!myDate}" id="theTextInput" type="date"/>-->
        </apex:pageBlockSection>       
    </apex:pageBlock>   
        
        <!-- handle selected item -->
        <apex:actionFunction name="aSelectItem" action="{!doSelectItem}" rerender="mpb">
            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>
        </apex:actionFunction>
 
        <!-- handle deselected item -->
        <apex:actionFunction name="aDeselectItem" action="{!doDeselectItem}" rerender="mpb">
            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>
        </apex:actionFunction>        
         <apex:pageBlock title="Select Subscriptions" id="mpb">        
            <apex:pageblockSection title="Subscriptions" collapsible="false" columns="1" >
            <apex:pageBlockTable value="{!Subscriptions}" var="c">
                <apex:column >
                        <apex:facet name="header">
                            <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
                        </apex:facet>                       
                            <apex:inputCheckbox value="{!c.selected}" id="inputId" disabled="{!NOT(c.sub.csord__Status__c=='Active') && (c.sub.MACD_in_progress__c=False)}" onchange="doCheckboxChange(this,'{!c.sub.Id}')"/>
                            
                    </apex:column>           
                 <apex:column headerValue="Subscription Name" >                       
                       <apex:outputLink value="/{!c.sub.Id}" target="_blank"> {!c.sub.Name} </apex:outputLink>
                   </apex:column>
                <apex:column value="{!c.sub.csord__Status__c}"/>                
                           
            </apex:pageBlockTable>
            </apex:pageblockSection>
           
        <apex:commandButton value="First" action="{!setCon.first}" disabled="{!!setCon.hasPrevious}" title="First Page"/>
        <apex:commandButton value="Previous" action="{!setCon.previous}" disabled="{!!setCon.hasPrevious}" title="Previous Page"/>
        <apex:outputText >{!(setCon.pageNumber * size)+1-size}-{!IF((setCon.pageNumber * size)>noOfRecords, noOfRecords,(setCon.pageNumber * size))} of {!noOfRecords}</apex:outputText>
        <apex:commandButton value="Next" action="{!setCon.next}" disabled="{!!setCon.hasNext}" title="Next Page"/>
        <apex:commandButton value="Last" action="{!setCon.last}" disabled="{!!setCon.hasNext}" title="Last Page"/>
         <apex:pageBlockButtons location="bottom">
                <apex:commandButton value="Continue "  />
                <apex:commandButton value="Back" action="{!cancel}" immediate="true" />
            </apex:pageBlockButtons>
        </apex:pageBlock>        
    </apex:form>
</apex:page>
screen shot
This forum has helped me out earlier also and i am very hopeful that you people will help me out this time also.
Please fine tune my code wherever applicable.

Many thanks in advance.
 
Best Answer chosen by Harjeet Singh
Pankaj_GanwaniPankaj_Ganwani
Hi,
 
<apex:form >

    <apex:pageBlock >   

      <apex:pageBlockSection >   

        <apex:pageBlockSectionItem >

        Select the Action:

        <!--<apex:outputPanel>-->

          <apex:selectList value="{!selectedActions}" multiselect="false" size="1" >

                <apex:selectOptions value="{!Actions}"/>

                <apex:actionSupport event="onchange" action="{!getDisplayAccount}" reRender="panel"/>            

            </apex:selectList>

           </apex:pageBlockSectionItem>

           </apex:pageBlockSection>

      <apex:outputPanel >       

       <apex:pageBlockSection >    

           <apex:pageBlockSectionItem >         

           <apex:outputLabel value="Target Account"/>       

           <apex:outputPanel id="panel" >

            <apex:inputHidden value="{!acctId}" id="targetId"/>

            <apex:inputText size="40" value="{!accountName}" id="targetName" onFocus="this.blur()" disabled="{!!AccountBool}"/>&nbsp;

             

            <apex:outputLink rendered="{!AccountBool}" onclick="openLookupPopup('{!$Component.targetName}', '{!$Component.targetId}'); return false">Lookup</apex:outputLink>                   

          </apex:outputPanel>         

      </apex:pageBlockSectionItem>

      </apex:pageBlockSection>

      </apex:outputPanel>

               <apex:PageBlockSection >

            <apex:pageBlockSectionItem >

                <!--Date: <apex:input type="date" value="{!dat}" required="false"/>-->

                Effective From:<apex:inputText id="datepicker" styleClass="datepicker" value="{!currentDateValue}" required="false"/>             

            </apex:pageBlockSectionItem>          

            <!--<apex:input value="{!myDate}" id="theTextInput" type="date"/>-->

        </apex:pageBlockSection>      

    </apex:pageBlock>  

         

        <!-- handle selected item -->

        <apex:actionFunction name="aSelectItem" action="{!doSelectItem}" rerender="mpb">

            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>

        </apex:actionFunction>

  

        <!-- handle deselected item -->

        <apex:actionFunction name="aDeselectItem" action="{!doDeselectItem}" rerender="mpb">

            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>

        </apex:actionFunction>       

         <apex:pageBlock title="Select Subscriptions" id="mpb">       

            <apex:pageblockSection title="Subscriptions" collapsible="false" columns="1">

            <apex:pageBlockTable value="{!Subscriptions}" var="c" id="dataTableId">

                <apex:column >

                        <apex:facet name="header">

                            <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>

                        </apex:facet>                      

                            <apex:inputCheckbox value="{!c.selected}" id="inputId" disabled="{!NOT(c.sub.csord__Status__c=='Active') && (c.sub.MACD_in_progress__c=False)}" onchange="doCheckboxChange(this,'{!c.sub.Id}')"/>

                             

                    </apex:column>          

                 <apex:column headerValue="Subscription Name" >                      

                       <apex:outputLink value="/{!c.sub.Id}" target="_blank"> {!c.sub.Name} </apex:outputLink>

                   </apex:column>

                <apex:column value="{!c.sub.csord__Status__c}"/>               

                            

            </apex:pageBlockTable>

            </apex:pageblockSection>

            

        <apex:commandButton value="First" action="{!setCon.first}" disabled="{!!setCon.hasPrevious}" title="First Page"/>

        <apex:commandButton value="Previous" action="{!setCon.previous}" disabled="{!!setCon.hasPrevious}" title="Previous Page"/>

        <apex:outputText >{!(setCon.pageNumber * size)+1-size}-{!IF((setCon.pageNumber * size)>noOfRecords, noOfRecords,(setCon.pageNumber * size))} of {!noOfRecords}</apex:outputText>

        <apex:commandButton value="Next" action="{!setCon.next}" disabled="{!!setCon.hasNext}" title="Next Page"/>

        <apex:commandButton value="Last" action="{!setCon.last}" disabled="{!!setCon.hasNext}" title="Last Page"/>

         <apex:pageBlockButtons location="bottom">

                <apex:commandButton value="Continue " onclick="checkAllRecords('{!$Component.dataTableId}');" id="mpb" />

                <apex:commandButton value="Back" action="{!cancel}" immediate="true" />

            </apex:pageBlockButtons>

        </apex:pageBlock>       

    </apex:form>

 <script>

 function validateCheckbox(tableId)

 

        {

 

             var count = 0;  

 

             var arrayInput = document.getElementById(tableId).getElementsByTagName('input');     

 

            for(var i=0 ; i < arrayInput.length ; i++)

 

            {

 

                if(arrayInput[i].type == 'checkbox' && arrayInput[i].checked )

 

                {

 

                        count++;

 

                }

 

            }

 

            if(count > 0)

 

                  //redirect the user to another page

 

 

           else

 

                  alert('Please select atleast one subscription with Active suscription');

 

         }

 </script>

Please replace code from apex:form tag with this one.

All Answers

Pankaj_GanwaniPankaj_Ganwani
Hi,
 
function checkAllRecords(tableId)

        {

             var count = 0;   

             var arrayInput = document.getElementById(tableId).getElementsByTagName('input');      

            for(var i=0 ; i < arrayInput.length ; i++)

            {

                if(arrayInput[i].type == 'checkbox' && arrayInput[i].checked )

                {

                        count++;

                }

            }

            if(count > 0)

                   //redirect the user to another page

           else

                  alert('Please select atleast one option');

         }

Please use above javascript code on click event of button 
Harjeet SinghHarjeet Singh
Hi Pankaj,

The way which you have suggested didnt work out. I can able to proceed by clicking on continue button without selecting any subscription with "Active" status.
Pankaj_GanwaniPankaj_Ganwani
Hi,

Can you please share your integrated code here?
Harjeet SinghHarjeet Singh
yes sure Pankaj
Harjeet SinghHarjeet Singh
<apex:page docType="html-5.0" controller="AccountActionsWrapper" sidebar="false" showHeader="false" id="pg" >
<head>
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" />
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
</head>


<!--for mm/dd/yyyy format-->
<!--<script>
       $(function(){
        $('.datepicker').datepicker({
             minDate: 0 
         }).on('changeDate', function(ev){
            $('#sDate1').text($('#datepicker').data('date'));
            $('#datepicker').datepicker('hide');
        });
    
    })
</script>-->

<!--for dd/mm/yyyy format-->
<script>
       $(function(){
        $('.datepicker').datepicker({ minDate: 0 , dateFormat: 'dd/mm/yy' }).on('changeDate', function(ev){
            $('#sDate1').text($('#datepicker').data('date'));
            $('#datepicker').datepicker('hide');
        });
    
    })
</script>

<!--look up to account logic-->
<script>
    var newWin=null;
    function openLookupPopup(name, id)
    {
        var url="/apex/LookupExamplePopup?namefield=" + name + "&idfield=" + id;
        newWin=window.open(url, 'Popup','height=500,width=600,left=100,top=100,resizable=no,scrollbars=yes,toolbar=no,status=no');
        if (window.focus) 
        {
            newWin.focus();
        }
            
        return false;
    }
                  
    function closeLookupPopup()
    {
       if (null!=newWin)
       {
          newWin.close();
       }  
    }
    
  
   <!--checkbox logic--> 
     function doCheckboxChange(cb,itemId){ 
            if(cb.checked==true){
                aSelectItem(itemId);
            }
            else{
                aDeselectItem(itemId);
            }
        }
</script>

    <script type="text/javascript">
        function selectAllCheckboxes(obj,receivedInputID){
            var inputCheckBox = document.getElementsByTagName("input");
            for(var i=0; i<inputCheckBox.length; i++){
                if(inputCheckBox[i].id.indexOf(receivedInputID)!=-1){
                    inputCheckBox[i].checked = obj.checked;
                }
            }
        }
    </script>
   
    <apex:form >
    <apex:pageBlock >    
      <apex:pageBlockSection >    
        <apex:pageBlockSectionItem >
        Select the Action:
        <!--<apex:outputPanel>-->
          <apex:selectList value="{!selectedActions}" multiselect="false" size="1" >
                <apex:selectOptions value="{!Actions}"/>
                <apex:actionSupport event="onchange" action="{!getDisplayAccount}" reRender="panel"/>             
            </apex:selectList>
           </apex:pageBlockSectionItem>
           </apex:pageBlockSection>
      <apex:outputPanel >        
       <apex:pageBlockSection >     
           <apex:pageBlockSectionItem >          
           <apex:outputLabel value="Target Account"/>        
           <apex:outputPanel id="panel" >
            <apex:inputHidden value="{!acctId}" id="targetId"/>
            <apex:inputText size="40" value="{!accountName}" id="targetName" onFocus="this.blur()" disabled="{!!AccountBool}"/>&nbsp;
            
            <apex:outputLink rendered="{!AccountBool}" onclick="openLookupPopup('{!$Component.targetName}', '{!$Component.targetId}'); return false">Lookup</apex:outputLink>                    
          </apex:outputPanel>          
      </apex:pageBlockSectionItem>
      </apex:pageBlockSection>
      </apex:outputPanel>
               <apex:PageBlockSection >
            <apex:pageBlockSectionItem >
                <!--Date: <apex:input type="date" value="{!dat}" required="false"/>--> 
                Effective From:<apex:inputText id="datepicker" styleClass="datepicker"  value="{!currentDateValue}" required="false"/>              
            </apex:pageBlockSectionItem>           
            <!--<apex:input value="{!myDate}" id="theTextInput" type="date"/>-->
        </apex:pageBlockSection>       
    </apex:pageBlock>   
        
        <!-- handle selected item -->
        <apex:actionFunction name="aSelectItem" action="{!doSelectItem}" rerender="mpb">
            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>
        </apex:actionFunction>
 
        <!-- handle deselected item -->
        <apex:actionFunction name="aDeselectItem" action="{!doDeselectItem}" rerender="mpb">
            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>
        </apex:actionFunction>        
         <apex:pageBlock title="Select Subscriptions" id="mpb">        
            <apex:pageblockSection title="Subscriptions" collapsible="false" columns="1" >
            <apex:pageBlockTable value="{!Subscriptions}" var="c">
                <apex:column >
                        <apex:facet name="header">
                            <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>
                        </apex:facet>                       
                            <apex:inputCheckbox value="{!c.selected}" id="inputId" disabled="{!NOT(c.sub.csord__Status__c=='Active') && (c.sub.MACD_in_progress__c=False)}" onchange="doCheckboxChange(this,'{!c.sub.Id}')"/>
                            
                    </apex:column>           
                 <apex:column headerValue="Subscription Name" >                       
                       <apex:outputLink value="/{!c.sub.Id}" target="_blank"> {!c.sub.Name} </apex:outputLink>
                   </apex:column>
                <apex:column value="{!c.sub.csord__Status__c}"/>                
                           
            </apex:pageBlockTable>
            </apex:pageblockSection>
           
        <apex:commandButton value="First" action="{!setCon.first}" disabled="{!!setCon.hasPrevious}" title="First Page"/>
        <apex:commandButton value="Previous" action="{!setCon.previous}" disabled="{!!setCon.hasPrevious}" title="Previous Page"/>
        <apex:outputText >{!(setCon.pageNumber * size)+1-size}-{!IF((setCon.pageNumber * size)>noOfRecords, noOfRecords,(setCon.pageNumber * size))} of {!noOfRecords}</apex:outputText>
        <apex:commandButton value="Next" action="{!setCon.next}" disabled="{!!setCon.hasNext}" title="Next Page"/>
        <apex:commandButton value="Last" action="{!setCon.last}" disabled="{!!setCon.hasNext}" title="Last Page"/>
         <apex:pageBlockButtons location="bottom">
                <apex:commandButton value="Continue "  onclick="checkAllRecords(tableId);" id="mpb" />
                <apex:commandButton value="Back" action="{!cancel}" immediate="true" />
            </apex:pageBlockButtons>
        </apex:pageBlock>        
    </apex:form>
 <script>
 function checkAllRecords(mpb)

        {

             var count = 0;   

             var arrayInput = document.getElementById(mpb).getElementsByTagName('input');      

            for(var i=0 ; i < arrayInput.length ; i++)

            {

                if(arrayInput[i].type == 'checkbox' && arrayInput[i].checked )

                {

                        count++;

                }

            }

            if(count > 0)

                  //redirect the user to another page


           else

                  alert('Please select atleast one subscription with Active suscription');

         }
 </script>        
</apex:page>
 
public with sharing class AccountActionsWrapper{
public String contextItem{get;set;}   
    public set<Id> selectedContactIds{get;set;}
    public String accountName {get; set;}
    public string accountid;
    public String selectedActions{get;set;}
    public boolean AccountBool{get;set;}
    public List<Account> accounts {get; set;}
    public List<csord__Service__c> vLstServ{ get; set; }
    public Id acctId {get; set;}
    public integer size{get;set;}
    public Map<Id, List<csord__Service__c>> memIdServListMap { get; set; }
    public integer noOfRecords{get;set;}
    public Date dat {get;set;}
    Set<Id> SubIds = new Set<Id>();
    public boolean Display{get;set;}
     Map<Id, csord__Subscription__c> subMap = new Map<Id, csord__Subscription__c>();
    public List<csord__Subscription__c>vLstSubscriptions{get;set;}
    public List<wrapSubscription> wrapSubscriptionList {get; set;}
    public List<csord__Subscription__c> selectedSubscriptions{get;set;} 
    public Boolean isCancel{get;set;}
    public String query {get; set;}
    public String dateError {get;set;}
    public String currentDateValue { get; set; }

    public ApexPages.StandardSetController setCon {
        get{
            if(setCon == null){
           size =20; 
           accountid=ApexPages.currentPage().getParameters().get('id');
           selectedContactIds= new Set<Id>();       
           setCon= new ApexPages.StandardSetController( [select Id, Name,csord__Status__c,MACD_in_progress__c , csord__Account__c from csord__Subscription__c where csord__Account__c=:accountid] );
           this.setCon.setpageNumber(1);
           setCon.setPageSize(size);
           noOfRecords = setCon.getResultSize();            
            }
            return setCon;
        }set;
    }
    
     public TfB_PB_AccountActionsWrapper() 
     {
       selectedActions='Take Over';
       if(selectedActions=='Take Over')
       {
          AccountBool=true; 
       } 
      }
        
    public List<SelectOption> getActions() {
        List<SelectOption> Actions= new List<SelectOption>();
        Actions.add(new SelectOption('Take Over','Take Over'));
        Actions.add(new SelectOption('Invoice Switch','Invoice Switch'));
        Actions.add(new SelectOption('Move','Move'));
        return Actions;
    }
    public void getDisplayAccount()
    {
        if(selectedActions!='Take Over')
        {
           AccountBool=false; 
        }
        else
        {
             AccountBool=true;
        }
    }
    
    //function to get date value    
     public void getValue(){
      System.debug('*************'+currentDateValue);
      
    
     }
     
     //Function to retrieving account detail in pop-up upon clicking on Lookup in VF page
     public PageReference runQuery()
    {
        List<List<Account>> searchResults=[FIND :query IN ALL FIELDS RETURNING Account (id, name, billingstreet, billingcity, billingpostalcode)];
        accounts=searchResults[0];
        return null;
    }   
    
    public void doSelectItem()
    {
      this.selectedContactIds.add(this.contextItem);
    } 
    public void doDeselectItem()
    {
      this.selectedContactIds.remove(this.contextItem);
    } 
    public Integer getSelectedCount()
    {
      return this.selectedContactIds.size();
    }
    public void doNext()
    { 
      if(this.setCon.getHasNext())
         this.setCon.next();
    } 
    public void doPrevious()
    {
      if(this.setCon.getHasPrevious())
         this.setCon.previous();
    }
    public void doStart() 
    { 
      if(this.setCon.getHasPrevious())
         this.setCon.previous();
    }
    public void doEnd() 
    { 
      if(this.setCon.getHasNext())
         this.setCon.next();
   }
     
    public List<wrapSubscription> getSubscriptions()
    { 
        
        List<wrapSubscription> rows = new List<wrapSubscription>(); 
        //vLstSubscriptions = [select Id, Name,csord__Status__c, csord__Account__c,(select Id,Billing_Account_Number__c from csord__Services__r) from csord__Subscription__c where csord__Account__c=:accountid limit 100];
        for(sObject r : this.setCon.getRecords())
        {
            csord__Subscription__c c = (csord__Subscription__c)r;
            wrapSubscription row = new wrapSubscription(c,vLstServ);
            if(this.selectedContactIds.contains(c.Id))
            {
                row.selected=true;
            }
            else
            {
                row.selected=false;
            }
            rows.add(row);
        }
        return rows;
         
    }
    public PageReference cancel()
    {
        return new PageReference('/'+accountid);
    }
    public Boolean getHasPrevious()
    { 
        return this.setCon.getHasPrevious();
    } 
    public Boolean getHasNext()
    {
       return this.setCon.getHasNext(); 
    }  
    public Integer getPageNumber()
    {
       return this.setCon.getPageNumber();
    } 
    Public Integer getTotalPages()
    {
        Decimal totalSize = this.setCon.getResultSize();
        Decimal pageSize = this.setCon.getPageSize();
        Decimal pages = totalSize/pageSize; 
        return (Integer)pages.round(System.RoundingMode.CEILING);
    }  
    public class wrapSubscription
    { 
        public csord__Subscription__c sub {get; set;}        
        public Boolean selected {get; set;}
        public List<csord__Service__c> Serv{get;set;}
        public wrapSubscription(csord__Subscription__c c,List<csord__Service__c> vLstServ)
        {
            this.sub=c;
            this.Serv=vLstServ;
            this.selected=false;
        }
 
    }

}

Hi Pankaj,

Please find attached the codes.
Thanks in advance.
Pankaj_GanwaniPankaj_Ganwani
Hi,

At line no 125 in vf page, give the id of pageblocktable
<apex:pageBlockTable value="{!Subscriptions}" var="c" id = "dataTableId">

At line no 147 use below mentioned statement:
<apex:commandButton value="Continue " onclick="checkAllRecords('{!$Component.dataTableId}');" id="mpb"/>
Harjeet SinghHarjeet Singh
Dear Pankaj,
Now I am confusing with 2 ids i.e.
dataTableId & mpb.I am not getting clue where to use which one i mean in java script which id i need to put.
May i request you please look into the code and fine tune it according to that and provide me the updated code so that i can put the code and will check whether that works or not.
Many thanks in advance.
 
Pankaj_GanwaniPankaj_Ganwani
Hi,
 
<apex:form >

    <apex:pageBlock >   

      <apex:pageBlockSection >   

        <apex:pageBlockSectionItem >

        Select the Action:

        <!--<apex:outputPanel>-->

          <apex:selectList value="{!selectedActions}" multiselect="false" size="1" >

                <apex:selectOptions value="{!Actions}"/>

                <apex:actionSupport event="onchange" action="{!getDisplayAccount}" reRender="panel"/>            

            </apex:selectList>

           </apex:pageBlockSectionItem>

           </apex:pageBlockSection>

      <apex:outputPanel >       

       <apex:pageBlockSection >    

           <apex:pageBlockSectionItem >         

           <apex:outputLabel value="Target Account"/>       

           <apex:outputPanel id="panel" >

            <apex:inputHidden value="{!acctId}" id="targetId"/>

            <apex:inputText size="40" value="{!accountName}" id="targetName" onFocus="this.blur()" disabled="{!!AccountBool}"/>&nbsp;

             

            <apex:outputLink rendered="{!AccountBool}" onclick="openLookupPopup('{!$Component.targetName}', '{!$Component.targetId}'); return false">Lookup</apex:outputLink>                   

          </apex:outputPanel>         

      </apex:pageBlockSectionItem>

      </apex:pageBlockSection>

      </apex:outputPanel>

               <apex:PageBlockSection >

            <apex:pageBlockSectionItem >

                <!--Date: <apex:input type="date" value="{!dat}" required="false"/>-->

                Effective From:<apex:inputText id="datepicker" styleClass="datepicker" value="{!currentDateValue}" required="false"/>             

            </apex:pageBlockSectionItem>          

            <!--<apex:input value="{!myDate}" id="theTextInput" type="date"/>-->

        </apex:pageBlockSection>      

    </apex:pageBlock>  

         

        <!-- handle selected item -->

        <apex:actionFunction name="aSelectItem" action="{!doSelectItem}" rerender="mpb">

            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>

        </apex:actionFunction>

  

        <!-- handle deselected item -->

        <apex:actionFunction name="aDeselectItem" action="{!doDeselectItem}" rerender="mpb">

            <apex:param name="contextItem" value="" assignTo="{!contextItem}"/>

        </apex:actionFunction>       

         <apex:pageBlock title="Select Subscriptions" id="mpb">       

            <apex:pageblockSection title="Subscriptions" collapsible="false" columns="1">

            <apex:pageBlockTable value="{!Subscriptions}" var="c" id="dataTableId">

                <apex:column >

                        <apex:facet name="header">

                            <apex:inputCheckbox onclick="selectAllCheckboxes(this,'inputId')"/>

                        </apex:facet>                      

                            <apex:inputCheckbox value="{!c.selected}" id="inputId" disabled="{!NOT(c.sub.csord__Status__c=='Active') && (c.sub.MACD_in_progress__c=False)}" onchange="doCheckboxChange(this,'{!c.sub.Id}')"/>

                             

                    </apex:column>          

                 <apex:column headerValue="Subscription Name" >                      

                       <apex:outputLink value="/{!c.sub.Id}" target="_blank"> {!c.sub.Name} </apex:outputLink>

                   </apex:column>

                <apex:column value="{!c.sub.csord__Status__c}"/>               

                            

            </apex:pageBlockTable>

            </apex:pageblockSection>

            

        <apex:commandButton value="First" action="{!setCon.first}" disabled="{!!setCon.hasPrevious}" title="First Page"/>

        <apex:commandButton value="Previous" action="{!setCon.previous}" disabled="{!!setCon.hasPrevious}" title="Previous Page"/>

        <apex:outputText >{!(setCon.pageNumber * size)+1-size}-{!IF((setCon.pageNumber * size)>noOfRecords, noOfRecords,(setCon.pageNumber * size))} of {!noOfRecords}</apex:outputText>

        <apex:commandButton value="Next" action="{!setCon.next}" disabled="{!!setCon.hasNext}" title="Next Page"/>

        <apex:commandButton value="Last" action="{!setCon.last}" disabled="{!!setCon.hasNext}" title="Last Page"/>

         <apex:pageBlockButtons location="bottom">

                <apex:commandButton value="Continue " onclick="checkAllRecords('{!$Component.dataTableId}');" id="mpb" />

                <apex:commandButton value="Back" action="{!cancel}" immediate="true" />

            </apex:pageBlockButtons>

        </apex:pageBlock>       

    </apex:form>

 <script>

 function validateCheckbox(tableId)

 

        {

 

             var count = 0;  

 

             var arrayInput = document.getElementById(tableId).getElementsByTagName('input');     

 

            for(var i=0 ; i < arrayInput.length ; i++)

 

            {

 

                if(arrayInput[i].type == 'checkbox' && arrayInput[i].checked )

 

                {

 

                        count++;

 

                }

 

            }

 

            if(count > 0)

 

                  //redirect the user to another page

 

 

           else

 

                  alert('Please select atleast one subscription with Active suscription');

 

         }

 </script>

Please replace code from apex:form tag with this one.
This was selected as the best answer
Harjeet SinghHarjeet Singh
Thanks Pankaj but sorry to say it is not working.
No error is coming when i am simply clicking on "continue" button without selecting any active status subscription.
Pankaj_GanwaniPankaj_Ganwani
At line no. 135 of above code, use this line instead:
<apex:commandButton value="Continue "onclick="validateCheckbox('{!$Component.dataTableId}');return false;" id="mpb" />

Sorry, I had changed the function name since already one function was written in your code with the same name.
Harjeet SinghHarjeet Singh
Dear Ganwani,
sorry i tried again but no luck.
Actually my requirement is such that user is allowed to select only those subscription having "active' status.Rest all the subscription with status other than active is not allowed to selected by an user and to achieve this i need to implement such criteria that checkbox for subscription other than active is disabled so that user is not allowed to select those subscriptions.
Now come to second part,if an user forget to select or intentionally is not selecting atleast one susbcriptionn with "active" status then he must not be allowed to click on "continue' button i.e. on click of continue button an error should display with the message "please select atleast one subscription with active status"

 
Pankaj_GanwaniPankaj_Ganwani
Hi,

Not sure what would be the exact cause of this issue. There can be multiple factors which may cause this issue to happen.Please try to debug the javascript by putting alert statements and check whether you are getting the proper count or not. I have used similar code in more than 10 projects and it worked fine without any fail.
Harjeet SinghHarjeet Singh
Thanks Pankaj..
Absolutely fine no problem.
 
Pankaj_GanwaniPankaj_Ganwani
Hi Harjeet,

Will it be possible to share the credentials of your org with me so that I can do some debugging within your code to know the causes behind? You can directly connect with me via facebook or linkedin links shared on my profile.

Thanks,
Pankaj
Harjeet SinghHarjeet Singh
Dear Pankaj,
Sorry i cant share my credentials of org as this is client rule adherence.
Yes, I have send you request on Facebook,twitter and linkdin.

Thanks
Harjeet SinghHarjeet Singh
Hi Pankaj,
I have found out the solution during the weekend only.Sorry for the late reply.
Thanks man for your helps and inputs.
Harjeet SinghHarjeet Singh
Hi Pankaj,
P.F.A my controller class and test class.I am unable to increase my code coverage after 60%.
public with sharing class AccountActionsWrapper{
       
    public List<wrapSubscription> SubscriptionSetList{get;set;}
    public integer size{get;set;}
    public String currentDateValue { get; set; }
    public String selectedActions{get;set;}
    public csord__Subscription__c vSub{get;set;}
    public List<csord__Subscription__c> vLstSub{get;set;}
    public Map<Id, List<csord__Subscription__c>> AccIdSubListMap { get; set; }
   
    public Map<Id, List<csord__Service__c>> SubIdServListMap { get; set; }
    Map<Id, csord__Subscription__c> subMap = new Map<Id, csord__Subscription__c>();
    //public List<csord__Service__c> vLstServ{get;set;}
    public boolean AccountBool{get;set;}
    public boolean fals{get;set;}
    public Date SysDate{get;set;}
    public Account vAccount{get;set;}
    public Account vSourceAccount{get;set;}
    public String contextItem{get;set;}
    public integer noOfRecords{get;set;}
    public set<csord__Subscription__c > selectedSubscription;
    public set<id> subids;
    public string accountId;
    public String baseQuery;
    
    //Constructor for the class    
    public AccountActionsWrapper( ){
       
        AccIdSubListMap=new Map<Id, List<csord__Subscription__c>>();
        SubIdServListMap= new Map<Id, List<csord__Service__c>>();
        vSub= new csord__Subscription__c();
        selectedActions='Take Over';
        if(selectedActions=='Take Over'){
            AccountBool=true; 
        }
        fals= false; 
        this.subids = new set<id>();
        this.selectedSubscription = new set<csord__Subscription__c>();
        SubscriptionSetList = new List<wrapSubscription>();
        accountId=ApexPages.currentPage().getParameters().get('id');
        //baseQuery = 'SELECT Name, csord__Status__c,csord__Account__c,MACD_in_progress__c,(select Id,Billing_Account_Number__c from csord__Services__r) FROM csord__Subscription__c where csord__Account__c=:accountId';
        //system.debug('Records &&&&&&'+baseQuery);
    }
        public List<selectOption> ActionValues {
        get {
          List<selectOption> options = new List<selectOption>();
    
          for (csordtelcoa__Change_Types__c cType : csordtelcoa__Change_Types__c.getAll().values())
            options.add(new SelectOption(cType.Name,cType.Name));
          return options;
        }
        set;
      }
    
    //This function implements the pagination logic
    public ApexPages.StandardSetController SubSetController{ 
        
        get{            
            if(SubSetController == null){
                size =20;
                //SubSetController = new ApexPages.StandardSetController(Database.getQueryLocator(baseQuery));
                SubSetController = new ApexPages.StandardSetController([SELECT Name, csord__Status__c,csord__Account__c,MACD_in_progress__c,Billing_Account_Number__c,(select Id,Billing_Account_Number__c from csord__Services__r) FROM csord__Subscription__c where csord__Account__c=:accountId order by Billing_Account_Number__c desc nulls Last]);
                system.debug('Return Records $$$$$$$$'+SubSetController);            
                this.SubSetController.setpageNumber(1);               
                this.SubSetController.setPageSize(size);
                noOfRecords = SubSetController.getResultSize(); 
            }
            return SubSetController;
          }set;
     }
     
     //The following function is used for retrieving different picklist value from Action field
    public List<SelectOption> getActions( ){ 
        List<SelectOption> Actions= new List<SelectOption>();
        Actions.add(new SelectOption('Take Over','Take Over'));
        Actions.add(new SelectOption('Invoice Switch','Invoice Switch'));
        Actions.add(new SelectOption('Move','Move'));
        return Actions;
     }
     
     
     //Below logic is used for enable/disable of Target Account field based on Action field value
    public void getDisplayAccount( ){
        if(selectedActions!='Take Over'){
            AccountBool=false; 
        }
        else{
            AccountBool=true;
        }
    }
    
    //Following function implements wrapper logic 
    public List<wrapSubscription> getCurrentList( ){        
        updateSelectedSubscriptions();
        SubscriptionSetList = new List<wrapSubscription>();
        for (csord__Subscription__c vSubscription : (List<csord__Subscription__c >)SubSetController.getRecords( )){
            system.debug('vSubscription @@@@@@@@@ '+vSubscription);
            if(selectedSubscription.contains(vSubscription))
                SubscriptionSetList.add(new wrapSubscription(vSubscription,'true'));
            else
                SubscriptionSetList.add(new wrapSubscription(vSubscription));
                system.debug('SubscriptionSetList########'+SubscriptionSetList);
        }  
        fals=false;       
        return SubscriptionSetList;
    }
    
   //This method update the selected Subscriptions List in the wrapper Class
    public void updateSelectedSubscriptions( ){
        for(wrapSubscription cs: SubscriptionSetList){
            if(cs.selected)
                selectedSubscription.add(cs.vSub);
            else
            {
                if(selectedSubscription.contains(cs.vSub))
                selectedSubscription.remove(cs.vSub);
                
            }
            
        }
    }
    
    //This method adding the selected subscriptions to the list
    public void doSelectItem( ){        
        if(contextItem!=null)
            this.subids.add(this.contextItem);        
    }
    
    //This method remove the deselected subscriptions to the list
    public void doDeselectItem( ){      
        this.subids.remove(this.contextItem);        
    }
     
    //This method count the selected subscriptions
    public Integer getSelectedCount( ){       
        subids.clear();
        for(csord__Subscription__c acc: selectedSubscription){
            subids.add(acc.id);
        }
        return this.subids.size();       
    }
     
    //Below method implements the Next button logic for pagination
    public void doNext( ){       
        if(this.SubSetController.getHasNext())
            this.SubSetController.next();       
    }
    
    
    //Below method for the Previous button logic for pagination
     public void doPrevious( ){       
        if(this.SubSetController.getHasPrevious())
            this.SubSetController.previous();        
    }
     
    public Boolean getHasPrevious( ){       
        return this.SubSetController.getHasPrevious();        
    }
       
       
    //Below method implements the Next button logic for pagination   
    public Boolean getHasNext( ){      
        return this.SubSetController.getHasNext();        
    }
       
       
    //Following method returns the current page number in pagination logic  
    public Integer getPageNumber( ){       
        return this.SubSetController.getPageNumber();        
    }
       
       
    //Following function implements the total pages number  
    public Integer getTotalPages( ){       
        Decimal totalSize = this.SubSetController.getResultSize();
        Decimal pageSize = this.SubSetController.getPageSize();       
        Decimal pages = totalSize/pageSize;       
        return (Integer)pages.round(System.RoundingMode.CEILING);
    } 
       
    //Below method has logic for Cancel button used in pagination       
    public PageReference cancel( ){
        return new PageReference('/'+accountid);
    }       
      
      
    //Following function will perform the validations behind the Continue button& restrict an user to proceed to next page if any of the validation fails.Also invokes the method provided by CS Team.
    public pageReference Proceed( ){
        SysDate = System.today();
        accountId=ApexPages.currentPage().getParameters().get('id');
        if(vSub.csord__Account__c!= null){
            vAccount=[Select Name,TINA_Parent_Cust_Number__c,TfB_PB_CreditCheckExpiryDate__c,TfB_PB_CreditCheckResponse__c from Account where Id=:vSub.csord__Account__c];  
        }   
             //Venkat added the below logic
        vSourceAccount = [Select Name,TINA_Parent_Cust_Number__c,TfB_PB_CreditCheckExpiryDate__c,TfB_PB_CreditCheckResponse__c from Account where Id=:accountId];
        if(selectedActions =='Take Over'){
            if(vSub.csord__Account__c==null){ 
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Please select The Target Account');
                ApexPages.addMessage(myMsg);            
                return null;          
            }  
                   
                    
            if(vSub.csord__Account__c==accountId){ 
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The target account is the same as the current account, it has to be different.');
                ApexPages.addMessage(myMsg);            
                return null; 
            }
                       
            if(vAccount.TfB_PB_CreditCheckExpiryDate__c== null){                                                                     
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The credit check for this account is missing an expiry date, you need to do another credit check before entering the Takeover order.');
                ApexPages.addMessage(myMsg);            
                return null;                                 
            }
                                  
            if(vAccount.TfB_PB_CreditCheckExpiryDate__c <= SysDate){                                                              
                system.debug('Negative Else1----');                                      
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The Credit Check results have reached the expiry date. Please perform the Credit Check from the account before performing Order');
                ApexPages.addMessage(myMsg);            
                return null;                       
            } 
            
            if(vAccount.TfB_PB_CreditCheckResponse__c == 'Positive' || vAccount.TfB_PB_CreditCheckResponse__c == 'ERROR'){                        
                if(subids.size()>0){
                    pageReference pr = new PageReference('/apex/StatusPage');
                    return pr;
                }
                else{
                    ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You need to select atleast one subscription');
                    ApexPages.addMessage(myMsg);            
                    return null; 
                    }   
            }
            
            if(vAccount.TfB_PB_CreditCheckResponse__c == 'Negative-1'){                                                                          
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You cannot proceed with Order Intake since the customer has a negative credit check -1');
                ApexPages.addMessage(myMsg);            
                return null;
            }
            
            if(vAccount.TfB_PB_CreditCheckResponse__c == 'Negative-2'){
                system.debug('Negative----');
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You cannot proceed with Order Intake since the customer has a negative credit check -2');
                ApexPages.addMessage(myMsg);            
                return null;                             
            }
            
            if(vAccount.TfB_PB_CreditCheckResponse__c == null || vAccount.TfB_PB_CreditCheckResponse__c!='POSITIVE' ||vAccount.TfB_PB_CreditCheckResponse__c!='NEGATIVE-1'||vAccount.TfB_PB_CreditCheckResponse__c!='NEGATIVE-2'||vAccount.TfB_PB_CreditCheckResponse__c!='ERROR' ){
                system.debug('Negative Else----');
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The account does not have a positive credit check, you need to get an approval to continue with the order');
                ApexPages.addMessage(myMsg);            
                return null;                                           
            }                                  
            return null;                              
        }                                                                                
        else if(selectedActions =='Move'){
            if(vSourceAccount.TfB_PB_CreditCheckExpiryDate__c== null){                            
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The credit check for this account is missing an expiry date, you need to do another credit check before entering the Takeover order.');
                ApexPages.addMessage(myMsg);            
                return null;                                 
            }
            
            if(vSourceAccount.TfB_PB_CreditCheckExpiryDate__c <= SysDate){
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The Credit Check results have reached the expiry date. Please perform the Credit Check from the account before performing Order');
                ApexPages.addMessage(myMsg);            
                return null;                       
            }  
            
            if(vSourceAccount.TfB_PB_CreditCheckResponse__c == 'Positive'|| vSourceAccount.TfB_PB_CreditCheckResponse__c == 'ERROR'){                      
                if(subids.size()>0){
                    pageReference pr = new PageReference('/apex/StatusPage');
                    return pr;
                }
                else{
                    ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You need to select atleast one subscription');
                    ApexPages.addMessage(myMsg);            
                    return null; 
                }   
            }
            
            if(vSourceAccount.TfB_PB_CreditCheckResponse__c == 'Negative-1'){
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You cannot proceed with Order Intake since the customer has a negative credit check -1');
                ApexPages.addMessage(myMsg);            
                return null;
            }
            if(vSourceAccount.TfB_PB_CreditCheckResponse__c == 'Negative-2'){
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You cannot proceed with Order Intake since the customer has a negative credit check -2');
                ApexPages.addMessage(myMsg);            
                return null;                             
            }
            if(vSourceAccount.TfB_PB_CreditCheckResponse__c == null || vSourceAccount.TfB_PB_CreditCheckResponse__c!='POSITIVE' ||vSourceAccount.TfB_PB_CreditCheckResponse__c!='NEGATIVE-1'||vSourceAccount.TfB_PB_CreditCheckResponse__c!='NEGATIVE-2'||vSourceAccount.TfB_PB_CreditCheckResponse__c!='ERROR' ){
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'The account does not have a positive credit check, you need to get an approval to continue with the order');
                ApexPages.addMessage(myMsg);            
                return null;                                           
            } 
            return null; 
        }                                                                                                                                                                                                                                
            else{
                if(subids.size()>0){
                    pageReference pr = new PageReference('/apex/StatusPage');
                    return pr;
                }
                else{
                    ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'You need to select atleast one subscription');
                    ApexPages.addMessage(myMsg);            
                    return null; 
                }        
                 
            } 
    }        
    
    //Wrapper class logic      
    public class wrapSubscription{
        public csord__Subscription__c vSub {get; set;}        
        public Boolean selected {get; set;}
        //public List<csord__Service__c> vServ{get;set;}
        //public List<csord__Service__c> Serv{get;set;}
        public wrapSubscription( ){
            vSub = new csord__Subscription__c();
            selected = false;
        }
        public wrapSubscription(csord__Subscription__c a){
            vSub = a;
            selected = false;
        }
        public wrapSubscription(csord__Subscription__c c,string s){
            vSub=c;
            selected=true;
        }       
        
    }
}

@isTest(seeAlldata=true)
public class TfB_PB_TestAccountActionsWrapper
{
    public static testMethod void myUnitTest() 
    { 
        PageReference pg = Page.TfB_PB_AccountActionsVf;
        Test.setCurrentPage(pg); 
        Account SourceAcc = new Account(Name='Test1',C_fe_Customer_Number__c='6548681',TfB_PB_CreditCheckResponse__c='Positive');
        insert SourceAcc;   
        csord__Order_Request__c vOrderReq = new csord__Order_Request__c();
        vOrderReq.Name='Test Order';
        vOrderReq.csord__Module_Name__c='TestModule';
        vOrderReq.csord__Module_Version__c='TestVersion';
        vOrderReq.TfB_PB_Account__c=SourceAcc.Id;
        insert vOrderReq;
    
        csord__Subscription__c  objCS = new csord__Subscription__c (csord__Account__c = SourceAcc.Id,csord__Order_Request__c=vOrderReq.Id,csord__Identification__c='abc',Name= 'test');
        insert objCS;
    
        TfB_PB_AccountActionsWrapper objActWap = new TfB_PB_AccountActionsWrapper();
        ApexPages.currentPage().getParameters().put('id',SourceAcc.Id);
        objActWap.selectedActions='Move';
        objActWap.Proceed();
        objActWap.getActions();
        objActWap.getDisplayAccount();
        objActWap.getCurrentList();
        objActWap.updateSelectedSubscriptions();
        objActWap.doSelectItem();
        objActWap.doDeselectItem();
        objActWap.getSelectedCount();
        objActWap.doNext();
        objActWap.doPrevious();
        objActWap.getHasPrevious();
        objActWap.getHasNext();
        objActWap.cancel();
        objActWap.getTotalPages();
        objActWap.getPageNumber();
        
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper = new TfB_PB_AccountActionsWrapper.wrapSubscription(); 
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper1 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS);
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper2 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS,'True');
    }
    public static testMethod void myUnitTest1() 
    { 
        PageReference pg = Page.TfB_PB_AccountActionsVf;
        Test.setCurrentPage(pg); 
        Account SourceAcc = new Account(Name='Test1',C_fe_Customer_Number__c='6590681',TfB_PB_CreditCheckExpiryDate__c=system.today()-1);
        insert SourceAcc;   
        csord__Order_Request__c vOrderReq = new csord__Order_Request__c();
        vOrderReq.Name='Test Order';
        vOrderReq.csord__Module_Name__c='TestModule';
        vOrderReq.csord__Module_Version__c='TestVersion';
        vOrderReq.TfB_PB_Account__c=SourceAcc.Id;
        insert vOrderReq;
    
        csord__Subscription__c  objCS = new csord__Subscription__c (csord__Account__c = SourceAcc.Id,csord__Order_Request__c=vOrderReq.Id,csord__Identification__c='abc',Name= 'test');
        insert objCS;
    
        TfB_PB_AccountActionsWrapper objActWap = new TfB_PB_AccountActionsWrapper();
        ApexPages.currentPage().getParameters().put('id',SourceAcc.Id);
        objActWap.selectedActions='Move';
        objActWap.Proceed();
               
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper = new TfB_PB_AccountActionsWrapper.wrapSubscription(); 
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper1 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS);
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper2 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS,'True');
    }
    public static testMethod void myUnitTest2() 
    { 
        PageReference pg = Page.TfB_PB_AccountActionsVf;
        Test.setCurrentPage(pg); 
        Account SourceAcc = new Account(Name='Test2',C_fe_Customer_Number__c='738745936',TfB_PB_CreditCheckResponse__c='Negative-1');
        insert SourceAcc;   
        csord__Order_Request__c vOrderReq = new csord__Order_Request__c();
        vOrderReq.Name='Test Order';
        vOrderReq.csord__Module_Name__c='TestModule';
        vOrderReq.csord__Module_Version__c='TestVersion';
        vOrderReq.TfB_PB_Account__c=SourceAcc.Id;
        insert vOrderReq;
    
        csord__Subscription__c  objCS = new csord__Subscription__c (csord__Account__c = SourceAcc.Id,csord__Order_Request__c=vOrderReq.Id,csord__Identification__c='abc',Name= 'test');
        insert objCS;
    
        TfB_PB_AccountActionsWrapper objActWap = new TfB_PB_AccountActionsWrapper();
        ApexPages.currentPage().getParameters().put('id',SourceAcc.Id);
        objActWap.selectedActions='Move';
        objActWap.Proceed();
               
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper = new TfB_PB_AccountActionsWrapper.wrapSubscription(); 
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper1 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS);
         TfB_PB_AccountActionsWrapper.wrapSubscription AccWrapper2 = new TfB_PB_AccountActionsWrapper.wrapSubscription(objCS,'True');
    }
    
    
}
Whenver i am covering one if case lets say Suppose i am covering if condition for "Positive" for Take Over scenario(refer above code),then Negative-1 or Negative-2 code become uncovered and vice cersa.I am not able to increase after 605 after so many try.
Please help me on this.

Mnay thanks in advance.