Skip to main content
I have a validation rule which prevents users from skipping stages in opportunities.  Here's how it looks;

 

OR(

 

AND(ISNEW(),NOT(ISPICKVAL(StageName, 'Nurture')),RecordType.DeveloperName='Sales'),

 

AND(

 

ISCHANGED(StageName),RecordType.DeveloperName='Sales',

 

OR(

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Nurture'),

 

NOT(ISPICKVAL(StageName, 'Discovery')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Discovery'),

 

NOT(ISPICKVAL(StageName, 'Nurture')),

 

NOT(ISPICKVAL(StageName, 'Solve & Present')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Solve & Present'),

 

NOT(ISPICKVAL(StageName, 'Discovery')),

 

NOT(ISPICKVAL(StageName, 'Proof')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

 

ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

 

NOT(ISPICKVAL(StageName, 'Solve & Present')),

 

NOT(ISPICKVAL(StageName, 'Contracting')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Contracting'),

 

NOT(ISPICKVAL(StageName, 'Proof')),

 

NOT(ISPICKVAL(StageName, 'Closed Won')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

),

 

AND(

 

ISPICKVAL(PRIORVALUE(StageName), 'Closed Won'),

 

NOT(ISPICKVAL(StageName, 'Contracting')),

 

NOT(ISPICKVAL(StageName, 'Closed Lost'))

 

)

 

)

 

)

 

)

 

I would like to make an exception the this validation rule if opportunity type = Renewal or Other.  I thought these rules were executed top down so I thought I could just add to the top;

 

AND

 

(

 

NOT(ISPICKVAL(Type, "Renewal")),

 

NOT(ISPICKVAL(Type, "Other"))

 

),

 

However, I still get the message that I cannot bypass the stages and was hoping someone could help teach me the proper way to make this exception to my validation rule.

 

Thanks!

 

 
답변 2개
  1. 2020년 11월 11일 오전 1:07
    Hi George,

     

    You may try with below updated formula:

     

    AND(

     

    NOT(ISPICKVAL(Type, "Renewal")),

     

    NOT(ISPICKVAL(Type, "Other")),

     

    OR(

     

    AND(ISNEW(),NOT(ISPICKVAL(StageName, 'Nurture')),RecordType.DeveloperName='Sales'),

     

    AND(

     

    ISCHANGED(StageName),RecordType.DeveloperName='Sales',

     

    OR(

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Nurture'),

     

    NOT(ISPICKVAL(StageName, 'Discovery')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Discovery'),

     

    NOT(ISPICKVAL(StageName, 'Nurture')),

     

    NOT(ISPICKVAL(StageName, 'Solve & Present')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Solve & Present'),

     

    NOT(ISPICKVAL(StageName, 'Discovery')),

     

    NOT(ISPICKVAL(StageName, 'Proof')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

     

    ISPICKVAL(PRIORVALUE(StageName), 'Proof'),

     

    NOT(ISPICKVAL(StageName, 'Solve & Present')),

     

    NOT(ISPICKVAL(StageName, 'Contracting')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Contracting'),

     

    NOT(ISPICKVAL(StageName, 'Proof')),

     

    NOT(ISPICKVAL(StageName, 'Closed Won')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    ),

     

    AND(

     

    ISPICKVAL(PRIORVALUE(StageName), 'Closed Won'),

     

    NOT(ISPICKVAL(StageName, 'Contracting')),

     

    NOT(ISPICKVAL(StageName, 'Closed Lost'))

     

    )

     

    )

     

    )

     

    )

     

    )
0/9000