| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetHasValidInventorySupplyOrSalesDemand ( | 
|   output Strings feedback_o, | 
|   output Strings sanitycheckfeedback_o | 
| ) declarative remote as Boolean | 
| { | 
|   Description: 'For "pull" supply chain, a sales demand is needed. For "push" supply chain, an invenotry supply is needed.' | 
|   TextBody: | 
|   [* | 
|     // desmondt Nov-10-2014 (created) | 
|      | 
|     // we can skip this check when there is sales demand | 
|     isvalid := this.BaseSalesDemandInPeriod( relsize ) > 0  | 
|                or not isnull( select( this, Product_MP.ProductInStockingPoint_MP.InventorySupply, is, true ) )  // valid when there is an inventory supply | 
|                or not isnull( select( this, Actual.astype( ActualProductInStockingPointInPeriod ), actualpispip, true )  ) // valid when there is an actual inventory level end | 
|      | 
|      | 
|     if( not isnull( feedback_o ) and not isvalid ) | 
|     { | 
|       feedback_o.Add( Translations::MP_MacroPlan_ViolateHasValidInventorySupplyOrSalesDemand() ); | 
|       sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue() ); | 
|     } | 
|      | 
|     return isvalid; | 
|   *] | 
| } |