Quintiq file version 2.0
|
#parent: #root
|
Method RunSmartPlan (
|
Boolean issmartplan,
|
Boolean issmartplanforperiodtask,
|
ProductInStockingPointInPeriodPlannings smartplanpispips,
|
Boolean hastotalsupplyuser,
|
Real totalsupplyuser,
|
Boolean isupstreamsmartplan,
|
Boolean ismiddleoutsmartplan,
|
Boolean isonlyplanonestepupstream,
|
Strategy strategy,
|
Boolean isoverridemanualplanning,
|
Period_MP periodstart,
|
Period_MP periodend,
|
Boolean isusingselectedunits,
|
Units units,
|
Process_MP process,
|
Boolean reusestrategymacroplan
|
)
|
{
|
Description: 'Save the Smart plan settings and run the optimizer'
|
TextBody:
|
[*
|
// The first step in a middle-out smart plan is a downstream smart plan
|
|
isupstreamsmartplan := isupstreamsmartplan and not ismiddleoutsmartplan;
|
|
// Update the smartplan information
|
if( isoverridemanualplanning )
|
{
|
ProductInStockingPointInPeriod::ResetSupplies( smartplanpispips, true, false );
|
}
|
|
if( smartplanpispips.Size() = 1 )
|
{
|
// Set pispip hastotalsupplyuser and totalsupplyuser at the beginning of the smartplan run
|
// Be aware that this.HasTotalSupplyUser is set to true on OptimizerPostProcesssing method for the future optimizer runs
|
// If this is an upstream smart plan, set the total required user supply
|
// Otherwise set the total available user supply.
|
pispip := smartplanpispips.Element( 0 );
|
if( isupstreamsmartplan )
|
{
|
pispip.UpdateTotalSupplyUser( hastotalsupplyuser, totalsupplyuser );
|
}
|
else
|
{
|
pispip.UpdateTotalAvailableSupplyUser( hastotalsupplyuser, totalsupplyuser );
|
}
|
}
|
|
|
ispostprocessing := false;
|
forcenoautoscaling := false;
|
|
this.RunOptimizer( issmartplan,
|
issmartplanforperiodtask,
|
hastotalsupplyuser,
|
totalsupplyuser,
|
smartplanpispips,
|
isupstreamsmartplan,
|
ismiddleoutsmartplan,
|
isonlyplanonestepupstream,
|
ispostprocessing,
|
forcenoautoscaling,
|
strategy,
|
isoverridemanualplanning,
|
periodstart, periodend,
|
false, // isinventoryoptimizationrun
|
isusingselectedunits,
|
units,
|
process,
|
this.OptimizerPuzzleWorld() );
|
*]
|
}
|