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: [*
SYNONYM(object.InventoryLevelEnd()) | VALUE( MacroPlan::GetDisplayValue( object.InventoryLevelEnd() ) ) | Inventory holding cost | VALUE(object.TotalBaseInventoryHoldingCost()) | VALUE( ifexpr( object.IsLeaf(), '[' + object.TotalBaseInventoryHoldingCostPerQuantity().Format('N(Dec(2))') + object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol() + '/' + object.ProductInStockingPoint_MP().UnitOfMeasure_MP().Name() + ']', '' ) ) |
SYNONYM(object.StockLevelInDays()) | VALUE(object.StockLevelInDays()) | |||
Total supply | VALUE(object.SupplyQuantity()) | Total demand | VALUE(object.GetDemandQuantity()) | |
Inventory start | VALUE( guard( MacroPlan::GetDisplayValue( object.GetDisplayInventoryStart() ), 0.0 ) ) | Sales demand | VALUE(object.SalesDemandQuantity()) | |
New supply | VALUE(object.NewSupplyQuantity()) | Dependent demand | VALUE(object.DependentDemandQuantity()) | |
Inventory supply | VALUE(object.InventorySupplyQuantity()) | VALUE( ifexpr( object.TargetInventoryLevel() >= object.MinInventoryLevel() , 'Target inventory level', 'Minimum inventory level' ) ) | VALUE( ifexpr( object.TargetInventoryLevel() >= object.MinInventoryLevel() , object.TargetInventoryLevel(), object.MinInventoryLevel() ) ) |