Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method MappingOperationBOMDataSupplyPurchase ( 
 | 
  String orgCode, 
 | 
  String productId, 
 | 
  String productType 
 | 
) 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
     
 | 
    product := Product_MP::FindById( this, productId ); 
 | 
    if( isnull( product ) ) { 
 | 
        info(  "product : " + productId + " not found" ); 
 | 
    } 
 | 
    stockingPointId := orgCode + "_Stock"; 
 | 
    stockingPoint := StockingPoint_MP::FindById( this, stockingPointId ); 
 | 
    if( isnull( stockingPoint ) ) { 
 | 
        info( "stockingPoint : " + stockingPointId + " not found" ); 
 | 
    } 
 | 
     
 | 
    if( not isnull( product) and not isnull( stockingPoint)){ 
 | 
      routingId := "PR_"+orgCode + "_" + productId; 
 | 
      unitId := "供应商"; 
 | 
      routingStepName := "Purchase"; 
 | 
      operationId := orgCode + "_PR_" + productId; 
 | 
      routing := Routing::CreateOrUpdate( this, routingId ); 
 | 
      toDeleteSteps := selectset( routing, RoutingStep, routingStep, true ); 
 | 
      RoutingStep::Delete( toDeleteSteps ); 
 | 
      routingStep := RoutingStep::Create( routing, routingStepName, "", true ); 
 | 
      unit := Unit::FindById( this, unitId ); 
 | 
      if( isnull( unit ) ) { 
 | 
        unit := this.Unit( relnew,  
 | 
                          ID := unitId, Name := unitId, CapacityType := "Infinite", 
 | 
                          DefaultGridX := 0, DefaultGridY := 0, 
 | 
                          IsManuallyConfigured := false, 
 | 
                          Currency_MP := this.BaseCurrency(), UnitOfMeasure_MP := this.DefaultUnitOfMeasure() ); 
 | 
      } 
 | 
    // Operation 
 | 
      operation := Operation::FindOperationTypeIndex( operationId); 
 | 
      if( isnull( operation)){ 
 | 
        operation := Operation::Create( operationId, unit, operationId, routingStep,  
 | 
                                    Duration::Zero(), Duration::Zero(), 1.0, false,  
 | 
                                    Real::MinReal(), false, Real::MaxReal(),  
 | 
                                    0.0, 0.0, false, true ); 
 | 
    // OperaionBom 
 | 
        operation.CreateOperationBOM( product, stockingPoint, false, true ); 
 | 
        operation.GetOperationBOM( product.ID(), stockingPoint.ID(), false ).Quantity( 1 ); 
 | 
      } 
 | 
       
 | 
    } 
 | 
  *] 
 | 
} 
 |