| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CreateProductInStockingPointInPeriod ( | 
|   ProductInStockingPoint_MPs pisps, | 
|   Period_MPs periods, | 
|   Boolean isondelete | 
| ) | 
| { | 
|   Description: 'Create product in stocking point in period base on a set of pisps and periods' | 
|   TextBody: | 
|   [* | 
|     if( this.GetHasValidNrOfPISPIP() ) | 
|     { | 
|       traverse( pisps, Elements, pisp ) | 
|       { | 
|         firstplanning := guard( pisp.FirstPlanningPISPIP().Start(), this.StartOfPlanning() );  | 
|          | 
|         earlieststart := ifexpr( this.GetIsPeriodUpdateForShelfLifeOptimizer(),  | 
|                                  pisp.EarliestManufactureDate().DateTime(),  | 
|                                  DateTime::MaxDateTime() ); // no new periods for opt in this case (see below) | 
|          | 
|         periodsforopt := selectset(  periods,  | 
|                                      Elements,  | 
|                                      p, p.Start() >= earlieststart  | 
|                                      and p.Start() < firstplanning ); // only need extra historical periods | 
|          | 
|         // If isondelete is true, it means the product is going to become leaf when | 
|         // it has only 1 child left, so we cannot use GetIsLeaf | 
|         isLeaf := ifexpr( not isondelete, pisp.Product_MP().GetIsLeaf(), pisp.Product_MP().Child( relsize ) = 1 ) | 
|      | 
|         if ( not this.GetIsPeriodUpdateForShelfLifeOptimizer() )  | 
|         { | 
|           pisp.CreateProductInStockingPointInPeriod( periods, isLeaf ); | 
|         } | 
|         else | 
|         { | 
|           Transaction::Transaction().Propagate( attribute( Period_MP, IsPlanning ) ); // need to know what kind of pispip to create | 
|           traverse( periodsforopt, Elements, period, period.IsPlanning() ) //only create for planning period | 
|           { | 
|             ProductInStockingPointInPeriod::Create( pisp, period, isLeaf ); | 
|           } | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |