| Quintiq file version 2.0 | 
| #parent: #root | 
| Method VerifyStockLevelInDaysWithShelfLife ( | 
|   MacroPlan macroplan, | 
|   String expectations | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     // Each line will be checked to verify result | 
|     traverse( expectations.Tokenize( String::NewLine() ), Elements, line ) | 
|     { | 
|       expectedStock := line.Tokenize( ',' ); | 
|       p             := expectedStock.Element( 0 ).TrimBoth(); | 
|       sp            := expectedStock.Element( 1 ).TrimBoth(); | 
|       start         := this.ConvertToDateTime( expectedStock.Element( 2 ), macroplan ); | 
|       periodSpec    := expectedStock.Element( 3 ).TrimBoth(); | 
|       expectedInvEnd      := this.ConvertToReal( expectedStock.Element( 4 ) ); | 
|       expectedExpiryQty   := this.ConvertToReal( expectedStock.Element( 5 ) ); | 
|       expectedStockInDays := this.ConvertToReal( expectedStock.Element( 6 ) ); | 
|        | 
|       // Find corresponded pispip | 
|       pisp := macroplan.GetProductInStockingPoint( p, sp ); | 
|       pispip := select( pisp, ProductInStockingPointInPeriod, pispip, | 
|                         pispip.Start() = start and not isnull( pispip.PeriodSpecificationInPISP() ), | 
|                         pispip.PeriodSpecificationInPISP().PeriodSpecification_MP().ID() = periodSpec ); | 
|        | 
|        // Check inventory level end is propagated | 
|       this.Run().AssertEqual( expectedInvEnd, pispip.InventoryLevelEnd(), this.GetErrorMessage( pispip, "inventory level end does not match." ) ); | 
|       // Check inventory expired quantity | 
|       this.Run().AssertEqual( expectedExpiryQty, pispip.ExpiredInPeriodShelfLifeSupplyQuantity(), this.GetErrorMessage( pispip, "expiry quantity does not match." ) ); | 
|       // Check expected stock level in days = actual result | 
|       this.Run().AssertEqual( expectedStockInDays, pispip.StockLevelInDays(), this.GetErrorMessage( pispip, "stock level in days does not match." ) ); | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |