Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod CopyVersion ( 
 | 
  GlobalOTDSOP owner, 
 | 
  String businessname 
 | 
) as VersionControl 
 | 
{ 
 | 
  Description: '复制当前版本并更新版本号' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Administrator Sep-13-2023 (created) 
 | 
    createtime := DateTime::ActualTime(); 
 | 
    user := QuintiqUser::CurrentUser().Username(); 
 | 
    starttime := DateTime::Construct(1970,1,1,0,0,0); 
 | 
    // Get the local scenario businesstype 
 | 
    businesstype := GlobalOTDTable::GetBusinessTypeName( businessname ); 
 | 
     
 | 
    // Get the older version info 
 | 
    oldversionid := ""; 
 | 
    oldversionname := ""; 
 | 
     
 | 
    latestversion := VersionControl::FindLatestUpdateVersion( owner, businesstype ); 
 | 
    copyversionid := latestversion.VersionID(); 
 | 
    info( copyversionid ); 
 | 
     
 | 
    if( copyversionid.FindString( "-", 0 ) > 0 ){ 
 | 
      latestversionlist := copyversionid.Tokenize( "-" ); 
 | 
      latestversionnamelist := latestversion.LongVersionName().Tokenize( "-" ); 
 | 
      for( i := 0; i < latestversionlist.Size() - 1; i := i + 1 ){ 
 | 
        if( oldversionid = "" ){ 
 | 
          oldversionid := latestversionlist.Element( i ); 
 | 
          oldversionname := latestversionnamelist.Element( i ); 
 | 
          }else{ 
 | 
            oldversionid := oldversionid + "-" + latestversionlist.Element( i ); 
 | 
            oldversionname := oldversionname + "-" + latestversionnamelist.Element( i ); 
 | 
            } 
 | 
        info( oldversionid ); 
 | 
        } 
 | 
      if( oldversionid <> "" ){ 
 | 
        oldversionid := oldversionid + "-"; 
 | 
        oldversionname := oldversionname + "-"; 
 | 
        }  
 | 
      info( oldversionid ); 
 | 
      } 
 | 
     
 | 
    // Calculate new version info 
 | 
    additionversionid := ( createtime.MinutesAsReal( starttime ) * 60 * 10 + createtime.SecondOfMinute() ).Round( 0 ); 
 | 
    newversionid := oldversionid + [String]additionversionid; 
 | 
    newcaltype := latestversion.CalType(); 
 | 
    newsingleversionname := newcaltype + "(" + createtime.Format( "Y/M2/D2 H:m:s" ) + ")"; 
 | 
    newversionname := oldversionname + newsingleversionname; 
 | 
    info( newversionid ); 
 | 
     
 | 
    // Create new version 
 | 
    newversion := VersionControl::Create( owner, businesstype, newcaltype, createtime, newversionid, newversionname, newsingleversionname, user ); 
 | 
     
 | 
    return newversion; 
 | 
  *] 
 | 
} 
 |