hongji.li
2023-11-01 dfa7a011f47399b1a083d020d9460f6801c9c98c
pegging结果分析优化
已添加6个文件
已修改13个文件
656 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_PeggingResult_AllGroupChild_PeggingResult_AllGroupParent.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/Attribute_ActualFulfillmentQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/Attribute_FulfillmentQuantity.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_Create.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_CreateAllChildRelation.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_CreateData.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_GenerateInventorySupply.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_GenerateNewSupply.qbl 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_GeneratePeggingResult.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResult/StaticMethod_SetAllChildRelation.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PeggingResultGroup/_ROOT_Type_PeggingResultGroup.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPeggingAllResult/Component_ListPeggingAllResult.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_ListPeggingProduct_MP.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Component_listContextMenuPeggingProduct_MP.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPeggingProduct_MP/Response_ListPeggingProduct_MP_MenuSelectionAll_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPeggingResult/Component_ListPeggingResult.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Pegging分析.vw 153 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/MacroPlanner/Views/X_分析视图_[414702.1.50321581].vw 306 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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'
  }
}
_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
}
_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
}
_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;
  *]
_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 );
    }
  *]
}
_Main/BL/Type_PeggingResult/StaticMethod_CreateAllGroupChildRelation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateAllGroupChildRelation (
  PeggingProductInSalesDemandBase ppisdb
)
{
}
_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 );
    }
  *]
}
_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( "供应类型(InventorySupply)    ", "供应时间:", 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 );
  *]
}
_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--;
        }
      }
_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 );
      }
    }
  *]
_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 ) {
_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'
}
_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":"库存点ID","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":"库存点ID","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
      ]
_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()'
        }
      ]
    }
  ]
}
_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
_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
  }
}
_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":"库存点ID","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":"库存点ID","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'
_Main/UI/MacroPlannerWebApp/Views/Pegging·ÖÎö.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
_var/_Main/ProjSettings/MacroPlanner/Views/X_·ÖÎöÊÓͼ_[414702.1.50321581].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
                  {