Quintiq file version 2.0 #parent: #root Method EditPostponedSalesDemandCostFromListProductInStockingPointInPeriod ( internal[GUIComponent] parent, structured[ProductInStockingPointInPeriodPlanning] selection ) id:Method_DialogCreateEditPostponedSalesDemandCost_EditPostponedSalesDemandCostFromListProductInStockingPointInPeriod { #keys: '[108486.0.1971276166]' Body: [* // Edit the cost of the selection pispip from periods list Dialog.EnableDisableComponent( true ); // Need this for excluding itself in pre-condition primary keys checking. data := shadow( selection.Element( 0 ).PostponedSalesDemandCost() ); pisp := selection.Element( 0 ).ProductInStockingPoint_MP(); product := pisp.Product_MP(); stockingpoint := pisp.StockingPoint_MP(); // In case selection.Element( 0 ) doesn't bind to any inventory specification, calling SetDefaultValue method will return null error. // Check start in case of editing from PISPIP later than the existing PSDC, the Start date will be off if we pass in existing PSDC if( isnull( data ) or data.Start() <> selection.Element( 0 ).Start().Date() ) { data := selection.Element( 0 ).ProductInStockingPoint_MP().Product_MP().PostponedSalesDemandCost( relshadow, ProductID := product.ID(), StockingPointID := stockingpoint.ID(), Start := selection.Element( 0 ).Start().Date() ); } data.StockingPoint_MP( relset, selection.Element( 0 ).ProductInStockingPoint_MP().StockingPoint_MP() ); Dialog.Data( data ); // Need this so that when the pispip doesn't not have an postponed sd cost, the fields in this Dialog will not be blank. Dialog.SetDefaultValue( selection.Element( 0 ) ); result := this.DoModal( parent ); if ( result > 0 ) { PostponedSalesDemandCost::CreateOrUpdateForPISPIPs( selection, data.Penalty() ); } *] }