| Quintiq file version 2.0 | 
| #parent: #root | 
| Method GetKPICampaignTotalPlannedQtyBelowMinQty () declarative remote as Real | 
| { | 
|   TextBody: | 
|   [* | 
|      | 
|     value := sum( this, Unit.CampaignType_MP.Campaign_MP, campaign, | 
|                   campaign.DerivedMinQuantity()>0, | 
|                   // get quantity undercoverage for campaign fully within KPI and campaign horizon | 
|                   ifexpr( campaign.End() < minvalue( campaign.Unit().CampaignTypeRequirementHorizon(), this.GlobalParameters_MP().GetEndOfKPIHorizon().DateTime() ), | 
|                           maxvalue( campaign.DerivedMinQuantity() - campaign.FulfilledQuantity(), 0.0 ), | 
|                           // get prorated quantity undercoverage for campaign partially within KPI and campaign horizon | 
|                           ifexpr( campaign.Start() < minvalue( campaign.Unit().CampaignTypeRequirementHorizon(), this.GlobalParameters_MP().GetEndOfKPIHorizon().DateTime() ), | 
|                                   maxvalue( campaign.DerivedMinQuantity() - campaign.FulfilledQuantity(), 0.0 ) *  | 
|                                   ( minvalue( campaign.Unit().CampaignTypeRequirementHorizon(), this.GlobalParameters_MP().GetEndOfKPIHorizon().DateTime() ) - campaign.Start() ) / campaign.Duration(), 0.0 ) ) ); | 
|      | 
|     return value; | 
|   *] | 
| } |