lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Quintiq file version 2.0
#parent: #root
Method VerifyStockLevelInDays (
  String expectations,
  MacroPlan macroplan
)
{
  Description: 'Verify utf result'
  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 ) );
      expectedStockInDays := this.ConvertToReal( expectedStock.Element( 5 ) );
      
      // Find corresponded pispip
      pisp := macroplan.GetProductInStockingPoint( p, sp );
      
      pispip := select( pisp, ProductInStockingPointInPeriod, pispip,
                        pispip.Start() = start and not isnull( pispip.PeriodSpecificationInPISP() ), // exclude system periods
                        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 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' }
}