yypsybs
2023-09-09 3cb5a54def670d97301f07170fcaad213bfc54f2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Quintiq file version 2.0
#parent: #root
Method MappingOperationBOMDataSupplyPurchase (
  String orgCode,
  String productId,
  String productType
)
{
  TextBody:
  [*
    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 );
    product := Product_MP::FindById( this, productId );
    if( isnull( product ) ) {
        error( "product : " + productId + " not found" );
    }
    stockingPointId := orgCode + "_" + productType + "_Stock";
    stockingPoint := StockingPoint_MP::FindById( this, stockingPointId );
    if( isnull( stockingPoint ) ) {
        error( "stockingPoint : " + stockingPointId + " not found" );
    }
    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::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 );
  *]
}