Quintiq file version 2.0 #parent: #root Method EditProduct ( structured[Product_MP] selection, internal[GUIComponent] parent ) as Number id:Method_DialogCreateEditProduct_EditProduct { #keys: '[11660.0.54834891]' Body: [* // Edit product isbatchedit := selection.Size() > 1; data := shadow( selection.Element( 0 ) ); Dialog.Data( data ); this.SetCheckBoxVisibility( isbatchedit ); // Enable/disable components this.EnableDisableComponents( isbatchedit ); // Set default values DataHolderParentProduct.Data( data.Parent() ); DataHolderEditingProduct.Data( selection.Copy() ); if ( not isnull( data.Parent() ) ) { CheckBoxHasParentProduct.Checked( true ); } result := this.DoModal( parent ); if ( result > 0 ) { //In case the checkbox was checked but was diabled because of checking plan after optimization Dialog.Data().IsExcludedFromOptimization( CheckBoxIsExcludedFromOptimization.Checked() ); Dialog.Data().IsPlannedAfterOptimization( CheckBoxIsPlannedAfterOptimization.Checked() ); if( not isbatchedit ) { selection.Element( 0 ).UpdateTypeIndex( EditorID.Text() ); // Read-only, apply changes to shadow is not taking place for read-only attribute when editing. data.Commit(); } else //for batch edit, use Update method instead { parentproduct := ifexpr( CheckBoxHasParentProduct.Checked(), SelectionParentProduct.Data(), null( Product_MP ) ); Product_MP::Update( selection, parentproduct, SelectionUnitOfMeasurement.BoundValue(), CheckBoxIsByProduct.Checked(), DataHolderView.Data(), CheckBoxBatchEditUnitOfMeasurement.Checked(), CheckBoxBatchEditParent.Checked(), CheckBoxBatchEditByProduct.Checked(), CheckBoxBatchEditNotes.Checked(), EditorNotes.Text(), CheckBoxBatchEditHasShelfLife.Checked(), CheckBoxHasShelfLife.Checked(), ApplicationLibMacroPlanner.FormatStringToReal( EditorShelfLife.Text() ), CheckBoxBatchEditHasMaturationDays.Checked(), CheckBoxHasMaturationDays.Checked(), ApplicationLibMacroPlanner.FormatStringToReal( EditorMaturationDays.Text() ), CheckBoxBatchEditIsExcludedFromOptimization.Checked(), CheckBoxIsExcludedFromOptimization.Checked(), CheckBoxIsPlannedAfterOptimization.Checked(), CheckBoxBatchEditIsExcludedFromFulfillmentKPI.Checked(), ifexpr( CheckBoxIsExcludedFromFulfillmentKPI.Enabled(), CheckBoxIsExcludedFromFulfillmentKPI.Checked(), data.IsExcludedFromFulfillmentKPI() ) ); } } return result; *] }