Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Update ( 
 | 
  SalesDemandBases salesdemands, 
 | 
  Boolean hasproduct, 
 | 
  Product_MP owner, 
 | 
  Boolean hasstockingpoint, 
 | 
  StockingPoint_MP stockingpoint, 
 | 
  Boolean hasstart, 
 | 
  Date start, 
 | 
  Boolean hasend, 
 | 
  Date end, 
 | 
  Boolean hasquantity, 
 | 
  Real quantity, 
 | 
  Boolean hasprice, 
 | 
  Real price, 
 | 
  Boolean haspriority, 
 | 
  Priority priority, 
 | 
  Boolean hasdemanduncertaintypercentage, 
 | 
  Real demanduncertaintypercentage, 
 | 
  Boolean hassalessegment, 
 | 
  SalesSegment_MP salessegment, 
 | 
  Boolean hascurrency, 
 | 
  Currency_MP currency, 
 | 
  Boolean hasuom, 
 | 
  UnitOfMeasure_MP unitofmeasure, 
 | 
  Boolean hasisexcludedfromfulfillmentkpi, 
 | 
  Boolean isexcludedfromfulfillmentkpi, 
 | 
  Boolean ismanualupdate 
 | 
) 
 | 
{ 
 | 
  Description: 'Batch update of sales demands' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Traverse the selected set of SalesDemands to batch update them 
 | 
    traverse( salesdemands, Elements, e ) 
 | 
    { 
 | 
      quantityadjusted := quantity; 
 | 
     
 | 
      // Check which fields are selected for batch editing 
 | 
      // If the field is not selected, use the current SalesDemand's value instead of the passed in value 
 | 
      if( not hasproduct ) 
 | 
      { 
 | 
        owner := e.Product_MP(); 
 | 
      } 
 | 
      if( not hasstockingpoint ) 
 | 
      { 
 | 
        stockingpoint := e.StockingPoint_MP(); 
 | 
      } 
 | 
      if( not hasstart ) 
 | 
      { 
 | 
        start := e.StartDate(); 
 | 
      } 
 | 
      if( not hasend ) 
 | 
      { 
 | 
        end := e.EndDate(); 
 | 
      } 
 | 
      if( not hasquantity ) 
 | 
      { 
 | 
        quantityadjusted := e.Quantity(); 
 | 
      } 
 | 
      if( not hasprice ) 
 | 
      { 
 | 
        price := e.Price(); 
 | 
      } 
 | 
      if( not haspriority ) 
 | 
      { 
 | 
        priority := e.Priority(); 
 | 
      } 
 | 
      if( not hasdemanduncertaintypercentage ) 
 | 
      { 
 | 
        demanduncertaintypercentage := e.DemandUncertaintyPercentage(); 
 | 
      } 
 | 
      if( not hassalessegment ) 
 | 
      { 
 | 
        salessegment := e.SalesSegment_MP(); 
 | 
      } 
 | 
      if( not hascurrency ) 
 | 
      { 
 | 
        currency := e.Currency_MP(); 
 | 
      } 
 | 
      if( not hasuom ) 
 | 
      { 
 | 
        unitofmeasure := e.UnitOfMeasure_MP(); 
 | 
      } 
 | 
      if( not hasisexcludedfromfulfillmentkpi ) 
 | 
      { 
 | 
        isexcludedfromfulfillmentkpi := e.IsExcludedFromFulfillmentKPI();  
 | 
      } 
 | 
     
 | 
      //Keep history quantity 
 | 
      historicalquantity := e.Quantity(); 
 | 
      decimalpoint := e.MacroPlan().GlobalParameters_MP().NumberOfDecimals(); // Get the number of decimal points to round off to 
 | 
       
 | 
      // If the current quantity is not the same as the new quantity, 
 | 
      // create a log for audit purposes 
 | 
      if( historicalquantity <> quantityadjusted ) 
 | 
      { 
 | 
        description := Translations::MP_SalesDemand_Update_Description( e, 
 | 
                                                                        historicalquantity.Round( decimalpoint ), 
 | 
                                                                        quantityadjusted.Round( decimalpoint ) ); 
 | 
        e.MacroPlan().CreateDecisionLog( description, ismanualupdate ); 
 | 
      } 
 | 
     
 | 
      // Update attributes of SalesDemand 
 | 
      e.Update( owner, stockingpoint, start, end, quantityadjusted, price, priority, demanduncertaintypercentage, salessegment, currency, unitofmeasure, isexcludedfromfulfillmentkpi, false ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |