yypsybs
2023-09-07 bc2de42011e9f28a3741bc0e340a9eef53e375d1
_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -15,131 +15,85 @@
        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 );
     }
    Unit::CreateOrUpdate( this,
                          "天马集团",
                          "天马集团",
                          "",
                          capacitytype,
                          unitofmeasurename );
    
    // 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 );
     }
    Unit::CreateOrUpdate( this,
                          "生产",
                          "生产",
                          "天马集团",
                          capacitytype,
                          unitofmeasurename );
    
    existsubroot := Unit::FindById( this, "供应商" );
    if( isnull( existsubroot ) ){
      this.Unit( relnew, ID := "供应商",
                 Name := "供应商",
                 ParentUnitID := "天马集团",
                 UnitOfMeasureName := unitofmeasurename,
                 CurrencyID := currencyid,
                 StartDate := startdate,
                 EndDate := enddate,
                 CapacityType := capacitytype );
     }
    Unit::CreateOrUpdate( this,
                          "供应商",
                          "供应商",
                          "天马集团",
                          capacitytype,
                          unitofmeasurename );
    
    existsubroot := Unit::FindById( this, "整车运输" );
    if( isnull( existsubroot ) ){
      this.Unit( relnew, ID := "整车运输",
                 Name := "整车运输",
                 ParentUnitID := "天马集团",
                 UnitOfMeasureName := unitofmeasurename,
                 CurrencyID := currencyid,
                 StartDate := startdate,
                 EndDate := enddate,
                 CapacityType := capacitytype );
     }
    Unit::CreateOrUpdate( this,
                          "整车运输",
                          "整车运输",
                          "天马集团",
                          capacitytype,
                          unitofmeasurename );
    
    // 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 first level unit
      Unit::CreateOrUpdate( this,
                            item.OrganCode(),
                            OrgName,
                            "生产",
                            capacitytype,
                            unitofmeasurename );
      //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 );
        }
      Unit::CreateOrUpdate( this,
                            secondlevelid,
                            secondlevelid,
                            item.OrganCode(),
                            capacitytype,
                            unitofmeasurename );
      //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 );
        }
      Unit::CreateOrUpdate( this,
                            thirdlevelid,
                            thirdlevelid,
                            secondlevelid,
                            "Time",
                            item.UnitOfMeasureName() );
      //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 );
        }
        Unit::CreateOrUpdate( this,
                              lastlevelid,
                              lastlevelid,
                              thirdlevelid,
                              "Time",
                              item.UnitOfMeasureName() );
      }
      }
  *]