| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetHasValidConversionFactorInUse ( | 
|   output Strings feedback_o, | 
|   output Strings sanitycheckfeedback_o | 
| ) declarative remote as Boolean | 
| { | 
|   Description: 'Check if the unit of measure is in use and have conversion factor defined.' | 
|   TextBody: | 
|   [* | 
|     // Check if the unit of measure is in use and have conversion factor defined | 
|     isvalid := true; | 
|      | 
|     // Check whether the UnitOfMeasure has valid conversion factor only if it is in use | 
|     if( this.IsInUse() ) | 
|     { | 
|       feedback := ''; | 
|       // Select the invalid process IO | 
|       invalidpio := select( this, AsPISPUnitOfMeasurement, pio, not pio.HasValidConversionFactor() ); | 
|      | 
|       isvalid := isnull( invalidpio ); | 
|      | 
|       // Check if any invalid process IO is found | 
|       // Invalid process IO found | 
|       if( not isvalid ) | 
|       { | 
|         // Generate feedback text with the invalid process IO found | 
|         entityname := invalidpio.DefinitionName() + ' ' + invalidpio.GetProcessName(); | 
|         spuomname := MacroPlan::GetSubstituteName( guard( invalidpio.PISPUnitOfMeasurement().Name(), '' ) ); | 
|         unitoumname := MacroPlan::GetSubstituteName( guard( invalidpio.UnitUnitOfMeasurement().Name(), '' ) ); | 
|      | 
|         feedback := Translations::MP_UnitOfMeasure_ViolateHasValidConversionFactorInUse( spuomname, | 
|                                                                                          unitoumname, | 
|                                                                                          entityname ); | 
|         sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning() ); | 
|       } | 
|       // No invalid process IO found | 
|       else | 
|       { | 
|         // Select the invalid sales demand | 
|         invalidsd := select( this, SalesDemand, sd, not sd.HasValidConversionFactor() ); | 
|      | 
|         isvalid := isnull( invalidsd ); | 
|      | 
|         // Check if any invalid sales demand is found | 
|         if( not isvalid ) | 
|         { | 
|           // Generate feedback text with the invalid sales demand found | 
|           entityname := Translations::MP_SalesDemand_Instance( invalidsd.ProductInStockingPoint_MP().Name(), | 
|                                                                guard( invalidsd.SalesSegment_MP().Name(), "" ), | 
|                                                                invalidsd.StartDate(), | 
|                                                                invalidsd.EndDate(), | 
|                                                                invalidsd.GetTypeName() ); | 
|      | 
|           sduomname := MacroPlan::GetSubstituteName( guard( invalidsd.UnitOfMeasure_MP().Name(), '' ) ); | 
|           uompispname := MacroPlan::GetSubstituteName( guard( invalidsd.ProductInStockingPoint_MP().UnitOfMeasure_MP().Name(), '' ) ); | 
|      | 
|           feedback := Translations::MP_UnitOfMeasure_ViolateHasValidConversionFactorInUse( sduomname, | 
|                                                                                            uompispname, | 
|                                                                                            entityname ); | 
|           sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning() ); | 
|         } | 
|       } | 
|      | 
|       // Add instance text if any of the preconditions above are violated | 
|       if( not isnull( feedback_o ) and not isvalid ) | 
|       { | 
|         instance := UnitOfMeasure_MP::GetInstanceText( this.Name() ); | 
|         feedback_o.Add( SanityCheckMessage::GetFormattedMessage( instance, feedback ) ); | 
|       } | 
|     } | 
|      | 
|     return isvalid; | 
|   *] | 
| } |