Quintiq file version 2.0
|
#parent: #root
|
StaticMethod ThermalTrialRatio (
|
Routing routing,
|
Unit unit,
|
Number capacity,
|
Date start,
|
Date end,
|
Number ratio
|
) as owning Routings
|
{
|
Description: 'Check input is valid'
|
TextBody:
|
[*
|
// Adhi Feb-10-2016 (created)
|
thermaltrial := Unit::GetThermalTrial();
|
newroutings := construct( Routings );
|
|
for( starttime := start; starttime <= end; starttime := starttime + 1 ){
|
uc := selectobject( unit, UnitCapacity, uc, uc.Start().Date() = starttime );
|
if( isnull( uc ) ){
|
uc := UnitCapacity::Create( unit, starttime.DateTime(), 'Day', 0.0, [Real]capacity, 100.0, 1, false );
|
}
|
uc.MaxCapacity( [Real]capacity * ratio );
|
}
|
|
newrouting := routing.Copy();
|
name := newrouting.Name().ReplaceAll( 'Copy', thermaltrial );
|
newrouting.Name( name );
|
newrouting.UpdateTypeIndex( name );
|
|
newrouting.Start( start );
|
newrouting.End( end );
|
|
routingstep := newrouting.LastStep();
|
|
newroutingstep := RoutingStep::Create( newrouting, thermaltrial, routingstep.Tool(), false );
|
spname := ifexpr( unit.ID().StartsWith( 'CC' ), 'CC-热试', 'DL-热试' );
|
//info( '------------------', routingstep.Tool(), ',', unit.ID(), ',', spname );
|
traverse( routingstep, Operation, operation ){
|
id := Operation::GetConcatenatedID( newrouting.ID(), newroutingstep.Name(), unit.ID() );
|
// info( '------------------', operation.Name(), routingstep.Name(), newroutingstep.Name() );
|
stockingpoint := StockingPoint_MP::FindCreateUpdate( routing.MacroPlan(), spname, unit, newrouting, true );
|
|
traverse( operation, OperationBOM, obom, not obom.IsInput() ){
|
pisp := obom.PISPNodeInRouting().ProductInStockingPoint_MP();
|
// info( 'before----', ',', obom.StockingPointID(), pisp.StockingPointID(), pisp.ProductID() );
|
obom.OldStockingPointID( obom.StockingPointID() );
|
newpisp := pisp.Product_MP().AddToStockingPoint( stockingpoint );
|
// obom.PISPNodeInRouting().ProductInStockingPoint_MP( relset, newpisp );
|
obom.PISPNodeInRouting().Update( newpisp.Product_MP(), newpisp.StockingPoint_MP() );
|
// afterpisp := obom.PISPNodeInRouting().ProductInStockingPoint_MP();
|
obom.UpdateTypeIndex( obom.OperationID(), obom.ProductID(), stockingpoint.ID(), obom.IsInput() );
|
// info( 'after----', obom.StockingPointID(), afterpisp.StockingPointID(), afterpisp.ProductID() );
|
}
|
// info( '------------------------------', operation.SourceOperationLink( relsize ) );
|
|
operation.Copy( newroutingstep, stockingpoint, id, unit );
|
}
|
|
traverse( newrouting, RoutingStep.Operation.SourceOperationLink, ol )
|
{
|
ol.SynchronizeAll( false );
|
}
|
|
newroutings.Add( routing );
|
|
return &newroutings;
|
*]
|
}
|