| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CheckOptimizerPuzzle ( | 
|   LibOpt_Task task | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     if ( this.DebugMode() )  | 
|     { | 
|       debuginfo( '=== Start checking optimizer sub puzzle ===' );  | 
|       macroplan := this.MacroPlan();  | 
|       EPSILON := 1e-6;  | 
|       traverse( macroplan, Unit, unit, not unit.IsInOptimizerPuzzle() )  | 
|       { | 
|         traverse( unit, UnitPeriod, up )  | 
|         { | 
|           diffup := up.DebugSubPuzzleQuantityToProcessPrior() - up.QuantityToProcess();   | 
|           if ( abs ( diffup ) >= EPSILON ) | 
|           { | 
|             msg := unit.Name() + [String] up.Start() + [String] up.Unit().IsInOptimizerPuzzle() +  'qty process diff=' + [String]  diffup; | 
|             debuginfo( msg );  | 
|             task.Log( 'SUBPUZZLECHECK' + msg );  | 
|           } | 
|         } | 
|       } | 
|        | 
|       traverse( macroplan, StockingPoint_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning, pispip )  | 
|       { | 
|         if ( not pispip.ProductInStockingPoint_MP().Product_MP().IsInOptimizerPuzzle() | 
|              or not pispip.ProductInStockingPoint_MP().StockingPoint_MP().isInOptimizerPuzzle() )  | 
|         { | 
|           diffpispip := pispip.DebugSubPuzzleInventoryEndPrior() - pispip.InventoryLevelEnd();  | 
|           if ( abs(  diffpispip ) >= EPSILON )  | 
|           { | 
|             msg := 'pispip inv end diff' + pispip.ProductInStockingPoint_MP().Name() + [String] pispip.Start() +  'diff = ' + [String] diffpispip +   | 
|                         'prod:' + [String] pispip.ProductInStockingPoint_MP().Product_MP().IsInOptimizerPuzzle() +  | 
|                         'sp:' + [String] pispip.ProductInStockingPoint_MP().StockingPoint_MP().isInOptimizerPuzzle();  | 
|             debuginfo( msg );  | 
|             task.Log( 'SUBPUZZLECHECK' + msg );                | 
|           } | 
|         } | 
|       } | 
|       debuginfo( '=== Finished checking optimizer sub puzzle ===' );  | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |