• Rachid El Kaddouri
  • NEWBIE
  • 15 Points
  • Member since 2014

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 4
    Questions
  • 7
    Replies
Hi everyone,

I'm a little bit stuck at a point to prepopulate a Name from the Contact Object into a Custom Object. Situation: I have a VF page that I use to create new records, I replaced the SF standard NEW button with a custom VF page. In this VF Page there is a LookUp to the Contacts Object but I don't want Users to select the contact from the LookUp. Instead I want to auto-populate the User Name in the Contact field.
I searched for answers but I couldn't find anything. Hope somebody can help me! Below you can find the code snippet of the controller:
public class CreateMultipleVGAvailability{
    public String VGAvailabilityLink{
      get{
             String VGAvailabilityLink = URL.getSalesforceBaseUrl().toExternalForm() + '/a3R/o' ;
             return VGAvailabilityLink;
 }
 }
public VG_Availability__c MasterAvailability;
public CreateMultipleVGAvailability(ApexPages.StandardController stdController) {
this.MasterAvailability = (VG_Availability__c)stdController.getRecord();       
 }
public void CreateVGAvailabilities(){

        List<VG_Availability__c> NewAvailabilities = new list<VG_Availability__c>();
        String DifferentDates = Apexpages.currentPage().getParameters().get('dates');
        String Message;
        String ContactDateCombination;
         
        List<String> Dates = DifferentDates.split(', ');
                 for(String D: Dates){
            
            Date myDate = date.parse(D);
            
        VG_Availability__c NewRecord = new VG_Availability__c();
        NewRecord.contact__c = MasterAvailability.contact__c;
        NewRecord.Is_Available__c = MasterAvailability.Is_Available__c;
        NewRecord.Comments__c = MasterAvailability.Comments__c;        
        NewRecord.Date__c = myDate;
        ContactDateCombination = string.valueof(NewRecord.contact__c) + string.valueof(myDate);
            
AggregateResult[] ContactDateCombinationAmount = [SELECT count(Id) Amount FROM VG_Availability__c WHERE ContactDateCombination__c =: ContactDateCombination];
            
            if( ContactDateCombinationAmount[0].get('Amount') != 1){
                NewAvailabilities.add(Newrecord);
            }else{
                if(Message == Null){
                    Message = myDate + ', ';               
                }else{
                    Message = Message + myDate + ', '; 
                }
            
            }  
    }
    if(Message != Null){
 
        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Error Message.');
        ApexPages.addMessage(myMsg); 
    }
 
    Insert(NewAvailabilities);
    }

}


Hi,

I'm stuck at this one. I'm trying to fetch fields from a related list but this ain't working for a custom object. This is my situation:
The Object Account has a related list that links to a child Custom Object named Account Locations. I want to fetch fields from this related list so I can show them in Google Maps as markers. This works for Contacts but for my custom object Account Locations this ain't working.
This is the controller:
public class AccountLocations {
    public Account AccountInformation {get; set;}

    public List<Account_Location__c> AllAccounts  {get; set;}
    
    public AccountLocations(ApexPages.StandardController controller) {

        AccountInformation = (Account)controller.getRecord();
    }
 
    public void fetchtAllRelatedAccountLocations(){

    AllAccounts =
            [
                SELECT Id, Location_Name__c, Location_Street__c, Location_Postal_Code__c, Location_City__c, Location_Country__c
                FROM Account_Location__c
                WHERE Id = :AccountInformation.Id
            ];
    }
}

Hope someone has a solution or idea for this. 

Kind regards!
Hello,

I'm having this problem that I can't solve. I tried everything but I can't find a solution. I hope someone can help me out here. 
Problem description:
I'm getting this error: Too many query rows: 50001. This is because the functionality will insert up to 50000 records.
The functionality works fine but Salesforce gives me this error because Salesforce thinks its wrong.
How can i prevent this error? Some sources told me that batch apex should work but I didn't succeed in implementing this. Didn't really understood how that works.

Hope someone can help me.

Below you can find the full code:
public class Create_Project_SO {

       string ProjectID = ApexPages.currentPage().getParameters().get('id');
       
       list<PBSI__PBSI_Sales_Order_Line__c> NewSOLines = new List<PBSI__PBSI_Sales_Order_Line__c>();    
       
       list<PBSI__PBSI_Sales_Order__c> NewSOs = new List<PBSI__PBSI_Sales_Order__c>();
       
       integer Amount_DifferentItems = 0;
       
       list<integer> Amount_ProjectItem = new list<integer>();     
             
       list<string> Id_ProjectItem = new list<string>();        
        
       public void Fill_Item_Ids(){
              Id_ProjectItem = new list<string>();
              
              list<TOA_fs_Project__c> ProjectLine = [SELECT id, Project_Item_ID_1__c, Project_Item_ID_2__c, Project_Item_ID_3__c, Project_Item_ID_4__c, 
              Project_Item_ID_5__c, Project_Item_ID_6__c, Project_Item_ID_7__c, Project_Item_ID_8__c, Project_Item_ID_9__c, Project_Item_ID_10__c
              FROM TOA_fs_Project__c WHERE Id =:ProjectID];
                
              for( TOA_fs_Project__c a: ProjectLine){      
                  
                  Id_ProjectItem.add(a.Project_Item_ID_1__c);
                  Id_ProjectItem.add(a.Project_Item_ID_2__c);
                  Id_ProjectItem.add(a.Project_Item_ID_3__c); 
                  Id_ProjectItem.add(a.Project_Item_ID_4__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_5__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_6__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_7__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_8__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_9__c);
                  Id_ProjectItem.add(a.Project_Item_ID_10__c);                                           
              }                
 
       }    
        
       public void Check_Amount_Items(){ 
            Amount_DifferentItems = 0;
            
            if(Id_ProjectItem[0]!= null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[1] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }   
            if(Id_ProjectItem[2] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[3] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[4] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[5] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }  
            if(Id_ProjectItem[6] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[7] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[8] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[9] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }        
       } 
       
       public String ProjectLink{
          get{          
              String ProjectLink = URL.getSalesforceBaseUrl().toExternalForm() +'/'+ ProjectID;
          
              return ProjectLink;
          }    
       }
       
  public list<AggregateResult> GroupBy_Project_Locations{
           get{
               list<AggregateResult> OneOffPlanningLines = [SELECT SUM(Aantal_Item_1__c) Totaal_Item1, SUM(Aantal_Item_2__c) Totaal_Item2, SUM(Aantal_Item_3__c) Totaal_Item3, 
               SUM(Aantal_Item_4__c) Totaal_Item4, SUM(Aantal_Item_5__c) Totaal_Item5, SUM(Aantal_Item_6__c) Totaal_Item6, SUM(Aantal_Item_7__c) Totaal_Item7, SUM(Aantal_Item_8__c) Totaal_Item8,
         SUM(Aantal_Item_9__c) Totaal_Item9, SUM(Aantal_Item_10__c) Totaal_Item10, Account_Location_ID__c FROM VG_One_Off_Planning__c WHERE Project__c =: ProjectID AND Project_Location__c != null AND Totale_Aantallen_Items__c != 0 GROUP BY Account_Location_ID__c];
              
               return OneOffPlanningLines;
           }  

       } 

       public list<AggregateResult> Total_Items{
           get{
               list<AggregateResult> OneOffPlanningLines = [SELECT SUM(Aantal_Item_1__c) Totaal_Item1, SUM(Aantal_Item_2__c) Totaal_Item2, SUM(Aantal_Item_3__c) Totaal_Item3, 
               SUM(Aantal_Item_4__c) Totaal_Item4, SUM(Aantal_Item_5__c) Totaal_Item5, SUM(Aantal_Item_6__c) Totaal_Item6, SUM(Aantal_Item_7__c) Totaal_Item7, SUM(Aantal_Item_8__c) Totaal_Item8,
               SUM(Aantal_Item_9__c) Totaal_Item9, SUM(Aantal_Item_10__c) Totaal_Item10 FROM VG_One_Off_Planning__c WHERE Project__c =: ProjectID GROUP BY Project__c];
              
               return OneOffPlanningLines;
           }  

       }        

       Public string Get_WO(){
               TOA_fs_Project__c Project = [SELECT VG_Work_Order__c FROM TOA_fs_Project__c WHERE id =: ProjectID];
               string WO_ID = string.valueof(Project.VG_Work_Order__c);
               Return WO_ID;
       }
       
       Public string Get_Main_Acc(){
                TOA_fs_Project__c Project = [SELECT VG_Work_Order__c FROM TOA_fs_Project__c WHERE id =: ProjectID];
                string WO_ID = string.valueof(Project.VG_Work_Order__c);
               
                VG_Work_Order__c VGWO = [SELECT Sales_Order__c FROM VG_Work_Order__c WHERE id =: WO_ID];
                string SO_ID = string.valueof(VGWO.Sales_Order__c);
                
                VG_Sales_Order__c VGSO = [SELECT Account__c FROM VG_Sales_Order__c WHERE id =: SO_ID];
                string Acc_ID = string.valueof(VGSO.Account__c);
                
                return Acc_ID;
       }
       
       Public string Get_Account(string ProjectLocationID){
           
               TOA_fs_Project_Location__c ProjectLocation = [SELECT Account_Location__c FROM TOA_fs_Project_Location__c WHERE id =: ProjectLocationID];
               string AL_ID = string.valueof(ProjectLocation.Account_Location__c);
               Account_Location__c AccountLocation = [SELECT Main_Account__c FROM Account_Location__c WHERE id =: AL_ID];
               string Account_ID = string.valueof(AccountLocation.Main_Account__c);
               return Account_ID;            
       } 
       
       Public string Get_AL(string ProjectLocationID){

               TOA_fs_Project_Location__c ProjectLocation = [SELECT Account_Location__c FROM TOA_fs_Project_Location__c WHERE id =: ProjectLocationID];
               string AL_ID = string.valueof(ProjectLocation.Account_Location__c);
               return AL_ID;
       }  
                         
        public void CreateSOLocations(){

           Fill_Item_Ids();  

           Check_Amount_Items();         

           String VGWO_ID = Get_WO();
           String Customer_Account = Get_Main_Acc();  
           
           for(AggregateResult a: GroupBy_Project_Locations){
                            
               PBSI__PBSI_Sales_Order__c NewRecord = new PBSI__PBSI_Sales_Order__c();
               id myid = string.valueof(a.get('Account_Location_ID__c'));
               /// system.debug('Blabla  ' + myid);
               NewRecord.Account_Location__c = myid;
               NewRecord.PBSI__Customer__c = Customer_Account;
               NewRecord.VG_Work_Order__c = VGWO_ID;
               NewRecord.Project__c = ProjectID;                         

               NewSOs.add(NewRecord);
               
               }
               Insert NewSOs;
               
               integer i = 0;
               integer batchlimit = 0;
               
               for(AggregateResult a: GroupBy_Project_Locations){
               
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item1')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item2')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item3')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item4')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item5')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item6')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item7')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item8')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item9')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item10')));
                
               for(Integer c = 0; c < Amount_DifferentItems ;c++ ){
                          
                   PBSI__PBSI_Sales_Order_Line__c NewSOLine = new PBSI__PBSI_Sales_Order_Line__c();
                   NewSOLine.PBSI__Sales_Order__c = NewSOs[i].id;
                   NewSOLine.PBSI__Item__c = Id_ProjectItem[c];
                   NewSOLine.PBSI__Quantity_Needed__c = Amount_ProjectItem[c];
                   
                   if(NewSOLine.PBSI__Quantity_Needed__c != NULL){
                       NewSOLines.add(NewSOLine);
                   }

                   }
           i++;
           batchlimit++;
           Amount_ProjectItem.clear();
           
           /*if(batchlimit == 80){
               batchlimit = 0;
               Insert NewSOLines;
               NewSOLines.clear();
           }*/
                     
                      
           }
           
           Insert NewSOLines;       

        }  
 
Public list<CreateSo_ItemObject> Shipment_Item_Overview{
        get{ 
                 
            Fill_Item_Ids();  
            Check_Amount_Items();            
           
                                      
           for(AggregateResult a: Total_Items){
           
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item1')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item2')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item3')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item4')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item5')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item6')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item7')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item8')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item9')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item10')));
               
           }
           
            list<CreateSo_ItemObject> ProjectItems = new List<CreateSo_ItemObject>();  
                    
            for(integer i = 0; i < Amount_DifferentItems ;i++ ){
 
                if(Id_ProjectItem[i] != NULL){
                    PBSI__PBSI_Item__c CurrentItem = [SELECT PBSI__Minimum_On_Hand__c, PBSI__Available_to_Promise__c,  Name, PBSI__description__c FROM PBSI__PBSI_Item__c WHERE id =: Id_ProjectItem[i]];
       
                    CreateSo_ItemObject item = new CreateSo_ItemObject();
                    item.Name = CurrentItem.name;
                    item.Description = CurrentItem.PBSI__description__c;
                    item.Quantity = integer.valueof(CurrentItem.PBSI__Available_to_Promise__c);
                    item.QuantityOrdered = Amount_ProjectItem[i];
                    item.QuantityLeft = integer.valueof(CurrentItem.PBSI__Available_to_Promise__c) - Amount_ProjectItem[i];
                    if(item.QuantityLeft >= 0){
                        if(CurrentItem.PBSI__Minimum_On_Hand__c != null){
                            if(item.QuantityLeft < CurrentItem.PBSI__Minimum_On_Hand__c){
                                item.LineColor = 'Orange';
                            }else{
                                item.LineColor = 'Green';
                            }
                        }else{
                            item.LineColor = 'Green';
                        }
                        
                    }else{
                        item.LineColor = 'Red';
                    } 
                    ProjectItems.add(item);             
                }               
           }       
                  
           Amount_ProjectItem.clear();
           Return ProjectItems;   
           }  
       }  
}

I hope someone can help me out because I'm stuck at this point.

Kind regards

Hi,

I'm trying to write a trigger that will give me the URL to an attachment on a custom object. 
I made a formula text field on a custom object with this formula:

HYPERLINK('/servlet/servlet.FileDownload?file=' + AttachmentId__c, 'View', '_blank')

But the second step is difficult and I can't seem to get it to work. I want a link of the attachment to display. I want to create a after insert trigger but I can't get it to work.. I hope someone knows a solution for this..

Kind regards

Hi everyone,

I'm a little bit stuck at a point to prepopulate a Name from the Contact Object into a Custom Object. Situation: I have a VF page that I use to create new records, I replaced the SF standard NEW button with a custom VF page. In this VF Page there is a LookUp to the Contacts Object but I don't want Users to select the contact from the LookUp. Instead I want to auto-populate the User Name in the Contact field.
I searched for answers but I couldn't find anything. Hope somebody can help me! Below you can find the code snippet of the controller:
public class CreateMultipleVGAvailability{
    public String VGAvailabilityLink{
      get{
             String VGAvailabilityLink = URL.getSalesforceBaseUrl().toExternalForm() + '/a3R/o' ;
             return VGAvailabilityLink;
 }
 }
public VG_Availability__c MasterAvailability;
public CreateMultipleVGAvailability(ApexPages.StandardController stdController) {
this.MasterAvailability = (VG_Availability__c)stdController.getRecord();       
 }
public void CreateVGAvailabilities(){

        List<VG_Availability__c> NewAvailabilities = new list<VG_Availability__c>();
        String DifferentDates = Apexpages.currentPage().getParameters().get('dates');
        String Message;
        String ContactDateCombination;
         
        List<String> Dates = DifferentDates.split(', ');
                 for(String D: Dates){
            
            Date myDate = date.parse(D);
            
        VG_Availability__c NewRecord = new VG_Availability__c();
        NewRecord.contact__c = MasterAvailability.contact__c;
        NewRecord.Is_Available__c = MasterAvailability.Is_Available__c;
        NewRecord.Comments__c = MasterAvailability.Comments__c;        
        NewRecord.Date__c = myDate;
        ContactDateCombination = string.valueof(NewRecord.contact__c) + string.valueof(myDate);
            
AggregateResult[] ContactDateCombinationAmount = [SELECT count(Id) Amount FROM VG_Availability__c WHERE ContactDateCombination__c =: ContactDateCombination];
            
            if( ContactDateCombinationAmount[0].get('Amount') != 1){
                NewAvailabilities.add(Newrecord);
            }else{
                if(Message == Null){
                    Message = myDate + ', ';               
                }else{
                    Message = Message + myDate + ', '; 
                }
            
            }  
    }
    if(Message != Null){
 
        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Error Message.');
        ApexPages.addMessage(myMsg); 
    }
 
    Insert(NewAvailabilities);
    }

}


Hi,

I'm stuck at this one. I'm trying to fetch fields from a related list but this ain't working for a custom object. This is my situation:
The Object Account has a related list that links to a child Custom Object named Account Locations. I want to fetch fields from this related list so I can show them in Google Maps as markers. This works for Contacts but for my custom object Account Locations this ain't working.
This is the controller:
public class AccountLocations {
    public Account AccountInformation {get; set;}

    public List<Account_Location__c> AllAccounts  {get; set;}
    
    public AccountLocations(ApexPages.StandardController controller) {

        AccountInformation = (Account)controller.getRecord();
    }
 
    public void fetchtAllRelatedAccountLocations(){

    AllAccounts =
            [
                SELECT Id, Location_Name__c, Location_Street__c, Location_Postal_Code__c, Location_City__c, Location_Country__c
                FROM Account_Location__c
                WHERE Id = :AccountInformation.Id
            ];
    }
}

Hope someone has a solution or idea for this. 

Kind regards!
Hello,

I'm having this problem that I can't solve. I tried everything but I can't find a solution. I hope someone can help me out here. 
Problem description:
I'm getting this error: Too many query rows: 50001. This is because the functionality will insert up to 50000 records.
The functionality works fine but Salesforce gives me this error because Salesforce thinks its wrong.
How can i prevent this error? Some sources told me that batch apex should work but I didn't succeed in implementing this. Didn't really understood how that works.

Hope someone can help me.

Below you can find the full code:
public class Create_Project_SO {

       string ProjectID = ApexPages.currentPage().getParameters().get('id');
       
       list<PBSI__PBSI_Sales_Order_Line__c> NewSOLines = new List<PBSI__PBSI_Sales_Order_Line__c>();    
       
       list<PBSI__PBSI_Sales_Order__c> NewSOs = new List<PBSI__PBSI_Sales_Order__c>();
       
       integer Amount_DifferentItems = 0;
       
       list<integer> Amount_ProjectItem = new list<integer>();     
             
       list<string> Id_ProjectItem = new list<string>();        
        
       public void Fill_Item_Ids(){
              Id_ProjectItem = new list<string>();
              
              list<TOA_fs_Project__c> ProjectLine = [SELECT id, Project_Item_ID_1__c, Project_Item_ID_2__c, Project_Item_ID_3__c, Project_Item_ID_4__c, 
              Project_Item_ID_5__c, Project_Item_ID_6__c, Project_Item_ID_7__c, Project_Item_ID_8__c, Project_Item_ID_9__c, Project_Item_ID_10__c
              FROM TOA_fs_Project__c WHERE Id =:ProjectID];
                
              for( TOA_fs_Project__c a: ProjectLine){      
                  
                  Id_ProjectItem.add(a.Project_Item_ID_1__c);
                  Id_ProjectItem.add(a.Project_Item_ID_2__c);
                  Id_ProjectItem.add(a.Project_Item_ID_3__c); 
                  Id_ProjectItem.add(a.Project_Item_ID_4__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_5__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_6__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_7__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_8__c);      
                  Id_ProjectItem.add(a.Project_Item_ID_9__c);
                  Id_ProjectItem.add(a.Project_Item_ID_10__c);                                           
              }                
 
       }    
        
       public void Check_Amount_Items(){ 
            Amount_DifferentItems = 0;
            
            if(Id_ProjectItem[0]!= null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[1] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }   
            if(Id_ProjectItem[2] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[3] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[4] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[5] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }  
            if(Id_ProjectItem[6] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[7] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }
            if(Id_ProjectItem[8] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            } 
            if(Id_ProjectItem[9] != null){
                 Amount_DifferentItems = Amount_DifferentItems + 1;
            }        
       } 
       
       public String ProjectLink{
          get{          
              String ProjectLink = URL.getSalesforceBaseUrl().toExternalForm() +'/'+ ProjectID;
          
              return ProjectLink;
          }    
       }
       
  public list<AggregateResult> GroupBy_Project_Locations{
           get{
               list<AggregateResult> OneOffPlanningLines = [SELECT SUM(Aantal_Item_1__c) Totaal_Item1, SUM(Aantal_Item_2__c) Totaal_Item2, SUM(Aantal_Item_3__c) Totaal_Item3, 
               SUM(Aantal_Item_4__c) Totaal_Item4, SUM(Aantal_Item_5__c) Totaal_Item5, SUM(Aantal_Item_6__c) Totaal_Item6, SUM(Aantal_Item_7__c) Totaal_Item7, SUM(Aantal_Item_8__c) Totaal_Item8,
         SUM(Aantal_Item_9__c) Totaal_Item9, SUM(Aantal_Item_10__c) Totaal_Item10, Account_Location_ID__c FROM VG_One_Off_Planning__c WHERE Project__c =: ProjectID AND Project_Location__c != null AND Totale_Aantallen_Items__c != 0 GROUP BY Account_Location_ID__c];
              
               return OneOffPlanningLines;
           }  

       } 

       public list<AggregateResult> Total_Items{
           get{
               list<AggregateResult> OneOffPlanningLines = [SELECT SUM(Aantal_Item_1__c) Totaal_Item1, SUM(Aantal_Item_2__c) Totaal_Item2, SUM(Aantal_Item_3__c) Totaal_Item3, 
               SUM(Aantal_Item_4__c) Totaal_Item4, SUM(Aantal_Item_5__c) Totaal_Item5, SUM(Aantal_Item_6__c) Totaal_Item6, SUM(Aantal_Item_7__c) Totaal_Item7, SUM(Aantal_Item_8__c) Totaal_Item8,
               SUM(Aantal_Item_9__c) Totaal_Item9, SUM(Aantal_Item_10__c) Totaal_Item10 FROM VG_One_Off_Planning__c WHERE Project__c =: ProjectID GROUP BY Project__c];
              
               return OneOffPlanningLines;
           }  

       }        

       Public string Get_WO(){
               TOA_fs_Project__c Project = [SELECT VG_Work_Order__c FROM TOA_fs_Project__c WHERE id =: ProjectID];
               string WO_ID = string.valueof(Project.VG_Work_Order__c);
               Return WO_ID;
       }
       
       Public string Get_Main_Acc(){
                TOA_fs_Project__c Project = [SELECT VG_Work_Order__c FROM TOA_fs_Project__c WHERE id =: ProjectID];
                string WO_ID = string.valueof(Project.VG_Work_Order__c);
               
                VG_Work_Order__c VGWO = [SELECT Sales_Order__c FROM VG_Work_Order__c WHERE id =: WO_ID];
                string SO_ID = string.valueof(VGWO.Sales_Order__c);
                
                VG_Sales_Order__c VGSO = [SELECT Account__c FROM VG_Sales_Order__c WHERE id =: SO_ID];
                string Acc_ID = string.valueof(VGSO.Account__c);
                
                return Acc_ID;
       }
       
       Public string Get_Account(string ProjectLocationID){
           
               TOA_fs_Project_Location__c ProjectLocation = [SELECT Account_Location__c FROM TOA_fs_Project_Location__c WHERE id =: ProjectLocationID];
               string AL_ID = string.valueof(ProjectLocation.Account_Location__c);
               Account_Location__c AccountLocation = [SELECT Main_Account__c FROM Account_Location__c WHERE id =: AL_ID];
               string Account_ID = string.valueof(AccountLocation.Main_Account__c);
               return Account_ID;            
       } 
       
       Public string Get_AL(string ProjectLocationID){

               TOA_fs_Project_Location__c ProjectLocation = [SELECT Account_Location__c FROM TOA_fs_Project_Location__c WHERE id =: ProjectLocationID];
               string AL_ID = string.valueof(ProjectLocation.Account_Location__c);
               return AL_ID;
       }  
                         
        public void CreateSOLocations(){

           Fill_Item_Ids();  

           Check_Amount_Items();         

           String VGWO_ID = Get_WO();
           String Customer_Account = Get_Main_Acc();  
           
           for(AggregateResult a: GroupBy_Project_Locations){
                            
               PBSI__PBSI_Sales_Order__c NewRecord = new PBSI__PBSI_Sales_Order__c();
               id myid = string.valueof(a.get('Account_Location_ID__c'));
               /// system.debug('Blabla  ' + myid);
               NewRecord.Account_Location__c = myid;
               NewRecord.PBSI__Customer__c = Customer_Account;
               NewRecord.VG_Work_Order__c = VGWO_ID;
               NewRecord.Project__c = ProjectID;                         

               NewSOs.add(NewRecord);
               
               }
               Insert NewSOs;
               
               integer i = 0;
               integer batchlimit = 0;
               
               for(AggregateResult a: GroupBy_Project_Locations){
               
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item1')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item2')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item3')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item4')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item5')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item6')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item7')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item8')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item9')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item10')));
                
               for(Integer c = 0; c < Amount_DifferentItems ;c++ ){
                          
                   PBSI__PBSI_Sales_Order_Line__c NewSOLine = new PBSI__PBSI_Sales_Order_Line__c();
                   NewSOLine.PBSI__Sales_Order__c = NewSOs[i].id;
                   NewSOLine.PBSI__Item__c = Id_ProjectItem[c];
                   NewSOLine.PBSI__Quantity_Needed__c = Amount_ProjectItem[c];
                   
                   if(NewSOLine.PBSI__Quantity_Needed__c != NULL){
                       NewSOLines.add(NewSOLine);
                   }

                   }
           i++;
           batchlimit++;
           Amount_ProjectItem.clear();
           
           /*if(batchlimit == 80){
               batchlimit = 0;
               Insert NewSOLines;
               NewSOLines.clear();
           }*/
                     
                      
           }
           
           Insert NewSOLines;       

        }  
 
Public list<CreateSo_ItemObject> Shipment_Item_Overview{
        get{ 
                 
            Fill_Item_Ids();  
            Check_Amount_Items();            
           
                                      
           for(AggregateResult a: Total_Items){
           
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item1')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item2')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item3')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item4')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item5')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item6')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item7')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item8')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item9')));
               Amount_ProjectItem.add(integer.valueof(a.get('Totaal_Item10')));
               
           }
           
            list<CreateSo_ItemObject> ProjectItems = new List<CreateSo_ItemObject>();  
                    
            for(integer i = 0; i < Amount_DifferentItems ;i++ ){
 
                if(Id_ProjectItem[i] != NULL){
                    PBSI__PBSI_Item__c CurrentItem = [SELECT PBSI__Minimum_On_Hand__c, PBSI__Available_to_Promise__c,  Name, PBSI__description__c FROM PBSI__PBSI_Item__c WHERE id =: Id_ProjectItem[i]];
       
                    CreateSo_ItemObject item = new CreateSo_ItemObject();
                    item.Name = CurrentItem.name;
                    item.Description = CurrentItem.PBSI__description__c;
                    item.Quantity = integer.valueof(CurrentItem.PBSI__Available_to_Promise__c);
                    item.QuantityOrdered = Amount_ProjectItem[i];
                    item.QuantityLeft = integer.valueof(CurrentItem.PBSI__Available_to_Promise__c) - Amount_ProjectItem[i];
                    if(item.QuantityLeft >= 0){
                        if(CurrentItem.PBSI__Minimum_On_Hand__c != null){
                            if(item.QuantityLeft < CurrentItem.PBSI__Minimum_On_Hand__c){
                                item.LineColor = 'Orange';
                            }else{
                                item.LineColor = 'Green';
                            }
                        }else{
                            item.LineColor = 'Green';
                        }
                        
                    }else{
                        item.LineColor = 'Red';
                    } 
                    ProjectItems.add(item);             
                }               
           }       
                  
           Amount_ProjectItem.clear();
           Return ProjectItems;   
           }  
       }  
}

I hope someone can help me out because I'm stuck at this point.

Kind regards

Hi,

I'm trying to write a trigger that will give me the URL to an attachment on a custom object. 
I made a formula text field on a custom object with this formula:

HYPERLINK('/servlet/servlet.FileDownload?file=' + AttachmentId__c, 'View', '_blank')

But the second step is difficult and I can't seem to get it to work. I want a link of the attachment to display. I want to create a after insert trigger but I can't get it to work.. I hope someone knows a solution for this..

Kind regards

Hi,

 

I have a custom object which has attachments.

I want to take the recent attachment and copy that link on to my record (custom field).

How can i do that??