rislai
2024-08-07 08a26d6a64f0800623c1bfb857f46045c4866547
添加计划汇总报表
已重命名1个文件
已添加95个文件
已修改15个文件
已删除2个文件
2462 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_MP_Column_MP_Cell_MP_Cell_MP_Column.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MP_Row_MP_Cell_MP_Cell_MP_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MP_Table_MP_Column_MP_Column_MP_Table.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MP_Table_MP_Row_MP_Row_MP_Table.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MP_Table_MacroPlan_MacroPlan_MP_Table.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ScheduleSummaryOutputData_ScheduleSummaryOutputLine_ScheduleSummary.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ScheduleSummaryOutputLine_Archive_Archive_ScheduleSummaryOutputLine.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetTableName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_OfflinePlanComparison/_ROOT_Type_LocalCell_OfflinePlanComparison.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_Capacity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_Output.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_ShiftPattern.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_WorkingDay.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/DefaultValue_ShiftPattern.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Method_GetAttributeByName.qbl 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/Method_GetDisplayNameByName.qbl 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_AsyncExport.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_GetAttributeNames.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_GetColumnXML.qbl 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary#859/_ROOT_Type_LocalCell_ScheduleSummary.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_Capacity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_Output.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_ShiftPattern.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_WorkingDay.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_Create.qbl 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_CreateFullTable.qbl 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_ExportOutputTemplate.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_GetTableName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_ImportOutput.qbl 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_ScheduleSummary/_ROOT_Type_MP_Cell_ScheduleSummary.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Cell/_ROOT_Type_MP_Cell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_CustomDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_CustomIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_IsAttrbuteColumn.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/DefaultValue_CustomIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Function_CalcDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/Function_CalcIndex.qbl 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Column/_ROOT_Type_MP_Column.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/Attribute_CustomName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/Attribute_Index.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/Attribute_Remark.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/DefaultValue_CustomName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/DefaultValue_Remark.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Row/_ROOT_Type_MP_Row.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Table/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Table/Attribute_RowIndexCache.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Table/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Table/Method_GetRowIndexCache.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MP_Table/_ROOT_Type_MP_Table.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScheduleSummaryOutputData/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScheduleSummaryOutputData/Attribute_Output.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScheduleSummaryOutputData/_ROOT_Type_ScheduleSummaryOutputData.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScheduleSummaryOutputLine/Attribute_LineName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ScheduleSummaryOutputLine/_ROOT_Type_ScheduleSummaryOutputLine.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Test/StaticMethod_Test.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonScheduleSummaryReport_OnCli.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation#568.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bDownload_OnClick#781.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_MatrixEditor#715.def 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_MatrixEditor510.def 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon322#88.def 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon504.def 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelScheduleSummary.def 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixEditorActionBarPageDemandComparison#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixEditorActionBarPageDemandComparison234.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixeditorContextMenuDemandComparison#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixeditorContextMenuDemandComparison527.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Method_SetAttributes.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_bDownload_OnClick.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_bExport_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbCapacity_OnUserChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbOutput_OnUserChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbShiftPlan_OnUserChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbWorkday_OnUserChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dhEndDate_OnCreated#478.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dhStartDate_OnCreated#57.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dsEndDate_OnChanged#273.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dsStartDate_OnChanged#298.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon820_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bExportTemplate_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bImportOutput_OnClick.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_npYear_OnCreated.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhCheckedEntity_OnDataChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData854_OnCreated.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData854_OnDataChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData_OnDataChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhFinelEntity_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/_ROOT_Component_FormScheduleSummaryReport.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/ScheduleSummaryReport.vw 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MP_Column_MP_Cell_MP_Cell_MP_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MP_Column_MP_Cell_MP_Cell_MP_Column
{
  #keys: '1[412672.1.95254848]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MP_Cell
  {
    #keys: '3[412672.1.95254850][412672.1.95254849][412672.1.95254851]'
    Cardinality: '1toN'
    ObjectDefinition: MP_Column
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MP_Column
  {
    #keys: '3[412672.1.95254853][412672.1.95254852][412672.1.95254854]'
    Cardinality: '0to1'
    ObjectDefinition: MP_Cell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MP_Row_MP_Cell_MP_Cell_MP_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MP_Row_MP_Cell_MP_Cell_MP_Row
{
  #keys: '1[412672.1.95254835]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MP_Cell
  {
    #keys: '3[412672.1.95254837][412672.1.95254836][412672.1.95254838]'
    Cardinality: '1toN'
    ObjectDefinition: MP_Row
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MP_Row
  {
    #keys: '3[412672.1.95254840][412672.1.95254839][412672.1.95254841]'
    Cardinality: '0to1'
    ObjectDefinition: MP_Cell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MP_Table_MP_Column_MP_Column_MP_Table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MP_Table_MP_Column_MP_Column_MP_Table
{
  #keys: '1[412672.1.95254822]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MP_Column
  {
    #keys: '3[412672.1.95254824][412672.1.95254823][412672.1.95254825]'
    Cardinality: '1toN'
    ObjectDefinition: MP_Table
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MP_Table
  {
    #keys: '3[412672.1.95254827][412672.1.95254826][412672.1.95254828]'
    Cardinality: '0to1'
    ObjectDefinition: MP_Column
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MP_Table_MP_Row_MP_Row_MP_Table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MP_Table_MP_Row_MP_Row_MP_Table
{
  #keys: '1[412672.1.95254809]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MP_Row
  {
    #keys: '3[412672.1.95254811][412672.1.95254810][412672.1.95254812]'
    Cardinality: '1toN'
    ObjectDefinition: MP_Table
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MP_Table
  {
    #keys: '3[412672.1.95254814][412672.1.95254813][412672.1.95254815]'
    Cardinality: '0to1'
    ObjectDefinition: MP_Row
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MP_Table_MacroPlan_MacroPlan_MP_Table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MP_Table_MacroPlan_MacroPlan_MP_Table
{
  #keys: '1[412672.1.95254796]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412672.1.95254798][412672.1.95254797][412672.1.95254799]'
    Cardinality: '0to1'
    ObjectDefinition: MP_Table
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MP_Table
  {
    #keys: '3[412672.1.95254801][412672.1.95254800][412672.1.95254802]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ScheduleSummaryOutputData_ScheduleSummaryOutputLine_ScheduleSummary.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ScheduleSummaryOutputData_ScheduleSummaryOutputLine_ScheduleSummaryOutputLine_ScheduleSummaryOutputData
{
  #keys: '1[412672.1.95294307]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ScheduleSummaryOutputLine
  {
    #keys: '3[412672.1.95294309][412672.1.95294308][412672.1.95294310]'
    Cardinality: '0to1'
    ObjectDefinition: ScheduleSummaryOutputData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ScheduleSummaryOutputData
  {
    #keys: '3[412672.1.95294312][412672.1.95294311][412672.1.95294313]'
    Cardinality: '1toN'
    ObjectDefinition: ScheduleSummaryOutputLine
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ScheduleSummaryOutputLine_Archive_Archive_ScheduleSummaryOutputLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ScheduleSummaryOutputLine_Archive_Archive_ScheduleSummaryOutputLine
{
  #keys: '1[412672.1.95294320]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Archive
  {
    #keys: '3[412672.1.95294322][412672.1.95294321][412672.1.95294323]'
    Cardinality: '0to1'
    ObjectDefinition: ScheduleSummaryOutputLine
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ScheduleSummaryOutputLine
  {
    #keys: '3[412672.1.95294325][412672.1.95294324][412672.1.95294326]'
    Cardinality: '1toN'
    ObjectDefinition: Archive
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_ExportXMLManager/StaticMethod_AwaitLocalTableXMLData.qbl
@@ -9,15 +9,17 @@
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    manager := select( owner,ExportXMLManager,manager,manager.Name() = "LocalTableXML" );
    manager := select( owner,ExportXMLManager,manager,manager.Name() = tableName );
    if( isnull( manager )){
      manager := owner.ExportXMLManager( relnew,Name := "LocalTableXML",SheetName := tableName );
      manager := owner.ExportXMLManager( relnew,Name := tableName,SheetName := tableName );
    }else{
      manager.ExportXMLData( relflush );
    }
    traverse( columnXMLData,Elements,element,element.TrimBoth() <> "" ){
       data := manager.ExportXMLData( relnew, XML := element);
       if( element.LikeUserLocale( "Product ID" )){
         data.Priority( 1 );
       }else if( element.LikeUserLocale( "产线" )){
         data.Priority( 1 );
       }else if( element.LikeUserLocale( "Attribute" )){
         data.Priority( 2 );
@@ -30,6 +32,8 @@
       }else if( element.LikeUserLocale( "发动机四位码" )){
         data.Priority( 6 );
       }else{
         info( element );
         //  <column><name>2020/04/01</name>
         data.Priority( [Number]element.SubString( 14,10 ).ReplaceAll( "/","") );
       }
    }
_Main/BL/Type_LocalCell_Default/_ROOT_Type_LocalCell_Default.qbl
@@ -4,6 +4,7 @@
TypeSpecialization LocalCell_Default
{
  #keys: '2[412672.1.5620864][412672.1.5620859]'
  Description: '默认单元格'
  Parent: LocalCell
  StructuredName: 'LocalCell_Defaults'
}
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_AsyncExport.qbl
@@ -27,6 +27,6 @@
      columnstring := columnstring.Merge( cellxml);
    }
     
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),LocalCell_DemandComparison::GetTableName()) );
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GetTableName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetTableName () const declarative remote as owning String
{
  TextBody:
  [*
    // rislai Aug-7-2024 (created)
    return "需求版本对比";
  *]
}
_Main/BL/Type_LocalCell_DemandComparison/_ROOT_Type_LocalCell_DemandComparison.qbl
@@ -4,6 +4,7 @@
TypeSpecialization LocalCell_DemandComparison
{
  #keys: '2[412672.0.1087844722][412672.0.1087844717]'
  Description: '需求对比报表'
  Parent: LocalCell
  StructuredName: 'LocalCell_DemandComparisons'
}
_Main/BL/Type_LocalCell_OfflinePlanComparison/_ROOT_Type_LocalCell_OfflinePlanComparison.qbl
@@ -4,6 +4,7 @@
TypeSpecialization LocalCell_OfflinePlanComparison
{
  #keys: '2[412672.1.76654683][412672.1.76654682]'
  Description: '下线计划对比报表'
  Parent: LocalCell
  StructuredName: 'LocalCell_OfflinePlanComparisons'
}
_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl
@@ -4,6 +4,7 @@
TypeSpecialization LocalCell_ProductionComparison
{
  #keys: '2[412672.1.64753741][412672.1.64753740]'
  Description: '生产计划对比报表'
  Parent: LocalCell
  StructuredName: 'LocalCell_ProductionComparisons'
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_Capacity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Capacity
{
  #keys: '3[412672.1.95303230][412672.1.95303229][412672.1.95303231]'
  Description: '产能'
  ValueType: Real
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_Output.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Output
{
  #keys: '3[412672.1.95303221][412672.1.95303220][412672.1.95303222]'
  Description: '产出'
  ValueType: Real
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_ShiftPattern.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPattern
{
  #keys: '3[412672.1.95303224][412672.1.95303223][412672.1.95303225]'
  ValueType: String
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Attribute_WorkingDay.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute WorkingDay
{
  #keys: '3[412672.1.95303227][412672.1.95303226][412672.1.95303228]'
  Description: '工作日'
  ValueType: Number
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/DefaultValue_ShiftPattern.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ShiftPattern
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Method_GetAttributeByName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
#parent: #root
Method GetAttributeByName (
  String attributeName
) const declarative remote as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    value := "";
    if( attributeName = "ShiftPattern" ){
       if( not this.LocalColumn().IsAttrbuteColumn() ){
         value := this.ShiftPattern();
       }
    }
    if( attributeName = "Capacity" ){
       if( not this.LocalColumn().IsAttrbuteColumn() ){
         value := this.Capacity().Format( "N(Dec)" );
       }
    }
    if( attributeName = "Output" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := this.Output().Format( "N(Dec)" );
      }
    }
    if( attributeName = "WorkingDay" ){
      if( not this.LocalColumn().IsAttrbuteColumn() ){
        value := [String]this.WorkingDay();
      }
    }
    return value;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/Method_GetDisplayNameByName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: #root
Method GetDisplayNameByName (
  String attributeName
) const declarative remote as String
{
  TextBody:
  [*
    // rislai Aug-7-2024 (created)
    // rislai Jun-21-2024 (created)
    value := "";
    if( attributeName = "ShiftPattern" ){
       value := "班次";
    }
    if( attributeName = "Capacity" ){
       value := "产能";
    }
    if( attributeName = "Output" ){
      value := "产出";
    }
    if( attributeName = "WorkingDay" ){
      value := "工作日";
    }
    return value;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_AsyncExport.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#parent: #root
StaticMethod AsyncExport (
  RecycleBin recycleBin,
  const constcontent LocalRows rows,
  const constcontent LocalColumns columns
)
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
    attributeNames := LocalCell_ScheduleSummary::GetAttributeNames();
    columnstring := emit( "" );
    flag := true;
    traverse( sortColumns,Elements,sortColumn ){
      if( flag ){
        attributeXML := rows -> LocalCell_ScheduleSummary::GetColumnXML( sortColumn,attributeNames,"attribute" );
        columnstring := columnstring.Merge( attributeXML )
        flag := false;
      }
      cellxml := rows -> LocalCell_ScheduleSummary::GetColumnXML( sortColumn,attributeNames ,"data" );
      columnstring := columnstring.Merge( cellxml);
    }
    columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),MP_Cell_ScheduleSummary::GetTableName()) );
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_GetAttributeNames.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetAttributeNames () const declarative as owning Strings
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    attributeNames := construct( Strings );
    attributeNames.Add( "ShiftPattern" );
    attributeNames.Add( "WorkingDay" );
    attributeNames.Add( "Capacity" );
    attributeNames.Add( "Output" );
    return &attributeNames;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/StaticMethod_GetColumnXML.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetColumnXML (
  const constcontent LocalRows rows,
  const LocalColumn column,
  const Strings attributeNames,
  String type
) const as String
{
  TextBody:
  [*
    // rislai Jun-21-2024 (created)
    columnXML := "";
    cells := selectsortedset( column, LocalCell.astype( LocalCell_ScheduleSummary ), cell,
                                  exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
    if( type = "data" ){
      columnXML := "<column><name>" + column.CustomDate().Format( "Y/M2/D2") + "</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        traverse( attributeNames ,Elements,e ){
          cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
          columnXML := columnXML + cellXML;
        }
      }
      columnXML := columnXML + "</column>";
    }
    if( type = "attribute" ){
      columnXML1 := "<column><name>产线</name><type>String</type>";
      columnXML2 := "<column><name>Attribute</name><type>String</type>";
      traverse ( cells, Elements, cell ) {
        flag := true;
        traverse( attributeNames ,Elements,e ){
          if( flag ){
            cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
            columnXML1 := columnXML1 + cellXML;
            flag := false;
          }else{
            cellXML := '<cell value="  "/>'
            columnXML1 := columnXML1 + cellXML;
          }
          cellXML := '<cell value="' + cell.GetDisplayNameByName( e ) + '"/>'
          columnXML2 := columnXML2 + cellXML;
        }
      }
      columnXML := columnXML1 + "</column>" + columnXML2 + "</column>";
    }
    return columnXML;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary#859/_ROOT_Type_LocalCell_ScheduleSummary.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization LocalCell_ScheduleSummary
{
  #keys: '2[412672.1.95303218][412672.1.95303213]'
  Parent: LocalCell
  StructuredName: 'LocalCell_ScheduleSummarys'
}
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_Capacity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Capacity
{
  #keys: '3[412672.1.95254748][412672.1.95254747][412672.1.95254749]'
  Description: '产能'
  ValueType: Real
}
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_Output.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Output
{
  #keys: '3[412672.1.95254758][412672.1.95254757][412672.1.95254759]'
  Description: '产出'
  ValueType: Real
}
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_ShiftPattern.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPattern
{
  #keys: '3[412672.1.95291524][412672.1.95291523][412672.1.95291525]'
  ValueType: String
}
_Main/BL/Type_LocalCell_ScheduleSummary/Attribute_WorkingDay.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute WorkingDay
{
  #keys: '3[412672.1.95254735][412672.1.95254734][412672.1.95254736]'
  Description: '工作日'
  ValueType: Number
}
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  MacroPlan owner
) as MP_Table
{
  TextBody:
  [*
    // rislai Aug-6-2024 (created)
    table := select( owner,MP_Table,table,table.Name() = MP_Cell_ScheduleSummary::GetTableName() );
    if( not isnull( table )){
      table.Delete();
    }
    table := owner.MP_Table( relnew,Name := MP_Cell_ScheduleSummary::GetTableName());
    startDate := owner.StartOfPlanning().Date();
    endDate := startDate + 7;
    columns := construct( MP_Columns );
    columnIndexTree := NamedValueTree::Create();
    for( i := startDate;i < endDate; i := i + 1){
      column := table.MP_Column( relnew,CustomDate := i );
      columnHandle := columnIndexTree.GetHandle( i.AsQUILL() );
      columns.Add( column );
      columnIndexTree.Root().AddChild( columnHandle,columns.Size() - 1 );
    }
    traverse( owner,Unit,unit,unit.HasCapacityTypeTime()){
      // unit.AsEntity().DisplayNameForSelection()
      row := table.MP_Row( relnew,CustomName := unit.ID(),Index := table.GetRowIndexCache() );
      throughput := sum( unit,Operation,operation,operation.Throughput() ) / unit.Operation( relsize );
      unitPeriodTimes := selectset( unit,UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,
                                        unitPeriodTime.Period_MP().StartDate() >= startDate
                                    and unitPeriodTime.Period_MP().EndDate() <= endDate
                                    and unitPeriodTime.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day());
      traverse( unitPeriodTimes,Elements,unitPeriodTime ){
        columnHandle := columnIndexTree.GetHandle( unitPeriodTime.Period_MP().StartDate().AsQUILL() );
        columnIndex := guard( columnIndexTree.Root().Child( columnHandle ),null( NamedValue ));
        if( not isnull( columnIndex )){
          // å½“arrowedAvailableCapacity不为0,工作日 + 1
          arrowedAvailableCapacity := unitPeriodTime.TotalAvailableCapacity();
          zeroDuration := Duration::Construct( 0,0,0,0);
          column := columns.Element( columnIndex.GetValueAsNumber() );
          dayOfWeek := column.CustomDate().DayOfWeek();
          workHours := select( unitPeriodTime,ShiftPattern.ShiftDay,shifDay,shifDay.Day_MP().ID() = dayOfWeek );
          capacity := 0.0;
          workDay := ifexpr( arrowedAvailableCapacity <> zeroDuration, 1,0 );
          if( not isnull( workHours )){
            capacity := workDay * throughput * workHours.Capacity().HoursAsReal()
          }
          row.MP_Cell( relnew,MP_Cell_ScheduleSummary,MP_Column := column,
                       ShiftPattern := unitPeriodTime.ShiftPatternName(),
                       WorkingDay := workDay,
                       Capacity := capacity,
                       Output := 0 );
        }
      }
    }
    return table;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_CreateFullTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,94 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateFullTable (
  const MacroPlans owners,
  RecycleBin recycleBin,
  const Archive archive
) as LocalTable
{
  TextBody:
  [*
    // rislai Aug-7-2024 (created)
    tables := construct( MP_Tables );
    traverse( owners,Elements,owner ){
      table := select( owner,MP_Table,table,table.Name() = MP_Cell_ScheduleSummary::GetTableName() );
      if( isnull( table )){
        table :=  MP_Cell_ScheduleSummary::Create( owner );
      }
      tables.Add( table );
    }
    scheduleSummaryOutputDataIndexTree := NamedValueTree::Create();
    scheduleSummaryOutputDatas := selectset( archive,ScheduleSummaryOutputLine.ScheduleSummaryOutputData,data,
                                             exists( tables,Elements.MP_Row,row,row.CustomName() = data.ScheduleSummaryOutputLine().LineName() ));
    for( i :=0;i < scheduleSummaryOutputDatas.Size();i++ ){
      scheduleSummaryOutputData := scheduleSummaryOutputDatas.Element( i );
      scheduleSummaryOutputDataKey := scheduleSummaryOutputData.ScheduleSummaryOutputLine().LineName() + scheduleSummaryOutputData.Date().AsQUILL();
      scheduleSummaryOutputDataHandle := scheduleSummaryOutputDataIndexTree.GetHandle( scheduleSummaryOutputDataKey );
      scheduleSummaryOutputDataIndexTree.Root().AddChild( scheduleSummaryOutputDataHandle,i );
    }
    info( scheduleSummaryOutputDataIndexTree.ToString() );
    localTable := recycleBin.LocalTable( relnew,Name := MP_Cell_ScheduleSummary::GetTableName() );
    startDate := minselect( tables,Elements.MP_Column,column,column.CustomDate() ).CustomDate();
    endDate := maxselect( tables,Elements.MP_Column,column,column.CustomDate() ).CustomDate();
    localColumns := construct( LocalColumns );
    localColumnIndexTree := NamedValueTree::Create();
    for( i := startDate.StartOfMonth(); i <= endDate.StartOfMonth(); i := i.StartOfNextMonth() ){
       localColumn := localTable.LocalColumn( relnew,CustomDate := i );
       localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() );
       localColumns.Add( localColumn );
       localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
    }
    traverse( tables,Elements.MP_Row,row ){
       localRow := localTable.LocalRow( relnew,CustomName := row.Name(),Index := localTable.GetRowIndexCache() );
       traverse( localColumns,Elements,localColumn ){
          cells := selectset( row,MP_Cell.astype( MP_Cell_ScheduleSummary ),cell,cell.MP_Column().CustomDate() >= localColumn.CustomDate() and cell.MP_Column().CustomDate() < localColumn.CustomDate().StartOfNextMonth() );
          output := 0.0;
          scheduleSummaryOutputDataKey := row.Name() + localColumn.CustomDate().AsQUILL();
          info( scheduleSummaryOutputDataKey );
          scheduleSummaryOutputDataHandle := scheduleSummaryOutputDataIndexTree.GetHandle( scheduleSummaryOutputDataKey );
          scheduleSummaryOutputDataIndex := guard( scheduleSummaryOutputDataIndexTree.Root().Child( scheduleSummaryOutputDataHandle ),null( NamedValue ));
          if( not isnull( scheduleSummaryOutputDataIndex )){
            scheduleSummaryOutputData := scheduleSummaryOutputDatas.Element( scheduleSummaryOutputDataIndex.GetValueAsNumber() );
            output := scheduleSummaryOutputData.Output();
          }
          maxShiftPattern := "";
          maxShiftPatternCount := 0;
          workingDay := 0;
          capacity := 0.0;
          traverse( cells,Elements,cell ){
             workingDay := workingDay + cell.WorkingDay();
             capacity := capacity + cell.Capacity();
             if( maxShiftPattern <> cell.ShiftPattern() ){
               if( maxShiftPatternCount = 0 ){
                  maxShiftPattern := cell.ShiftPattern();
                  maxShiftPatternCount ++;
               }else{
                  maxShiftPatternCount --;
               }
             }else{
                maxShiftPatternCount ++;
             }
          }
          localCell := localRow.LocalCell( relnew,LocalCell_ScheduleSummary,LocalColumn := localColumn );
          localCell.ShiftPattern( maxShiftPattern );
          localCell.WorkingDay( workingDay );
          localCell.Capacity( capacity );
          localCell.Output( output );
       }
    }
    return localTable;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_ExportOutputTemplate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportOutputTemplate (
  Number year
) as BinaryValue
{
  Description: '导出产出导入模板'
  TextBody:
  [*
    // rislai Aug-6-2024 (created)
    // Akari May-18-2024 (created)
    // rislai Jan-19-2024 (created)
    sheetName := "产出";
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?><table><name>'+ sheetName +'</name>';
    xmlTemplate := xmlTemplate + "<column><name>产线</name><type>String</type>";
    // xmlTemplate := xmlTemplate + '<cell value=" "/>';
    xmlTemplate := xmlTemplate + "</column>";
    for( i := 1 ; i <= 12 ; i++ ){
      xmlTemplate := xmlTemplate + "<column><name>" + Date::Construct( year,i,1 ).Format( "Y/M/D" ) + "</name><type>Number</type>";
      // xmlTemplate := xmlTemplate + '<cell value=" "/>';
      xmlTemplate := xmlTemplate + "</column>";
    }
    xmlTemplate := xmlTemplate + "</table>";
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "template.xlsx" );
    file := OSFile::Construct();
    file.Open( OS::TempPath() + "template.xlsx", "Read", true );
    data := file.ReadBinary();
    return data;
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_GetTableName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetTableName () const declarative remote as owning String
{
  TextBody:
  [*
    // rislai Aug-7-2024 (created)
    return "计划汇总报表";
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary/StaticMethod_ImportOutput.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ImportOutput (
  Archive archive,
  const GeneralExcelImportAndExportDataSource outputSource
)
{
  Description: '产出导入'
  TextBody:
  [*
    // rislai Aug-6-2024 (created)
    outputTable := select( outputSource,GeneralExcelImportAndExportDataTable,table,table.Name() = "产出");
    if( isnull( outputTable )){
      error( "导入的文件不正确" );
    }
    lines := construct( ScheduleSummaryOutputLines );
    lineIndexTree := NamedValueTree::Create();
    traverse( archive,ScheduleSummaryOutputLine,line ){
      lineHandle := lineIndexTree.GetHandle( line.LineName() );
      lines.Add( line );
      lineIndexTree.Root().AddChild( lineHandle,lines.Size() - 1 );
    }
    traverse( outputTable,GeneralExcelImportAndExportDataRow,row ){
      count := 0;
      line := null( ScheduleSummaryOutputLine );
      datas := construct( ScheduleSummaryOutputDatas );
      dataIndexTree := NamedValueTree::Create();
      traverse( row,GeneralExcelImportAndExportDataCell,cell ){
        if( count = 0 ){
          lineName := cell.Value();
          lineHandle := lineIndexTree.GetHandle( lineName );
          lineIndex := guard( lineIndexTree.Root().Child( lineHandle ),null( NamedValue ));
          if( isnull( lineIndex )){
            line := archive.ScheduleSummaryOutputLine( relnew,LineName := lineName );
            lines.Add( line );
            lineIndexTree.Root().AddChild( lineHandle,lines.Size() - 1 );
          }else{
            line := lines.Element( lineIndex.GetValueAsNumber() );
            traverse( line,ScheduleSummaryOutputData,data ){
              dataHandle := dataIndexTree.GetHandle( data.Date().AsQUILL() );
              datas.Add( data );
              dataIndexTree.Root().AddChild( dataHandle,datas.Size() - 1 );
            }
          }
        }else{
          stringsDate := cell.GeneralExcelImportAndExportDataColumn().Name().Tokenize( "/" );
          date := guard( Date::Construct( [Number]stringsDate.Element( 0 ),[Number]stringsDate.Element( 1 ),[Number]stringsDate.Element( 2 )),Date::MinDate() );
          dataHandle := dataIndexTree.GetHandle( date.AsQUILL() );
          dataIndex := guard( dataIndexTree.Root().Child( dataHandle ),null( NamedValue ));
          if( isnull( dataIndex )){
            data := line.ScheduleSummaryOutputData( relnew,Date := date,Output := [Real]cell.Value() );
            datas.Add( data );
            dataIndexTree.Root().AddChild( dataHandle,datas.Size() - 1 );
          }else{
            data := datas.Element( dataIndex.GetValueAsNumber() );
            data.Output( [Real]cell.Value() );
          }
        }
        count ++;
      }
    }
  *]
}
_Main/BL/Type_LocalCell_ScheduleSummary/_ROOT_Type_MP_Cell_ScheduleSummary.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization MP_Cell_ScheduleSummary
{
  #keys: '2[412672.1.95254704][412672.1.95254699]'
  Description: '计划汇总报表'
  Parent: MP_Cell
  StructuredName: 'MP_Cell_ScheduleSummarys'
}
_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
@@ -5,21 +5,22 @@
  TextBody:
  [*
    // rislai Jul-24-2024 (created)
    year := this.Date().Year();
    month := this.Date().Month();
    day := this.Date().Day();
    index := [String]year;
    if( month < 10 ){
      index := index + "0" + [String]month;
    value := 0;
    if( this.CustomIndex() = -999 ){
      year := this.Date().Year();
      month := this.Date().Month();
      day := this.Date().Day();
      index := [String]year;
      if( month < 10 ){
        index := index + "0" + [String]month;
      }
      if( day < 10 ){
        index := index + "0" + [String]day;
      }
      value := [Number]index;
    }else{
      value := this.CustomIndex();
    }
    if( day < 10 ){
      index := index + "0" + [String]day;
    }
    value := ifexpr( this.CustomIndex() = -999,[Number]index,this.CustomIndex() );
    this.Index( value );
  *]
}
_Main/BL/Type_MP_Cell/_ROOT_Type_MP_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MP_Cell
{
  #keys: '5[412672.1.95254793][412672.1.95254791][0.0.0][412672.1.95254792][412672.1.95254794]'
  BaseType: Object
  StructuredName: 'MP_Cells'
}
_Main/BL/Type_MP_Column/Attribute_CustomDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomDate
{
  #keys: '3[412672.1.95254881][412672.1.95254880][412672.1.95254882]'
  ValueType: Date
}
_Main/BL/Type_MP_Column/Attribute_CustomIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomIndex
{
  #keys: '3[412672.1.95254872][412672.1.95254871][412672.1.95254873]'
  ValueType: Number
}
_Main/BL/Type_MP_Column/Attribute_Date.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Date
{
  #keys: '3[412672.1.95254869][412672.1.95254868][412672.1.95254870]'
  ValueType: Date
}
_Main/BL/Type_MP_Column/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[412672.1.95254875][412672.1.95254874][412672.1.95254876]'
  ValueType: Number
}
_Main/BL/Type_MP_Column/Attribute_IsAttrbuteColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsAttrbuteColumn
{
  #keys: '3[412672.1.95254866][412672.1.95254865][412672.1.95254867]'
  ValueType: Boolean
}
_Main/BL/Type_MP_Column/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.1.95254878][412672.1.95254877][412672.1.95254879]'
  ValueType: String
}
_Main/BL/Type_MP_Column/DefaultValue_CustomIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: '-999'
  TargetAttribute: CustomIndex
}
_Main/BL/Type_MP_Column/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MP_Column/Function_CalcDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcDate
{
  TextBody:
  [*
    // rislai Jun-28-2024 (created)
    if( not this.IsAttrbuteColumn() ){
      names := this.Name().Tokenize( "/" );
      this.Date( ifexpr( this.CustomDate() <> Date::MinDate(),this.CustomDate(),guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() )));
    }
  *]
}
_Main/BL/Type_MP_Column/Function_CalcIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
#parent: #root
Function CalcIndex
{
  TextBody:
  [*
    // rislai Jul-24-2024 (created)
    year := this.Date().Year();
    month := this.Date().Month();
    day := this.Date().Day();
    index := [String]year;
    if( month < 10 ){
      index := index + "0" + [String]month;
    }
    if( day < 10 ){
      index := index + "0" + [String]day;
    }
    value := ifexpr( this.CustomIndex() = -999,[Number]index,this.CustomIndex() );
    this.Index( value );
  *]
}
_Main/BL/Type_MP_Column/_ROOT_Type_MP_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MP_Column
{
  #keys: '5[412672.1.95254788][412672.1.95254786][0.0.0][412672.1.95254787][412672.1.95254789]'
  BaseType: Object
  StructuredName: 'MP_Columns'
}
_Main/BL/Type_MP_Row/Attribute_CustomName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomName
{
  #keys: '3[412672.1.95254889][412672.1.95254888][412672.1.95254890]'
  ValueType: String
}
_Main/BL/Type_MP_Row/Attribute_Index.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Index
{
  #keys: '3[412672.1.95254892][412672.1.95254891][412672.1.95254893]'
  ValueType: Number
}
_Main/BL/Type_MP_Row/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.1.95254895][412672.1.95254894][412672.1.95254896]'
  ValueType: String
}
_Main/BL/Type_MP_Row/Attribute_Remark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Remark
{
  #keys: '3[412672.1.95254886][412672.1.95254885][412672.1.95254887]'
  ValueType: String
}
_Main/BL/Type_MP_Row/DefaultValue_CustomName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: CustomName
}
_Main/BL/Type_MP_Row/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MP_Row/DefaultValue_Remark.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Remark
}
_Main/BL/Type_MP_Row/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // rislai Jun-22-2024 (created)
    value := ifexpr( this.CustomName() = "",[String]this.Index(),this.CustomName() );
    this.Name( value );
  *]
}
_Main/BL/Type_MP_Row/_ROOT_Type_MP_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MP_Row
{
  #keys: '5[412672.1.95254783][412672.1.95254781][0.0.0][412672.1.95254782][412672.1.95254784]'
  BaseType: Object
  StructuredName: 'MP_Rows'
}
_Main/BL/Type_MP_Table/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[412672.1.95254900][412672.1.95254899][412672.1.95254901]'
  ValueType: String
}
_Main/BL/Type_MP_Table/Attribute_RowIndexCache.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowIndexCache
{
  #keys: '3[412672.1.95254903][412672.1.95254902][412672.1.95254904]'
  ValueType: Number
}
_Main/BL/Type_MP_Table/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MP_Table/Method_GetRowIndexCache.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method GetRowIndexCache () declarative as Number
{
  TextBody:
  [*
    // rislai Jun-20-2024 (created)
    this.RowIndexCache( this.RowIndexCache() + 1 );
    return this.RowIndexCache();
  *]
}
_Main/BL/Type_MP_Table/_ROOT_Type_MP_Table.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MP_Table
{
  #keys: '5[412672.1.95254778][412672.1.95254776][0.0.0][412672.1.95254777][412672.1.95254779]'
  BaseType: Object
  StructuredName: 'MP_Tables'
}
_Main/BL/Type_ScheduleSummaryOutputData/Attribute_Date.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Date
{
  #keys: '3[412672.1.95305012][412672.1.95305011][412672.1.95305013]'
  ValueType: Date
}
_Main/BL/Type_ScheduleSummaryOutputData/Attribute_Output.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Output
{
  #keys: '3[412672.1.95305022][412672.1.95305021][412672.1.95305023]'
  ValueType: Real
}
_Main/BL/Type_ScheduleSummaryOutputData/_ROOT_Type_ScheduleSummaryOutputData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ScheduleSummaryOutputData
{
  #keys: '5[412672.1.95304995][412672.1.95304993][0.0.0][412672.1.95304994][412672.1.95304996]'
  BaseType: Object
  StructuredName: 'ScheduleSummaryOutputDatas'
}
_Main/BL/Type_ScheduleSummaryOutputLine/Attribute_LineName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute LineName
{
  #keys: '3[412672.1.95294297][412672.1.95294296][412672.1.95294298]'
  ValueType: String
}
_Main/BL/Type_ScheduleSummaryOutputLine/_ROOT_Type_ScheduleSummaryOutputLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ScheduleSummaryOutputLine
{
  #keys: '5[412672.1.95294293][412672.1.95294291][0.0.0][412672.1.95294292][412672.1.95294294]'
  BaseType: Object
  StructuredName: 'ScheduleSummaryOutputLines'
}
_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -13,6 +13,14 @@
    //names := name.Tokenize( "/" );
    //  info( guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() ));
    
    info( macroPlan.DisplayNameForSelection() );
    //traverse( archive,ScheduleSummaryOutputLine,line ){
    //  info( line.LineName() );
    //  traverse( line,ScheduleSummaryOutputData,data ){
    //    info( data.Date().Format( "Y-M2-D2 ") + " ->" + [String]data.Output() );
    //  }
    //}
    attributes := "ShiftPattern;WorkingDay;Capacity;Output;".SubString( 0,"ShiftPattern;WorkingDay;Capacity;Output;".Length() - 1 );
    info( attributes );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -93,6 +93,17 @@
        Taborder: 7
      ]
    }
    Component ButtonScheduleSummaryReport
    {
      #keys: '[412672.1.95510221]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOCUMENT_CUP'
        Label: '计划汇总报表'
        Taborder: 8
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupScenarioComparisonViews#859.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarPageScenarioComparison.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonScheduleSummaryReport_OnCli.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ActionBarGroupReport/ButtonScheduleSummaryReport
Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonScheduleSummaryReport_OnClick
{
  #keys: '[412672.1.95510258]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'ScheduleSummaryReport', this );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -20,7 +20,6 @@
        #child: abpAlgorithmPostProcessing
        #child: ActionBarPagePlan
        #child: ActionBarPageReport
        #child: ActionBarPageScenarioComparison
      ]
    }
    Component dhBinaryDataPR id:dhBinaryDataPR_688
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelOperation#568.def
@@ -29,7 +29,7 @@
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = "LocalTableXML"'
            FixedFilter: 'object.Name() = LocalCell_DemandComparison::GetTableName()'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelOperation_568_bDownload_OnClick#781.def
@@ -21,7 +21,7 @@
    [*
      binaryValue := dhXMLDataListener.Data( ).Export();
      
      Application.Download( "需求版本对比_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
      Application.Download( LocalCell_DemandComparison::GetTableName() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
      
      dhXMLDataListener.Data( ).Delete();
    *]
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_MatrixEditor#715.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
Quintiq file version 2.0
Component MatrixEditor id:MatrixEditor_715
{
  #keys: '[412672.1.94121865]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell
    {
      #keys: '[412672.1.94121866]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCells
        {
          #keys: '[412672.1.94121867]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MP_Table'
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'MP_Row.MP_Cell.astype(MP_Cell_ScheduleSummary)'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'ShiftPattern;WorkingDay;Capacity;Output'
        Column: 'MP_Column'
        Row: 'MP_Row'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows
    {
      #keys: '[412672.1.94121868]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRows
        {
          #keys: '[412672.1.94121869]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MP_Table'
            FilterArguments: 'checkedEntity:QMacroPlanner::FormScheduleSummaryReport.dhFinelEntity'
            FixedFilter: 'exists( checkedEntity,Elements,entity,entity.DisplayName() = object.Name() )'
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'MP_Row'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns
    {
      #keys: '[412672.1.94121870]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumns
        {
          #keys: '[412672.1.94121871]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MP_Table'
            FilterArguments: 'startDate:QMacroPlanner::FormScheduleSummaryReport.dhStartDate;endDate:QMacroPlanner::FormScheduleSummaryReport.dhEndDate'
            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
            Source: 'dhComparisonData'
            Taborder: 0
            Transformation: 'MP_Column'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Date'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageDemandComparison_1
    #child: matrixeditorContextMenuDemandComparison_1
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns'
    ContextMenu: 'matrixeditorContextMenuDemandComparison'
    Rows: 'MatrixEditorRows'
    Taborder: 0
    Visible: false
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_MatrixEditor510.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
Quintiq file version 2.0
Component MatrixEditor510
{
  #keys: '[412672.1.96380864]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell294
    {
      #keys: '[412672.1.96380865]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCells611
        {
          #keys: '[412672.1.96380866]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            Source: 'dhComparisonData854'
            Taborder: 0
            Transformation: 'LocalRow.LocalCell.astype(LocalCell_ScheduleSummary)'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'ShiftPattern;WorkingDay;Capacity;Output'
        Column: 'LocalColumn'
        Row: 'LocalRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows221
    {
      #keys: '[412672.1.96380867]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRows116
        {
          #keys: '[412672.1.96380868]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            FilterArguments: 'checkedEntity:QMacroPlanner::FormScheduleSummaryReport.dhFinelEntity'
            FixedFilter: 'exists( checkedEntity,Elements,entity,entity.DisplayName() = object.Name() )'
            Source: 'dhComparisonData854'
            Taborder: 0
            Transformation: 'LocalRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns391
    {
      #keys: '[412672.1.96380869]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumns655
        {
          #keys: '[412672.1.96380870]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'LocalTable'
            FilterArguments: 'startDate:QMacroPlanner::FormScheduleSummaryReport.dhStartDate;endDate:QMacroPlanner::FormScheduleSummaryReport.dhEndDate'
            FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date() '
            Source: 'dhComparisonData854'
            Taborder: 0
            Transformation: 'LocalColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Date'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageDemandComparison234
    #child: matrixeditorContextMenuDemandComparison527
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns391'
    ContextMenu: 'matrixeditorContextMenuDemandComparison527'
    Rows: 'MatrixEditorRows221'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelRibbon
{
  #keys: '[412672.1.94122014]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelRibbon504
    #child: PanelRibbon322_88
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon322#88.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
Quintiq file version 2.0
Component PanelRibbon322 id:PanelRibbon322_88
{
  #keys: '[412672.1.94122030]'
  BaseType: 'WebPanel'
  Children:
  [
    Component cbShiftPlan
    {
      #keys: '[412672.1.94122136]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Checked: true
        Description: '班次'
        Label: '班次'
        Taborder: 0
      ]
    }
    Component cbWorkday
    {
      #keys: '[412672.1.94122149]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Checked: true
        Description: '工作日'
        Label: '工作日'
        Taborder: 1
      ]
    }
    Component cbCapacity
    {
      #keys: '[412672.1.94122161]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Checked: true
        Description: '产能'
        Label: '产能'
        Taborder: 2
      ]
    }
    Component cbOutput
    {
      #keys: '[412672.1.94122174]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Checked: true
        Description: '产量'
        Label: '产量'
        Taborder: 3
      ]
    }
    Component dsStartDate id:dsStartDate_438
    {
      #keys: '[412672.1.94150910]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start Date'
        Taborder: 4
      ]
    }
    Component dhStartDate id:dhStartDate_891
    {
      #keys: '[412672.1.94150932]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date*'
      Properties:
      [
        Taborder: 5
      ]
    }
    Component dsEndDate id:dsEndDate_963
    {
      #keys: '[412672.1.94150952]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 9999-12-31
        Label: 'End Date'
        Taborder: 6
      ]
    }
    Component dhEndDate id:dhEndDate_384
    {
      #keys: '[412672.1.94150974]'
      BaseType: 'WebDataHolder'
      Databinding: 'Date*'
      Properties:
      [
        Taborder: 7
      ]
    }
    Component bExport
    {
      #keys: '[412672.1.99120484]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 8
      ]
    }
    Component dhXMLDataListener
    {
      #keys: '[412672.1.97821419]'
      BaseType: 'WebDataHolder'
      Databinding: 'ExportXMLManager'
      Children:
      [
        Component DataExtractorRibbon
        {
          #keys: '[412672.1.97821434]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            FixedFilter: 'object.Name() = MP_Cell_ScheduleSummary::GetTableName()'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'ExportXMLManager'
          ]
        }
      ]
      Properties:
      [
        Taborder: 9
      ]
    }
    Component bDownload
    {
      #keys: '[412672.1.97871677]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'DOWNLOAD'
        Taborder: 10
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelRibbon504.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
Quintiq file version 2.0
Component PanelRibbon504
{
  #keys: '[412672.1.94122024]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bExportTemplate
    {
      #keys: '[412672.1.94122267]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 3
      ]
    }
    Component bImportOutput
    {
      #keys: '[412672.1.94122280]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 4
      ]
    }
    Component ButtonRibbon
    {
      #keys: '[412672.1.94151012]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Create'
        Taborder: 0
        Visible: false
      ]
    }
    Component ButtonRibbon820
    {
      #keys: '[412672.1.97441173]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'CreateFullTable'
        Taborder: 1
      ]
    }
    Component npYear
    {
      #keys: '[412672.1.98957184]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
    Title: '产出导入'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_PanelScheduleSummary.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
Quintiq file version 2.0
Component PanelScheduleSummary
{
  #keys: '[412672.1.94121858]'
  BaseType: 'WebPanel'
  Children:
  [
    Component dhComparisonData
    {
      #keys: '[412672.1.94121859]'
      BaseType: 'WebDataHolder'
      Databinding: 'MP_Table'
      Properties:
      [
        Taborder: 1
      ]
    }
    Component dhCheckedEntity
    {
      #keys: '[412672.1.94121860]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[Entity]*'
      Children:
      [
        Component deCheckedProduct
        {
          #keys: '[412672.1.94121861]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Entity]'
            Source: 'ApplicationMacroPlanner.DataHolderCheckedEntities'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
    Component dhFinelEntity
    {
      #keys: '[412672.1.94121862]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[Entity]*'
      Properties:
      [
        Taborder: 4
      ]
    }
    #child: MatrixEditor_715
    #child: MatrixEditor510
    Component dhComparisonData854
    {
      #keys: '[412672.1.96380914]'
      BaseType: 'WebDataHolder'
      Databinding: 'LocalTable'
      Properties:
      [
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixEditorActionBarPageDemandComparison#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageDemandComparison id:matrixEditorActionBarPageDemandComparison_1
{
  #keys: '[412672.1.94121872]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixEditorActionBarPageDemandComparison234.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageDemandComparison234
{
  #keys: '[412672.1.96380871]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixeditorContextMenuDemandComparison#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuDemandComparison id:matrixeditorContextMenuDemandComparison_1
{
  #keys: '[412672.1.94121873]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Component_matrixeditorContextMenuDemandComparison527.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuDemandComparison527
{
  #keys: '[412672.1.96380872]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Method_SetAttributes.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Method SetAttributes () id:Method_FormScheduleSummaryReport_SetAttributes
{
  #keys: '[412672.1.98957835]'
  Body:
  [*
    attributes := "";
    if( cbShiftPlan.Checked() ){
      attributes := attributes + "ShiftPattern;";
    }
    if( cbWorkday.Checked() ){
      attributes := attributes + "WorkingDay;";
    }
    if( cbCapacity.Checked() ){
      attributes := attributes + "Capacity;";
    }
    if( cbOutput.Checked() ){
      attributes := attributes + "Output;";
    }
    attributes := attributes.SubString( 0,attributes.Length() - 1 );
    MatrixEditor510.Attributes( attributes );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/bDownload
Response OnClick () id:Response_PanelRibbon322_88_bDownload_OnClick
{
  #keys: '[412672.1.98988449]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    flag := true;
    feedback := "";
    if( isnull( dhXMLDataListener.Data() )){
      flag := false;
      feedback := "当前无下载数据,点击导出创建下载数据。"
    }
    return flag;
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := dhXMLDataListener.Data( ).Export();
      Application.Download( MP_Cell_ScheduleSummary::GetTableName() + "_" + DateTime::Now().Format( "YM2D2H2mmss" ) + ".xlsx", binaryValue.AsBinaryData() );
      dhXMLDataListener.Data( ).Delete();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/bExport
Response OnClick () id:Response_PanelRibbon322_88_bExport_OnClick
{
  #keys: '[412672.1.99120483]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      rows := selectset( dhComparisonData854.Data(),LocalRow,row,exists( dhFinelEntity.Data(),Elements,entity,entity.DisplayName() = row.Name() ));
      columns := selectset( dhComparisonData854.Data(),LocalColumn,column,dhStartDate.Data() <= column.Date() and dhEndDate.Data() > column.Date() );
      LocalCell_ScheduleSummary::AsyncExport( RecycleBin,rows,columns );
      //Application.Download( "产出导入模板.xlsx",data.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbCapacity_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/cbCapacity
Response OnUserChanged () id:Response_PanelRibbon322_88_cbCapacity_OnUserChanged
{
  #keys: '[412672.1.98957932]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      FormScheduleSummaryReport.SetAttributes();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbOutput_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/cbOutput
Response OnUserChanged () id:Response_PanelRibbon322_88_cbOutput_OnUserChanged
{
  #keys: '[412672.1.98957943]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      FormScheduleSummaryReport.SetAttributes();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbShiftPlan_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/cbShiftPlan
Response OnUserChanged () id:Response_PanelRibbon322_88_cbShiftPlan_OnUserChanged
{
  #keys: '[412672.1.97801802]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      FormScheduleSummaryReport.SetAttributes();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_cbWorkday_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/cbWorkday
Response OnUserChanged () id:Response_PanelRibbon322_88_cbWorkday_OnUserChanged
{
  #keys: '[412672.1.98957921]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      FormScheduleSummaryReport.SetAttributes();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dhEndDate_OnCreated#478.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/dhEndDate_384
Response OnCreated () id:Response_PanelFilter_dhEndDate_OnCreated_478
{
  #keys: '[412672.1.94150972]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      this.Data( Date::MaxDate() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dhStartDate_OnCreated#57.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/dhStartDate_891
Response OnCreated () id:Response_PanelFilter_dhStartDate_OnCreated_57
{
  #keys: '[412672.1.94150930]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      this.Data( Date::MinDate() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dsEndDate_OnChanged#273.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/dsEndDate_963
Response OnChanged () id:Response_PanelFilter_dsEndDate_OnChanged_273
{
  #keys: '[412672.1.94150951]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      dhEndDate.Data( this.Date() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon322_88_dsStartDate_OnChanged#298.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelRibbon322_88/dsStartDate_438
Response OnChanged () id:Response_PanelFilter_dsStartDate_OnChanged_298
{
  #keys: '[412672.1.94150909]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      dhStartDate.Data( this.Date() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon820_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelRibbon504/ButtonRibbon820
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon820_OnClick
{
  #keys: '[412672.1.97441221]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      macroPlans := ApplicationMacroPlanner.GetMacroPlans();
      table := MP_Cell_ScheduleSummary::CreateFullTable( macroPlans,RecycleBin ,Archive);
      dhComparisonData854.Data( table );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_ButtonRibbon_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelRibbon504/ButtonRibbon
Response OnClick () id:Response_PanelRibbon504_ButtonRibbon_OnClick
{
  #keys: '[412672.1.94151032]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      table := MP_Cell_ScheduleSummary::Create( MacroPlan );
      dhComparisonData.Data( table );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bExportTemplate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bExportTemplate
Response OnClick () id:Response_PanelRibbon504_bExportTemplate_OnClick
{
  #keys: '[412672.1.94122418]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      data := MP_Cell_ScheduleSummary::ExportOutputTemplate( [Number]npYear.Number() );
      Application.Download( "产出导入模板.xlsx",data.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_bImportOutput_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bImportOutput
Response OnClick () id:Response_PanelRibbon504_bImportOutput_OnClick
{
  #keys: '[412672.1.96362099]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          MP_Cell_ScheduleSummary::ImportOutput( Archive,generalExcelImportAndExportDataSource);
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelRibbon504_npYear_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: PanelRibbon504/npYear
Response OnCreated () id:Response_PanelRibbon504_npYear_OnCreated
{
  #keys: '[412672.1.97870619]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      date := Date::ActualDate();
      this.Number( date.Year() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhCheckedEntity_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhCheckedEntity
Response OnDataChanged () id:Response_PanelScheduleSummary_dhCheckedEntity_OnDataChanged
{
  #keys: '[412672.1.94121856]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      if( this.Data().Size() <> 0 ){
        dhFinelEntity.Data( this.Data().Copy() );
      }else{
        dhFinelEntity.Data( DataHolderEntities.Data().Copy() );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData854_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhComparisonData854
Response OnCreated () id:Response_PanelScheduleSummary_dhComparisonData854_OnCreated
{
  #keys: '[412672.1.96380911]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData854_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhComparisonData854
Response OnDataChanged () id:Response_PanelScheduleSummary_dhComparisonData854_OnDataChanged
{
  #keys: '[412672.1.96380912]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      // PanelScheduleSummary.Title( this.Data().Name() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhComparisonData
Response OnCreated () id:Response_PanelScheduleSummary_dhComparisonData_OnCreated
{
  #keys: '[412672.1.96303222]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      table := select( MacroPlan,MP_Table,table,table.Name() = MP_Cell_ScheduleSummary::GetTableName() );
      dhComparisonData.Data( table );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhComparisonData_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhComparisonData
Response OnDataChanged () id:Response_PanelScheduleSummary_dhComparisonData_OnDataChanged
{
  #keys: '[412672.1.94121857]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      PanelScheduleSummary.Title( this.Data().Name() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/Response_PanelScheduleSummary_dhFinelEntity_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelScheduleSummary/dhFinelEntity
Response OnCreated () id:Response_PanelScheduleSummary_dhFinelEntity_OnCreated
{
  #keys: '[412672.1.94121855]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      this.Data( DataHolderEntities.Data().Copy() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormScheduleSummaryReport/_ROOT_Component_FormScheduleSummaryReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormScheduleSummaryReport
{
  #keys: '[412672.1.94121778]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelRibbon
    #child: PanelScheduleSummary
  ]
  Properties:
  [
    Description: '计划汇总报表 '
    Image: 'DOCUMENT_CUP'
    Title: '计划汇总报表 '
  ]
}
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def
@@ -12,9 +12,9 @@
    [*
      cbStandardHours.Checked( not this.Checked() );
      if( this.Checked() ){
        PackagingPlanLotSizeDialog.Title( "综合工时制报表" );
        FormComprehensiveStandardHoursReport.Title( "综合工时制报表" );
      }else{
        PackagingPlanLotSizeDialog.Title( "标准工时制报表" );
        FormComprehensiveStandardHoursReport.Title( "标准工时制报表" );
      }
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def
@@ -13,9 +13,9 @@
      cbComprehensiveHours.Checked( not this.Checked() );
      
      if( this.Checked() ){
        PackagingPlanLotSizeDialog.Title( "标准工时制报表" );
        FormComprehensiveStandardHoursReport.Title( "标准工时制报表" );
      }else{
        PackagingPlanLotSizeDialog.Title( "综合工时制报表" );
        FormComprehensiveStandardHoursReport.Title( "综合工时制报表" );
      }
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_PackagingPlanLotSizeDialog.def ÐÞ¸Ä
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent PackagingPlanLotSizeDialog
OrphanComponent FormComprehensiveStandardHoursReport
{
  #keys: '[412672.1.33151116]'
  BaseType: 'WebForm'
_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw
@@ -2,6 +2,195 @@
{
  viewcontents
  {
    forms
    {
      form_FormComprehensiveStandardHoursReport
      {
        title: 'QMacroPlanner::FormComprehensiveStandardHoursReport'
        shown: true
        componentID: 'QMacroPlanner::FormComprehensiveStandardHoursReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 17
          columnPosition: 1
          columnSpan: 11
        }
        components
        {
          FormComprehensiveStandardHoursReport_pMain
          {
            sizeRatio: 1
          }
          FormComprehensiveStandardHoursReport_pOperaction
          {
            sizeRatio: 1
          }
          FormComprehensiveStandardHoursReport_Panel743
          {
            sizeRatio: 1
          }
          FormComprehensiveStandardHoursReport_MatrixEditor859
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormComprehensiveStandardHoursReport.MatrixEditor859'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_RealValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'RealValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
_Main/UI/MacroPlannerWebApp/Views/ScheduleSummaryReport.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,234 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormScheduleSummaryReport
      {
        title: 'QMacroPlanner::FormScheduleSummaryReport'
        shown: true
        componentID: 'QMacroPlanner::FormScheduleSummaryReport'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 15
          columnPosition: 1
          columnSpan: 10
        }
        components
        {
          FormScheduleSummaryReport_PanelRibbon
          {
            sizeRatio: 1
          }
          FormScheduleSummaryReport_PanelRibbon322
          {
            sizeRatio: 1
          }
          FormScheduleSummaryReport_PanelRibbon504
          {
            sizeRatio: 1
          }
          FormScheduleSummaryReport_PanelScheduleSummary
          {
            sizeRatio: 1
          }
          FormScheduleSummaryReport_MatrixEditor
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormScheduleSummaryReport.MatrixEditor'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_ShiftPlan
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPlan'
                    }
                    attribute_WorkingDay
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'WorkingDay'
                    }
                    attribute_Capacity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Capacity'
                    }
                    attribute_Output
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Output'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
              CarCo_KPISetting: 'Blending'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    image: 'DOCUMENT_CUP'
    page: ''
    group: ''
    index: 0
    description: ''
  }
  formatversion: 2
  id: 'ScheduleSummaryReport'
  name: 'ScheduleSummaryReport'
  isglobal: false
  isroot: true
}