Quintiq file version 2.0
|
#parent: #root
|
StaticMethod Dispatch (
|
Date startDate,
|
Date endDate,
|
const OfflinePlanTable offlinePlan,
|
RecycleBin owner
|
)
|
{
|
TextBody:
|
[*
|
// Akari Sep-4-2024 (created)
|
owner.DispatchShiftSchedulingInformation( relflush );
|
macroPlan := offlinePlan.MacroPlan();
|
now := DateTime::Now();
|
|
shiftPatterns := selectset( macroPlan,ShiftPattern,object,true );
|
shiftPatternIndexTree := NamedValueTree::Create();
|
for( i := 0; i < shiftPatterns.Size(); i++){
|
shiftPattern := shiftPatterns.Element( i );
|
shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftPattern.Name() );
|
shiftPatternIndexTree.Root().AddChild( shiftPatternHandle,i );
|
}
|
|
units := selectset( macroPlan,Unit,object, true );
|
unitIndexTree := NamedValueTree::Create();
|
for( i := 0; i < units.Size(); i++){
|
unit := units.Element( i );
|
unitHandle := unitIndexTree.GetHandle( unit.Name() );
|
unitIndexTree.Root().AddChild( unitHandle,i );
|
}
|
|
traverse( offlinePlan,OfflinePlanRow,row ){
|
productID := row.ProductID();
|
productLine := row.ProductionLine();
|
factory := constnull( Unit );
|
{
|
unitHandle := unitIndexTree.GetHandle( productLine );
|
unitIndex := guard( unitIndexTree.Root().Child( unitHandle ), null( NamedValue ));
|
if( not isnull( unitIndex )){
|
unit := units.Element( unitIndex.GetValueAsNumber() );
|
temp1 := unit;
|
temp2 := unit.Parent();
|
while( not isnull( temp1.Parent())){
|
temp2 := temp1;
|
temp1 := temp1.Parent();
|
}
|
factory := temp2;
|
}
|
}
|
traverse( row,OfflinePlanCell,cell ,startDate <= cell.OfflinePlanColumn().ColumnDate() and endDate > cell.OfflinePlanColumn().ColumnDate()){
|
shiftDate := cell.OfflinePlanColumn().ColumnDate();
|
shiftName := cell.Shift();
|
shiftVolume := cell.Quantity();
|
shiftDayTime := constnull( ShiftDayTime );
|
{
|
shiftPatternHandle := shiftPatternIndexTree.GetHandle( shiftName );
|
shiftPatternIndex := guard( shiftPatternIndexTree.Root().Child( shiftPatternHandle ),null( NamedValue ));
|
if( not isnull( shiftPatternIndex )){
|
shiftPattern := shiftPatterns.Element( shiftPatternIndex.GetValueAsNumber() );
|
shiftDayTime := select( shiftPattern,ShiftDayTime,object,true );
|
}
|
}
|
|
shiftSchedulingInformation := owner.DispatchShiftSchedulingInformation( relnew ,
|
ID := IDHolder::GetGUID() ,
|
InterfaceTime := now ,
|
VersionName := macroPlan.MDSMacroPlan().Description(),
|
Product := productID,
|
ProductLine := productLine,
|
ShiftDate := shiftDate,
|
ShiftName := shiftName,
|
ShiftVolume := shiftVolume );
|
if( not isnull( shiftDayTime )){
|
shiftSchedulingInformation.ShiftStartDate( shiftDayTime.StartDateTime() );
|
shiftSchedulingInformation.ShiftEndDate( shiftDayTime.EndDateTIme() );
|
}
|
if( not isnull( factory )){
|
shiftSchedulingInformation.FactoryName( factory.Name() );
|
}
|
}
|
}
|
*]
|
}
|