Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod CreateTransitionMessage ( 
 | 
  MacroPlan macroplan 
 | 
) 
 | 
{ 
 | 
  Description: 'Create sanity check message for transitions.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Get the limit for number of sanity check messages 
 | 
    messagelimit := macroplan.GlobalParameters_MP().SanityCheckLimit(); 
 | 
     
 | 
    // Get Campaign_MP that has sanity check violation(s) 
 | 
    invalidtransitions := selectsortedset( macroplan,  
 | 
                                           SanityCheckGroup.astype( SanityCheckGroupCampaign ).InvalidTransition,  
 | 
                                           invalidobject, 
 | 
                                           true, 
 | 
                                           invalidobject.SanityCheckTransitionMostSevere() ); 
 | 
     
 | 
                                    
 | 
    objcount := 0; 
 | 
     
 | 
    // Traverse the set of Transition_MP and create sanity check message 
 | 
    // as long as the number of Transition_MP processed doesn't exceed the limit of number of messages 
 | 
    traverse( invalidtransitions, 
 | 
              Elements, 
 | 
              invalidobject, 
 | 
              objcount <= messagelimit ) 
 | 
    { 
 | 
      objcount := objcount + 1; 
 | 
     
 | 
      feedbacks := construct( Strings ); 
 | 
      sanitycheckfeedbacks := construct( Strings ); 
 | 
       
 | 
      // Get sanity check violation messages and categories 
 | 
      invalidobject.DoSanityCheckGroupTransition( feedbacks, sanitycheckfeedbacks ); 
 | 
       
 | 
      i := 0; 
 | 
      // Traverse each sanity check violation feedbacks 
 | 
      traverse( feedbacks, Elements, fb ) 
 | 
      {  
 | 
        // Check if there're any SanityCheckMessageCampaign with the same description, if there's none, create one 
 | 
        if( not exists( invalidobject, SanityCheckMessageCampaign, msg, msg.Description() = fb ) ) 
 | 
        { 
 | 
          //tokenize msg to retrieve category level and seperate the actual feedback 
 | 
          sanitycheckmessage := SanityCheckMessageCampaign::Create( invalidobject.SanityCheckGroupCampaign(),  
 | 
                                                                    fb,  
 | 
                                                                    true, 
 | 
                                                                    sanitycheckfeedbacks.Element( i ) ); 
 | 
                                                                     
 | 
                                                            
 | 
          sanitycheckmessage.Transition_MP( relset, invalidobject ); 
 | 
     
 | 
        } 
 | 
        i := i + 1; 
 | 
      }  
 | 
    } 
 | 
  *] 
 | 
  InterfaceProperties { Accessibility: 'Module' } 
 | 
} 
 |