Quintiq file version 2.0 #parent: MatrixEditorProductPlanning Response OnEndEdit ( structured[ProductInStockingPointInPeriod] cell, structured[internal[MatrixEditorCell]] newvalue ) id:Response_FormProductPlanningMatrix_MatrixEditorProductPlanning_OnEndEdit { #keys: '[132448.0.56969954]' Body: [* //Smart plan with user qty pispipPlannings := selectset( cell, Elements.astype( ProductInStockingPointInPeriodPlanning ), pispipPlanning, true ) Form.UpdatePISPIPValues( pispipPlannings, newvalue ); ApplicationLibMacroPlanner.RefreshFormSupplyPlanWebClient(); this.EndEdit( false ); *] CanBindMultiple: false DefinitionID: 'Responsedef_MatrixEditor_OnEndEdit' Precondition: [* //Check 2 conditions: //1 - whether the selected attribute can be edited //2 - whether the params and profiles are there //3 - if editing supply qty, check if optimizer can be executed attributes := selectvalues( newvalue, Elements, e, true, e.AttributePath() ); isSupply_o := false; cond := ProductInStockingPointInPeriod::CanEnterSupplyQuantity( feedback, cell, attributes, isSupply_o ); // Only check for condition 2 if editing supplyQuantity if( cond ) { if( isSupply_o ) { periods := selectset( cell, Elements.Period_MP, period, true ); cond := Form.CheckExistParamAndProfile( feedback, cell.Element( 0 ), // pispip /* User [Real] instead of ApplicationMacroPlanner.FormatStringToReal MatrixEdiot will do the format internaly to match the server locale and it only allow Real for cell bind to Real attribute */ [Real]newvalue.Element( 0 ).NewValue() ) and ScenarioManager::CanStartSmartPlan( ScenarioManager, DataHolderActiveScenario.Data(), true, periods, feedback ); } } return cond; *] }