Quintiq file version 2.0 
 | 
#parent: #root 
 | 
MethodOverride GetHasValidCost ( 
 | 
  output Strings feedback_o, 
 | 
  output Strings sanitychkfeedback 
 | 
) declarative remote as Boolean 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    operationstartdate := maxvalue( this.ValidFrom(), this.MacroPlan().StartOfPlanning().Date() ); 
 | 
     
 | 
    valid := this.OperationCost( relsize ) > 0 
 | 
              and this.FirstOperationCost().Start() <= operationstartdate; 
 | 
     
 | 
    if( not isnull( feedback_o ) and not valid ) 
 | 
    { 
 | 
      name := MacroPlan::GetSubstituteName( this.Name() ); 
 | 
      routingstep := MacroPlan::GetSubstituteName( this.RoutingStepName() ); 
 | 
      routing := MacroPlan::GetSubstituteName( this.RoutingID() ); 
 | 
      unitname := MacroPlan::GetSubstituteName( this.Unit().Name() ); 
 | 
      feedback_o.Add( SanityCheckMessage::GetFormattedMessage( Translations::MP_Operation_Instance( name, routingstep, routing, unitname ), 
 | 
                                                               Translations::MP_Process_ViolateHasValidCost( this.DefinitionName(), operationstartdate ) ) ); 
 | 
      sanitychkfeedback.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning() ); 
 | 
    } 
 | 
     
 | 
    return valid 
 | 
  *] 
 | 
} 
 |