| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SetShadowOperationCostRetainUserValues ( | 
|   Operation operation | 
| ) id:Method_DialogCreateEditOperationCost_SetShadowOperationCostRetainUserValues | 
| { | 
|   #keys: '[144528.2.91510074]' | 
|   Body: | 
|   [* | 
|     // Create shadow operation cost and retrieve values from UI elements | 
|     // e.g when changing unit from dropdown, we do not want overwrite the previous values) | 
|      | 
|     // NOTE: This cannot be call before Show modal as it slows down dialog display (as the shadow creation below refers to UI elements) | 
|      | 
|     createCostForSingleOperation := DataHolderOperations.Data().Size() = 1; | 
|      | 
|     if( createCostForSingleOperation ) | 
|     { | 
|       // As we using DataHolderSelectedOperation.OnDataChanged to workaround DropDownListOperation.OnUserSelectionChanged & enabled/disabled software bug | 
|       // Check if user switched operation before re-creating shadow unit cost | 
|       hasOperationChanged := not DataHolderOperations.Data().Find( operation ) >= 0; | 
|        | 
|       if( hasOperationChanged ) | 
|       { | 
|         // All values except ID and Operation, we want to preserve user values after user switch operation from dropdown | 
|         obj := operation.OperationCost ( relshadow, | 
|                                          ID := MacroPlan.IDHolder().GetOperationCostID(), | 
|                                          AccountName := DropDownListAccount.Data().Name(), | 
|                                          Account_MP := DropDownListAccount.Data(), | 
|                                          CostDriver := DropDownStringListCostDriver.Text(), | 
|                                          Cost := ApplicationMacroPlanner.FormatStringToReal( EditFieldCost.Text() ), | 
|                                          LengthOfTime := ApplicationMacroPlanner.FormatStringToNumber( EditFieldLengthOfTime.Text() ), | 
|                                          TimeUnit := DropDownStringListTimeUnit.Text(), | 
|                                          Start := DateSelectorCostStart.Date() ); | 
|          | 
|         DataHolderDialogData.Data( & obj ); | 
|       } | 
|        | 
|       // Only if single operation cost creation, we want to replace the operation in dataholder (e.g on change operation in dropdown) | 
|       DataHolderOperations.Data().Flush(); | 
|       DataHolderOperations.Data().Add( operation ); | 
|     } | 
|   *] | 
| } |