Quintiq file version 2.0
#root
#parent: LibMacroPlannerTCUI
OrphanComponent FormProductPlanningMatrix
{
  #keys: '[127710.1.818301225]'
  Accessibility: 'Extensible'
  BaseType: 'Form'
  GBLayout
  {
    Type: 'internal[GBLayoutDefinition]'
    Columns:
    [
      GBFlow.Column { grow: 0 id: 366 parent: 0 }
      GBFlow.Column { grow: 0 id: 617 parent: 0 }
      GBFlow.Column { grow: 0 id: 256 parent: 0 }
      GBFlow.Column { grow: 0 id: 285 parent: 0 }
      GBFlow.Column { grow: 16 id: 891 parent: 0 }
      GBFlow.Column { grow: 128 id: 261 parent: 0 }
    ]
    Elements:
    [
      GBElement
      {
        Component => MatrixEditorProductPlanning
        Position { startcolumn: 366 startrow: 185 endcolumn: 261 endrow: 185 }
      }
      GBElement
      {
        Component => CheckBoxFilterByProductLevel
        Position { startcolumn: 285 startrow: 438 endcolumn: 285 endrow: 438 }
      }
      GBElement
      {
        Component => StringSelectionProductLevel
        Position { startcolumn: 891 startrow: 438 endcolumn: 891 endrow: 438 }
      }
      GBElement
      {
        Component => ButtonShowStartOfPlanningHorizon
        Position { startcolumn: 617 startrow: 438 endcolumn: 617 endrow: 438 }
      }
      GBElement
      {
        Component => ImageFilterBy889
        Position { startcolumn: 256 startrow: 438 endcolumn: 256 endrow: 438 }
      }
      GBElement
      {
        Component => ImageWarningSizing
        Position { startcolumn: 366 startrow: 438 endcolumn: 366 endrow: 438 }
      }
    ]
    Gaps: [ left: 0 right: 0 top: 0 bottom: 0 inner: 5 ]
    Rows:
    [
      GBFlow.Row { grow: 0 id: 438 parent: 0 }
      GBFlow.Row { grow: 128 id: 185 parent: 0 }
    ]
  }
  Children:
  [
    Component MatrixEditorProductPlanning
    {
      #keys: '[127710.1.818312567]'
      BaseType: 'MatrixEditor'
      GBLayout
      {
        Type: 'internal[GBLayoutDefinition]'
        Gaps: [ left: 5 right: 5 top: 5 bottom: 5 inner: 5 ]
      }
      Children:
      [
        Component AttributeContextMenu
        {
          #keys: '[127710.1.818312568]'
          BaseType: 'popupMatrixEditorAttributeHeader'
          Children:
          [
            Component PopupParent
            {
              #keys: '[124988.0.211591097]'
              BaseType: 'PopupParent'
              IsDerived: true
              Children:
              [
                Component MenuFilter
                {
                  #keys: '[127710.1.1040933440]'
                  BaseType: 'Menu'
                  Children:
                  [
                    Component MenuFIlterByProducts { #keys: '[127710.1.1040933441]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Products' ] }
                    Component MenuFIlterByStockingPoints { #keys: '[127710.1.1040933442]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Stocking points' ] }
                    Component MenuFIlterByPeriodsAttribute { #keys: '[131438.0.418831676]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Periods' ] }
                  ]
                  Properties:
                  [
                    Image: 'FUNNEL'
                    Text: 'Filter'
                    ModeledStringList ChildOrdering
                    {
                      c: MenuFIlterByProducts
                      c: MenuFIlterByStockingPoints
                      c: MenuFIlterByPeriodsAttribute
                    }
                  ]
                }
              ]
              Properties:
              [
                ModeledStringList ChildOrdering
                {
                  c: MenuEditRepresesntation
                  c: menuSeparator279
                  c: MenuFilter
                  c: MenuSUbtotal
                }
              ]
            }
          ]
          Properties:
          [
            PosX: 136
            PosY: 181
          ]
        }
        Component menuMatrixEditorCell
        {
          #keys: '[127710.1.818312569]'
          BaseType: 'popupMatrixEditor'
          Children:
          [
            Component PopupParent id:PopupParent_1
            {
              #keys: '[107036.0.311161801]'
              BaseType: 'PopupParent'
              IsDerived: true
              Children:
              [
                Component menuSeparator694 { #keys: '[127710.1.828509803]' BaseType: 'Menu' Properties: [ Separator: true ] }
                Component MenuSmartPlan { #keys: '[127710.1.829788744]' BaseType: 'Menu' Properties: [ Image: 'COMPONENT_GREEN' Shortcut: 'Alt+P' Text: 'Smart plan...' ] }
                Component MenuReset { #keys: '[127710.1.830274473]' BaseType: 'Menu' Properties: [ Image: 'trash' Shortcut: 'Del' Text: 'Reset' ] }
                Component MenuLock { #keys: '[121072.0.288277152]' BaseType: 'Menu' Properties: [ Image: 'LOCK' Shortcut: 'Alt+L' Text: 'Lock' ] }
                Component MenuUnlock { #keys: '[121072.0.288277402]' BaseType: 'Menu' Properties: [ Image: 'LOCK_OPEN' Shortcut: 'Alt+Ctrl+L' Text: 'Unlock' ] }
                Component menuSeparator852 { #keys: '[130238.0.374686170]' BaseType: 'Menu' Properties: [ Separator: true ] }
                Component MenuAdvance
                {
                  #keys: '[130238.0.374686506]'
                  BaseType: 'Menu'
                  Children:
                  [
                    Component MenuNewInventorySupply { #keys: '[130238.0.374687363]' BaseType: 'Menu' ViewSecurity: 'InventorySupplies' Properties: [ Image: 'CUBES_BLUE' Shortcut: 'Alt+Y' Text: 'New inventory supply...' ] }
                    Component MenuEditInventorySpecification { #keys: '[130238.0.374687782]' BaseType: 'Menu' ViewSecurity: 'InventorySpecifications' Properties: [ Image: 'AVERAGE' Shortcut: 'Alt+X' Text: 'Edit inventory specification...' ] }
                    Component MenuCreateSalesDemand { #keys: '[130238.0.374688159]' BaseType: 'Menu' Properties: [ Image: 'NOTE_NEW' Shortcut: 'Alt+S' Text: 'Create sales demand...' ] }
                    Component menuSeparator575 { #keys: '[130238.0.374688389]' BaseType: 'Menu' Properties: [ Separator: true ] }
                    Component MenuAllowNegativeInventory { #keys: '[130238.0.374915913]' BaseType: 'Menu' Properties: [ Image: 'CUBE_BLUE' Shortcut: 'Alt+N' Text: 'Allow negative inventory' ] }
                    Component MenuDisallowNegativeInventory { #keys: '[130238.0.374916245]' BaseType: 'Menu' Properties: [ Image: 'CUBE_YELLOW' Shortcut: 'Alt+Ctrl+N' Text: 'Disallow negative inventory' ] }
                    Component menuSeparator268 { #keys: '[130238.0.374916476]' BaseType: 'Menu' Properties: [ Separator: true ] }
                    Component MenuEditComment { #keys: '[133706.0.592791681]' BaseType: 'Menu' Properties: [ Image: 'TEXT_MARKED' Shortcut: 'Alt+E' Text: 'Edit not&e...' ] }
                    Component menuSeparator725 { #keys: '[133706.0.592792372]' BaseType: 'Menu' Properties: [ Separator: true ] }
                    Component MenuNewActual { #keys: '[136856.0.990456556]' BaseType: 'Menu' Properties: [ Image: 'SHAPE_CIRCLE' Shortcut: 'Alt+A' Text: 'New actual...' ] }
                  ]
                  Properties:
                  [
                    Text: 'Advanced'
                    ModeledStringList ChildOrdering
                    {
                      c: MenuNewInventorySupply
                      c: MenuNewActual
                      c: MenuEditInventorySpecification
                      c: menuSeparator575
                      c: MenuAllowNegativeInventory
                      c: MenuDisallowNegativeInventory
                      c: menuSeparator268
                      c: MenuEditComment
                      c: menuSeparator725
                      c: MenuCreateSalesDemand
                    }
                  ]
                }
                Component MenuSmartPlanRow { #keys: '[130238.0.384087853]' BaseType: 'Menu' Properties: [ Image: 'COMPONENTS' Shortcut: 'Alt+Ctrl+P' Text: 'Smart plan row...' ] }
                Component MenuLegend { #keys: '[130076.0.811622717]' BaseType: 'Menu' Properties: [ Image: 'COLORS' Text: 'Legend...' ] }
                Component MenuActions
                {
                  #keys: '[107054.0.263260024]'
                  BaseType: 'MenuActions'
                  IsDerived: true
                  Properties:
                  [
                    ModeledStringList ChildOrdering
                    {
                      c: menuExportList
                      c: MenuCopy
                      c: MenuPaste
                      c: menuSeparator_1
                      c: MenuConfigureMatrixEditor
                      c: MenuChangeAttribute
                      c: MenuEditRepresentation
                    }
                  ]
                }
              ]
              Properties:
              [
                ModeledStringList ChildOrdering
                {
                  c: MenuActions
                  c: Menu
                  c: menuSeparator694
                  c: MenuSmartPlan
                  c: MenuSmartPlanRow
                  c: MenuLock
                  c: MenuUnlock
                  c: MenuReset
                  c: menuSeparator852
                  c: MenuAdvance
                  c: MenuLegend
                }
              ]
            }
          ]
          Properties:
          [
            PosX: 53
            PosY: 175
          ]
        }
        Component GUIDataExtractor
        {
          #keys: '[127710.1.818312574]'
          BaseType: 'GUIDataExtractor'
          Properties:
          [
            DataSet: 'MacroPlan'
            DataType: 'MacroPlan'
            FixedFilter: 'object.ProductInStockingPoint_MP().IsUsed()'
            PosX: 5
            PosY: 30
            Transformation: 'Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod'
          ]
        }
        Component popupScaleView
        {
          #keys: '[127710.1.818316484]'
          BaseType: 'popupScaleView'
          Children:
          [
            Component PopupParent id:PopupParent_2
            {
              #keys: '[107036.0.337329115]'
              BaseType: 'PopupParent'
              IsDerived: true
              Children:
              [
                Component MenuSubtotal
                {
                  #keys: '[107036.0.2002902351]'
                  BaseType: 'MenuSubtotal'
                  IsDerived: true
                  Children:
                  [
                    Component MenuCount id:MenuCount_1 { #keys: '[107036.0.2002903591]' BaseType: 'MenuCount' IsDerived: true }
                    Component MenuSum id:MenuSum_1 { #keys: '[107036.0.2002904543]' BaseType: 'MenuSum' IsDerived: true }
                    Component MenuAverage id:MenuAverage_1 { #keys: '[107036.0.2002905513]' BaseType: 'MenuAverage' IsDerived: true }
                    Component MenuStdDev id:MenuStdDev_1 { #keys: '[107036.0.2002908342]' BaseType: 'MenuStdDev' IsDerived: true }
                    Component MenuRemoveSubtotal id:MenuRemoveSubtotal_1 { #keys: '[107036.0.2004963099]' BaseType: 'MenuRemoveSubtotal' IsDerived: true }
                  ]
                  Properties:
                  [
                    ModeledStringList ChildOrdering
                    {
                      c: MenuCount_1
                      c: MenuSum_1
                      c: MenuAverage_1
                      c: MenuMin
                      c: MenuMax
                      c: MenuStdDev_1
                      c: Menu_1
                      c: MenuRemoveSubtotal_1
                    }
                  ]
                }
              ]
            }
          ]
          Properties:
          [
            PosX: -2
            PosY: -1
          ]
        }
        Component MatrixEditorRows
        {
          #keys: '[127710.1.819572710]'
          BaseType: 'GUIScaleView'
          Children:
          [
            Component GUIDataExtractorMatrixRow
            {
              #keys: '[127710.1.819572711]'
              BaseType: 'GUIDataExtractor'
              Properties:
              [
                Component: 'DataHolderUsedPISP'
                DataType: 'structured[ProductInStockingPoint_MP]'
                PosX: 5
                PosY: 30
                Transformation: 'Elements'
              ]
            }
            Component UserConfigurableInformationPISP
            {
              #keys: '[127710.1.820300549]'
              BaseType: 'UserConfigurableInformation'
              Properties:
              [
                Identification: 'Row: Product in stocking point'
                ObjectText: 'VALUE( object.IndentationSymbol() ) VALUE( object.Name() )'
                ObjectType: 'ProductInStockingPoint_MP'
                PosX: 57
                PosY: 82
                TooltipText: 'Tooltip test 123'
              ]
            }
          ]
          Properties:
          [
            PosX: 5
            PosY: 70
            SortCriteria: "datamember:'Product_MP.DisplayIndex';datamember:'Name'"
            ModeledStringList ChildOrdering
            {
              c: GUIDataExtractorMatrixRow
              c: UserConfigurableInformationPISP
            }
          ]
        }
        Component RowViewContextMenu
        {
          #keys: '[127710.1.819572712]'
          BaseType: 'popupScaleView'
          Children:
          [
            Component PopupParent id:PopupParent_4
            {
              #keys: '[107036.0.337329115]'
              BaseType: 'PopupParent'
              IsDerived: true
              Children:
              [
                Component MenuSort id:MenuSort_2 { #keys: '[107036.0.337333420]' BaseType: 'MenuSort' IsDerived: true Properties: [ Text: '&Sort rows...' ] }
                Component MenuSubtotal id:MenuSubtotal_2
                {
                  #keys: '[107036.0.2002902351]'
                  BaseType: 'MenuSubtotal'
                  IsDerived: true
                  Children:
                  [
                    Component MenuCount id:MenuCount_3 { #keys: '[107036.0.2002903591]' BaseType: 'MenuCount' IsDerived: true }
                    Component MenuSum id:MenuSum_3 { #keys: '[107036.0.2002904543]' BaseType: 'MenuSum' IsDerived: true }
                    Component MenuAverage id:MenuAverage_3 { #keys: '[107036.0.2002905513]' BaseType: 'MenuAverage' IsDerived: true }
                    Component MenuMin id:MenuMin_2 { #keys: '[107036.0.2002906456]' BaseType: 'MenuMin' IsDerived: true }
                    Component MenuMax id:MenuMax_2 { #keys: '[107036.0.2002907419]' BaseType: 'MenuMax' IsDerived: true }
                    Component MenuStdDev id:MenuStdDev_3 { #keys: '[107036.0.2002908342]' BaseType: 'MenuStdDev' IsDerived: true }
                    Component MenuRemoveSubtotal id:MenuRemoveSubtotal_3 { #keys: '[107036.0.2004963099]' BaseType: 'MenuRemoveSubtotal' IsDerived: true }
                  ]
                  Properties:
                  [
                    ModeledStringList ChildOrdering
                    {
                      c: MenuCount_3
                      c: MenuSum_3
                      c: MenuAverage_3
                      c: MenuMin_2
                      c: MenuMax_2
                      c: MenuStdDev_3
                      c: Menu_2
                      c: MenuRemoveSubtotal_3
                    }
                  ]
                }
                Component MenuFilter438
                {
                  #keys: '[127710.1.1040931729]'
                  BaseType: 'Menu'
                  Children:
                  [
                    Component MenuFIlterByProducts id:MenuFIlterByProducts_539 { #keys: '[127710.1.1040931730]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Products' ] }
                    Component MenuFIlterByStockingPoints id:MenuFIlterByStockingPoints_799 { #keys: '[127710.1.1040931731]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Stocking points' ] }
                    Component MenuFIlterByPeriods { #keys: '[131438.0.418825031]' BaseType: 'Menu' Properties: [ Checked: true Checkmark: true Text: 'Periods' ] }
                  ]
                  Properties:
                  [
                    Image: 'FUNNEL'
                    Text: 'Filter'
                    ModeledStringList ChildOrdering
                    {
                      c: MenuFIlterByProducts_539
                      c: MenuFIlterByStockingPoints_799
                      c: MenuFIlterByPeriods
                    }
                  ]
                }
                Component MenuLegend393 { #keys: '[127238.0.1917278610]' BaseType: 'Menu' Properties: [ Image: 'COLORS' Text: 'Legend...' ] }
                Component menuSeparator464 { #keys: '[127238.0.1917278685]' BaseType: 'Menu' Properties: [ Separator: true ] }
              ]
              Properties:
              [
                ModeledStringList ChildOrdering
                {
                  c: MenuFilter438
                  c: MenuSubtotal_2
                  c: MenuSort_2
                  c: menuSeparator464
                  c: MenuLegend393
                }
              ]
            }
          ]
          Properties:
          [
            PosX: 4
            PosY: 104
          ]
        }
        Component MatrixEditorColumns
        {
          #keys: '[127710.1.819572713]'
          BaseType: 'GUIScaleView'
          Children:
          [
            Component GUIDataExtractorMatrixColumn
            {
              #keys: '[127710.1.819572715]'
              BaseType: 'GUIDataExtractor'
              Properties:
              [
                Component: 'DataHolderActivePeriods'
                DataType: 'structured[Period_MP]'
                PosX: 5
                PosY: 30
                Transformation: 'Elements'
              ]
            }
            Component UserConfigurableInformationPeriod
            {
              #keys: '[127710.1.820829335]'
              BaseType: 'UserConfigurableInformation'
              Properties:
              [
                Identification: 'Column: Period'
                ObjectType: 'Period_MP'
                PosX: 55
                PosY: 57
                TooltipText: 'Tooltip test 123'
              ]
            }
          ]
          Properties:
          [
            PosX: 40
            PosY: 70
            SortCriteria: "datamember:'StartDate'"
            ModeledStringList ChildOrdering
            {
              c: GUIDataExtractorMatrixColumn
              c: UserConfigurableInformationPeriod
            }
          ]
        }
        Component ColumnViewContextMenu
        {
          #keys: '[127710.1.819572714]'
          BaseType: 'popupScaleView'
          Children:
          [
            Component PopupParent id:PopupParent_5
            {
              #keys: '[107036.0.337329115]'
              BaseType: 'PopupParent'
              IsDerived: true
              Children:
              [
                Component MenuSort id:MenuSort_3 { #keys: '[107036.0.337333420]' BaseType: 'MenuSort' IsDerived: true Properties: [ Text: '&Sort columns...' ] }
                Component MenuSubtotal id:MenuSubtotal_3
                {
                  #keys: '[107036.0.2002902351]'
                  BaseType: 'MenuSubtotal'
                  IsDerived: true
                  Children:
                  [
                    Component MenuCount id:MenuCount_4 { #keys: '[107036.0.2002903591]' BaseType: 'MenuCount' IsDerived: true }
                    Component MenuSum id:MenuSum_4 { #keys: '[107036.0.2002904543]' BaseType: 'MenuSum' IsDerived: true }
                    Component MenuAverage id:MenuAverage_4 { #keys: '[107036.0.2002905513]' BaseType: 'MenuAverage' IsDerived: true }
                    Component MenuMin id:MenuMin_3 { #keys: '[107036.0.2002906456]' BaseType: 'MenuMin' IsDerived: true }
                    Component MenuMax id:MenuMax_3 { #keys: '[107036.0.2002907419]' BaseType: 'MenuMax' IsDerived: true }
                    Component MenuStdDev id:MenuStdDev_4 { #keys: '[107036.0.2002908342]' BaseType: 'MenuStdDev' IsDerived: true }
                    Component MenuRemoveSubtotal id:MenuRemoveSubtotal_4 { #keys: '[107036.0.2004963099]' BaseType: 'MenuRemoveSubtotal' IsDerived: true }
                  ]
                  Properties:
                  [
                    ModeledStringList ChildOrdering
                    {
                      c: MenuCount_4
                      c: MenuSum_4
                      c: MenuAverage_4
                      c: MenuMin_3
                      c: MenuMax_3
                      c: MenuStdDev_4
                      c: Menu_3
                      c: MenuRemoveSubtotal_4
                    }
                  ]
                }
              ]
              Properties:
              [
                ModeledStringList ChildOrdering
                {
                  c: MenuSubtotal_3
                  c: MenuSort_3
                }
              ]
            }
          ]
          Properties:
          [
            PosX: 47
            PosY: 105
          ]
        }
        Component DataHolderActivePeriodsProductPlanningMatrix
        {
          #keys: '[130256.0.413604009]'
          BaseType: 'DataHolder'
          Databinding: 'structured[Period_MP]*'
          Children:
          [
            Component GUIDataExtractorPeriods
            {
              #keys: '[130256.0.413604010]'
              BaseType: 'GUIDataExtractor'
              Properties:
              [
                Component: 'DataHolderActivePeriods'
                DataType: 'structured[Period_MP]'
                PosX: 11
                PosY: 10
                Transformation: 'Elements'
              ]
            }
          ]
          Properties:
          [
            Description: 'Periods selected on Periods navigation panel'
            PosX: 583
            PosY: 31
          ]
        }
        Component GUITimerMoveToStartOfPlanning
        {
          #keys: '[130256.0.413964179]'
          BaseType: 'GUITimer'
          Properties:
          [
            Interval: 300
            PosX: 545
            PosY: 30
          ]
        }
        Component DataHolderProductPlanningMatrixSelection
        {
          #keys: '[132478.0.31031468]'
          BaseType: 'DataHolder'
          Databinding: 'structured[ProductInStockingPointInPeriod]*'
          Children:
          [
            Component GUIDataExtractor979
            {
              #keys: '[132478.0.31031721]'
              BaseType: 'GUIDataExtractor'
              Properties:
              [
                Component: 'MatrixEditorProductPlanning'
                DataType: 'ProductInStockingPointInPeriod'
                PosX: 11
                PosY: 14
              ]
            }
          ]
          Properties:
          [
            PosX: 294
            PosY: 75
            ShowName: true
          ]
        }
        Component UserConfigurableInformationPISPIP
        {
          #keys: '[132448.0.676875063]'
          BaseType: 'UserConfigurableInformation'
          Properties:
          [
            Identification: 'Cell: PISPIP'
            ObjectType: 'ProductInStockingPointInPeriod'
            PosX: 54
            PosY: 142
            Precondition:
            [*
              // Workaround for generating binding to make matrix update cells when the attributes on which color depends changes.
              (   true
              or  object.HasUserCreatedSupply()
              or  object.HasTotalSupplyUser()
              or  object.HasProductionSupply()
              or  object.ProductInStockingPoint_MP().IsNegativeInventoryAllowed()
              or  object.HasFulfilledDependentDemand() 
              or  object.GetHasMisMatchAvailableUserSupply()
              or  object.HasFulfilledSalesDemand()
              )
            *]
            TooltipText:
            [*
              <table>
              <td><font color="#0000FF"><b>SYNONYM(object.InventoryLevelEnd())</b></font></td>
              <td><font color="#0000FF">VALUE( MacroPlan::GetDisplayValue( object.InventoryLevelEnd() ) )</font></td>
              <td></td>
              <td><b>Inventory holding cost </b></td>
              <td>VALUE(object.TotalBaseInventoryHoldingCost())</td>
              <td>VALUE( ifexpr( object.IsLeaf(), '[' + object.TotalBaseInventoryHoldingCostPerQuantity().Format('N(Dec(2))') + object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol()  + '/' + object.ProductInStockingPoint_MP().UnitOfMeasure_MP().Name() + ']', '' ) ) </td>
              </tr>
              <tr><td>SYNONYM(object.StockLevelInDays())</td><td>VALUE(object.StockLevelInDays())</td></tr>
              <tr>
              <td><font color="#088A08"><b>Total supply </b></font></td>
              <td><font color="#088A08">VALUE(object.SupplyQuantity())</font></td>
              <td></td>
              <td><font color="#FF8000"><b>Total demand </b><font></td>
              <td><font color="#FF8000">VALUE(object.GetDemandQuantity())</font></td>
              </tr>
              <br>
              <tr>
              <td><b>Inventory start </b></td>
              <td>VALUE( guard( MacroPlan::GetDisplayValue( object.GetDisplayInventoryStart() ), 0.0 ) )</td>
              <td></td>
              <td><b>Sales demand </b></td>
              <td>VALUE(object.SalesDemandQuantity())</td>
              </tr>
              
              <tr>
              <td><b>New supply </b></td>
              <td>VALUE(object.NewSupplyQuantity())</td>
              <td></td>
              <td><b>Dependent demand </b></td>
              <td>VALUE(object.DependentDemandQuantity())</td>
              </tr>
              
              <tr>
              <td><b>Inventory supply </b></td>
              <td>VALUE(object.InventorySupplyQuantity())</td>
              <td></td>
              <td><b>VALUE( ifexpr( object.TargetInventoryLevel() >= object.MinInventoryLevel() , 'Target inventory level', 'Minimum inventory level' ) ) </b></td>
              <td>VALUE( ifexpr( object.TargetInventoryLevel() >= object.MinInventoryLevel() , object.TargetInventoryLevel(), object.MinInventoryLevel() ) )</td>
              </tr>
              </table>
              VALUE(object.DisplayShelfLife() )
            *]
          ]
        }
        Component DataHolderUsedPISP
        {
          #keys: '[127238.1.1586288534]'
          BaseType: 'DataHolder'
          Databinding: 'structured[ProductInStockingPoint_MP]*'
          Children:
          [
            Component GUIDataExtractor983
            {
              #keys: '[127238.1.1586288967]'
              BaseType: 'GUIDataExtractor'
              Properties:
              [
                Component: 'DataHolderChildPISPs'
                DataType: 'structured[ProductInStockingPoint_MP]'
                FixedFilter: 'object.IsUsed()'
                PosX: 41
                PosY: 63
                Transformation: 'Elements'
              ]
            }
          ]
          Properties:
          [
            PosX: 217
            PosY: 45
          ]
        }
      ]
      Properties:
      [
        AllowMultipleAttributes: true
        AllowUserAttributeChange: true
        AttributeContextMenu: 'AttributeContextMenu'
        Attributes: 'InventoryLevelStart;DependentDemandAndSalesDemandQuantity;InventorySupplyAndNewSupplyQuantity;InventoryLevelEnd;TargetInventoryLevel;StockLevelInDays'
        Border: true
        ColumnHeaderContextMenu: 'ColumnViewContextMenu'
        ColumnHeaderPath: 'Start'
        ColumnView: 'MatrixEditorColumns'
        ColumnViewRelation: 'Period_MP'
        ContextMenu: 'menuMatrixEditorCell'
        DoubleBuffering: false
        RowHeaderContextMenu: 'RowViewContextMenu'
        RowHeaderPath: 'Name'
        RowView: 'MatrixEditorRows'
        RowViewRelation: 'ProductInStockingPoint_MP'
        ModeledStringList ChildOrdering
        {
          c: AttributeContextMenu
          c: menuMatrixEditorCell
          c: GUIDataExtractor
          c: popupScaleView
          c: MatrixEditorRows
          c: RowViewContextMenu
          c: MatrixEditorColumns
          c: ColumnViewContextMenu
          c: DataHolderActivePeriodsProductPlanningMatrix
          c: GUITimerMoveToStartOfPlanning
          c: DataHolderProductPlanningMatrixSelection
          c: UserConfigurableInformationPISPIP
          c: DataHolderUsedPISP
        }
      ]
      ResponseDefinitions:
      [
        DelegatedResponseDefinition OnClick id:Responsedef_FormProductPlanningMatrix_MatrixEditor_Menu_OnClick
        {
          #keys: '[127710.1.818312570]'
          Initiator: 'Menu'
          IsInherited: false
          ResponseType: 'OnClick'
          Arguments:
          [
            ResponseDefinitionArgument cell
            {
              #keys: '[127710.1.818312571]'
              Binding: 'this.Selection()'
            }
          ]
        }
        DelegatedResponseDefinition OnClick id:Responsedef_FormProductPlanningMatrix_MatrixEditor_Menu_OnClick_19
        {
          #keys: '[127710.1.818312572]'
          Initiator: 'Menu'
          IsInherited: false
          ResponseType: 'OnClick'
          Arguments:
          [
            ResponseDefinitionArgument objects
            {
              #keys: '[127710.1.818312573]'
              Binding: 'this.SelectionObjects()'
            }
          ]
        }
        ResponseDefinition OnStartEdit id:Responsedef_FormProductPlanningMatrix_MatrixEditorProductPlanning_OnStartEdit
        {
          #keys: '[132448.0.53409359]'
          IsInherited: false
          ResponseType: 'OnStartEdit'
          Arguments:
          [
            ResponseDefinitionArgument newvalue
            {
              #keys: '[132448.0.53409652]'
              Binding: 'this.Selection()'
            }
          ]
        }
      ]
    }
    #child: StringSelectionProductLevel
    Component CheckBoxFilterByProductLevel
    {
      #keys: '[127710.1.821866707]'
      BaseType: 'CheckBox'
      Properties:
      [
        HasMemory: 'ViewsAndSettings'
        Text: 'Product level'
      ]
    }
    Component DataHolderMatrixFrom
    {
      #keys: '[127710.1.837273364]'
      BaseType: 'DataHolder'
      Databinding: 'Period_MP'
      Properties:
      [
        PosX: 721
      ]
    }
    Component DataHolderMatrixTo
    {
      #keys: '[127710.1.837275943]'
      BaseType: 'DataHolder'
      Databinding: 'Period_MP'
      Properties:
      [
        PosX: 696
        PosY: 1
      ]
    }
    Component ButtonShowStartOfPlanningHorizon
    {
      #keys: '[127710.1.845269079]'
      BaseType: 'Button'
      Properties:
      [
        Image: 'CLOCK'
        Tooltip: 'Go to planning start'
      ]
    }
    Component ImageFilterBy889
    {
      #keys: '[127710.1.1041562540]'
      BaseType: 'Image'
      Properties:
      [
        Image: 'FUNNEL'
        Tooltip: 'Filter the Product planning matrix based on the selection in the navigation panel.'
        Transparent: true
      ]
    }
    Component ImageWarningSizing
    {
      #keys: '[136770.0.49615375]'
      BaseType: 'Image'
      Properties:
      [
        Image: 'WARNING'
        Tooltip: 'This form is read-only because the size of the dataset is violating the sizing parameters.<br>Please reduce the size of the dataset to regain functionality.<br>The sizing parameters can be found in Edit > Configuration > Sizing parameters.'
        Transparent: true
      ]
    }
  ]
  Properties:
  [
    Height: 475
    Image: 'LINE-CHART'
    IncludeInView: true
    Title: 'Product planning matrix'
    Width: 1012
    ModeledStringList ChildOrdering
    {
      c: ButtonShowStartOfPlanningHorizon
      c: CheckBoxFilterByProductLevel
      c: DataHolderMatrixFrom
      c: StringSelectionProductLevel
      c: DataHolderMatrixTo
      c: MatrixEditorProductPlanning
      c: ImageFilterBy889
      c: ImageWarningSizing
    }
  ]
}
