Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SetShadowUnitCostRetainUserValues ( 
 | 
  Unit unit 
 | 
) id:Method_DialogCreateEditUnitCost_SetShadowUnitCostRetainUserValues 
 | 
{ 
 | 
  #keys: '[144528.2.91510074]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Create shadow unit 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) 
 | 
     
 | 
    createCostForSingleUnit := DataHolderUnits.Data().Size() = 1; 
 | 
     
 | 
    if( createCostForSingleUnit ) 
 | 
    { 
 | 
      // As we using DataHolderSelectedUnit.OnDataChanged to workaround DropDownListUnit.OnUserSelectionChanged & enabled/disabled software bug 
 | 
      // Check if user switched unit before re-creating shadow unit cost 
 | 
      hasUnitChanged := not DataHolderUnits.Data().Find( unit ) >= 0; 
 | 
       
 | 
      if( hasUnitChanged ) 
 | 
      { 
 | 
        // All values except ID and Unit, we want to preserve user values after user switch unit from dropdown 
 | 
        obj := unit.UnitCost( relshadow, 
 | 
                              ID := MacroPlan.IDHolder().GetUnitCostID(), 
 | 
                              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 unit cost creation, we want to replace the unit in dataholder (e.g on change unit in dropdown) 
 | 
      DataHolderUnits.Data().Flush(); 
 | 
      DataHolderUnits.Data().Add( unit ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |