hongjli
2023-09-25 48ce218f5329dd9a3e2ba8851b101a5b85f8aab4
产能分配结果优化
已添加23个文件
已修改14个文件
已删除1个文件
663 ■■■■■ 文件已修改
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_ButtonGenerateCapacityAllocationResults_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR#39.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
Quintiq file version 2.0
#parent: #root
EDIBroker GlobalOTDTable_CARRC_Export
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Source Source11
  {
    EDIMLTable CapacityAllocationResultsRuleConfiguration
    {
      PrimaryKeyColumns: ModuleMaterialCode
      PrimaryKeyColumns: PanelMaterialCode
      PrimaryKeyColumns: StockingPointID
      TargetType: CapacityAllocationResultsRuleConfiguration
      TypeIndex: CapacityAllocationResultsRuleConfigurationTypeIndex
      EDIMLColumn Division { Attribute: Division ValueType: String }
      EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
      EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
    }
  }
  EDITransformation.Transformation Transformation11
  {
    EDITableTransformation
    {
      InputTable: CapacityAllocationResultsRuleConfiguration
      OutputTable: CapacityAllocationResultsRuleConfiguration
      EDIColumnMatch { InputColumn: Division OutputColumn: Division }
      EDIColumnMatch { InputColumn: ModuleMaterialCode OutputColumn: ModuleMaterialCode }
      EDIColumnMatch { InputColumn: PanelMaterialCode OutputColumn: PanelMaterialCode }
      EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
    }
  }
  EDIXLSLink.Destination Destination12
  {
    FileName: 'Destination12'
    EDIXLSLinkTable CapacityAllocationResultsRuleConfiguration
    {
      Columns:
      [
        EDIXLSLinkColumn Division { ValueType: String }
        EDIXLSLinkColumn ModuleMaterialCode { ValueType: String }
        EDIXLSLinkColumn PanelMaterialCode { ValueType: String }
        EDIXLSLinkColumn StockingPointID { ValueType: String }
      ]
    }
  }
}
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
Quintiq file version 2.0
#parent: #root
EDIBroker GlobalOTDTable_CARRC_Import
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Destination Destination13
  {
    EDIMLTable CapacityAllocationResultsRuleConfiguration
    {
      PrimaryKeyColumns: ModuleMaterialCode
      PrimaryKeyColumns: PanelMaterialCode
      PrimaryKeyColumns: StockingPointID
      TargetType: CapacityAllocationResultsRuleConfiguration
      TypeIndex: CapacityAllocationResultsRuleConfigurationTypeIndex
      EDIMLColumn Division { Attribute: Division ValueType: String }
      EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
      EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
    }
  }
  EDITransformation.Transformation Transformation12
  {
    EDITableTransformation
    {
      InputTable: CapacityAllocationResultsRuleCo
      OutputTable: CapacityAllocationResultsRuleConfiguration
      EDIColumnMatch { InputColumn: Division OutputColumn: Division }
      EDIColumnMatch { InputColumn: ModuleMaterialCode OutputColumn: ModuleMaterialCode }
      EDIColumnMatch { InputColumn: PanelMaterialCode OutputColumn: PanelMaterialCode }
      EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
    }
  }
  EDIXLSLink.Source Source12
  {
    FileName: '产能分配结果规则.xlsx'
    EDIXLSLinkTable CapacityAllocationResultsRuleCo
    {
      Columns:
      [
        EDIXLSLinkColumn Division { ValueType: String }
        EDIXLSLinkColumn ModuleMaterialCode { ValueType: String }
        EDIXLSLinkColumn PanelMaterialCode { ValueType: String }
        EDIXLSLinkColumn StockingPointID { ValueType: String }
      ]
    }
  }
}
_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
Quintiq file version 2.0
#parent: #root
EDIBroker GlobalOTDTable_CAR_Export
{
  MDSDefinition: GlobalOTDTable
  TimeZone: 'ACT'
  UseOSTimeZone: false
  EDIModelLink.Source Source13
  {
    EDIMLTable CapacityAllocationResults
    {
      TargetType: CapacityAllocationResults
      EDIMLColumn Date { Attribute: Date ValueType: Date }
      EDIMLColumn Description { Attribute: Description ValueType: String }
      EDIMLColumn Division { Attribute: Division ValueType: String }
      EDIMLColumn ID { Attribute: ID ValueType: String }
      EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
      EDIMLColumn ModuleBase { Attribute: ModuleBase ValueType: String }
      EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
      EDIMLColumn ModuleMeasurementUnit { Attribute: ModuleMeasurementUnit ValueType: String }
      EDIMLColumn NumberOfModules { Attribute: NumberOfModules ValueType: Real }
      EDIMLColumn NumberOfPanels { Attribute: NumberOfPanels ValueType: Real }
      EDIMLColumn PanelBase { Attribute: PanelBase ValueType: String }
      EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
      EDIMLColumn PanelMeasurementUnit { Attribute: PanelMeasurementUnit ValueType: String }
      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
      EDIMLColumn RequirementDate { Attribute: RequirementDate ValueType: Date }
      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
      EDIMLColumn UserQuantity { Attribute: UserQuantity ValueType: Real }
      EDIMLColumn VersionNumber { Attribute: VersionNumber ValueType: String }
    }
  }
  EDITransformation.Transformation Transformation13
  {
    EDITableTransformation
    {
      InputTable: CapacityAllocationResults
      OutputTable: CapacityAllocationResults
      EDIColumnMatch { InputColumn: Date OutputColumn: Date }
      EDIColumnMatch { InputColumn: Description OutputColumn: Description }
      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
      EDIColumnMatch { InputColumn: ManufacturedDate OutputColumn: ManufacturedDate }
      EDIColumnMatch { InputColumn: ProductID OutputColumn: ProductID }
      EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
      EDIColumnMatch { InputColumn: UserQuantity OutputColumn: UserQuantity }
    }
  }
  EDIXLSLink.Destination Destination14
  {
    FileName: 'Destination14'
    EDIXLSLinkTable CapacityAllocationResults
    {
      Columns:
      [
        EDIXLSLinkColumn Date { ValueType: Date }
        EDIXLSLinkColumn Description { ValueType: String }
        EDIXLSLinkColumn ID { ValueType: String }
        EDIXLSLinkColumn ProductID { ValueType: String }
        EDIXLSLinkColumn StockingPointID { ValueType: String }
        EDIXLSLinkColumn UserQuantity { ValueType: Real }
        EDIXLSLinkColumn ManufacturedDate { ValueType: Date }
      ]
    }
  }
}
_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAllocationResultsRuleConfiguration_CapacityAllocationResults_CapacityAllocationResults_CapacityAllocationResultsRuleConfiguration
{
  #keys: '1[414702.0.387791788]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide CapacityAllocationResults
  {
    #keys: '3[414702.0.387791790][414702.0.387791789][414702.0.387791791]'
    Cardinality: '1toN'
    ObjectDefinition: CapacityAllocationResultsRuleConfiguration
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAllocationResultsRuleConfiguration
  {
    #keys: '3[414702.0.387791793][414702.0.387791792][414702.0.387791794]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAllocationResults
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Date
{
  #keys: '3[414702.0.388471426][414702.0.388471425][414702.0.388471427]'
  ValueType: Date
}
_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Description
{
  #keys: '3[414702.0.388471436][414702.0.388471435][414702.0.388471437]'
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ID
{
  #keys: '3[414702.0.388471446][414702.0.388471445][414702.0.388471447]'
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ManufacturedDate
{
  #keys: '3[414702.0.388471486][414702.0.388471485][414702.0.388471487]'
  ValueType: Date
}
_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.0.388471456][414702.0.388471455][414702.0.388471457]'
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[414702.0.388471466][414702.0.388471465][414702.0.388471467]'
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UserQuantity
{
  #keys: '3[414702.0.388471476][414702.0.388471475][414702.0.388471477]'
  ValueType: Real
}
_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcCapacityAllocationResultsRuleConfiguration
{
  #keys: '1[414702.0.388304510]'
  Expression:
  [*
    targetCapacityAllocationResultsRuleConfiguration := select( this.GlobalOTDTable(), CapacityAllocationResultsRuleConfiguration, tempCARRC,
                                                                tempCARRC.ModuleMaterialCode() = this.ModuleMaterialCode() and
                                                                tempCARRC.PanelMaterialCode() = this.PanelMaterialCode() );
    return targetCapacityAllocationResultsRuleConfiguration;
  *]
  Relation: CapacityAllocationResultsRuleConfiguration
}
_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
@@ -2,7 +2,8 @@
#parent: #root
StaticMethod CreateDate (
  GlobalOTDTable globalOTDTable,
  MacroPlan macroPlan
  MacroPlan macroPlan,
  Scenario scenario
)
{
  TextBody:
@@ -17,12 +18,16 @@
    }
    
    traverse ( finaleProductInStockingPoint_MPs, Elements, fpispmp ) {
      capacityAllocationResultsRuleConfiguration := select( globalOTDTable, CapacityAllocationResultsRuleConfiguration, tempCARRC, tempCARRC.ModuleMaterialCode() = fpispmp.ProductID() and tempCARRC.StockingPointID() = fpispmp.StockingPointID() );
      capacityAllocationResultsRuleConfigurations := selectset( globalOTDTable, CapacityAllocationResultsRuleConfiguration, tempCARRC, tempCARRC.ModuleMaterialCode() = fpispmp.ProductID() and tempCARRC.StockingPointID() = fpispmp.StockingPointID() );
      info( "生产的产品:", fpispmp.ProductID(), "------产品在库存点-------:", fpispmp.StockingPointID() );
      traverse ( period_MPS, Elements, pmp ) {     
        // CapacityAllocationResults::IterativeGeneration( globalOTDTable, pisp, 1, null( NewSupply ), -1.0, pmp.StartDate() ); è€ç‰ˆ
        CapacityAllocationResults::IterativeGeneration2( fpispmp, pmp.StartDate(), capacityAllocationResultsRuleConfiguration, 0, 0.0 );
        CapacityAllocationResults::IterativeGeneration2( globalOTDTable, fpispmp, pmp.StartDate(), capacityAllocationResultsRuleConfigurations, 0, null( NewSupply ), 0.0 );
      }
    }
    traverse ( globalOTDTable, CapacityAllocationResults, car ) {
      car.VersionNumber( scenario.Name() );
    }
  *]
}
_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  GlobalOTDTable globalOTDTable
) as BinaryValue
{
  TextBody:
  [*
    binaryData := globalOTDTable.GlobalOTDTable_CAR_Export().ExecuteToXLS( true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
@@ -1,37 +1,93 @@
Quintiq file version 2.0
#parent: #root
StaticMethod IterativeGeneration2 (
  GlobalOTDTable globalOTDTable,
  ProductInStockingPoint_MP pisp,
  Date targetDate,
  CapacityAllocationResultsRuleConfiguration carrcs,
  CapacityAllocationResultsRuleConfigurations carrcs,
  Number numberOfLayers,
  Real firstLevelSupply
  NewSupply firstLevelSupply,
  Real currentLayerDependentDemandQuantity
)
{
  TextBody:
  [*
    numberOfLayers++;
    info( "层数:", numberOfLayers, "    ç›®æ ‡æ—¶é—´ï¼š", targetDate.Format( "Y-M2-D2" ) );
    info( "目标时间:", targetDate.Format( "Y-M2-D2" ) );
    info( pisp.Name() );
    traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, pispippl.Start().Date() = targetDate ) {
      traverse ( pispippl, NewSupply, ns, ns.Quantity() > 0 ) {
        info( "当前供应的pisp:", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() );
        if ( numberOfLayers = 1 ) {
          firstLevelSupply := ns.Quantity();
          firstLevelSupply := ns;
        }
        
        if ( guard( ns.PeriodTask_MP().astype( PeriodTaskOperation ).DependentDemand( relsize ) > 0, false ) ) {
          traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd ) {
            CapacityAllocationResults::IterativeGeneration2( dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
        ontype( ns.PeriodTask_MP() ) {
          PeriodTaskOperation as pto : {
            info( "Operation周期任务..." );
            traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd ) {
              currentLayerDependentDemandQuantity := currentLayerDependentDemandQuantity                     *
                                                     ns.ProcessOutput().astype( OperationOutput ).Quantity() *
                                                     dd.ProcessInput().astype( OperationInput ).Quantity();
              info( "层数:", numberOfLayers, "    å½“前供应的pisp:", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    æ€»ä¾›åº”值:", ns.Quantity(), "    éœ€è¦ä¾›åº”值:", currentLayerDependentDemandQuantity,
                    "    å½“前需求pisp:", dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    éœ€æ±‚值:", currentLayerDependentDemandQuantity );
              info( "-----------------------------------------------------------------------------------------------------------------" );
              CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
                                                               dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
                                                               targetDate,
                                                               carrcs,
                                                               numberOfLayers,
                                                               firstLevelSupply,
                                                               currentLayerDependentDemandQuantity
                                                              );
            }
            carrc := select( carrcs, Elements, carrc, carrc.PanelMaterialCode() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() );
            if ( not isnull( carrc ) ) {
              info( "找到面板物料..." );
              globalOTDTable.CapacityAllocationResults( relnew,
                                                        PanelBase             := pto.Operation().UnitID(),
                                                        PanelMaterialCode     := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
                                                        NumberOfPanels        := currentLayerDependentDemandQuantity,
                                                        PanelMeasurementUnit  := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().UnitOfMeasureName(),
                                                        ModuleMaterialCode    := firstLevelSupply.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
                                                        NumberOfModules       := firstLevelSupply.Quantity(),
                                                        ModuleMeasurementUnit := firstLevelSupply.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().UnitOfMeasureName(),
                                                        ModuleBase            := guard( firstLevelSupply.PeriodTask_MP().astype( PeriodTaskOperation ).Operation().UnitID(), "车道运输" ),
                                                        Division              := carrc.Division(),
                                                        RequirementDate       := ns.Start().Date(),
                                                        Date                  := ns.Start().Date(),
                                                        Description           := "",
                                                        ID                    := OS::GenerateGUIDAsString(),
                                                        ProductID             := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
                                                        StockingPointID       := "",
                                                        UserQuantity          := currentLayerDependentDemandQuantity,
                                                        ManufacturedDate      := Date::MinDate()
                                                       );
            }
            info( "-----------------------------------------------------------------------------------------------------------------" );
          }
          PeriodTaskLaneLeg as ptll : {
            targetDependentDemand := select( ptll, DependentDemand, dd, dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() );
            currentLayerDependentDemandQuantity := ifexpr( numberOfLayers = 1, targetDependentDemand.Quantity(), currentLayerDependentDemandQuantity );
            info( "层数:", numberOfLayers,"    å½“前供应的pisp:", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    æ€»ä¾›åº”值:", ns.Quantity(), "    éœ€è¦ä¾›åº”值:", currentLayerDependentDemandQuantity,
                  "    å½“前需求pisp:", targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), "    éœ€æ±‚值:", currentLayerDependentDemandQuantity );
            info( "LaneLeg周期任务..." );
            info( "-----------------------------------------------------------------------------------------------------------------" );
            CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
                                                             targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
                                                             targetDate,
                                                             carrcs,
                                                             numberOfLayers,
                                                             firstLevelSupply
                                                             firstLevelSupply,
                                                             currentLayerDependentDemandQuantity
                                                            );
          }
        }
        
        firstLevelSupply := 0.0;
        if ( numberOfLayers = 1 ) {
          firstLevelSupply := null( NewSupply );
        }
      }
    }
  *]
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl
@@ -4,5 +4,6 @@
{
  #keys: '3[414702.0.374991437][414702.0.374991436][414702.0.374991438]'
  Description: '模组物料编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl
@@ -4,5 +4,6 @@
{
  #keys: '3[414702.0.374991427][414702.0.374991426][414702.0.374991428]'
  Description: '面板物料编码'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl
@@ -3,6 +3,7 @@
Attribute StockingPointID
{
  #keys: '3[414702.0.375010145][414702.0.375010144][414702.0.375010146]'
  Description: '库存点ID'
  Description: '模组产成品库存点ID'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  GlobalOTDTable globalOTDTable
) as BinaryValue
{
  TextBody:
  [*
    // hongjli Sep-25-2023 (created)
    binaryValue := globalOTDTable.GlobalOTDTable_CARRC_Export().ExecuteToXLS( true ).AsBinaryValue();
    return binaryValue;
  *]
}
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  GlobalOTDTable globalOTDTable,
  String base64String
)
{
  TextBody:
  [*
    binaryData := BinaryData::FromBase64EncodedString( base64String );
    globalOTDTable.GlobalOTDTable_CARRC_Import().ExecuteFromXLS( &binaryData, true );
  *]
}
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
TypeIndex CapacityAllocationResultsRuleConfigurationTypeIndex
{
  Attributes:
  [
    TypeIndexAttribute
    {
      ModelElement: ModuleMaterialCode
    }
    TypeIndexAttribute
    {
      ModelElement: PanelMaterialCode
    }
    TypeIndexAttribute
    {
      ModelElement: StockingPointID
    }
  ]
}
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
@@ -5,7 +5,7 @@
  #keys: '[414702.0.340554926]'
  Body:
  [*
    CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan );
    CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, SelectionScenario.Data() );
  *]
  CanBindMultiple: false
  DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def
@@ -23,7 +23,7 @@
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.ModuleMaterialCode'
        Label: '模板物料编码'
        Label: '模板产成品ID'
        Taborder: 1
      ]
    }
@@ -45,7 +45,7 @@
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.StockingPointID'
        Label: '库存点ID'
        Label: '模组产成品库存点ID'
        Taborder: 3
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def
@@ -19,10 +19,11 @@
                                                                   StockingPointID    := efStockingPointID.Text()
                                                                  );
      } else {
        data.PanelMaterialCode( efPanelMaterialCode.Text() );
        data.ModuleMaterialCode( efModuleMaterialCode.Text() );
        data.Division( efDivision.Text() );
        data.StockingPointID( efStockingPointID.Text() );
        DataHolderDialogData.Data().PanelMaterialCode( efPanelMaterialCode.Text() );
        DataHolderDialogData.Data().ModuleMaterialCode( efModuleMaterialCode.Text() );
        DataHolderDialogData.Data().Division( efDivision.Text() );
        DataHolderDialogData.Data().StockingPointID( efStockingPointID.Text() );
        DataHolderDialogData.Data().Commit();
      }
      
      
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def
@@ -1,26 +1,26 @@
Quintiq file version 2.0
Component ListCapacityAllocationResults
{
  #keys: '[414702.0.338762075]'
  #keys: '[414702.0.390053833]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorCapacityAllocationResults
    {
      #keys: '[414702.0.338762076]'
      #keys: '[414702.0.390053834]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        DataType: 'structured[CapacityAllocationResultsRuleConfiguration]'
        Source: 'FormCapacityAllocationResultsRuleConfiguration.DataHolderSelectCapacityAllocationResultsRuleConfiguration'
        Taborder: 0
        Transformation: 'CapacityAllocationResults'
        Transformation: 'Elements.CapacityAllocationResults'
      ]
    }
    #child: listActionBarPageCapacityAllocationResults
    Component DataSetLevelCapacityAllocationResults
    {
      #keys: '[414702.0.338762081]'
      #keys: '[414702.0.390053839]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
@@ -28,7 +28,7 @@
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VersionNumber","title":"VersionNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VersionNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMeasurementUnit","title":"PanelMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMaterialCode","title":"PanelMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfPanels","title":"NumberOfPanels","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfPanels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMeasurementUnit","title":"PanelMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMaterialCode","title":"ModuleMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfModules","title":"NumberOfModules","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfModules"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMeasurementUnit","title":"ModuleMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMeasurementUnit","title":"ModuleMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Division","title":"Division","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Division"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"RequirementDate","title":"RequirementDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"RequirementDate"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Date","title":"Date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Date"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Description","title":"Description","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Description"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UserQuantity","title":"UserQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UserQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ManufacturedDate","title":"ManufacturedDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ManufacturedDate"}}]'
        ContextMenu: 'listContextMenuCapacityAllocationResults'
        Taborder: 2
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component PanelCapacityAllocationResults
{
  #keys: '[414702.0.391687385]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonGenerateCapacityAllocationResults id:ButtonGenerateCapacityAllocationResults_570
    {
      #keys: '[414702.0.391717497]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'PROCESS'
        Label: '生成数据'
        Taborder: 0
      ]
    }
    Component Export id:Export_398
    {
      #keys: '[414702.0.392048461]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component listActionBarPageCapacityAllocationResults
{
  #keys: '[414702.0.338762078]'
  #keys: '[414702.0.390053836]'
  BaseType: 'listActionBarPage'
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component listContextMenuCapacityAllocationResults
{
  #keys: '[414702.0.338762083]'
  #keys: '[414702.0.390053841]'
  BaseType: 'listContextMenu'
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_ButtonGenerateCapacityAllocationResults_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR#39.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelCapacityAllocationResults/ButtonGenerateCapacityAllocationResults_570
Response OnClick () id:Response_FormCapacityAllocationResults_ButtonGenerateCapacityAllocationResults_OnClick_39
{
  #keys: '[414702.0.391717496]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, DataHolderActiveScenario.Data() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelCapacityAllocationResults/Export_398
Response OnClick () id:Response_PanelCapacityAllocationResults_Export_OnClick
{
  #keys: '[414702.0.391791234]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Application.Download( "产能分配结果.xlsx", CapacityAllocationResults::Export( GlobalOTDTable ).AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def
@@ -8,17 +8,7 @@
  Children:
  [
    #child: ListCapacityAllocationResults
    Component ButtonGenerateCapacityAllocationResults
    {
      #keys: '[414702.0.340677556]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'PROCESS'
        Label: '生成数据'
        Taborder: 0
      ]
    }
    #child: PanelCapacityAllocationResults
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def
@@ -36,7 +36,7 @@
  ]
  Properties:
  [
    Taborder: 0
    Taborder: 1
  ]
  ResponseDefinitions:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
Component PanelImportAndExport
{
  #keys: '[414702.0.391512140]'
  BaseType: 'WebPanel'
  Children:
  [
    Component Import
    {
      #keys: '[414702.0.390081531]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 0
      ]
    }
    Component Export
    {
      #keys: '[414702.0.391512453]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: DataHolderSelectCapacityAllocationResultsRuleConfiguration
Response OnDataChanged () id:Response_FormCapacityAllocationResultsRuleConfiguration_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataChanged
{
  #keys: '[414702.0.391379706]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  QuillAction
  {
    Body:
    [*
      traverse ( this.Data(), Elements, e ) {
        info( "面板物料ID:", e.PanelMaterialCode() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelImportAndExport/Export
Response OnClick () id:Response_PanelImportAndExport_Export_OnClick
{
  #keys: '[414702.0.391658465]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Application.Download( "产能分配结果规则.xlsx", CapacityAllocationResultsRuleConfiguration::Export( GlobalOTDTable ).AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
#parent: PanelImportAndExport/Import
Response OnClick () id:Response_PanelImportAndExport_Import_OnClick
{
  #keys: '[414702.0.391899822]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          CapacityAllocationResultsRuleConfiguration::Import( GlobalOTDTable, base64String );
          WebMessageBox::Success( "上传成功", true );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation(), true );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def
@@ -8,6 +8,32 @@
  Children:
  [
    #child: ListCapacityAllocationResultsRuleConfiguration
    Component DataHolderSelectCapacityAllocationResultsRuleConfiguration
    {
      #keys: '[414702.0.390054479]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[CapacityAllocationResultsRuleConfiguration]*'
      Children:
      [
        Component DataExtractorSelectCapacityAllocationResultsRuleConfiguration
        {
          #keys: '[414702.0.391186862]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'CapacityAllocationResultsRuleConfiguration'
            ExtractionMode: 'Selected'
            Source: 'ListCapacityAllocationResultsRuleConfiguration'
            Taborder: 0
          ]
        }
      ]
      Properties:
      [
        Taborder: 2
      ]
    }
    #child: PanelImportAndExport
  ]
  Properties:
  [