| Quintiq file version 2.0 | 
| #parent: #root | 
| Method SetSupplyForProcess ( | 
|   ProductInStockingPointInPeriodPlanning pispip, | 
|   Process_MP process, | 
|   Real userQty | 
| ) | 
| { | 
|   Description: 'Set supply quantity for process (operation or lane leg) for particular period. Creates period task operation or trip if not exists.' | 
|   TextBody: | 
|   [* | 
|     // Get supply for the process | 
|     // Used by supply planning matrix (web) and emulating the thin client supply planning matrix | 
|     productionSupply := select( pispip, Supply_MP, supply, supply.Process_MP() = process ); | 
|      | 
|     // If supply not exists, create the period task operation or trip | 
|     if( isnull( productionSupply ) ) | 
|     { | 
|       if( process.istype( LaneLeg ) ) | 
|       { | 
|         pispips := construct( ProductInStockingPointInPeriodPlannings ); | 
|         pispips.Add( pispip ); | 
|         Trip::CreateWithProductInTrips( pispips, process.astype( LaneLeg ) ); | 
|       } | 
|       else if( process.istype( Operation ) ) | 
|       { | 
|         pispip.CreateUpdateOperationNewSupplies( process.astype( Operation ), userQty );  | 
|       } | 
|        | 
|       // Refresh the new supply so we can update the quantity | 
|       Transaction::Transaction().Propagate(); | 
|        | 
|       productionSupply := select( pispip, Supply_MP, supply, supply.Process_MP() = process ); | 
|     } | 
|      | 
|     if( not isnull( productionSupply ) ) | 
|     { | 
|       if ( productionSupply.istype( NewSupply ) ) | 
|       { | 
|         productionSupply.astype( NewSupply ).Update( userQty,  true );   | 
|       } | 
|       else | 
|       { | 
|         productionSupply.Update( userQty ); | 
|       }   | 
|     } | 
|   *] | 
| } |