Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod CanEditValuesFromMatrix ( 
 | 
  Strings attributenames, 
 | 
  output String feedback_o, 
 | 
  output Boolean isSupply_o, 
 | 
  output Boolean isActInvent_o 
 | 
) as Boolean 
 | 
{ 
 | 
  Description: 'Returns true if these attributes can be edited via the matrix' 
 | 
  TextBody: 
 | 
  [* 
 | 
    feedback_o := '';                      
 | 
     
 | 
    // These are the editable attributes 
 | 
    supplyQty := attribute( ProductInStockingPointInPeriod, SupplyQuantity ).Name(); 
 | 
    actualInvEnd := attribute( ProductInStockingPointInPeriod, ActualInventoryLevelEnd ).Name(); 
 | 
     
 | 
    uniqueattributes := attributenames.Unique(); 
 | 
     
 | 
    // Check if the selected attribute(s) in the matrix is one of the editable attributes 
 | 
    isvalid := forall( uniqueattributes,  
 | 
                       Elements,  
 | 
                       e,  
 | 
                       e = supplyQty  
 | 
                       or e = actualInvEnd ); 
 | 
    if( not isvalid ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ProductInStockingPointInPeriod_CanEditValuesFromMatrix(); 
 | 
    } 
 | 
    // Check if the user is trying to edit more than one attribute in the matrix 
 | 
    else if( uniqueattributes.Size() > 1 ) 
 | 
    { 
 | 
      feedback_o := Translations::MP_ProductInStockingPointInPeriod_CanOnlyEditOneAttribute(); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      // Check if the selected attribute in the matrix is of SupplyQuantity or ActualInventoryLevelEnd 
 | 
      isSupply_o := uniqueattributes.Element( 0 ) = supplyQty; 
 | 
      isActInvent_o := uniqueattributes.Element( 0 ) = actualInvEnd; 
 | 
    } 
 | 
     
 | 
    return feedback_o = ''; 
 | 
  *] 
 | 
} 
 |