| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod GetIsValidNonFrozenTrip ( | 
|   LaneLeg laneleg, | 
|   Period_MP arrivalperiod | 
| ) declarative as Boolean | 
| { | 
|   Description: 'Check if the trip is departing or arriving within the validity of the laneleg and would not be frozen' | 
|   TextBody: | 
|   [* | 
|     // FrozenPeriod moves to Unit level | 
|     // change to validate whether departureperiod & arrivalperiod is frozen, from the perspective of Unit | 
|      | 
|     arrival := Trip::GetTripArrivalDate( arrivalperiod, laneleg ).Date();      | 
|     departure := arrival - laneleg.LeadTime();                    | 
|     isvalid := Trip::GetIsValidTrip( laneleg, departure.Date(), arrival ); | 
|      | 
|     if( isvalid ) | 
|     { | 
|       departureperiod := select( laneleg.MacroPlan(), PlanningPeriod, planningperiod, | 
|                                  planningperiod.Start() <= departure | 
|                                  and planningperiod.End() > departure ); | 
|      | 
|       unit := laneleg.Lane().Unit(); | 
|        | 
|       isvalid := not( isnull( departureperiod ) | 
|                       or isnull( arrivalperiod ) | 
|                       or departureperiod.IsHistorical() | 
|                       or arrivalperiod.IsHistorical() | 
|                       or Unit::GetIsPeriodFrozen( unit, departureperiod ) | 
|                       or Unit::GetIsPeriodFrozen( unit, arrivalperiod ) ); | 
|     } | 
|      | 
|     return isvalid | 
|   *] | 
| } |