Quintiq file version 2.0
#parent: #root
Method CreateActualPISPIP (
  internal[GUIComponent] parent,
  ProductInStockingPointInPeriod selectedpispip
) as ActualProductInStockingPointInPeriod id:Method_DialogCreateEditActualPISPIP_CreateActualPISPIP
{
  #keys: '[137118.0.315917565]'
  Body:
  [*
    // Create from actual pispip list
    // Assign values/relations to ActualPISPIP to populate the dialog
    pispip := selectedpispip;
    pisp := selectedpispip.ProductInStockingPoint_MP();
    product := pisp.Product_MP();
    stockingpoint := pisp.StockingPoint_MP();
    actualdate := pispip.Period_MP().EndDate() - 1; // Default actual date will be the latest date for actual in the period (period's enddate - 1)
    manufactureDate := ifexpr( guard( product.HasShelfLifeOrMaturation(), false ), 
                                   ActualProductInStockingPointInPeriod::GetMinimumManufacturedDate( product, stockingpoint,actualdate ), Date::MinDate() );
      
    data := MacroPlan.Actual( relshadow, ActualProductInStockingPointInPeriod, ProductID := product.ID(), StockingPointID := stockingpoint.ID(), Date := actualdate, ManufacturedDate := manufactureDate );                 
    data.ProductInStockingPoint_MP( relset, pisp );
    
    Dialog.Data( data );
    
    ValueHolderIsBatchEdit.Value( [String] false );
    Dialog.ShowHideComponents( [Boolean] ValueHolderIsBatchEdit.Value() );
    
    result := this.DoModal( parent );
    
    newobj := null( ActualProductInStockingPointInPeriod );
    
    if( result > 0 )
    {
      //if manufactured date is restricted, default it to date of actual pispip
      manufactureddate := this.GetManufacturedDateWithUIRestriction( GUIDateSelectorManufacturedDate.DateTime().Date(), GUIDateTimeSelectorDate.DateTime().Date() );
      newobj := ActualProductInStockingPointInPeriod::Create( MacroPlan,
                                                              SelectionProduct.Data(),
                                                              SelectionStockingPoint.Data(),
                                                              GUIDateTimeSelectorDate.DateTime().Date(),
                                                              manufactureddate,
                                                              ApplicationLibMacroPlanner.FormatStringToReal( EditorInventoryLevelEnd.Text()),
                                                              EditorDescription.Text(),
                                                              false );
    }
    
    return newobj;
  *]
}
