Quintiq file version 2.0
#parent: #root
Method EditUnitCapacityFromListUnitPeriodQuantity (
  internal[GUIComponent] parent,
  structured[UnitPeriodQuantity] selection
) id:Method_DialogCreateEditUnitCapacity_EditUnitCapacityFromListUnitPeriodQuantity
{
  #keys: '[107528.0.125617852]'
  Body:
  [*
    // Edit the unit capacity of the selection unit period quantities from periods list
    
    isbatchedit := selection.Size() > 1;
    Dialog.ShowHideComponentForBatchEdit( isbatchedit, false, true );
    
    // Need this for excluding itself in pre-condition primary keys checking.
    upq := selection.Element( 0 );
    data := shadow( selection.Element( 0 ).UnitCapacity() );
    
    // In case selection.Element( 0 ) doesn't bind to any unit capacity, calling SetDefaultValue method will return null error.
    // Check start in case of editing from UPQ later than the existing UC, the Start date will be off if we pass in existing UC
    if( isnull( data )
        or data.Start() <> selection.Element( 0 ).Start() )
    {
      data := selection.Element( 0 ).Unit().UnitCapacity( relshadow, UnitID := upq.Unit().ID(), Start := upq.Start() );
    }
    
    Dialog.Data( data );
    
    // Need this so that when the upt doesn't not have a unit capacity, the fields in this Dialog will not be blank.
    Dialog.SetDefaultValue( selection.Element( 0 ) );
    
    result := this.DoModal( parent );
    
    if ( result > 0 )
    {
      UnitCapacity::CreateOrUpdateForUnitPeriodQuantitys( selection,
                                                          not isbatchedit or CheckBoxBatchEditCapacity.Checked(),
                                                          data.TimeUnit(),
                                                          data.MinCapacity(),
                                                          data.MaxCapacity(),
                                                          not isbatchedit or CheckBoxBatchEditMaxLoadPercentage.Checked(),
                                                          data.MaximumLoadPercentage(),
                                                          not isbatchedit or CheckBoxBatchEditNrOfUnitsOpen.Checked(),
                                                          data.NrOfUnitsOpen(),
                                                          CheckBoxThisPeriodOnwards.Checked() );
    
    }
  *]
}
