Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method MappingUnitData ( 
 | 
  Strings businesstypes 
 | 
) 
 | 
{ 
 | 
  Description: 'Get unit data from operation mapping' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Administrator Aug-21-2023 (created) 
 | 
    // list to deal 
 | 
    listtodeal := construct( structured[MappingOperation] ); 
 | 
     
 | 
    if( isnull( businesstypes ) or businesstypes.Size() = 0 ) { 
 | 
        listtodeal := selectset( this, MappingOperation, item, true ); 
 | 
    } else { 
 | 
        listtodeal := selectset( this, MappingOperation, item,  
 | 
    //                             businesstypes.Find( item.BusinessType() ) <> -1,  
 | 
                                 businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 
 | 
                                  ); 
 | 
    } 
 | 
     
 | 
    //Set the Default values 
 | 
    unitofmeasurename := "PCS"; 
 | 
    currencyid := "CNY"; 
 | 
    startdate := Date::Date( 1900, 1, 1 ); 
 | 
    enddate := Date::Date( 9999, 12, 31 ); 
 | 
    capacitytype := "Infinite"; 
 | 
     
 | 
    // Get the root data 
 | 
    existroot := Unit::FindById( this, "天马集团" ); 
 | 
    if( isnull( existroot ) ){ 
 | 
      this.Unit( relnew,  
 | 
                 ID := "天马集团",  
 | 
                 Name := "天马集团",  
 | 
                 UnitOfMeasureName := unitofmeasurename,  
 | 
                 CurrencyID := currencyid,  
 | 
                 StartDate := startdate,  
 | 
                 EndDate := enddate,  
 | 
                 CapacityType := capacitytype ); 
 | 
     } 
 | 
     
 | 
    // Get the sub root data 
 | 
    existsubroot := Unit::FindById( this, "生产" ); 
 | 
    if( isnull( existsubroot ) ){ 
 | 
      this.Unit( relnew, ID := "生产",  
 | 
                 Name := "生产",  
 | 
                 ParentUnitID := "天马集团",  
 | 
                 UnitOfMeasureName := unitofmeasurename,  
 | 
                 CurrencyID := currencyid,  
 | 
                 StartDate := startdate,  
 | 
                 EndDate := enddate,  
 | 
                 CapacityType := capacitytype ); 
 | 
     } 
 | 
     
 | 
    existsubroot := Unit::FindById( this, "供应商" ); 
 | 
    if( isnull( existsubroot ) ){ 
 | 
      this.Unit( relnew, ID := "供应商",  
 | 
                 Name := "供应商",  
 | 
                 ParentUnitID := "天马集团", 
 | 
                 UnitOfMeasureName := unitofmeasurename,  
 | 
                 CurrencyID := currencyid,  
 | 
                 StartDate := startdate,  
 | 
                 EndDate := enddate,  
 | 
                 CapacityType := capacitytype ); 
 | 
     } 
 | 
     
 | 
    existsubroot := Unit::FindById( this, "整车运输" ); 
 | 
    if( isnull( existsubroot ) ){ 
 | 
      this.Unit( relnew, ID := "整车运输",  
 | 
                 Name := "整车运输",  
 | 
                 ParentUnitID := "天马集团",  
 | 
                 UnitOfMeasureName := unitofmeasurename,  
 | 
                 CurrencyID := currencyid,  
 | 
                 StartDate := startdate,  
 | 
                 EndDate := enddate,  
 | 
                 CapacityType := capacitytype ); 
 | 
     } 
 | 
     
 | 
    // Get the unit list 
 | 
    traverse( listtodeal, Elements, item){ 
 | 
      //Get the first level unit 
 | 
      existfirstlevelunit := Unit::FindById( this, item.OrganCode() ); 
 | 
    //  info( item.OrganCode().AsQUILL() ); 
 | 
      OrgName := item.OrganName(); 
 | 
      if( OrgName = ''){ 
 | 
        OrgName := item.OrganCode(); 
 | 
      } 
 | 
      if( isnull( existfirstlevelunit ) ){ 
 | 
        this.Unit( relnew, ID := item.OrganCode(),  
 | 
    //               Name := item.OrganName(),  
 | 
                   Name :=OrgName,  
 | 
                   ParentUnitID := "生产",   
 | 
                   UnitOfMeasureName := unitofmeasurename,  
 | 
                   CurrencyID := currencyid,  
 | 
                   StartDate := startdate,  
 | 
                   EndDate := enddate,  
 | 
                   CapacityType := capacitytype ); 
 | 
        } 
 | 
      //Get the second level unit 
 | 
      secondlevelid := item.OrganCode() + "_" + item.PlantName(); 
 | 
    //  info( secondlevelid.AsQUILL() ); 
 | 
      existsecondlevelunit := Unit::FindById( this, secondlevelid ); 
 | 
      if( isnull( existsecondlevelunit ) ){ 
 | 
        this.Unit( relnew, ID := secondlevelid,  
 | 
                   Name := secondlevelid,  
 | 
                   ParentUnitID := item.OrganCode(),  
 | 
                   UnitOfMeasureName := unitofmeasurename,  
 | 
                   CurrencyID := currencyid,  
 | 
                   StartDate := startdate,  
 | 
                   EndDate := enddate,  
 | 
                   CapacityType := capacitytype ); 
 | 
        } 
 | 
      //Get the third level unit 
 | 
      thirdlevelid := secondlevelid + "_" + item.ProcessSection(); 
 | 
    //  info( thirdlevelid.AsQUILL() ); 
 | 
      existthirdlevelunit := Unit::FindById( this, thirdlevelid ); 
 | 
      if( isnull( existthirdlevelunit ) ){ 
 | 
        this.Unit( relnew, ID := thirdlevelid,  
 | 
                   Name := thirdlevelid,  
 | 
                   ParentUnitID := secondlevelid,  
 | 
                   CapacityType := "Time",  
 | 
                   UnitOfMeasureName := item.UnitOfMeasureName(),  
 | 
                   CurrencyID := currencyid,  
 | 
                   StartDate := startdate,  
 | 
                   EndDate := enddate ); 
 | 
        } 
 | 
      //Get the last level unit 
 | 
      if( item.Line()<>"" ){ 
 | 
        lastlevelid := thirdlevelid + "_" + item.Line(); 
 | 
    //    info( lastlevelid.AsQUILL() ); 
 | 
        existlastlevelunit := Unit::FindById( this, lastlevelid ); 
 | 
        if( isnull( existlastlevelunit ) ){ 
 | 
          this.Unit( relnew, ID := lastlevelid,  
 | 
                     Name := lastlevelid,  
 | 
                     ParentUnitID := thirdlevelid,  
 | 
                     CapacityType := "Time",  
 | 
                     UnitOfMeasureName := item.UnitOfMeasureName(), 
 | 
                     CurrencyID := currencyid,  
 | 
                     StartDate := startdate,  
 | 
                     EndDate := enddate ); 
 | 
        } 
 | 
      } 
 | 
      } 
 | 
  *] 
 | 
} 
 |