Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method DoASyncMappingActualPISPIPData ( 
 | 
  Strings businessTypes, 
 | 
  const GlobalOTDTable globalOTDTable, 
 | 
  Boolean nuclear, 
 | 
  Strings organcodelist 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    // renhao Aug-14-2023 (created) 
 | 
    listtodeal := construct( Global_MappingActualProductInStockingPointInPeriods, constcontent ); 
 | 
    if ( businessTypes.Size() > 0 ) { 
 | 
      targetGlobal_ProductCategory := selectset( globalOTDTable, Global_ProductCategory, tempGPC,  
 | 
                                                 exists( businessTypes, Elements, tempBTN, tempBTN = tempGPC.BusinessTypeName() ) ); 
 | 
      listtodeal := selectset( targetGlobal_ProductCategory,  
 | 
                               Elements.Global_MappingProduct_MP.Global_MAPISPIPCategory.Global_MappingActualProductInStockingPointInPeriod,  
 | 
                               tempGMPIL,  
 | 
                               ( tempGMPIL.ActualInventoryLevelEnd() > 0 ) and  
 | 
                               ( organcodelist.Find( tempGMPIL.StockingPointID().SubString( 0, 3 ) ) >= 0 ) ); 
 | 
    } else {   
 | 
      listtodeal := selectset( globalOTDTable, 
 | 
                               Global_MappingActualProductInStockingPointInPeriod, 
 | 
                               actual, 
 | 
                               ( actual.ActualInventoryLevelEnd() > 0 ) and  
 | 
                               ( organcodelist.Find( actual.StockingPointID().SubString( 0, 3 ) ) >= 0 ) ); 
 | 
    } 
 | 
    totalcount := listtodeal.Size(); 
 | 
    info( "ActualPISPIP has " + totalcount.AsQUILL() + " rows in total" ); 
 | 
     
 | 
    count := 0; 
 | 
    traverse( listtodeal,Elements,actual){ 
 | 
      count := count + 1; 
 | 
      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){ 
 | 
        info( "Now is dealing with the " + count.AsQUILL() + "ActualPISPIP " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" ); 
 | 
        } 
 | 
      //product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = actual.ProductID() and product.KeyProduct() = nuclear,true); 
 | 
      if( /*not isnull( product*/ guard( actual.Global_MAPISPIPCategory().KeyProduct() = nuclear, false ) ){ 
 | 
      if( not isnull(businessTypes)){ 
 | 
       
 | 
        for( i :=0 ;i < businessTypes.Size();i++ ){ 
 | 
          //businessType := businessTypes.Element( i ); 
 | 
          if( /*product.BusinessType() = businessType and not product.IsCommon()*/ not actual.Global_MAPISPIPCategory().IsCommon() ){ 
 | 
            ActualProductInStockingPointInPeriod::CreateOrUpdate( this, 
 | 
                                                                  actual.ProductID(), 
 | 
                                                                  actual.StockingPointID(), 
 | 
                                                                  actual.Description(), 
 | 
                                                                  actual.ActualInventoryLevelEnd(), 
 | 
                                                                  actual.ManufacturedDate()); 
 | 
          } 
 | 
        } 
 | 
         
 | 
      }else{ 
 | 
        ActualProductInStockingPointInPeriod::CreateOrUpdate( this, 
 | 
                                                              actual.ProductID(), 
 | 
                                                              actual.StockingPointID(), 
 | 
                                                              actual.Description(), 
 | 
                                                              actual.ActualInventoryLevelEnd(), 
 | 
                                                              actual.ManufacturedDate()); 
 | 
      } 
 | 
         
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |