From a3307ab5e8551cc5fcc6c994a10ff19a04729d12 Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期二, 05 十一月 2024 15:46:43 +0800
Subject: [PATCH] 修复一些bug

---
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def                                         |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhCheckPowers_OnDataChanged.def                                  |   26 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_pMQBMLB#653.def                                                                     |   52 +
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def                                                           |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhPowers_OnCreated.def                                  |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListMQBMLB#670.def                                                |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhGenerations_OnCreated.def                                 |   17 
 _Main/BL/Type_LocalValue/Attribute_IsCheck.qbl                                                                                              |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pMQBMLB#653.def                                                        |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def                                      |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pProductAttributeFilter#697.def                                        |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def                              |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def               |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu687#1.def                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges#701.def                                                |    1 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhGenerations_OnCreated.def                                          |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage245#1.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pPower#969.def                                                         |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListMQBMLB#670.def                                                     |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListGenerations#61.def                                            |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def                      |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListMQBMLB#670.def                                                                  |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListGenerations#61.def                                                 |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def                                           |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhCheckGenerations_OnDataChanged.def                        |   26 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage963#1.def                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pProductAttributeFilter#697.def                                   |   18 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu319#1.def                                                            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu623.def                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu687#1.def                                                            |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProducts_OnDataChanged.def                            |    4 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage519#1.def                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage963.def                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhGenerations_OnCreated.def                             |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage245#1.def                                        |   10 
 _Main/BL/Type_LocalValue/StaticMethod_CreateProduct_MPAttribute.qbl                                                                         |   37 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def                               |    1 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_pPower#969.def                                                                      |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage963#1.def                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhPowers_OnCreated.def                                           |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def                                     |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pPower.def                                                             |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def                                                   |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu623#1.def                                                            |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage519#1.def                                        |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage519.def                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pProductAttributeFilter.def                                            |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhCheckMQBMLB_OnDataChanged.def                                 |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegments_OnDataChanged.def |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pPower#969.def                                                    |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def                        |   26 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def                                                   |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage519#1.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu623#1.def                                               |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListPowers#667.def                                                                  |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu319#1.def                                               |   10 
 _Main/BL/Relations/Relation_LocalValue_RecycleBin_RecycleBin_LocalValue.qbl                                                                 |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pMQBMLB#653.def                                                   |   52 +
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_pGeneration#100.def                                                                 |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def                             |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def                                                    |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListPowers#667.def                                                |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon#805.def                                                    |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListGenerations#61.def                                                              |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def                    |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def                                              |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu319#1.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def                                          |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu319.def                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListPowers.def                                                         |   41 +
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhPowers_OnCreated.def                                                    |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhPowers_OnCreated.def                                       |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pGeneration.def                                                        |   52 +
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_pProductAttributeFilter#697.def                                                     |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage963#1.def                                             |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pMQBMLB.def                                                            |   52 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu687.def                                                 |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu623#1.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def                                 |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage245.def                                               |   10 
 _Main/BL/Type_LocalValue/_ROOT_Type_LocalValue.qbl                                                                                          |    9 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProducts_OnDataChanged.def      |    4 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage245#1.def                                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhGenerations_OnCreated.def                        |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def                         |   26 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon#799.def                                                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def                                 |   26 
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhCheckPowers_OnDataChanged.def                                           |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListMQBMLB#327.def                                                     |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhMQBMLB_OnCreated.def                                          |   17 
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pGeneration#100.def                                               |   52 +
 _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegments_OnDataChanged.def                       |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListGenerations.def                                                    |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu687#1.def                                          |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def                                         |    1 
 _Main/BL/Type_LocalValue/Attribute_StringValue.qbl                                                                                          |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListPowers#667.def                                                     |   41 +
 _Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pGeneration#100.def                                                    |   52 +
 98 files changed, 2,056 insertions(+), 25 deletions(-)

diff --git a/_Main/BL/Relations/Relation_LocalValue_RecycleBin_RecycleBin_LocalValue.qbl b/_Main/BL/Relations/Relation_LocalValue_RecycleBin_RecycleBin_LocalValue.qbl
new file mode 100644
index 0000000..ed26b88
--- /dev/null
+++ b/_Main/BL/Relations/Relation_LocalValue_RecycleBin_RecycleBin_LocalValue.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation LocalValue_RecycleBin_RecycleBin_LocalValue
+{
+  #keys: '1[414996.1.191854794]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide RecycleBin
+  {
+    #keys: '3[414996.1.191854796][414996.1.191854795][414996.1.191854797]'
+    Cardinality: '0to1'
+    ObjectDefinition: LocalValue
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide LocalValue
+  {
+    #keys: '3[414996.1.191854799][414996.1.191854798][414996.1.191854800]'
+    Cardinality: '1toN'
+    ObjectDefinition: RecycleBin
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Type_LocalValue/Attribute_IsCheck.qbl b/_Main/BL/Type_LocalValue/Attribute_IsCheck.qbl
new file mode 100644
index 0000000..56e37ca
--- /dev/null
+++ b/_Main/BL/Type_LocalValue/Attribute_IsCheck.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsCheck
+{
+  #keys: '3[414996.1.191830948][414996.1.191830947][414996.1.191830949]'
+  ValueType: Boolean
+}
diff --git a/_Main/BL/Type_LocalValue/Attribute_StringValue.qbl b/_Main/BL/Type_LocalValue/Attribute_StringValue.qbl
new file mode 100644
index 0000000..d59e655
--- /dev/null
+++ b/_Main/BL/Type_LocalValue/Attribute_StringValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StringValue
+{
+  #keys: '3[414996.1.191854808][414996.1.191854807][414996.1.191854809]'
+  ValueType: String
+}
diff --git a/_Main/BL/Type_LocalValue/StaticMethod_CreateProduct_MPAttribute.qbl b/_Main/BL/Type_LocalValue/StaticMethod_CreateProduct_MPAttribute.qbl
new file mode 100644
index 0000000..e12a176
--- /dev/null
+++ b/_Main/BL/Type_LocalValue/StaticMethod_CreateProduct_MPAttribute.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateProduct_MPAttribute (
+  RecycleBin owner,
+  const MacroPlan macroPlan,
+  String attributeName
+) as owning LocalValues
+{
+  TextBody:
+  [*
+    // Akari Nov-5-2024 (created)
+    result := construct( LocalValues );
+    if( attributeName.ToLower() = "generation" ){
+      generations := selectuniquevalues( macroPlan,Product_MP,product,product.Generation() );
+      traverse( generations,Elements,generation ){
+        localValue := owner.LocalValue( relnew,StringValue := generation );
+        result.Add( localValue );
+      }
+    }
+    if( attributeName.ToLower() = "power" ){
+      powers := selectuniquevalues( macroPlan,Product_MP,product,product.Power() );
+      traverse( powers,Elements,power ){
+        localValue := owner.LocalValue( relnew,StringValue := power );
+        result.Add( localValue );
+      }
+    }
+    if( attributeName.ToLower() = "mqbmlb" ){
+      mqbmlbs := selectuniquevalues( macroPlan,Product_MP,product,product.MQBMLB() );
+      traverse( mqbmlbs,Elements,mqbmlb ){
+        localValue := owner.LocalValue( relnew,StringValue := mqbmlb );
+        result.Add( localValue );
+      }
+    }
+    
+    return &result;
+  *]
+}
diff --git a/_Main/BL/Type_LocalValue/_ROOT_Type_LocalValue.qbl b/_Main/BL/Type_LocalValue/_ROOT_Type_LocalValue.qbl
new file mode 100644
index 0000000..c4f4d88
--- /dev/null
+++ b/_Main/BL/Type_LocalValue/_ROOT_Type_LocalValue.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LocalValue
+{
+  #keys: '5[414996.1.191854791][414996.1.191854789][0.0.0][414996.1.191854790][414996.1.191854792]'
+  BaseType: Object
+  StructuredName: 'LocalValues'
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListGenerations\04361.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListGenerations\04361.def"
new file mode 100644
index 0000000..57e38d0
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListGenerations\04361.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListGenerations id:ListGenerations_61
+{
+  #keys: '[414996.1.191962761]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor989
+    {
+      #keys: '[414996.1.191962762]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhGenerations'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage963_1
+    Component DataSetLevel191
+    {
+      #keys: '[414996.1.191962764]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu687'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListMQBMLB\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListMQBMLB\043670.def"
new file mode 100644
index 0000000..6e22541
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListMQBMLB\043670.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMQBMLB id:ListMQBMLB_670
+{
+  #keys: '[414996.1.191962779]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor472
+    {
+      #keys: '[414996.1.191962780]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhMQBMLB'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage519_1
+    Component DataSetLevel527
+    {
+      #keys: '[414996.1.191962782]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu319_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu319'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListPowers\043667.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListPowers\043667.def"
new file mode 100644
index 0000000..504474f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_ListPowers\043667.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPowers id:ListPowers_667
+{
+  #keys: '[414996.1.191962770]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor671
+    {
+      #keys: '[414996.1.191962771]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhPowers'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage245_1
+    Component DataSetLevel995
+    {
+      #keys: '[414996.1.191962773]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def
index 1f3756d..3f5965c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def
@@ -15,14 +15,14 @@
         Taborder: 1
       ]
     }
-    Component dhCheckedProduct
+    Component dhCheckedProducts
     {
       #keys: '[412672.1.78210542]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[Product_MP]*'
       Children:
       [
-        Component deCheckedProduct
+        Component deCheckedProducts
         {
           #keys: '[412672.1.78210543]'
           BaseType: 'WebDataExtractor'
@@ -50,14 +50,14 @@
         Taborder: 2
       ]
     }
-    Component dhCheckedSalesSegment
+    Component dhCheckedSalesSegments
     {
       #keys: '[412672.1.78210545]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[SalesSegment_MP]*'
       Children:
       [
-        Component deCheckedSalesSegment
+        Component deCheckedSalesSegments
         {
           #keys: '[412672.1.78210546]'
           BaseType: 'WebDataExtractor'
@@ -114,6 +114,6 @@
   ]
   Properties:
   [
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon\043799.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon\043799.def"
index 64fd9b1..903b349 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon\043799.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelRibbon\043799.def"
@@ -11,6 +11,6 @@
   Properties:
   [
     FixedSize: true
-    Taborder: 0
+    Taborder: 1
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage245\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage245\0431.def"
new file mode 100644
index 0000000..2beb00f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage245\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage245 id:listActionBarPage245_1
+{
+  #keys: '[414996.1.191962772]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage519\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage519\0431.def"
new file mode 100644
index 0000000..9c8196a
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage519\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage519 id:listActionBarPage519_1
+{
+  #keys: '[414996.1.191962781]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage963\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage963\0431.def"
new file mode 100644
index 0000000..17b93f9
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listActionBarPage963\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963 id:listActionBarPage963_1
+{
+  #keys: '[414996.1.191962763]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu319\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu319\0431.def"
new file mode 100644
index 0000000..89a49ad
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu319\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu319 id:listContextMenu319_1
+{
+  #keys: '[414996.1.191962783]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu623\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu623\0431.def"
new file mode 100644
index 0000000..607d7db
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu623\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623 id:listContextMenu623_1
+{
+  #keys: '[414996.1.191962774]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu687\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu687\0431.def"
new file mode 100644
index 0000000..600931c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_listContextMenu687\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687 id:listContextMenu687_1
+{
+  #keys: '[414996.1.191962765]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pGeneration\043100.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pGeneration\043100.def"
new file mode 100644
index 0000000..397397e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pGeneration\043100.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pGeneration id:pGeneration_100
+{
+  #keys: '[414996.1.191962760]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListGenerations_61
+    Component dhGenerations
+    {
+      #keys: '[414996.1.191962766]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckGenerations
+    {
+      #keys: '[414996.1.191962767]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckGenerations
+        {
+          #keys: '[414996.1.191962768]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhGenerations'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 0
+    Title: 'Generation'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pMQBMLB\043653.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pMQBMLB\043653.def"
new file mode 100644
index 0000000..7a42124
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pMQBMLB\043653.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pMQBMLB id:pMQBMLB_653
+{
+  #keys: '[414996.1.191962778]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListMQBMLB_670
+    Component dhMQBMLB
+    {
+      #keys: '[414996.1.191962784]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckMQBMLB
+    {
+      #keys: '[414996.1.191962785]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckMQBMLB
+        {
+          #keys: '[414996.1.191962786]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhMQBMLB'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 2
+    Title: 'MQB/MLB'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pPower\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pPower\043969.def"
new file mode 100644
index 0000000..bd0332c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pPower\043969.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pPower id:pPower_969
+{
+  #keys: '[414996.1.191962769]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListPowers_667
+    Component dhPowers
+    {
+      #keys: '[414996.1.191962775]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckPowers
+    {
+      #keys: '[414996.1.191962776]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckPowers
+        {
+          #keys: '[414996.1.191962777]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhPowers'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 1
+    Title: 'Power'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pProductAttributeFilter\043697.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pProductAttributeFilter\043697.def"
new file mode 100644
index 0000000..9ac1ebd
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/Component_pProductAttributeFilter\043697.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component pProductAttributeFilter id:pProductAttributeFilter_697
+{
+  #keys: '[414996.1.191962759]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pGeneration_100
+    #child: pPower_969
+    #child: pMQBMLB_653
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProducts_OnDataChanged.def
similarity index 85%
rename from _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProducts_OnDataChanged.def
index f1d9f33..9246aad 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedProducts_OnDataChanged.def
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
-#parent: PanelDemandComparison/dhCheckedProduct
-Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedProduct_OnDataChanged
+#parent: PanelDemandComparison/dhCheckedProducts
+Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedProducts_OnDataChanged
 {
   #keys: '[412672.1.78210527]'
   CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegments_OnDataChanged.def
similarity index 86%
rename from _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegments_OnDataChanged.def
index 08f0210..569f8fb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckedSalesSegments_OnDataChanged.def
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
-#parent: PanelDemandComparison/dhCheckedSalesSegment
-Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedSalesSegment_OnDataChanged
+#parent: PanelDemandComparison/dhCheckedSalesSegments
+Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckedSalesSegments_OnDataChanged
 {
   #keys: '[412672.1.78210525]'
   CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
new file mode 100644
index 0000000..c4a8009
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhCheckGenerations
+Response OnDataChanged () id:Response_pGeneration_100_dhCheckGenerations_OnDataChanged
+{
+  #keys: '[414996.1.191962753]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Generation()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhGenerations_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhGenerations_OnCreated.def
new file mode 100644
index 0000000..1412078
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pGeneration_100_dhGenerations_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhGenerations
+Response OnCreated () id:Response_pGeneration_100_dhGenerations_OnCreated
+{
+  #keys: '[414996.1.191962754]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
new file mode 100644
index 0000000..64154ea
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhCheckMQBMLB
+Response OnDataChanged () id:Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged
+{
+  #keys: '[414996.1.191962747]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.MQBMLB()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){ 
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
new file mode 100644
index 0000000..02efcd5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhMQBMLB
+Response OnCreated () id:Response_pMQBMLB_653_dhMQBMLB_OnCreated
+{
+  #keys: '[414996.1.191962748]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhCheckPowers_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhCheckPowers_OnDataChanged.def
new file mode 100644
index 0000000..116d183
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhCheckPowers_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhCheckPowers
+Response OnDataChanged () id:Response_pPower_969_dhCheckPowers_OnDataChanged
+{
+  #keys: '[414996.1.191962750]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Power()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhPowers_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhPowers_OnCreated.def
new file mode 100644
index 0000000..98bac93
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_Form701/Response_pPower_969_dhPowers_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhPowers
+Response OnCreated () id:Response_pPower_969_dhPowers_OnCreated
+{
+  #keys: '[414996.1.191962751]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges\043701.def" "b/_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges\043701.def"
index 9c19aa0..1165a2d 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges\043701.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Form701/_ROOT_Component_FormOfflinePlanChanges\043701.def"
@@ -9,6 +9,7 @@
   [
     #child: PanelRibbon_799
     #child: PanelDemandComparison
+    #child: pProductAttributeFilter_697
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListGenerations.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListGenerations.def
new file mode 100644
index 0000000..ba6ddfc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListGenerations.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListGenerations
+{
+  #keys: '[414996.1.190631965]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor989
+    {
+      #keys: '[414996.1.190631966]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhGenerations'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage963
+    Component DataSetLevel191
+    {
+      #keys: '[414996.1.190631971]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu687'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListMQBMLB\043327.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListMQBMLB\043327.def"
new file mode 100644
index 0000000..5fe67bb
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListMQBMLB\043327.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMQBMLB
+{
+  #keys: '[414996.1.190632131]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor472
+    {
+      #keys: '[414996.1.190632132]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhMQBMLB'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage519
+    Component DataSetLevel527
+    {
+      #keys: '[414996.1.190632137]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu319
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu319'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListPowers.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListPowers.def
new file mode 100644
index 0000000..14ac6b9
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_ListPowers.def
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPowers
+{
+  #keys: '[414996.1.190632049]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor671
+    {
+      #keys: '[414996.1.190632050]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhPowers'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage245
+    Component DataSetLevel995
+    {
+      #keys: '[414996.1.190632055]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
index fc6f66c..e58c679 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelAnnualPlan.def
@@ -89,6 +89,6 @@
   ]
   Properties:
   [
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def"
index ea992df..5947dc5 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_PanelRibbon\043805.def"
@@ -10,6 +10,6 @@
   Properties:
   [
     FixedSize: true
-    Taborder: 0
+    Taborder: 1
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage245.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage245.def
new file mode 100644
index 0000000..28dec89
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage245.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage245
+{
+  #keys: '[414996.1.190632052]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage519.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage519.def
new file mode 100644
index 0000000..8d2ef65
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage519.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage519
+{
+  #keys: '[414996.1.190632134]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage963.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage963.def
new file mode 100644
index 0000000..66c60f4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listActionBarPage963.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963
+{
+  #keys: '[414996.1.190631968]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu319.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu319.def
new file mode 100644
index 0000000..b216ce8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu319.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu319
+{
+  #keys: '[414996.1.190632139]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu623.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu623.def
new file mode 100644
index 0000000..f50e560
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu623.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623
+{
+  #keys: '[414996.1.190632057]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu687.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu687.def
new file mode 100644
index 0000000..0ef8113
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_listContextMenu687.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687
+{
+  #keys: '[414996.1.190631973]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pGeneration.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pGeneration.def
new file mode 100644
index 0000000..c440177
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pGeneration.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pGeneration
+{
+  #keys: '[414996.1.190631800]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dhGenerations
+    {
+      #keys: '[414996.1.190632215]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    #child: ListGenerations
+    Component dhCheckGenerations
+    {
+      #keys: '[414996.1.192863350]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckGenerations
+        {
+          #keys: '[414996.1.192863372]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhGenerations'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 0
+    Title: 'Generation'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pMQBMLB.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pMQBMLB.def
new file mode 100644
index 0000000..472b766
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pMQBMLB.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pMQBMLB
+{
+  #keys: '[414996.1.190631824]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dhMQBMLB
+    {
+      #keys: '[414996.1.190632452]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    #child: ListMQBMLB
+    Component dhCheckMQBMLB
+    {
+      #keys: '[414996.1.192863416]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckMQBMLB
+        {
+          #keys: '[414996.1.192863417]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhMQBMLB'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 2
+    Title: 'MQB/MLB'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pPower.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pPower.def
new file mode 100644
index 0000000..f6fdc01
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pPower.def
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pPower
+{
+  #keys: '[414996.1.190631812]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    Component dhPowers
+    {
+      #keys: '[414996.1.190632336]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    #child: ListPowers
+    Component dhCheckPowers
+    {
+      #keys: '[414996.1.192863404]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckPowers
+        {
+          #keys: '[414996.1.192863405]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhPowers'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 1
+    Title: 'Power'
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pProductAttributeFilter.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pProductAttributeFilter.def
new file mode 100644
index 0000000..2bd43ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Component_pProductAttributeFilter.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component pProductAttributeFilter
+{
+  #keys: '[414996.1.190631744]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pGeneration
+    #child: pPower
+    #child: pMQBMLB
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def
index 348b3a1..0391492 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_PanelAnnualPlan_dhCheckedProduct_OnDataChanged.def
@@ -11,7 +11,7 @@
     Body:
     [*
       if( this.Data().Size() <> 0 ){
-        dhFinelProduct.Data( this.Data().Copy() );
+        dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
       }else{
         dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhCheckGenerations_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhCheckGenerations_OnDataChanged.def
new file mode 100644
index 0000000..7ec5ac4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhCheckGenerations_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pGeneration/dhCheckGenerations
+Response OnDataChanged () id:Response_pGeneration_dhCheckGenerations_OnDataChanged
+{
+  #keys: '[414996.1.192863654]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Generation()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhGenerations_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhGenerations_OnCreated.def
new file mode 100644
index 0000000..00a870f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pGeneration_dhGenerations_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pGeneration/dhGenerations
+Response OnCreated () id:Response_pGeneration_dhGenerations_OnCreated
+{
+  #keys: '[414996.1.192824501]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhCheckMQBMLB_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhCheckMQBMLB_OnDataChanged.def
new file mode 100644
index 0000000..1102236
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhCheckMQBMLB_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pMQBMLB/dhCheckMQBMLB
+Response OnDataChanged () id:Response_pMQBMLB_dhCheckMQBMLB_OnDataChanged
+{
+  #keys: '[414996.1.191962173]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.MQBMLB()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhMQBMLB_OnCreated.def
new file mode 100644
index 0000000..b8f49aa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pMQBMLB_dhMQBMLB_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pMQBMLB/dhMQBMLB
+Response OnCreated () id:Response_pMQBMLB_dhMQBMLB_OnCreated
+{
+  #keys: '[414996.1.190691936]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhCheckPowers_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhCheckPowers_OnDataChanged.def
new file mode 100644
index 0000000..611553c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhCheckPowers_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pPower/dhCheckPowers
+Response OnDataChanged () id:Response_pPower_dhCheckPowers_OnDataChanged
+{
+  #keys: '[414996.1.191962161]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Power()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhPowers_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhPowers_OnCreated.def
new file mode 100644
index 0000000..a0a69c2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/Response_pPower_dhPowers_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pPower/dhPowers
+Response OnCreated () id:Response_pPower_dhPowers_OnCreated
+{
+  #keys: '[414996.1.192782879]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def
index d525bba..cfa5e4d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormAnnualPlanReport/_ROOT_Component_FormAnnualPlanReport.def
@@ -9,6 +9,7 @@
   [
     #child: PanelRibbon_805
     #child: PanelAnnualPlan
+    #child: pProductAttributeFilter
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListGenerations\04361.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListGenerations\04361.def"
new file mode 100644
index 0000000..b84571f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListGenerations\04361.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListGenerations id:ListGenerations_61
+{
+  #keys: '[414996.1.192703098]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor989
+    {
+      #keys: '[414996.1.192703099]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhGenerations'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage963_1
+    Component DataSetLevel191
+    {
+      #keys: '[414996.1.192703101]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu687'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListMQBMLB\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListMQBMLB\043670.def"
new file mode 100644
index 0000000..54e70ea
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListMQBMLB\043670.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMQBMLB id:ListMQBMLB_670
+{
+  #keys: '[414996.1.192703116]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor472
+    {
+      #keys: '[414996.1.192703117]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhMQBMLB'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage519_1
+    Component DataSetLevel527
+    {
+      #keys: '[414996.1.192703119]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu319_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu319'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListPowers\043667.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListPowers\043667.def"
new file mode 100644
index 0000000..9063a50
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_ListPowers\043667.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPowers id:ListPowers_667
+{
+  #keys: '[414996.1.192703107]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor671
+    {
+      #keys: '[414996.1.192703108]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhPowers'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage245_1
+    Component DataSetLevel995
+    {
+      #keys: '[414996.1.192703110]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
index e6b3648..7834816 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison.def
@@ -79,6 +79,6 @@
   ]
   Properties:
   [
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
index d5ae537..07a6ec9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelDemandComparison294.def
@@ -12,6 +12,6 @@
   Properties:
   [
     FixedSize: true
-    Taborder: 0
+    Taborder: 1
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage245\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage245\0431.def"
new file mode 100644
index 0000000..83890a6
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage245\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage245 id:listActionBarPage245_1
+{
+  #keys: '[414996.1.192703109]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage519\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage519\0431.def"
new file mode 100644
index 0000000..c10a2e3
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage519\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage519 id:listActionBarPage519_1
+{
+  #keys: '[414996.1.192703118]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage963\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage963\0431.def"
new file mode 100644
index 0000000..32a6d6e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listActionBarPage963\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963 id:listActionBarPage963_1
+{
+  #keys: '[414996.1.192703100]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu319\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu319\0431.def"
new file mode 100644
index 0000000..8122638
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu319\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu319 id:listContextMenu319_1
+{
+  #keys: '[414996.1.192703120]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu623\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu623\0431.def"
new file mode 100644
index 0000000..f9215a6
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu623\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623 id:listContextMenu623_1
+{
+  #keys: '[414996.1.192703111]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu687\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu687\0431.def"
new file mode 100644
index 0000000..df65dd0
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_listContextMenu687\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687 id:listContextMenu687_1
+{
+  #keys: '[414996.1.192703102]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pGeneration\043100.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pGeneration\043100.def"
new file mode 100644
index 0000000..33ec3f7
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pGeneration\043100.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pGeneration id:pGeneration_100
+{
+  #keys: '[414996.1.192703097]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListGenerations_61
+    Component dhGenerations
+    {
+      #keys: '[414996.1.192703103]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckGenerations
+    {
+      #keys: '[414996.1.192703104]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckGenerations
+        {
+          #keys: '[414996.1.192703105]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhGenerations'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 0
+    Title: 'Generation'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pMQBMLB\043653.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pMQBMLB\043653.def"
new file mode 100644
index 0000000..9e50a4f
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pMQBMLB\043653.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pMQBMLB id:pMQBMLB_653
+{
+  #keys: '[414996.1.192703115]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListMQBMLB_670
+    Component dhMQBMLB
+    {
+      #keys: '[414996.1.192703121]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckMQBMLB
+    {
+      #keys: '[414996.1.192703122]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckMQBMLB
+        {
+          #keys: '[414996.1.192703123]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhMQBMLB'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 2
+    Title: 'MQB/MLB'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pPower\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pPower\043969.def"
new file mode 100644
index 0000000..2780fe5
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pPower\043969.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pPower id:pPower_969
+{
+  #keys: '[414996.1.192703106]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListPowers_667
+    Component dhPowers
+    {
+      #keys: '[414996.1.192703112]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckPowers
+    {
+      #keys: '[414996.1.192703113]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckPowers
+        {
+          #keys: '[414996.1.192703114]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhPowers'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 1
+    Title: 'Power'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pProductAttributeFilter\043697.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pProductAttributeFilter\043697.def"
new file mode 100644
index 0000000..586ce0e
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_pProductAttributeFilter\043697.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component pProductAttributeFilter id:pProductAttributeFilter_697
+{
+  #keys: '[414996.1.192703096]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pGeneration_100
+    #child: pPower_969
+    #child: pMQBMLB_653
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
new file mode 100644
index 0000000..416291b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhCheckGenerations
+Response OnDataChanged () id:Response_pGeneration_100_dhCheckGenerations_OnDataChanged
+{
+  #keys: '[414996.1.192703090]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Generation()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhGenerations_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhGenerations_OnCreated.def
new file mode 100644
index 0000000..3661a81
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pGeneration_100_dhGenerations_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhGenerations
+Response OnCreated () id:Response_pGeneration_100_dhGenerations_OnCreated
+{
+  #keys: '[414996.1.192703091]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
new file mode 100644
index 0000000..0aaeb78
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhCheckMQBMLB
+Response OnDataChanged () id:Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged
+{
+  #keys: '[414996.1.192703084]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.MQBMLB()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
new file mode 100644
index 0000000..6359d5e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhMQBMLB
+Response OnCreated () id:Response_pMQBMLB_653_dhMQBMLB_OnCreated
+{
+  #keys: '[414996.1.192703085]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def
new file mode 100644
index 0000000..c8fa6c5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhCheckPowers
+Response OnDataChanged () id:Response_pPower_969_dhCheckPowers_OnDataChanged
+{
+  #keys: '[414996.1.192703087]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProduct.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Power()));
+        dhFinelProduct.Data( &products );
+      }else{
+        if( dhCheckedProduct.Data().Size() <> 0 ){
+          dhFinelProduct.Data( dhCheckedProduct.Data().Copy() );
+        }else{
+          dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhPowers_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhPowers_OnCreated.def
new file mode 100644
index 0000000..70331dd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_pPower_969_dhPowers_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhPowers
+Response OnCreated () id:Response_pPower_969_dhPowers_OnCreated
+{
+  #keys: '[414996.1.192703088]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
index 23b9386..2ec5105 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/_ROOT_Component_FormDemandComparison.def
@@ -9,6 +9,7 @@
   [
     #child: PanelDemandComparison
     #child: PanelDemandComparison294
+    #child: pProductAttributeFilter_697
   ]
   Properties:
   [
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListGenerations\04361.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListGenerations\04361.def"
new file mode 100644
index 0000000..71b1395
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListGenerations\04361.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListGenerations id:ListGenerations_61
+{
+  #keys: '[414996.1.191962661]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor989
+    {
+      #keys: '[414996.1.191962662]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhGenerations'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage963_1
+    Component DataSetLevel191
+    {
+      #keys: '[414996.1.191962664]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu687_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu687'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListMQBMLB\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListMQBMLB\043670.def"
new file mode 100644
index 0000000..f853c10
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListMQBMLB\043670.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListMQBMLB id:ListMQBMLB_670
+{
+  #keys: '[414996.1.191962679]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor472
+    {
+      #keys: '[414996.1.191962680]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhMQBMLB'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage519_1
+    Component DataSetLevel527
+    {
+      #keys: '[414996.1.191962682]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu319_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu319'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListPowers\043667.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListPowers\043667.def"
new file mode 100644
index 0000000..a7a53c5
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_ListPowers\043667.def"
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+Component ListPowers id:ListPowers_667
+{
+  #keys: '[414996.1.191962670]'
+  BaseType: 'WebList'
+  Children:
+  [
+    Component DataExtractor671
+    {
+      #keys: '[414996.1.191962671]'
+      BaseType: 'WebDataExtractor'
+      Properties:
+      [
+        DataType: 'structured[LocalValue]'
+        Source: 'dhPowers'
+        Taborder: 0
+        Transformation: 'Elements'
+      ]
+    }
+    #child: listActionBarPage245_1
+    Component DataSetLevel995
+    {
+      #keys: '[414996.1.191962673]'
+      BaseType: 'WebDataSetLevel'
+      Children:
+      [
+        #child: listContextMenu623_1
+      ]
+      Properties:
+      [
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCheck","title":"IsCheck","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCheck"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StringValue","title":"StringValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StringValue"}}]'
+        ContextMenu: 'listContextMenu623'
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def"
index 55668a9..4c2404e 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def"
@@ -16,14 +16,14 @@
         Taborder: 1
       ]
     }
-    Component dhCheckedProduct
+    Component dhCheckedProducts
     {
       #keys: '[412672.1.61940684]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[Product_MP]*'
       Children:
       [
-        Component deCheckedProduct
+        Component deCheckedProducts
         {
           #keys: '[412672.1.61940685]'
           BaseType: 'WebDataExtractor'
@@ -51,14 +51,14 @@
         Taborder: 2
       ]
     }
-    Component dhCheckedSalesSegment
+    Component dhCheckedSalesSegments
     {
       #keys: '[412672.1.61940687]'
       BaseType: 'WebDataHolder'
       Databinding: 'structured[SalesSegment_MP]*'
       Children:
       [
-        Component deCheckedSalesSegment
+        Component deCheckedSalesSegments
         {
           #keys: '[412672.1.61940688]'
           BaseType: 'WebDataExtractor'
@@ -114,6 +114,6 @@
   ]
   Properties:
   [
-    Taborder: 1
+    Taborder: 2
   ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def
index 8c81a3d..0b978d9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def
@@ -11,6 +11,6 @@
   Properties:
   [
     FixedSize: true
-    Taborder: 0
+    Taborder: 1
   ]
 }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage245\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage245\0431.def"
new file mode 100644
index 0000000..711c816
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage245\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage245 id:listActionBarPage245_1
+{
+  #keys: '[414996.1.191962672]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage519\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage519\0431.def"
new file mode 100644
index 0000000..fd9b676
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage519\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage519 id:listActionBarPage519_1
+{
+  #keys: '[414996.1.191962681]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage963\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage963\0431.def"
new file mode 100644
index 0000000..75ebb0b
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listActionBarPage963\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPage963 id:listActionBarPage963_1
+{
+  #keys: '[414996.1.191962663]'
+  BaseType: 'listActionBarPage'
+  Properties:
+  [
+    Taborder: 1
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu319\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu319\0431.def"
new file mode 100644
index 0000000..37001bd
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu319\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu319 id:listContextMenu319_1
+{
+  #keys: '[414996.1.191962683]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu623\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu623\0431.def"
new file mode 100644
index 0000000..2529df2
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu623\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu623 id:listContextMenu623_1
+{
+  #keys: '[414996.1.191962674]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu687\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu687\0431.def"
new file mode 100644
index 0000000..bb0a0af
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_listContextMenu687\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenu687 id:listContextMenu687_1
+{
+  #keys: '[414996.1.191962665]'
+  BaseType: 'listContextMenu'
+  Properties:
+  [
+    Taborder: 0
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pGeneration\043100.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pGeneration\043100.def"
new file mode 100644
index 0000000..bde70d9
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pGeneration\043100.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pGeneration id:pGeneration_100
+{
+  #keys: '[414996.1.191962660]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListGenerations_61
+    Component dhGenerations
+    {
+      #keys: '[414996.1.191962666]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckGenerations
+    {
+      #keys: '[414996.1.191962667]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckGenerations
+        {
+          #keys: '[414996.1.191962668]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhGenerations'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 0
+    Title: 'Generation'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pMQBMLB\043653.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pMQBMLB\043653.def"
new file mode 100644
index 0000000..c74229c
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pMQBMLB\043653.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pMQBMLB id:pMQBMLB_653
+{
+  #keys: '[414996.1.191962678]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListMQBMLB_670
+    Component dhMQBMLB
+    {
+      #keys: '[414996.1.191962684]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckMQBMLB
+    {
+      #keys: '[414996.1.191962685]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckMQBMLB
+        {
+          #keys: '[414996.1.191962686]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhMQBMLB'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 2
+    Title: 'MQB/MLB'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pPower\043969.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pPower\043969.def"
new file mode 100644
index 0000000..b8bfbfa
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pPower\043969.def"
@@ -0,0 +1,52 @@
+Quintiq file version 2.0
+Component pPower id:pPower_969
+{
+  #keys: '[414996.1.191962669]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: ListPowers_667
+    Component dhPowers
+    {
+      #keys: '[414996.1.191962675]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Properties:
+      [
+        Taborder: 1
+      ]
+    }
+    Component dhCheckPowers
+    {
+      #keys: '[414996.1.191962676]'
+      BaseType: 'WebDataHolder'
+      Databinding: 'structured[LocalValue]*'
+      Children:
+      [
+        Component deCheckPowers
+        {
+          #keys: '[414996.1.191962677]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'structured[LocalValue]'
+            FixedFilter: 'object.IsCheck()'
+            Source: 'dhPowers'
+            Taborder: 0
+            Transformation: 'Elements'
+          ]
+        }
+      ]
+      Properties:
+      [
+        Taborder: 2
+      ]
+    }
+  ]
+  Properties:
+  [
+    MinimumRows: 20
+    Taborder: 1
+    Title: 'Power'
+  ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pProductAttributeFilter\043697.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pProductAttributeFilter\043697.def"
new file mode 100644
index 0000000..6414f61
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_pProductAttributeFilter\043697.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+Component pProductAttributeFilter id:pProductAttributeFilter_697
+{
+  #keys: '[414996.1.191962659]'
+  BaseType: 'WebPanel'
+  Children:
+  [
+    #child: pGeneration_100
+    #child: pPower_969
+    #child: pMQBMLB_653
+  ]
+  Properties:
+  [
+    FixedSize: true
+    Orientation: 'horizontal'
+    Taborder: 0
+  ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProducts_OnDataChanged.def
similarity index 84%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProducts_OnDataChanged.def
index 8e52c4c..4789bfe 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProducts_OnDataChanged.def
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
-#parent: PanelDemandComparison_634/dhCheckedProduct
-Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged
+#parent: PanelDemandComparison_634/dhCheckedProducts
+Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedProducts_OnDataChanged
 {
   #keys: '[412672.1.61940669]'
   CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegments_OnDataChanged.def
similarity index 85%
rename from _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def
rename to _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegments_OnDataChanged.def
index f371e11..3346eba 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegments_OnDataChanged.def
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
-#parent: PanelDemandComparison_634/dhCheckedSalesSegment
-Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged
+#parent: PanelDemandComparison_634/dhCheckedSalesSegments
+Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedSalesSegments_OnDataChanged
 {
   #keys: '[412672.1.61940667]'
   CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
new file mode 100644
index 0000000..1ceb281
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhCheckGenerations_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhCheckGenerations
+Response OnDataChanged () id:Response_pGeneration_100_dhCheckGenerations_OnDataChanged
+{
+  #keys: '[414996.1.191962653]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Generation()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhGenerations_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhGenerations_OnCreated.def
new file mode 100644
index 0000000..92ca4eb
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pGeneration_100_dhGenerations_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pGeneration_100/dhGenerations
+Response OnCreated () id:Response_pGeneration_100_dhGenerations_OnCreated
+{
+  #keys: '[414996.1.191962654]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
new file mode 100644
index 0000000..00e3a73
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhCheckMQBMLB
+Response OnDataChanged () id:Response_pMQBMLB_653_dhCheckMQBMLB_OnDataChanged
+{
+  #keys: '[414996.1.191962647]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.MQBMLB()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){ 
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
new file mode 100644
index 0000000..5667766
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pMQBMLB_653_dhMQBMLB_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pMQBMLB_653/dhMQBMLB
+Response OnCreated () id:Response_pMQBMLB_653_dhMQBMLB_OnCreated
+{
+  #keys: '[414996.1.191962648]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def
new file mode 100644
index 0000000..ba7391b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhCheckPowers_OnDataChanged.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhCheckPowers
+Response OnDataChanged () id:Response_pPower_969_dhCheckPowers_OnDataChanged
+{
+  #keys: '[414996.1.191962650]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+  GroupServerCalls: true
+  QuillAction
+  {
+    Body:
+    [*
+      products := dhFinelProducts.Data();
+      if( this.Data().Size() <> 0 ){
+        products := selectset( products,Elements,product,exists( this.Data(),Elements,element,element.StringValue() = product.Power()));
+        dhFinelProducts.Data( &products );
+      }else{
+        if( dhCheckedProducts.Data().Size() <> 0 ){
+          dhFinelProducts.Data( dhCheckedProducts.Data().Copy() );
+        }else{
+          dhFinelProducts.Data( DataHolderProduct.Data().Copy() );
+        }
+      }
+    *]
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhPowers_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhPowers_OnCreated.def
new file mode 100644
index 0000000..6249cf8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_pPower_969_dhPowers_OnCreated.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: pPower_969/dhPowers
+Response OnCreated () id:Response_pPower_969_dhPowers_OnCreated
+{
+  #keys: '[414996.1.191962651]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebComponent_OnCreated'
+  QuillAction
+  {
+    Body:
+    [*
+      generations := LocalValue::CreateProduct_MPAttribute( RecycleBin,MacroPlan,"generation" );
+      this.Data( &generations );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
index ddaf769..08fa29b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
@@ -9,6 +9,7 @@
   [
     #child: PanelRibbon
     #child: PanelDemandComparison_634
+    #child: pProductAttributeFilter_697
   ]
   Properties:
   [

--
Gitblit v1.9.3