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
AbAb 

Validation Rule for Opportunity stages

Hello,

In an opportunity, I have some record types "RA", "RB", "RC".
And there are stages 1,2,3,4,5

Stage |Probability in %
1 5 %
2 25 %
3 40 %
4 100 %
5 100 %

Right now, user is able to change the stage to 4 or 5 from 3,
But i want that user should go stage "4" before going through stage '5'.

What validation rule could i implement

Thank you for suggestion !
Best Answer chosen by Ab
yeshabyeshab
AND(

(RecordType.Name  = 'RA'),

AND(

AND(ISPICKVAL(StageName, '4'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6')) ) 

||
AND(ISPICKVAL(StageName, '5'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '4')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6'))  

||
AND(ISPICKVAL(StageName, '6'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '4')) 
)

All Answers

Vijay NagarathinamVijay Nagarathinam
Hi Sandrine,

Use the below validation rule,
 
AND (ISPICKVAL(Stage__c, '2'), NOT(ISPICKVAL(PRIORVALUE(Stage__c), '1'))) || 

AND (ISPICKVAL(Stage__c, '3'), NOT(ISPICKVAL(PRIORVALUE(Stage__c), '2'))) ||

AND (ISPICKVAL(Stage__c, '4'), NOT(ISPICKVAL(PRIORVALUE(Stage__c), '3'))) ||

AND (ISPICKVAL(Stage__c, '5'), NOT(ISPICKVAL(PRIORVALUE(Stage__c), '4')))

Let me know if you need any help regarding this.

Thanks,
Vijay
AbAb
I thought of vaidatio rule which shoule be something like
 AND( (RecordType.Name  = 'RA'), XYZ) 

XYZ should be, if previous stages were Open, it should either go to Stage 4 or Stage 6.
Stage 4 and 5 are 100 %, opportunity Closed/Won.
Stage 6 is 0 % Closed/Lost
AbAb
AND(

(RecordType.Name  = 'RA'),

AND(

AND(ISPICKVAL(StageName, '4'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6')) )  )
)
||
AND(ISPICKVAL(StageName, '5'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '4')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6')) )  )
)
||
AND(ISPICKVAL(StageName, '6'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '4')) )  )
)

)

)

I want to have something like above, but it gives syntaxt error


I have stages 1 to 9

Stages 4,5,6,7 have Probality 100 % but i want that before choosing 5,6,7 it should always pass through 4.
From 4 you could select any of the 5,6,7 .

thanks for suggestion
yeshabyeshab
AND(

(RecordType.Name  = 'RA'),

AND(

AND(ISPICKVAL(StageName, '4'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6')) ) 

||
AND(ISPICKVAL(StageName, '5'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '4')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '6'))  

||
AND(ISPICKVAL(StageName, '6'), NOT( ( ISPICKVAL(PRIORVALUE(StageName), '3')) ) ||( ISPICKVAL(PRIORVALUE(StageName), '5')) )   || ( ISPICKVAL(PRIORVALUE(StageName), '4')) 
)
This was selected as the best answer