Quintiq file version 2.0
|
#parent: #root
|
Method Copy (
|
RoutingStep newroutingstep
|
) as Operation
|
{
|
Description: 'Duplicate the entire operation (including input product groups + input output products + costs)'
|
TextBody:
|
[*
|
idholder := this.MacroPlan().IDHolder();
|
routing := newroutingstep.Routing();
|
unit := this.Unit();
|
|
// Get the concatenated ID of routing, newroutingstep, and unit as Operation's ID
|
id := Operation::GetConcatenatedID( routing.ID(), newroutingstep.Name(), unit.ID() );
|
|
// Create new Operation with information of this Operation
|
newoperation := Operation::Create( id,
|
unit,
|
id,
|
newroutingstep,
|
this.LeadTime(),
|
this.StandardDeviationLeadTime(),
|
this.Throughput(),
|
this.HasUserLotSize(),
|
this.UserMinimumQuantity(),
|
this.HasUserMaximumQuantity(),
|
this.UserMaximumQuantity(),
|
this.UserLotSize(),
|
this.CO2Emission(),
|
false,
|
false );
|
|
// Copy OperationCosts of this Operation to the new Operation
|
traverse( this, OperationCost, operationcost )
|
{
|
// Select UnitAccount
|
accountassignment := select( unit, UnitAccount, ua,
|
ua.Account_MP() = operationcost.AccountAssignment().Account_MP()
|
and ua.CostDriver() = operationcost.AccountAssignment().CostDriver() );
|
|
// Create OperationCost for the new Operation if UnitAccount is found
|
if( not isnull( accountassignment ) )
|
{
|
OperationCost::Create( idholder.GetOperationCostID(),
|
newoperation,
|
accountassignment.Account_MP(),
|
accountassignment.CostDriver(),
|
operationcost.Start(),
|
operationcost.TimeUnit(),
|
operationcost.LengthOfTime(),
|
operationcost.Cost(),
|
false );
|
}
|
}
|
|
// Copy OperationBOM from this Operation to the new Operation
|
traverse( this, OperationBOM, ob )
|
{
|
ob.Copy( newoperation );
|
}
|
|
// Copy OpearationInputGroup of this Operation to the new Operation
|
traverse( this, OperationInputGroup, inputgroup )
|
{
|
inputgroup.Copy( newoperation );
|
}
|
|
|
return newoperation;
|
*]
|
}
|