| Quintiq file version 2.0 | 
| #parent: #root | 
| Method AddInventoryValue ( | 
|   String scenarioname, | 
|   MacroPlan macroplan, | 
|   InventoryValueAndCosts inventoryvalues, | 
|   Boolean isactual | 
| ) | 
| { | 
|   Description: 'Create separated method to ease the calculation of start and end' | 
|   TextBody: | 
|   [* | 
|     startofplanning:= macroplan.StartOfPlanning();  | 
|      | 
|     traverse( inventoryvalues, Elements, inv ) | 
|     { | 
|      start := inv.Start().DateTime(); | 
|      end := inv.End().DateTime(); | 
|      currency := inv.AccountAssignment().Currency_MP(); | 
|      product := inv.Product_MP().Name(); | 
|      stockingpoint := inv.StockingPoint_MP().Name(); | 
|      cost := inv.Cost(); | 
|      if ( currency.IsBase() ) | 
|      { | 
|         if ( not isactual ) | 
|         { | 
|           start := maxvalue( startofplanning, start ) | 
|           this.AddPlannedItemCostForExport( scenarioname, product, stockingpoint, start, end, cost ); | 
|         } | 
|         else | 
|         { | 
|           end := minvalue( end, startofplanning ); | 
|           this.AddActualItemCostForExport( product, stockingpoint, start, end, cost ) | 
|         }   | 
|      }     | 
|       | 
|      else | 
|      { | 
|        currencyrates := currency.GetCurrencyRates( inv.Start(), inv.End() ); | 
|        i := 0; | 
|        traverse( currencyrates, Elements, rate ) | 
|        { | 
|          start := maxvalue( inv.Start().DateTime(), rate.Start().DateTime() ); | 
|          end := guard( currencyrates.Element(i+1).Start().DateTime(), inv.End().DateTime() ); | 
|          end := minvalue( inv.End().DateTime(), end ); | 
|          cost := inv.Cost() * rate.Rate(); | 
|          // if inventoryvaluecost cost with end > start of planning | 
|          if ( not isactual and end > startofplanning ) | 
|          { | 
|           start := maxvalue( start, startofplanning ); | 
|           this.AddPlannedItemCostForExport( scenarioname, product, stockingpoint, start, end, cost ); | 
|          } | 
|          else | 
|          { | 
|           end := minvalue( end, startofplanning ); | 
|           this.AddActualItemCostForExport( product, stockingpoint, start, end, cost ); | 
|          } | 
|          | 
|          i := i +1; | 
|        } | 
|      } | 
|     } | 
|   *] | 
|   InterfaceProperties { Accessibility: 'Module' } | 
| } |