From dfa7a011f47399b1a083d020d9460f6801c9c98c Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期三, 01 十一月 2023 15:25:05 +0800
Subject: [PATCH] pegging结果分析优化

---
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def              |   15 +
 _Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl                                                           |    1 
 _Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl                                                          |   18 +
 _Main/BL/Type_PeggingResultGroup/_ROOT_Type_PeggingResultGroup.qbl                                                      |    9 
 _Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl                                                      |    5 
 _Main/BL/Type_PeggingResult/Attribute_ActualFulfillmentQuantity.qbl                                                     |    8 
 _Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl                                                        |    5 
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def                           |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick.def |   17 +
 _Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl                                                                 |    6 
 _Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl                                                |    7 
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def                                 |    2 
 _Main/BL/Type_PeggingResult/StaticMethod_Create.qbl                                                                     |   18 
 _var/_Main/ProjSettings/MacroPlanner/Views/X_分析视图_[414702.1.50321581].vw                                                |  306 ++++++++++++++-------------
 _Main/UI/MacroPlannerWebApp/Views/Pegging分析.vw                                                                          |  153 +++++++++++--
 _Main/BL/Type_PeggingResult/StaticMethod_CreateAllChildRelation.qbl                                                     |   17 +
 _Main/BL/Relations/Relation_PeggingResult_AllGroupChild_PeggingResult_AllGroupParent.qbl                                |   23 ++
 _Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl                                                    |   26 +-
 _Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def                         |   18 +
 19 files changed, 454 insertions(+), 202 deletions(-)

diff --git a/_Main/BL/Relations/Relation_PeggingResult_AllGroupChild_PeggingResult_AllGroupParent.qbl b/_Main/BL/Relations/Relation_PeggingResult_AllGroupChild_PeggingResult_AllGroupParent.qbl
new file mode 100644
index 0000000..edc59bb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_PeggingResult_AllGroupChild_PeggingResult_AllGroupParent.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation PeggingResult_AllGroupChild_PeggingResult_AllGroupParent
+{
+  #keys: '1[414702.1.320753677]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide AllGroupChild
+  {
+    #keys: '3[414702.1.320753679][414702.1.320753678][414702.1.320753680]'
+    Cardinality: '1toN'
+    ObjectDefinition: PeggingResult
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide AllGroupParent
+  {
+    #keys: '3[414702.1.320753682][414702.1.320753681][414702.1.320753683]'
+    Cardinality: '0to1'
+    ObjectDefinition: PeggingResult
+    OwningSide: 'Reference'
+  }
+}
diff --git a/_Main/BL/Type_PeggingResult/Attribute_ActualFulfillmentQuantity.qbl b/_Main/BL/Type_PeggingResult/Attribute_ActualFulfillmentQuantity.qbl
new file mode 100644
index 0000000..54dd8e4
--- /dev/null
+++ b/_Main/BL/Type_PeggingResult/Attribute_ActualFulfillmentQuantity.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ActualFulfillmentQuantity
+{
+  #keys: '3[414702.1.314092328][414702.1.314092327][414702.1.314092329]'
+  Description: '瀹為檯浜や粯鐨勬暟閲�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl b/_Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl
index 0d3c804..36ca7a2 100644
--- a/_Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl
+++ b/_Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl
@@ -3,5 +3,6 @@
 Attribute FulfillmentQuantity
 {
   #keys: '3[414702.1.294201083][414702.1.294201082][414702.1.294201084]'
+  Description: '璁㈠崟鎵�闇�瑕佺殑鏁伴噺'
   ValueType: Real
 }
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_Create.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_Create.qbl
index 2225ae7..35370aa 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_Create.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_Create.qbl
@@ -6,6 +6,7 @@
   String stockingPointID,
   Date startDate,
   Real supplyQuantity,
+  Real actualFulfillmentQuantity,
   Real fulfillmentQuantity,
   String supplyType,
   Number numberOfPlies,
@@ -15,14 +16,15 @@
   TextBody:
   [*
     peggingResult := peggingProductInSalesDemandBase.PeggingResult( relnew, 
-                                                                    ProductID             := productID,
-                                                                    StockingPointID       := stockingPointID,
-                                                                    StartDate             := startDate,
-                                                                    SupplyQuantity        := supplyQuantity,
-                                                                    FulfillmentQuantity   := fulfillmentQuantity,
-                                                                    SupplyType            := supplyType,
-                                                                    NumberOfPlies         := numberOfPlies,
-                                                                    UnitOfMeasurementName := unitOfMeasurementName
+                                                                    ProductID                 := productID,
+                                                                    StockingPointID           := stockingPointID,
+                                                                    StartDate                 := startDate,
+                                                                    SupplyQuantity            := supplyQuantity,
+                                                                    ActualFulfillmentQuantity := actualFulfillmentQuantity,
+                                                                    FulfillmentQuantity       := fulfillmentQuantity,
+                                                                    SupplyType                := supplyType,
+                                                                    NumberOfPlies             := numberOfPlies,
+                                                                    UnitOfMeasurementName     := unitOfMeasurementName
                                                                    );
     return peggingResult;
   *]
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllChildRelation.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllChildRelation.qbl
new file mode 100644
index 0000000..b435f3b
--- /dev/null
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllChildRelation.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateAllChildRelation (
+  PeggingProductInSalesDemandBase ppisdb
+)
+{
+  TextBody:
+  [*
+    targetPeggingResults := selectset( ppisdb, PeggingResult, tempPR, tempPR.NumberOfPlies() = 0 );
+    
+    traverse ( targetPeggingResults, Elements, pr ) {
+      parentPeggingResult := pr;
+      childPeggingResult  := pr;
+      PeggingResult::SetAllChildRelation( ppisdb, parentPeggingResult, childPeggingResult );
+    }
+  *]
+}
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl
new file mode 100644
index 0000000..3e19eca
--- /dev/null
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateAllGroupChildRelation (
+  PeggingProductInSalesDemandBase ppisdb
+)
+{
+}
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl
index 88e5695..b121c0d 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl
@@ -17,10 +17,12 @@
                                               0,
                                               smp,
                                               fulfillmentQuantity,
+                                              fulfillmentQuantity,
                                               null( PeggingResult ) );
-                                              
-        PeggingResult::SetAllChildRelation( ppisdb, null( PeggingResult ), null( PeggingResult ) );
       }
+      
+      PeggingResult::CreateAllChildRelation( ppisdb );
+      PeggingResult::CreateAllGroupChildRelation( ppisdb );
     }
   *]
 }
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl
index cd9495b..6d10ac1 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl
@@ -4,8 +4,9 @@
   PeggingProductInSalesDemandBase peggingProductInSalesDemandBase,
   Number numberOfPlies,
   const InventorySupply is,
+  Real actualFulfillmentQuantity,
   Real fulfillmentQuantity,
-  PeggingResult peggingResult
+  PeggingResult parentPeggingResult
 )
 {
   TextBody:
@@ -13,15 +14,18 @@
     //info( "渚涘簲绫诲瀷锛圛nventorySupply锛�    ", "渚涘簲鏃堕棿锛�", is.Date().Format( "Y-M2-D2" ), "    渚涘簲閲忥細", is.Quantity(), 
     //      "    瀹為檯鐢ㄩ噺锛�", fulfillmentQuantity, "    ", is.ProductInStockingPoint_MP().Name() );
     pisp := is.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP();
-    PeggingResult::Create( peggingProductInSalesDemandBase, 
-                           pisp.ProductID(), 
-                           pisp.StockingPointID(), 
-                           is.Date(), 
-                           is.Quantity(), 
-                           fulfillmentQuantity, 
-                           "搴撳瓨渚涘簲", 
-                           numberOfPlies,
-                           pisp.UnitOfMeasureName()
-                          );
+    childPeggingResult := PeggingResult::Create( peggingProductInSalesDemandBase, 
+                                                 pisp.ProductID(), 
+                                                 pisp.StockingPointID(), 
+                                                 is.Date(), 
+                                                 is.Quantity(), 
+                                                 actualFulfillmentQuantity,
+                                                 fulfillmentQuantity, 
+                                                 "搴撳瓨渚涘簲", 
+                                                 numberOfPlies,
+                                                 pisp.UnitOfMeasureName()
+                                                );
+    
+    PeggingResult::SetParentChildRelationship( parentPeggingResult, childPeggingResult );
   *]
 }
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl
index 9ead81a..cc10732 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl
@@ -4,6 +4,7 @@
   PeggingProductInSalesDemandBase peggingProductInSalesDemandBase,
   Number numberOfPlies,
   const NewSupply ns,
+  Real actualFulfillmentQuantity,
   Real fulfillmentQuantity,
   PeggingResult parentPeggingResult
 )
@@ -14,7 +15,16 @@
     
     pisp := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP();
     
-    childPeggingResult := PeggingResult::Create( peggingProductInSalesDemandBase, pisp.ProductID(), pisp.StockingPointID(), ns.Start().Date(), ns.Quantity(), fulfillmentQuantity, "", numberOfPlies, pisp.UnitOfMeasureName() );
+    childPeggingResult := PeggingResult::Create( peggingProductInSalesDemandBase, 
+                                                 pisp.ProductID(), 
+                                                 pisp.StockingPointID(), 
+                                                 ns.Start().Date(), 
+                                                 ns.Quantity(),
+                                                 actualFulfillmentQuantity, 
+                                                 fulfillmentQuantity, 
+                                                 "", 
+                                                 numberOfPlies, 
+                                                 pisp.UnitOfMeasureName() );
     PeggingResult::SetParentChildRelationship( parentPeggingResult, childPeggingResult );
     
     ontype ( ns.PeriodTask_MP() ) {
@@ -24,11 +34,12 @@
     //          ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
         traverse ( pto, DependentDemand, dd, dd.Quantity() > 0 ) {
           traverse ( dd, Fulfillment, f ) {
+            actualFulfillmentQuantity := f.Quantity();
             smp1 := f.Supply_MP();
             numberOfPlies++;
             fulfillmentQuantity := ( dd.Quantity() / ns.Quantity() ) * fulfillmentQuantity;
     //        info( "--------------------------------------------------------------" );
-            PeggingResult::GeneratePeggingResult( peggingProductInSalesDemandBase, numberOfPlies, smp1, fulfillmentQuantity, childPeggingResult );
+            PeggingResult::GeneratePeggingResult( peggingProductInSalesDemandBase, numberOfPlies, smp1, actualFulfillmentQuantity, fulfillmentQuantity, childPeggingResult );
             numberOfPlies--;
           }
         }
@@ -42,10 +53,11 @@
     //    info( "杞﹂亾鍛ㄦ湡浠诲姟    ", "渚涘簲鏃堕棿锛�", ns.Start().Format( "Y-M2-D2" ), "    鍛ㄦ湡浠诲姟KEY锛�", ptll.Key(), "    ", 
     //          ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
         traverse ( targetDependentDemand, Fulfillment, f ) {
+          actualFulfillmentQuantity := f.Quantity();
           smp1 := f.Supply_MP();
           numberOfPlies++;
     //      info( "--------------------------------------------------------------" );
-          PeggingResult::GeneratePeggingResult( peggingProductInSalesDemandBase, numberOfPlies, smp1, fulfillmentQuantity, childPeggingResult );
+          PeggingResult::GeneratePeggingResult( peggingProductInSalesDemandBase, numberOfPlies, smp1, actualFulfillmentQuantity, fulfillmentQuantity, childPeggingResult );
           numberOfPlies--;
         }
       }
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl
index 562aa9d..3e6f64e 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl
@@ -4,6 +4,7 @@
   PeggingProductInSalesDemandBase peggingProductInSalesDemandBase,
   Number numberOfPlies,
   const Supply_MP smp,
+  Real actualFulfillmentQuantity,
   Real fulfillmentQuantity,
   PeggingResult parentPeggingResult
 )
@@ -13,11 +14,11 @@
     //info( "灞傛暟锛�", numberOfPlies );
     ontype ( smp ) {
       NewSupply as ns : {
-        PeggingResult::GenerateNewSupply( peggingProductInSalesDemandBase, numberOfPlies, ns, fulfillmentQuantity, parentPeggingResult );
+        PeggingResult::GenerateNewSupply( peggingProductInSalesDemandBase, numberOfPlies, ns, actualFulfillmentQuantity, fulfillmentQuantity, parentPeggingResult );
       }
     
       InventorySupply as is : {
-        PeggingResult::GenerateInventorySupply( peggingProductInSalesDemandBase, numberOfPlies, is, fulfillmentQuantity, parentPeggingResult );
+        PeggingResult::GenerateInventorySupply( peggingProductInSalesDemandBase, numberOfPlies, is, actualFulfillmentQuantity, fulfillmentQuantity, parentPeggingResult );
       }
     }
   *]
diff --git a/_Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl b/_Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl
index 95fa4b3..caee0aa 100644
--- a/_Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl
+++ b/_Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl
@@ -8,9 +8,8 @@
 {
   TextBody:
   [*
-    if ( isnull( parentPeggingResult ) and isnull( childPeggingResult ) ) {
-      parentPeggingResult := select( peggingProductInSalesDemandBase, PeggingResult, tempPR, tempPR.NumberOfPlies() = 0 );
-      childPeggingResult  := select( peggingProductInSalesDemandBase, PeggingResult, tempPR, tempPR.NumberOfPlies() = 0 );
+    if ( childPeggingResult.Child( relsize ) = 0 ) {
+      childPeggingResult.AllParent( relset, parentPeggingResult ); 
     }
     
     traverse ( childPeggingResult, Child, pr ) {
diff --git a/_Main/BL/Type_PeggingResultGroup/_ROOT_Type_PeggingResultGroup.qbl b/_Main/BL/Type_PeggingResultGroup/_ROOT_Type_PeggingResultGroup.qbl
new file mode 100644
index 0000000..d7fa0eb
--- /dev/null
+++ b/_Main/BL/Type_PeggingResultGroup/_ROOT_Type_PeggingResultGroup.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type PeggingResultGroup
+{
+  #keys: '5[414702.1.320753704][414702.1.320753702][0.0.0][414702.1.320753703][414702.1.320753705]'
+  BaseType: Object
+  StructuredName: 'PeggingResultGroups'
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def
index 8711654..f6acc5b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def
@@ -29,7 +29,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyQuantity","title":"渚涘簲鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfillmentQuantity","title":"瀹為檯闇�瑕佹暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FulfillmentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyType","title":"渚涘簲绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasurementName","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasurementName"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PeggingProductInSalesDemandBase.SalesDemandBaseID","title":"璁㈠崟ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PeggingProductInSalesDemandBase.SalesDemandBaseID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyQuantity","title":"渚涘簲鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfillmentQuantity","title":"瀹為檯闇�瑕佹暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FulfillmentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyType","title":"渚涘簲绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasurementName","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasurementName"}}]'
         ContextMenu: 'listContextMenuPeggingAllResult'
         Taborder: 2
       ]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def
index 183cc9b..6cd63a5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def
@@ -38,4 +38,22 @@
   [
     Taborder: 1
   ]
+  ResponseDefinitions:
+  [
+    DelegatedResponseDefinition OnClick id:Responsedef_ListPeggingProduct_MP_WebMenu_OnClick
+    {
+      #keys: '[414702.1.309521164]'
+      Initiator: 'WebMenu'
+      IsInherited: false
+      ResponseType: 'OnClick'
+      Arguments:
+      [
+        ResponseDefinitionArgument selection
+        {
+          #keys: '[645.0.18569723]'
+          Binding: 'this.Selection()'
+        }
+      ]
+    }
+  ]
 }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def
index d7a7d88..2a8c05a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def
@@ -3,6 +3,21 @@
 {
   #keys: '[414702.1.291408744]'
   BaseType: 'listContextMenu'
+  Children:
+  [
+    Component MenuSelectionAll
+    {
+      #keys: '[414702.1.308101396]'
+      BaseType: 'WebMenu'
+      Properties:
+      [
+        Image: 'SELECTION'
+        Shortcut: 'Ctrl+A'
+        Taborder: 3
+        Title: '鍏ㄩ��'
+      ]
+    }
+  ]
   Properties:
   [
     Taborder: 0
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick.def
new file mode 100644
index 0000000..e9aae6b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListPeggingProduct_MP
+Response OnClick () id:Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick
+{
+  #keys: '[414702.1.309596514]'
+  CanBindMultiple: false
+  DefinitionID => /ListPeggingProduct_MP/Responsedef_ListPeggingProduct_MP_WebMenu_OnClick
+  Initiator: 'MenuSelectionAll'
+  QuillAction
+  {
+    Body:
+    [*
+      this.SelectAll();
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def
index 368e708..ea8def8 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def
@@ -30,7 +30,7 @@
       ]
       Properties:
       [
-        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyQuantity","title":"渚涘簲鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfillmentQuantity","title":"瀹為檯闇�瑕佹暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FulfillmentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyType","title":"渚涘簲绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasurementName","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasurementName"}}]'
+        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PeggingProductInSalesDemandBase.SalesDemandBaseID","title":"璁㈠崟ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PeggingProductInSalesDemandBase.SalesDemandBaseID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"浜у搧ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"搴撳瓨鐐笽D","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"寮�濮嬫椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyQuantity","title":"渚涘簲鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ActualFulfillmentQuantity","title":"瀹為檯闇�瑕佹暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ActualFulfillmentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfillmentQuantity","title":"璁㈠崟闇�瑕佹暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FulfillmentQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SupplyType","title":"渚涘簲绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SupplyType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasurementName","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasurementName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfPlies","title":"灞傛暟","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfPlies"}}]'
         ContextMenu: 'listContextMenuPeggingResult'
         RelationFromParent: 'Child'
         RelationRepeating: 'Child'
diff --git "a/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw" "b/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
index 3866fc3..cf84f9c 100644
--- "a/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
+++ "b/_Main/UI/MacroPlannerWebApp/Views/Pegging\345\210\206\346\236\220.vw"
@@ -15,7 +15,7 @@
           rowPosition: 1
           rowSpan: 7
           columnPosition: 1
-          columnSpan: 4
+          columnSpan: 3
         }
         components
         {
@@ -52,7 +52,7 @@
           rowPosition: 8
           rowSpan: 6
           columnPosition: 1
-          columnSpan: 4
+          columnSpan: 3
         }
         components
         {
@@ -69,7 +69,7 @@
               dataPath: 'SalesDemandBaseID'
               dataType: 'string'
               index: 0
-              subtotals: ''
+              subtotals: 'count'
               width: 61
             }
             column_StockingPointID
@@ -79,7 +79,7 @@
               dataType: 'string'
               index: 1
               subtotals: ''
-              width: 122
+              width: 95
             }
             column_Quantity
             {
@@ -88,7 +88,7 @@
               dataType: 'real'
               index: 2
               subtotals: ''
-              width: 59
+              width: 51
             }
             column_StartDate
             {
@@ -97,7 +97,7 @@
               dataType: 'date'
               index: 3
               subtotals: ''
-              width: 94
+              width: 76
             }
           }
         }
@@ -112,8 +112,8 @@
           mode: 'open'
           rowPosition: 1
           rowSpan: 13
-          columnPosition: 5
-          columnSpan: 8
+          columnPosition: 4
+          columnSpan: 9
         }
         components
         {
@@ -123,40 +123,58 @@
           FormPeggingResult_DataSetLevelPeggingResult
           {
             groupDepth: -1
-            sort: 'DESC:UnitOfMeasurementName'
+            sort: 'ProductID'
+            column_PeggingProductInSalesDemandBase_SalesDemandBaseID
+            {
+              columnId: 'PeggingProductInSalesDemandBase.SalesDemandBaseID'
+              dataPath: 'PeggingProductInSalesDemandBase.SalesDemandBaseID'
+              dataType: 'string'
+              index: 0
+              subtotals: 'count'
+              width: 122
+            }
             column_ProductID
             {
               columnId: 'ProductID'
               dataPath: 'ProductID'
               dataType: 'string'
-              index: 0
+              index: 1
               subtotals: ''
-              width: 210
+              width: 164
             }
             column_StockingPointID
             {
               columnId: 'StockingPointID'
               dataPath: 'StockingPointID'
               dataType: 'string'
-              index: 1
+              index: 2
               subtotals: ''
-              width: 152
+              width: 92
             }
             column_StartDate
             {
               columnId: 'StartDate'
               dataPath: 'StartDate'
               dataType: 'date'
-              index: 2
+              index: 3
               subtotals: ''
-              width: 86
+              width: 82
             }
             column_SupplyQuantity
             {
               columnId: 'SupplyQuantity'
               dataPath: 'SupplyQuantity'
               dataType: 'real'
-              index: 3
+              index: 4
+              subtotals: ''
+              width: 86
+            }
+            column_ActualFulfillmentQuantity
+            {
+              columnId: 'ActualFulfillmentQuantity'
+              dataPath: 'ActualFulfillmentQuantity'
+              dataType: 'real'
+              index: 5
               subtotals: ''
               width: 97
             }
@@ -165,16 +183,16 @@
               columnId: 'FulfillmentQuantity'
               dataPath: 'FulfillmentQuantity'
               dataType: 'real'
-              index: 4
+              index: 6
               subtotals: ''
-              width: 102
+              width: 108
             }
             column_SupplyType
             {
               columnId: 'SupplyType'
               dataPath: 'SupplyType'
               dataType: 'string'
-              index: 5
+              index: 7
               subtotals: ''
               width: 78
             }
@@ -183,9 +201,18 @@
               columnId: 'UnitOfMeasurementName'
               dataPath: 'UnitOfMeasurementName'
               dataType: 'string'
-              index: 6
+              index: 8
               subtotals: ''
-              width: 150
+              width: 50
+            }
+            column_NumberOfPlies
+            {
+              columnId: 'NumberOfPlies'
+              dataPath: 'NumberOfPlies'
+              dataType: 'number'
+              index: 9
+              subtotals: ''
+              width: 56
             }
           }
         }
@@ -203,7 +230,89 @@
           columnPosition: 1
           columnSpan: 12
         }
-        components: null
+        components
+        {
+          FormPeggingAllResult_ListPeggingAllResult
+          {
+          }
+          FormPeggingAllResult_DataSetLevelPeggingAllResult
+          {
+            groupDepth: 2
+            sort: 'ProductID,StockingPointID,StartDate,DESC:PeggingProductInSalesDemandBase.SalesDemandBaseID'
+            column_PeggingProductInSalesDemandBase_SalesDemandBaseID
+            {
+              columnId: 'PeggingProductInSalesDemandBase.SalesDemandBaseID'
+              dataPath: 'PeggingProductInSalesDemandBase.SalesDemandBaseID'
+              dataType: 'string'
+              index: 0
+              subtotals: 'count'
+              width: 150
+            }
+            column_ProductID
+            {
+              columnId: 'ProductID'
+              dataPath: 'ProductID'
+              dataType: 'string'
+              index: 1
+              subtotals: ''
+              width: 150
+            }
+            column_StockingPointID
+            {
+              columnId: 'StockingPointID'
+              dataPath: 'StockingPointID'
+              dataType: 'string'
+              index: 2
+              subtotals: ''
+              width: 150
+            }
+            column_StartDate
+            {
+              columnId: 'StartDate'
+              dataPath: 'StartDate'
+              dataType: 'date'
+              index: 3
+              subtotals: ''
+              width: 150
+            }
+            column_SupplyQuantity
+            {
+              columnId: 'SupplyQuantity'
+              dataPath: 'SupplyQuantity'
+              dataType: 'real'
+              index: 4
+              subtotals: ''
+              width: 150
+            }
+            column_FulfillmentQuantity
+            {
+              columnId: 'FulfillmentQuantity'
+              dataPath: 'FulfillmentQuantity'
+              dataType: 'real'
+              index: 5
+              subtotals: 'sum'
+              width: 150
+            }
+            column_SupplyType
+            {
+              columnId: 'SupplyType'
+              dataPath: 'SupplyType'
+              dataType: 'string'
+              index: 6
+              subtotals: ''
+              width: 150
+            }
+            column_UnitOfMeasurementName
+            {
+              columnId: 'UnitOfMeasurementName'
+              dataPath: 'UnitOfMeasurementName'
+              dataType: 'string'
+              index: 7
+              subtotals: ''
+              width: 150
+            }
+          }
+        }
       }
     }
     userconfigurableinformation
diff --git "a/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw" "b/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw"
index b087749..31640c2 100644
--- "a/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw"
+++ "b/_var/_Main/ProjSettings/MacroPlanner/Views/X_\345\210\206\346\236\220\350\247\206\345\233\276_\133414702.1.50321581\135.vw"
@@ -14,9 +14,9 @@
   ICONIMAGE 'WINDOWS'
   CREATIONDATETIME '2023-10-12T10:00:44'
   CREATIONUSER 'quintiq/hongjli'
-  UPDATEDATETIME '2023-10-31T18:01:35'
+  UPDATEDATETIME '2023-11-01T11:42:14'
   UPDATEUSER 'quintiq/hongjli'
-  LASTACCESSDATE '2023-10-31'
+  LASTACCESSDATE '2023-11-01'
   VIEWSCOPE 0
 }
 AUTHORIZATIONS
@@ -53,24 +53,24 @@
     {
      SETTINGS_MDS_WITH_FOLDER
      {
-       [414702.1.302283770]:LibInt_IntegratorProxy:/root:LibInt_IntegratorProxy
-       [414702.1.304531394]:SWF_CommunicationDataset:/root:SWF_CommunicationDataset
-       [414702.1.304526781]:SWF_WorkflowDataset:/root:SWF_WorkflowDataset
-       [414702.1.302279182]:LibDEF_DataBroker:/root:LibDEF_DataBroker
-       [414702.1.302274597]:LibDEF_DataRepository:/root:LibDEF_DataRepository
-       [414702.1.302264688]:DMF_ConvertorDataset:/root:DMF_ConvertorDataset
-       [414702.1.304540574]:LibMon_Monitor:/root:LibMon_Monitor
-       [414702.1.304535987]:LibUTF:/root:UTF
-       [414702.1.304550001]:Lib3DS_RootDataset:/root:Lib3DS_RootDataset
-       [414702.1.304560001]:KpiTracker:/root:KpiTracker
-       [414702.1.304612079]:MacroPlan:/root:MacroPlan
-       [414702.1.302270012]:MPDomainHandler:/root:MPDomainHandler
-       [414702.1.304570001]:MPSync:/root:MPSync
-       [414702.1.302288355]:ScenarioManager:/root:ScenarioManager
-       [414702.1.302269274]:LibSCIIntegrationInterface:/root:LibSCIIntegrationInterface
-       [414702.1.304508431]:GlobalOTDTable:/root:GlobalOTDTable
-       [414702.1.304517601]:GlobalOTDLog:/root:GlobalOTDLog
-       [414702.1.304513016]:GlobalOTDSOP:/root:GlobalOTDSOP
+       [414702.1.311783034]:LibInt_IntegratorProxy:/root:LibInt_IntegratorProxy
+       [414702.1.314030658]:SWF_CommunicationDataset:/root:SWF_CommunicationDataset
+       [414702.1.314026045]:SWF_WorkflowDataset:/root:SWF_WorkflowDataset
+       [414702.1.311778446]:LibDEF_DataBroker:/root:LibDEF_DataBroker
+       [414702.1.311773861]:LibDEF_DataRepository:/root:LibDEF_DataRepository
+       [414702.1.311764688]:DMF_ConvertorDataset:/root:DMF_ConvertorDataset
+       [414702.1.314039838]:LibMon_Monitor:/root:LibMon_Monitor
+       [414702.1.314035251]:LibUTF:/root:UTF
+       [414702.1.314050001]:Lib3DS_RootDataset:/root:Lib3DS_RootDataset
+       [414702.1.314070001]:KpiTracker:/root:KpiTracker
+       [414702.1.314075378]:MacroPlan:/root:MacroPlan
+       [414702.1.311769276]:MPDomainHandler:/root:MPDomainHandler
+       [414702.1.314060001]:MPSync:/root:MPSync
+       [414702.1.311787619]:ScenarioManager:/root:ScenarioManager
+       [414702.1.314080001]:LibSCIIntegrationInterface:/root:LibSCIIntegrationInterface
+       [414702.1.314007695]:GlobalOTDTable:/root:GlobalOTDTable
+       [414702.1.314016865]:GlobalOTDLog:/root:GlobalOTDLog
+       [414702.1.314012280]:GlobalOTDSOP:/root:GlobalOTDSOP
      }
     }
    }
@@ -104,7 +104,7 @@
       OBJECTTYPE ValueHolder // ValueHolderActiveMacroPlan
       CONTENTS
       {
-       Value '[414702.1.304617225]'
+       Value '[414702.1.314120528]'
       }
      }
      INFOOBJECT
@@ -158,7 +158,7 @@
       OBJECTTYPE ValueHolder // ValueHolderUserGroup
       CONTENTS
       {
-       Value ';Implementors;AppConfigurators;Administrator;Developer;AggregatedPlanning;Blending;CampaignPlanning;CapacitySmoothing;DatabaseIntegration;Development;Feedback;Groups;InventoryMixBalancing;InventorySpecifications;InventorySupplies;LotSizes;OptimizerBenchmarking;Pegging;ProductPlanningGanttChart;SafetyStockCalculation;SalesDemandPostponement;ShelfLife;SupplyChainMap;SupplySpecifications;TransportationPlanning;Workflow;Functionalities;Software;SOP;Cloud;OnPremise;SupplyChainDirector;SupplyPlanner;DemandPlanner;CollaborativeForecasting;SOAPServerUserGroup;Web_SupplyPlanning;Web_SupplyChainData;Web_CampaignPlanning;Web_Sales;Web_Development;Web;Web_ScenariosAndSettings;Web_Blending;Web_DemandPostponement;Web_Allocation;Web_Financials;Web_Feedbacks;Web_InventoryMixBalancing;Web_SafetyStockCalculation;Web_WorkFlowConfiguration;Web_MyActivities;Web_Integration;Web_OptimizerBenchmarking;Web_SupplyDashboard;Web_Optimizer;Web_LotSizes;Web_ShelfLife;Web_CapacitySmoothing;Web_Inventory;Web_SafetyStock;KpiTrackerAdmin;Web_ProductionPlan;Web_PurchasingPlan;Web_TripPlan;Web_Plan;Web_BlendingPlan;BusinessUnitOM;ProductionPlan;MRPPlanning'
+       Value ';Administrator;Developer;AggregatedPlanning;MRPPlanning;ProductionPlan;BusinessUnitOM;Web_BlendingPlan;Web_Plan;Web_TripPlan;Web_PurchasingPlan;Web_ProductionPlan;KpiTrackerAdmin;Web_SafetyStock;Web_Inventory;Web_CapacitySmoothing;Web_ShelfLife;Web_LotSizes;Web_Optimizer;Web_SupplyDashboard;Web_OptimizerBenchmarking;Web_Integration;Web_MyActivities;Web_WorkFlowConfiguration;Web_SafetyStockCalculation;Web_InventoryMixBalancing;Web_Feedbacks;Web_Financials;Web_Allocation;Web_DemandPostponement;Web_Blending;Web_ScenariosAndSettings;Web;Web_Development;Web_Sales;Web_CampaignPlanning;Web_SupplyChainData;Web_SupplyPlanning;SOAPServerUserGroup;CollaborativeForecasting;DemandPlanner;SupplyPlanner;SupplyChainDirector;OnPremise;Cloud;SOP;Software;Functionalities;Workflow;TransportationPlanning;SupplySpecifications;SupplyChainMap;ShelfLife;SalesDemandPostponement;SafetyStockCalculation;ProductPlanningGanttChart;Pegging;OptimizerBenchmarking;LotSizes;InventorySupplies;InventorySpecifications;InventoryMixBalancing;Groups;Feedback;Development;DatabaseIntegration;CapacitySmoothing;CampaignPlanning;Blending;AppConfigurators;Implementors'
       }
      }
      INFOOBJECT
@@ -396,7 +396,7 @@
           OBJECTTYPE ValueHolder // ValueHolderLastSyncDateTime
           CONTENTS
           {
-           Value '31-10-2023, 16:46:59'
+           Value '01-11-2023, 10:05:04'
           }
          }
         }
@@ -409,7 +409,7 @@
       OBJECTTYPE Toolbar // ToolbarSupplyChainPanel
       CONTENTS
       {
-       'horizontal' '50' '336'
+       'horizontal' '50' '320'
       }
       INFOOBJECTS
       {
@@ -428,7 +428,7 @@
         OBJECTTYPE ValueHolder // ValueHolderNavigationPanelSize
         CONTENTS
         {
-         Value '336'
+         Value '320'
         }
        }
        INFOOBJECT
@@ -473,7 +473,7 @@
                 OBJECTTYPE ValueHolder // ValueHolderListSelections
                 CONTENTS
                 {
-                 Value 'Products'
+                 Value 'Stocking points and units'
                 }
                }
                INFOOBJECT
@@ -519,7 +519,7 @@
                 OBJECTTYPE SplitterPane // SplitterPaneEntities
                 CONTENTS
                 {
-                 Size 0
+                 Size 100
                  VISIBLE true
                 }
                 INFOOBJECTS
@@ -578,7 +578,7 @@
                 OBJECTTYPE SplitterPane // SplitterPaneProducts
                 CONTENTS
                 {
-                 Size 100
+                 Size 0
                  VISIBLE true
                 }
                 INFOOBJECTS
@@ -903,7 +903,7 @@
       {
        State := normal
        (1344,0,192,928)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[0]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[0]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -1064,7 +1064,7 @@
                    }
                  }
                }
-               Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212345820]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@FulfilledQuantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212349003]</ColumnID>\n        <BaseName>FulfilledQuantity</BaseName>\n        <Name>FulfilledQuantity</Name>\n        <Title>FulfilledQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>FulfilledQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[112610.0.1212345820]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@5" Column="@FulfilledQuantity1">\n          <ColumnID>[112610.0.1212349003]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@6">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+               Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Forecast Q124112_0_61686821">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@StartDate1" ElementType="Forecast Q124112_0_61686821" ValueType="Date">\n        <ColumnID>[414702.1.317510867]</ColumnID>\n        <BaseName>StartDate</BaseName>\n        <Name>StartDate</Name>\n        <Title>StartDate</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>StartDate</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@ImgNotLinkedToPeriod1" ElementType="Forecast Q124112_0_61686821" ValueType="String">\n        <ColumnID>[414702.1.317510868]</ColumnID>\n        <BaseName>ImgNotLinkedToPeriod</BaseName>\n        <Name>ImgNotLinkedToPeriod</Name>\n        <Title>ImgNotLinkedToPeriod</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgNotLinkedToPeriod</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@ImgIsPostponed1" ElementType="Forecast Q124112_0_61686821" ValueType="String">\n        <ColumnID>[414702.1.317510869]</ColumnID>\n        <BaseName>ImgIsPostponed</BaseName>\n        <Name>ImgIsPostponed</Name>\n        <Title>ImgIsPostponed</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgIsPostponed</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Sales_segment1" ElementType="Forecast Q124112_0_61686821" ValueType="String">\n        <ColumnID>[414702.1.317510870]</ColumnID>\n        <BaseName>Sales_segment</BaseName>\n        <Name>Sales_segment</Name>\n        <Title>Sales segment</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>SalesSegment_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Product1" ElementType="Forecast Q124112_0_61686821" ValueType="String">\n        <ColumnID>[414702.1.317510871]</ColumnID>\n        <BaseName>Product</BaseName>\n        <Name>Product</Name>\n        <Title>Product</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ProductInStockingPoint_MP.Product_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Stocking_point1" ElementType="Forecast Q124112_0_61686821" ValueType="String">\n        <ColumnID>[414702.1.317510872]</ColumnID>\n        <BaseName>Stocking_point</BaseName>\n        <Name>Stocking_point</Name>\n        <Title>Stocking point</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ProductInStockingPoint_MP.StockingPoint_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212345820]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Price1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[414702.1.317510873]</ColumnID>\n        <BaseName>Price</BaseName>\n        <Name>Price</Name>\n        <Title>Price</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Price</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@FulfilledQuantity1" ElementType="Forecast Q124112_0_61686821" ValueType="Real">\n        <ColumnID>[112610.0.1212349003]</ColumnID>\n        <BaseName>FulfilledQuantity</BaseName>\n        <Name>FulfilledQuantity</Name>\n        <Title>FulfilledQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>FulfilledQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[112610.0.1212345820]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@5" Column="@FulfilledQuantity1">\n          <ColumnID>[112610.0.1212349003]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@6">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
                ColumnSort [414702.1.48371364] true false
               }
              }
@@ -1326,97 +1326,6 @@
      }
      INFOOBJECT
      {
-      KEY [127710.1.818301225]
-      SINGLEINSTANCE false
-      ID '浜у搧瑙勫垝鏁版嵁鐭╅樀'
-      PARENTKEY [514.0.2180]
-      OBJECTTYPE Form // FormProductPlanningMatrix
-      CREATETYPE FormProductPlanningMatrix
-      CONTENTS
-      {
-       State := normal
-       (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[0]Selection[NONE]
-      }
-      BASEINFOOBJECTS
-      {
-      }
-      INFOOBJECTS
-      {
-       INFOOBJECT
-       {
-        KEY [127710.1.821866707]
-        OBJECTTYPE CheckBox // CheckBoxFilterByProductLevel
-        CONTENTS
-        {
-         Checkstate 1
-        }
-       }
-       INFOOBJECT
-       {
-        KEY [127710.1.821866918]
-        OBJECTTYPE StringSelection // StringSelectionProductLevel
-        CONTENTS
-        {
-         BoundValue '[Leaf product]'
-        }
-        INFOOBJECTS
-        {
-        }
-       }
-       INFOOBJECT
-       {
-        KEY [127710.1.818312567]
-        OBJECTTYPE MatrixEditor // MatrixEditorProductPlanning
-        CONTENTS
-        {
-         RowHeight 29
-         ColumnWidth 82
-         FirstColumnWidth 433
-         Attributes 'SupplyQuantity;DependentDemandAndSalesDemandQuantity;TargetInventoryLevel;InventoryLevelEnd;StockLevelInDays'
-        }
-        INFOOBJECTS
-        {
-         INFOOBJECT
-         {
-          KEY [127710.1.819572713]
-          OBJECTTYPE GUIScaleView // MatrixEditorColumns
-          INFOOBJECTS
-          {
-           INFOOBJECT
-           {
-            KEY [127710.1.820829335]
-            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPeriod
-            CONTENTS
-            {
-             ObjectText 'VALUE(object.Start())'
-            }
-           }
-          }
-         }
-         INFOOBJECT
-         {
-          KEY [127710.1.819572710]
-          OBJECTTYPE GUIScaleView // MatrixEditorRows
-          INFOOBJECTS
-          {
-           INFOOBJECT
-           {
-            KEY [127710.1.820300549]
-            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPISP
-            CONTENTS
-            {
-             ObjectText 'VALUE( object.Name() ) (VALUE( object.UnitOfMeasureName() ))'
-            }
-           }
-          }
-         }
-        }
-       }
-      }
-     }
-     INFOOBJECT
-     {
       KEY [108486.1.1170974339]
       SINGLEINSTANCE false
       ID 'Pegging'
@@ -1427,7 +1336,7 @@
       {
        State := normal
        (354,421,990,664)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[1]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[0]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -1616,8 +1525,8 @@
                        }
                      }
                    }
-                   Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Demand_MP Q11660_0_96892572">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Demand_MP Q11660_0_96892572">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@ImgHasValidPeggedQuantity1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[108486.2.847961073]</ColumnID>\n        <BaseName>ImgHasValidPeggedQuantity</BaseName>\n        <Name>ImgHasValidPeggedQuantity</Name>\n        <Title>ImgHasValidPeggedQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgHasValidPeggedQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@DemandType1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[108486.2.847961104]</ColumnID>\n        <BaseName>DemandType</BaseName>\n        <Name>DemandType</Name>\n        <Title>DemandType</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>DemandType</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@FulfilledQuantity1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Real">\n        <ColumnID>[108486.2.847961228]</ColumnID>\n        <BaseName>FulfilledQuantity</BaseName>\n        <Name>FulfilledQuantity</Name>\n        <Title>FulfilledQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>FulfilledQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@Date1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Date">\n        <ColumnID>[108486.1.1930448455]</ColumnID>\n        <BaseName>Date</BaseName>\n        <Name>Date</Name>\n        <Title>Date</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@3">\n          <GEBDerivationBase Key="@4" TargetType="Demand_MP Q11660_0_96892572">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@5">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@6">\n                <GEBNodeDerivationExpressionBody Key="@7">\n                  <ExpressionText>object.GetDate()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@8">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBFilter Key="@9">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@10" Column="@FulfilledQuantity1">\n          <ColumnID>[108486.2.847961228]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@11">\n          <ExpressionText></ExpressionText>\n          <Converter>\n            <ZeroConverter Key="@12">\n              <IsStandard>true</IsStandard>\n              <IsISO>false</IsISO>\n              <IsCustom>false</IsCustom>\n              <ConversionType>0</ConversionType>\n            </ZeroConverter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
-                   ColumnSort [108486.1.2112140291] true false
+                   Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Demand_MP Q11660_0_96892572">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Demand_MP Q11660_0_96892572">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@DemandType1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[108486.2.847961104]</ColumnID>\n        <BaseName>DemandType</BaseName>\n        <Name>DemandType</Name>\n        <Title>DemandType</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>DemandType</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@HasValidPeggedQuantity1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[108486.2.847961073]</ColumnID>\n        <BaseName>HasValidPeggedQuantity</BaseName>\n        <Name>HasValidPeggedQuantity</Name>\n        <Title>HasValidPeggedQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgHasValidPeggedQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Stocking_point1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[414702.1.317581380]</ColumnID>\n        <BaseName>Stocking_point</BaseName>\n        <Name>Stocking_point</Name>\n        <Title>Stocking point</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ProductInStockingPointInPeriodPlanning.AsPlanningProductInStockingPoint.StockingPoint_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Product1" ElementType="Demand_MP Q11660_0_96892572" ValueType="String">\n        <ColumnID>[414702.1.317581381]</ColumnID>\n        <BaseName>Product</BaseName>\n        <Name>Product</Name>\n        <Title>Product</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ProductInStockingPointInPeriodPlanning.ProductInStockingPoint_MP.Product_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@Period_start1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Date">\n        <ColumnID>[414702.1.317581382]</ColumnID>\n        <BaseName>Period_start</BaseName>\n        <Name>Period_start</Name>\n        <Title>Period start</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@3">\n          <GEBDerivationBase Key="@4" TargetType="Demand_MP Q11660_0_96892572">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@5">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@6">\n                <GEBNodeDerivationExpressionBody Key="@7">\n                  <ExpressionText>object.GetPeriodStart()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@8">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Real">\n        <ColumnID>[414702.1.317581383]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Fulfilled1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Real">\n        <ColumnID>[108486.2.847961228]</ColumnID>\n        <BaseName>Fulfilled</BaseName>\n        <Name>Fulfilled</Name>\n        <Title>Fulfilled</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>FulfilledQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@Available1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Real">\n        <ColumnID>[414702.1.317581384]</ColumnID>\n        <BaseName>Available</BaseName>\n        <Name>Available</Name>\n        <Title>Available</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@9">\n          <GEBDerivationBase Key="@10" TargetType="Demand_MP Q11660_0_96892572">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@11">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@12">\n                <GEBNodeDerivationExpressionBody Key="@13">\n                  <ExpressionText>object.GetAvailableQuantityForPegging()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@14">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBProcessColumn Key="@Date1" ElementType="Demand_MP Q11660_0_96892572" ValueType="Date">\n        <ColumnID>[108486.1.1930448455]</ColumnID>\n        <BaseName>Date</BaseName>\n        <Name>Date</Name>\n        <Title>Date</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@15">\n          <GEBDerivationBase Key="@16" TargetType="Demand_MP Q11660_0_96892572">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@17">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@18">\n                <GEBNodeDerivationExpressionBody Key="@19">\n                  <ExpressionText>object.GetDate()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@20">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBFilter Key="@21">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@22" Column="@Fulfilled1">\n          <ColumnID>[108486.2.847961228]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@23" Column="@Product1">\n          <ColumnID>[414702.1.317581381]</ColumnID>\n          <GEBFilterColumnMatch Key="@24">\n            <Operation>=</Operation>\n            <Enabled>true</Enabled>\n            <RHSValue>\n              <RHSFreeValue Key="@25">\n                <StringValue></StringValue>\n                <Value>UString:120 kW Motor</Value>\n              </RHSFreeValue>\n            </RHSValue>\n          </GEBFilterColumnMatch>\n        </GEBFilterColumn>\n        <GEBFilterColumn Key="@26" Column="@Period_start1">\n          <ColumnID>[414702.1.317581382]</ColumnID>\n          <GEBFilterColumnMatch Key="@27">\n            <Operation>=</Operation>\n            <Enabled>true</Enabled>\n            <RHSValue>\n              <RHSFreeValue Key="@28">\n                <StringValue></StringValue>\n                <Value>Date:2020-04-01</Value>\n              </RHSFreeValue>\n            </RHSValue>\n          </GEBFilterColumnMatch>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@29">\n          <ExpressionText></ExpressionText>\n          <Converter>\n            <ZeroConverter Key="@30">\n              <IsStandard>true</IsStandard>\n              <IsISO>false</IsISO>\n              <IsCustom>false</IsCustom>\n              <ConversionType>0</ConversionType>\n            </ZeroConverter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+                   ColumnSort [11766.1.490215920] true false
                   }
                  }
                 }
@@ -1733,7 +1642,7 @@
                        }
                      }
                    }
-                   Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Fulfillment Q134266_1_8545931" ValueType="Real">\n        <ColumnID>[112610.0.1005221707]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[112610.0.1005221707]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+                   Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n  <GEBFiltering Key="@Default_Filter1" TargetType="Fulfillment Q134266_1_8545931">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Supply_MPSupplyType1" ElementType="Fulfillment Q134266_1_8545931" ValueType="String">\n        <ColumnID>[414702.1.317581385]</ColumnID>\n        <BaseName>Supply_MPSupplyType</BaseName>\n        <Name>Supply_MPSupplyType</Name>\n        <Title>SupplyType</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Supply_MP.SupplyType</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@HasUserQuantity1" ElementType="Fulfillment Q134266_1_8545931" ValueType="String">\n        <ColumnID>[414702.1.317581386]</ColumnID>\n        <BaseName>HasUserQuantity</BaseName>\n        <Name>HasUserQuantity</Name>\n        <Title>HasUserQuantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>true</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgHasUserQuantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@ImgHasSupply1" ElementType="Fulfillment Q134266_1_8545931" ValueType="String">\n        <ColumnID>[414702.1.317581387]</ColumnID>\n        <BaseName>ImgHasSupply</BaseName>\n        <Name>ImgHasSupply</Name>\n        <Title>ImgHasSupply</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ImgHasSupply</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@Period_start1" ElementType="Fulfillment Q134266_1_8545931" ValueType="Date">\n        <ColumnID>[414702.1.317581388]</ColumnID>\n        <BaseName>Period_start</BaseName>\n        <Name>Period_start</Name>\n        <Title>Period start</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@3">\n          <GEBDerivationBase Key="@4" TargetType="Fulfillment Q134266_1_8545931">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@5">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@6">\n                <GEBNodeDerivationExpressionBody Key="@7">\n                  <ExpressionText>object.Supply_MP().GetPeriodStart()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@8">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBSelectColumn Key="@Quantity1" ElementType="Fulfillment Q134266_1_8545931" ValueType="Real">\n        <ColumnID>[112610.0.1005221707]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@Cost1" ElementType="Fulfillment Q134266_1_8545931" ValueType="Real">\n        <ColumnID>[414702.1.317581389]</ColumnID>\n        <BaseName>Cost</BaseName>\n        <Name>Cost</Name>\n        <Title>Cost</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@9">\n          <GEBDerivationBase Key="@10" TargetType="Fulfillment Q134266_1_8545931">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@11">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@12">\n                <GEBNodeDerivationExpressionBody Key="@13">\n                  <ExpressionText>object.Supply_MP().GetBaseCostPerQuantity() * object.Quantity()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@14">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBFilter Key="@15">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@16" Column="@Quantity1">\n          <ColumnID>[112610.0.1005221707]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@17">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
                    ColumnSort [113694.0.1490809329] true false
                    ColumnSort [113694.0.1490521540] true false
                   }
@@ -2035,6 +1944,97 @@
      }
      INFOOBJECT
      {
+      KEY [127710.1.818301225]
+      SINGLEINSTANCE false
+      ID '浜у搧瑙勫垝鏁版嵁鐭╅樀'
+      PARENTKEY [514.0.2180]
+      OBJECTTYPE Form // FormProductPlanningMatrix
+      CREATETYPE FormProductPlanningMatrix
+      CONTENTS
+      {
+       State := normal
+       (0,0,0,0)
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[1]Selection[NONE]
+      }
+      BASEINFOOBJECTS
+      {
+      }
+      INFOOBJECTS
+      {
+       INFOOBJECT
+       {
+        KEY [127710.1.821866707]
+        OBJECTTYPE CheckBox // CheckBoxFilterByProductLevel
+        CONTENTS
+        {
+         Checkstate 1
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [127710.1.821866918]
+        OBJECTTYPE StringSelection // StringSelectionProductLevel
+        CONTENTS
+        {
+         BoundValue '[Leaf product]'
+        }
+        INFOOBJECTS
+        {
+        }
+       }
+       INFOOBJECT
+       {
+        KEY [127710.1.818312567]
+        OBJECTTYPE MatrixEditor // MatrixEditorProductPlanning
+        CONTENTS
+        {
+         RowHeight 29
+         ColumnWidth 82
+         FirstColumnWidth 433
+         Attributes 'SupplyQuantity;DependentDemandAndSalesDemandQuantity;TargetInventoryLevel;InventoryLevelEnd;StockLevelInDays'
+        }
+        INFOOBJECTS
+        {
+         INFOOBJECT
+         {
+          KEY [127710.1.819572713]
+          OBJECTTYPE GUIScaleView // MatrixEditorColumns
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [127710.1.820829335]
+            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPeriod
+            CONTENTS
+            {
+             ObjectText 'VALUE(object.Start())'
+            }
+           }
+          }
+         }
+         INFOOBJECT
+         {
+          KEY [127710.1.819572710]
+          OBJECTTYPE GUIScaleView // MatrixEditorRows
+          INFOOBJECTS
+          {
+           INFOOBJECT
+           {
+            KEY [127710.1.820300549]
+            OBJECTTYPE UserConfigurableInformation // UserConfigurableInformationPISP
+            CONTENTS
+            {
+             ObjectText 'VALUE( object.Name() ) (VALUE( object.UnitOfMeasureName() ))'
+            }
+           }
+          }
+         }
+        }
+       }
+      }
+     }
+     INFOOBJECT
+     {
       KEY [136682.0.365472357]
       SINGLEINSTANCE false
       ID '鍔犲伐璺緞'
@@ -2045,7 +2045,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[2]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[1]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -2380,7 +2380,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[3]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[2]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -2398,7 +2398,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[4]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[3]Selection[FRONT]
       }
       BASEINFOOBJECTS
       {
@@ -2462,7 +2462,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[1]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[2]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -2770,6 +2770,8 @@
                 CONTENTS
                 {
                  NEWFORMAT
+                 COLUMN 91 50
+                 COLUMN 92 50
                  COLUMN 93 50
                  COLUMN 94 50
                  COLUMN 95 50
@@ -3274,7 +3276,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[3]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[4]Selection[FOCUS]
       }
       BASEINFOOBJECTS
       {
@@ -3302,22 +3304,24 @@
              SubTotals := true
              Visible
              {
-               Column internal[DataSetDataColumn] [414702.1.299300692]
-               {
-                 Width := 100
-                 Subtotals := false
-                 Specific
-                 {
-                   DataPath := 'Quantity [414702.1.294748143]'
-                 }
-               }
                Column internal[DataSetDataColumn] [414702.1.299300693]
                {
-                 Width := 100
+                 Width := 197
+                 SizedByUser := true
                  Subtotals := false
                  Specific
                  {
                    DataPath := 'SalesDemandBaseID [414702.1.294144483]'
+                 }
+               }
+               Column internal[DataSetDataColumn] [414702.1.299300692]
+               {
+                 Width := 83
+                 SizedByUser := true
+                 Subtotals := false
+                 Specific
+                 {
+                   DataPath := 'Quantity [414702.1.294748143]'
                  }
                }
                Column internal[DataSetDataColumn] [414702.1.299300694]
@@ -3341,8 +3345,8 @@
                }
              }
            }
-           Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="PeggingProductInSalesDemandBase Q414702_1_290710053">\n  <GEBFiltering Key="@Default_Filter1" TargetType="PeggingProductInSalesDemandBase Q414702_1_290710053">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="Real">\n        <ColumnID>[414702.1.300710952]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@SalesDemandBaseID1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="String">\n        <ColumnID>[414702.1.305339221]</ColumnID>\n        <BaseName>SalesDemandBaseID</BaseName>\n        <Name>SalesDemandBaseID</Name>\n        <Title>SalesDemandBaseID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>SalesDemandBaseID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@StartDate1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="Date">\n        <ColumnID>[414702.1.305339222]</ColumnID>\n        <BaseName>StartDate</BaseName>\n        <Name>StartDate</Name>\n        <Title>StartDate</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>StartDate</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@StockingPointID1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="String">\n        <ColumnID>[414702.1.305339223]</ColumnID>\n        <BaseName>StockingPointID</BaseName>\n        <Name>StockingPointID</Name>\n        <Title>StockingPointID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>StockingPointID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[414702.1.300710952]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
-           ColumnSort [414702.1.299300694] true false
+           Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="PeggingProductInSalesDemandBase Q414702_1_290710053">\n  <GEBFiltering Key="@Default_Filter1" TargetType="PeggingProductInSalesDemandBase Q414702_1_290710053">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@SalesDemandBaseID1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="String">\n        <ColumnID>[414702.1.317561783]</ColumnID>\n        <BaseName>SalesDemandBaseID</BaseName>\n        <Name>SalesDemandBaseID</Name>\n        <Title>SalesDemandBaseID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>SalesDemandBaseID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Quantity1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="Real">\n        <ColumnID>[414702.1.300710952]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@StartDate1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="Date">\n        <ColumnID>[414702.1.317561784]</ColumnID>\n        <BaseName>StartDate</BaseName>\n        <Name>StartDate</Name>\n        <Title>StartDate</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>StartDate</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@StockingPointID1" ElementType="PeggingProductInSalesDemandBase Q414702_1_290710053" ValueType="String">\n        <ColumnID>[414702.1.317561785]</ColumnID>\n        <BaseName>StockingPointID</BaseName>\n        <Name>StockingPointID</Name>\n        <Title>StockingPointID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>StockingPointID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Quantity1">\n          <ColumnID>[414702.1.300710952]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@5">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
+           ColumnSort [414702.1.299300693] true false
           }
          }
         }
@@ -3361,7 +3365,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[5]Selection[FRONT]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[4]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -3637,7 +3641,7 @@
                          }
                        }
                      }
-                     ColumnSort [414702.1.301867880] true false
+                     ColumnSort [414702.1.301867885] false false
                    }
                  }
                  CURRENT 'Analysis2'
@@ -3719,6 +3723,8 @@
                 CONTENTS
                 {
                  NEWFORMAT
+                 COLUMN 95 50
+                 COLUMN 96 50
                  COLUMN 97 50
                  COLUMN 98 50
                  COLUMN 99 50
@@ -4097,7 +4103,7 @@
                        }
                      }
                    }
-                   ColumnSort [414702.1.301867880] true false
+                   ColumnSort [414702.1.301867885] false false
                   }
                  }
                 }
@@ -4124,7 +4130,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[2]Selection[FOCUS]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[T0.4484;]TabIdx[3]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -4268,6 +4274,7 @@
                            }
                          }
                        }
+                       Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="PeriodTask_MP Q11766_0_874292114">\n  <GEBFiltering Key="@Default_Filter1" TargetType="PeriodTask_MP Q11766_0_874292114">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Process_MPName1" ElementType="PeriodTask_MP Q11766_0_874292114" ValueType="String">\n        <ColumnID>[414702.1.317561778]</ColumnID>\n        <BaseName>Process_MPName</BaseName>\n        <Name>Process_MPName</Name>\n        <Title>Name</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Process_MP.Name</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@UnitPeriodStart1" ElementType="PeriodTask_MP Q11766_0_874292114" ValueType="DateTime">\n        <ColumnID>[414702.1.317561779]</ColumnID>\n        <BaseName>UnitPeriodStart</BaseName>\n        <Name>UnitPeriodStart</Name>\n        <Title>Start</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>UnitPeriod.Start</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@UnitPeriodEnd1" ElementType="PeriodTask_MP Q11766_0_874292114" ValueType="DateTime">\n        <ColumnID>[414702.1.317561780]</ColumnID>\n        <BaseName>UnitPeriodEnd</BaseName>\n        <Name>UnitPeriodEnd</Name>\n        <Title>End</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>UnitPeriod.End</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@QuantityToProcess1" ElementType="PeriodTask_MP Q11766_0_874292114" ValueType="Real">\n        <ColumnID>[414702.1.317561781]</ColumnID>\n        <BaseName>QuantityToProcess</BaseName>\n        <Name>QuantityToProcess</Name>\n        <Title>QuantityToProcess</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>QuantityToProcess</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Key1" ElementType="PeriodTask_MP Q11766_0_874292114" ValueType="Key">\n        <ColumnID>[414702.1.317561782]</ColumnID>\n        <BaseName>Key</BaseName>\n        <Name>Key</Name>\n        <Title>Key</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Key</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBFilter Key="@3">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@4" Column="@Key1">\n          <ColumnID>[414702.1.317561782]</ColumnID>\n          <GEBFilterColumnMatch Key="@5">\n            <Operation>=</Operation>\n            <Enabled>true</Enabled>\n            <RHSValue>\n              <RHSFreeValue Key="@6">\n                <StringValue></StringValue>\n                <Value>Key:[414702.1.314706304]</Value>\n              </RHSFreeValue>\n            </RHSValue>\n          </GEBFilterColumnMatch>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@7">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
                        ColumnSort [112884.0.420632428] true false
                        ColumnSort [11766.1.490571536] true false
                        ColumnSort [11766.1.490571537] true false
@@ -4476,6 +4483,7 @@
                            }
                          }
                        }
+                       Filter := '<?xml version="1.0" encoding="UTF-16"?>\n<GEBObjectsFilter xmlns="http://www.quintiq.com/GEB/GEBObjectsFilter" Key="@1" CurrentFilter="@Default_Filter1" TargetType="NewSupply Q11660_0_958335014">\n  <GEBFiltering Key="@Default_Filter1" TargetType="NewSupply Q11660_0_958335014">\n    <CurrentFilter>true</CurrentFilter>\n    <Name>Default Filter</Name>\n    <Active>true</Active>\n    <IsFavorite>false</IsFavorite>\n    <SortIndex>0</SortIndex>\n    <GEBFilteringData Key="@2">\n      <DefaultColumnPrefix></DefaultColumnPrefix>\n      <ColumnPostfix></ColumnPostfix>\n      <GEBSelectColumn Key="@Quantity1" ElementType="NewSupply Q11660_0_958335014" ValueType="Real">\n        <ColumnID>[414702.1.317561786]</ColumnID>\n        <BaseName>Quantity</BaseName>\n        <Name>Quantity</Name>\n        <Title>Quantity</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Quantity</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@OperationOutputProductID1" ElementType="NewSupply Q11660_0_958335014" ValueType="String">\n        <ColumnID>[414702.1.317561787]</ColumnID>\n        <BaseName>OperationOutputProductID</BaseName>\n        <Name>OperationOutputProductID</Name>\n        <Title>ProductID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>ProcessOutput.astype(OperationOutput).ProductID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@Start1" ElementType="NewSupply Q11660_0_958335014" ValueType="DateTime">\n        <ColumnID>[414702.1.317561788]</ColumnID>\n        <BaseName>Start</BaseName>\n        <Name>Start</Name>\n        <Title>Start</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>Start</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBSelectColumn Key="@AsProductionSupplyProductInStockingPointInPeriodProductInStockingPoint_MPStockingPointID1" ElementType="NewSupply Q11660_0_958335014" ValueType="String">\n        <ColumnID>[414702.1.317561789]</ColumnID>\n        <BaseName>AsProductionSupplyProductInStockingPointInPeriodProductInStockingPoint_MPStockingPointID</BaseName>\n        <Name>AsProductionSupplyProductInStockingPointInPeriodProductInStockingPoint_MPStockingPointID</Name>\n        <Title>StockingPointID</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <AttributePathText>AsProductionSupply.ProductInStockingPoint_MP.StockingPointID</AttributePathText>\n        <AttributePathIdentifier>\n        </AttributePathIdentifier>\n      </GEBSelectColumn>\n      <GEBProcessColumn Key="@PeriodKey1" ElementType="NewSupply Q11660_0_958335014" ValueType="Key">\n        <ColumnID>[414702.1.317561790]</ColumnID>\n        <BaseName>PeriodKey</BaseName>\n        <Name>PeriodKey</Name>\n        <Title>PeriodKey</Title>\n        <IsTarget>false</IsTarget>\n        <NameHasBeenSet>false</NameHasBeenSet>\n        <ColumnFinal>Fail</ColumnFinal>\n        <GEBDerivation Key="@3">\n          <GEBDerivationBase Key="@4" TargetType="NewSupply Q11660_0_958335014">\n            <ColumnID>[0.0.0]</ColumnID>\n            <GEBNodeDerivation Key="@5">\n              <Operation>FirstExpression</Operation>\n              <Conditional>false</Conditional>\n              <Multiple>false</Multiple>\n              <AllowWildcards>false</AllowWildcards>\n              <GEBNodeDerivationExpression Key="@6">\n                <GEBNodeDerivationExpressionBody Key="@7">\n                  <ExpressionText>object.PeriodTask_MP().Key()</ExpressionText>\n                  <Converter>\n                    <ZeroConverter Key="@8">\n                      <IsStandard>true</IsStandard>\n                      <IsISO>false</IsISO>\n                      <IsCustom>false</IsCustom>\n                      <ConversionType>0</ConversionType>\n                    </ZeroConverter>\n                  </Converter>\n                </GEBNodeDerivationExpressionBody>\n              </GEBNodeDerivationExpression>\n            </GEBNodeDerivation>\n          </GEBDerivationBase>\n        </GEBDerivation>\n      </GEBProcessColumn>\n      <GEBFilter Key="@9">\n        <FreeFilterEnabled>true</FreeFilterEnabled>\n        <GEBFilterColumn Key="@10" Column="@AsProductionSupplyProductInStockingPointInPeriodProductInStockingPoint_MPStockingPointID1">\n          <ColumnID>[414702.1.317561789]</ColumnID>\n        </GEBFilterColumn>\n        <GEBFreeFilterBody Key="@11">\n          <ExpressionText></ExpressionText>\n          <Converter>\n          </Converter>\n        </GEBFreeFilterBody>\n      </GEBFilter>\n    </GEBFilteringData>\n  </GEBFiltering>\n</GEBObjectsFilter>\n'
                        ColumnSort [414702.1.19001111] true false
                        ColumnSort [414702.1.55207096] true false
                       }
@@ -4508,7 +4516,7 @@
       {
        State := normal
        (0,0,0,0)
-       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[6]Selection[NONE]
+       DockableLocation := Station[MAIN]State[NORM]TreePath[B0.5516;]TabIdx[5]Selection[NONE]
       }
       BASEINFOOBJECTS
       {
@@ -4623,7 +4631,7 @@
                   OBJECTTYPE Selection // selFilterColumn
                   CONTENTS
                   {
-                   BoundValue 'Key'
+                   BoundValue 'Quantity'
                   }
                   INFOOBJECTS
                   {
@@ -4707,7 +4715,7 @@
                   OBJECTTYPE Selection // SelectionValues
                   CONTENTS
                   {
-                   BoundValue '[414702.1.304548259]'
+                   BoundValue '12'
                   }
                   INFOOBJECTS
                   {

--
Gitblit v1.9.3