| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod CreateProductInStockingPointInPeriodMessage ( | 
|   MacroPlan macroplan | 
| ) | 
| { | 
|   Description: 'Create sanity check message for product in stocking point in period.' | 
|   TextBody: | 
|   [* | 
|     // Get the limit for number of sanity check messages | 
|     messagelimit := macroplan.GlobalParameters_MP().SanityCheckLimit(); | 
|      | 
|     // Get PISPIPs that has sanity check violation(s) | 
|     invalidobjects := selectsortedset( macroplan,  | 
|                                        SanityCheckGroup.astype( SanityCheckGroupShelfLife ).InvalidProductInStockingPointInPeriod, | 
|                                        invalidobject, | 
|                                        true, | 
|                                        invalidobject.SanityCheckDataMostSevere() ); | 
|      | 
|     objcount :=0; | 
|     // Traverse the set of PISPIPs and create sanity check message | 
|     // as long as the number of PISPIPs processed doesn't exceed the limit of number of messages | 
|     traverse( invalidobjects, Elements, invalidobject, objcount <= messagelimit ) | 
|     { | 
|       feedbacks := construct( Strings ); | 
|       sanitycheckfeedback := construct( Strings ); | 
|        | 
|       objcount := objcount + 1; | 
|       // Get invalid PISPIPPlanning | 
|       invalidpispip := invalidobject.ProductInStockingPointInPeriodPlanning(); | 
|       // Get sanity check violation messages and categories | 
|       invalidpispip.DoSanityCheckGroupShelfLife( feedbacks, sanitycheckfeedback );  | 
|        | 
|       i := 0; | 
|       // Traverse each sanity check violation feedbacks | 
|       traverse( feedbacks, Elements, fb ) | 
|       { | 
|         //tokenize msg to retrieve category level and seperate the actual feedback | 
|        sanitycheckmessage := SanityCheckMessageShelfLife::Create( invalidpispip.PISPIPSanityCheckAttribute().SanityCheckGroupShelfLife(), | 
|                                                                   fb, | 
|                                                                   true, | 
|                                                                   sanitycheckfeedback.Element( i ) | 
|                                                                  ); | 
|      | 
|        sanitycheckmessage.PISPIPSanityCheckAttribute( relset, invalidpispip.PISPIPSanityCheckAttribute() ); | 
|         i := i + 1; | 
|       } | 
|        | 
|     } | 
|   *] | 
| } |