[SalesForce] How to display Account visualforce page on Case layout

I want to display on my case layout other open Cases related to Account from case.
I have got a VFP to display them on my Account page layout but I can't display them on my Case layout.
Any ideas what to do? I could get those records without VF with trigger on my Cases but i try to find different way to do that.

VFP code:

<apex:page standardController="Account" extensions="contrller">

  <apex:form >
    <apex:pageblock >
       <apex:pageBlockTable value="{!relatedCases}" var="val">
         <apex:facet name="header"><b>Open Customer Service Cases</b></apex:facet>       
         <apex:column value="{!val.CaseNumber}"/>         
         <apex:column value="{!val.Status}"/>
         <apex:column value="{!val.RecordTypeId}"/>

       </apex:pageBlockTable> 
    </apex:pageblock>
  </apex:form>
</apex:page>

with controller:

public with sharing class contrller {
Public id Current_Acc_Id;

    public contrller(ApexPages.StandardController controller) {
    Current_Acc_Id = controller.getRecord().id;
    }

    public List<Case> getrelatedCases(){
        List <case> conList = New List<Case>();
        for(Account acc:[select (select status, CaseNumber, RecordTypeId from cases WHERE RecordTypeId = '01220000000QawC' AND Status != 'Closed') from account where id=:Current_Acc_Id]){
           for(case con:acc.cases)
               conList.add(con); 
        }
        return conList;
    }
}

Best Answer

You can display the Cases related to same account using Case as standard controller.

VFP code:

<apex:page standardController="Case" extensions="CaseExtensionController">
   <apex:form >
    <apex:pageblock >
       <apex:pageBlockTable value="{!relatedCases}" var="val">
         <apex:facet name="header"><b>Open Customer Service Cases {!Case.AccountId}</b></apex:facet>       
         <apex:column value="{!val.CaseNumber}"/>         
         <apex:column value="{!val.Status}"/>
         <apex:column value="{!val.RecordTypeId}"/>

       </apex:pageBlockTable> 
    </apex:pageblock>
  </apex:form>
</apex:page>

Controller:

public with sharing class CaseExtensionController{
    public Id Current_Acc_Id {get;set;}

    public contrller(ApexPages.StandardController controller) {
        Case caseObject = (Case)controller.getRecord();
        Current_Acc_Id = caseObject.AccountId;
    }

    public List<Case> getrelatedCases(){
        List <case> conList = new List<Case>();
        for(Case relatedCase: [SELECT Status, CaseNumber, RecordTypeId FROM Case WHERE RecordTypeId = '01220000000QawC' AND Status != 'Closed' AND AccountId =:Current_Acc_Id]){
            conList.add(relatedCase); 
        }
        return conList;
    }
}

Add this Visual force page in the case layout.

Related Topic